mbruzek / layer-storage

A Juju charm layer for storage
1 stars 3 forks source link

zfs does not work on trusty #5

Open mbruzek opened 8 years ago

mbruzek commented 8 years ago

I deployed a layer that uses the layer-storage on trusty and the add-storage hook failed.

It looks to me like the zfs modules have to be loaded in the kernel on trusty. There needs to be a code change to detect release and do the appropriate loading if necessary.

unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.juju-log server.go:268 Invoking reactive handler: reactive/storage.py:73:handle_zfs_pool
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40 The ZFS modules are not loaded.
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40 Try running '/sbin/modprobe zfs' as root to load them.
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40 The ZFS modules are not loaded.
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40 Try running '/sbin/modprobe zfs' as root to load them.
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40 sudo zpool create -f -m /mnt/storage juju-zfs-pool raidz /dev/xvdh /dev/xvdg /dev/xvdf
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40 Traceback (most recent call last):
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40   File "/var/lib/juju/agents/unit-storage-test-0/charm/hooks/disk-pool-storage-attached", line 19, in <module>
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40     main()
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40   File "/usr/local/lib/python3.4/dist-packages/charms/reactive/__init__.py", line 73, in main
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40     bus.dispatch()
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40   File "/usr/local/lib/python3.4/dist-packages/charms/reactive/bus.py", line 421, in dispatch
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40     _invoke(other_handlers)
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40   File "/usr/local/lib/python3.4/dist-packages/charms/reactive/bus.py", line 404, in _invoke
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40     handler.invoke()
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40   File "/usr/local/lib/python3.4/dist-packages/charms/reactive/bus.py", line 280, in invoke
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40     self._action(*args)
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40   File "/var/lib/juju/agents/unit-storage-test-0/charm/reactive/storage.py", line 83, in handle_zfs_pool
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40     zfs.add(unmounted_devices, True)
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40   File "lib/zfs.py", line 81, in add
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40     check_call(split(cmd))
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40   File "/usr/lib/python3.4/subprocess.py", line 561, in check_call
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40     raise CalledProcessError(retcode, cmd)
unit-storage-test-0[14960]: 2016-05-10 16:37:15 INFO unit.storage-test/0.disk-pool-storage-attached logger.go:40 subprocess.CalledProcessError: Command '['sudo', 'zpool', 'create', '-f', '-m', '/mnt/storage', 'juju-zfs-pool', 'raidz', '/dev/xvdh', '/dev/xvdg', '/dev/xvdf']' returned non-zero exit status 1
lazypower commented 8 years ago
from charmhelpers.core import host
from subprocess import check_call
from shlex import split 

if host.lsb_release()['DISTRIB_CODENAME'] == 'trusty':
    check_call(split('modprobe zfs'))

would that work?

mbruzek commented 8 years ago

Yeah that looks good @chuckbutler, will have to try that in the reactive/zfs.py code soon.