Add support for managing OpenZFS pools (#2642)
This commit is contained in:
parent
ebb8d73d57
commit
eaa71f51d6
1 changed files with 17 additions and 4 deletions
|
@ -33,7 +33,7 @@ options:
|
||||||
required: true
|
required: true
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- Whether to create (C(present)), or remove (C(absent)) a
|
- Whether to create (C(present)), or remove (C(absent)) a
|
||||||
file system, snapshot or volume. All parents/children
|
file system, snapshot or volume. All parents/children
|
||||||
will be created/destroyed as needed to reach the desired state.
|
will be created/destroyed as needed to reach the desired state.
|
||||||
choices: ['present', 'absent']
|
choices: ['present', 'absent']
|
||||||
|
@ -83,14 +83,27 @@ class Zfs(object):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.properties = properties
|
self.properties = properties
|
||||||
self.changed = False
|
self.changed = False
|
||||||
self.is_solaris = os.uname()[0] == 'SunOS'
|
|
||||||
self.pool = name.split('/')[0]
|
|
||||||
self.zfs_cmd = module.get_bin_path('zfs', True)
|
self.zfs_cmd = module.get_bin_path('zfs', True)
|
||||||
self.zpool_cmd = module.get_bin_path('zpool', True)
|
self.zpool_cmd = module.get_bin_path('zpool', True)
|
||||||
|
self.pool = name.split('/')[0]
|
||||||
|
self.is_solaris = os.uname()[0] == 'SunOS'
|
||||||
|
self.is_openzfs = self.check_openzfs()
|
||||||
self.enhanced_sharing = self.check_enhanced_sharing()
|
self.enhanced_sharing = self.check_enhanced_sharing()
|
||||||
|
|
||||||
|
def check_openzfs(self):
|
||||||
|
cmd = [self.zpool_cmd]
|
||||||
|
cmd.extend(['get', 'version'])
|
||||||
|
cmd.append(self.pool)
|
||||||
|
(rc, out, err) = self.module.run_command(cmd, check_rc=True)
|
||||||
|
version = out.splitlines()[-1].split()[2]
|
||||||
|
if version == '-':
|
||||||
|
return True
|
||||||
|
if int(version) == 5000:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def check_enhanced_sharing(self):
|
def check_enhanced_sharing(self):
|
||||||
if os.uname()[0] == 'SunOS':
|
if self.is_solaris and not self.is_openzfs:
|
||||||
cmd = [self.zpool_cmd]
|
cmd = [self.zpool_cmd]
|
||||||
cmd.extend(['get', 'version'])
|
cmd.extend(['get', 'version'])
|
||||||
cmd.append(self.pool)
|
cmd.append(self.pool)
|
||||||
|
|
Loading…
Reference in a new issue