Last active
March 2, 2018 21:11
-
-
Save jamesbeedy/685555d4e59f0c1ba865dfa45788c989 to your computer and use it in GitHub Desktop.
hdfs_juju_storage.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
from charms.reactive import when_not, set_flag, hook, when | |
from charmhelpers.core.host import mount, mkdir | |
from charmhelpers.core.hookenv import storage_get, storage_list, status_set | |
from charmhelpers.contrib.storage.linux.utils import is_device_mounted | |
from charmhelpers.contrib.storage.linux.ceph import make_filesystem | |
from charmhelpers.core.fstab import Fstab | |
if not os.path.exists('/data'): | |
mkdir('/data') | |
@hook('start') | |
def set_stated_flag(): | |
set_flag('started') | |
@when('started') | |
@when_not("storage.available") | |
def prepare_storage(): | |
hdfs_block_storage_devices = [storage_get('location', sid) for sid in storage_list('hdfs')] | |
for stor in hdfs_block_storage_devices: | |
if not is_device_mounted(stor): | |
make_filesystem(stor, fstype='ext4') | |
stor_mount_dir = "/data/{}".format(stor.split("/")[2]) | |
mkdir(stor_mount_dir) | |
mount(stor, stor_mount_dir, filesystem='ext4') | |
Fstab.add(stor, stor_mount_dir, filesystem='ext4') | |
mkdir(os.path.join(stor_mount_dir, 'dfs', 'dn')) | |
set_flag("storage.available") | |
@when_not("show.status") | |
def device_mounted_show_status(): | |
hdfs_block_storage_devices = [storage_get('location', sid) for sid in storage_list('hdfs')] | |
hdfs_mounted_storage = [stor for stor in hdfs_block_storage_devices if is_device_mounted(stor)] | |
if len(hdfs_block_storage_devices) == len(hdfs_mounted_storage): | |
status_set("active", "Storage Prepared") | |
else: | |
status_set("active", "Storage Borked {} devices mounted".format(len(hdfs_mounted_storage))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment