mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Made a few canges as I learn more about modules
* Set check_mode to False, am not supporting this ATM. * Cleaned up delete/create() into single update(). * Return the group_id if created or found so tasks can be chained.
This commit is contained in:
parent
1e646a3112
commit
6fe8496ab3
1 changed files with 22 additions and 14 deletions
|
@ -157,14 +157,14 @@ class SecurityGroup(NovaGroup):
|
|||
self._name = module.params.get('name')
|
||||
self._description = module.params.get('description')
|
||||
|
||||
def exists(self):
|
||||
def get(self):
|
||||
return self._get_secgroup(self._name)
|
||||
|
||||
def create(self):
|
||||
self._sg.create(self._name, self._description)
|
||||
return self._sg.create(self._name, self._description)
|
||||
|
||||
def delete(self):
|
||||
self._sg.delete(self._name)
|
||||
return self._sg.delete(self._name)
|
||||
|
||||
|
||||
class SecurityGroupRule(NovaGroup):
|
||||
|
@ -219,8 +219,6 @@ class SecurityGroupRule(NovaGroup):
|
|||
r = self._concat_security_group_rule(rule)
|
||||
if r in self._current_rules:
|
||||
return self._current_rules[r]
|
||||
else:
|
||||
return False
|
||||
|
||||
def _validate_rules(self):
|
||||
for rule in self._rules:
|
||||
|
@ -260,6 +258,14 @@ class SecurityGroupRule(NovaGroup):
|
|||
changed = True
|
||||
return changed
|
||||
|
||||
def update(self):
|
||||
changed = False
|
||||
if self.create():
|
||||
changed = True
|
||||
if self.delete():
|
||||
changed = True
|
||||
return changed
|
||||
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
|
@ -274,7 +280,7 @@ def main():
|
|||
region_name=dict(default=None),
|
||||
state = dict(default='present', choices=['present', 'absent']),
|
||||
),
|
||||
supports_check_mode=True,
|
||||
supports_check_mode=False,
|
||||
)
|
||||
login_username = module.params.get('login_username')
|
||||
login_password = module.params.get('login_password')
|
||||
|
@ -309,24 +315,26 @@ def main():
|
|||
rules = module.params.get('rules')
|
||||
state = module.params.get('state')
|
||||
security_group = SecurityGroup(nova, module)
|
||||
security_group_rules = SecurityGroupRule(nova, module)
|
||||
|
||||
changed = False
|
||||
if security_group.exists():
|
||||
group_id = None
|
||||
group = security_group.get()
|
||||
if group:
|
||||
group_id = group.id
|
||||
if state == 'absent':
|
||||
security_group.delete()
|
||||
changed = True
|
||||
elif state == 'present':
|
||||
security_group.create()
|
||||
group = security_group.create()
|
||||
changed = True
|
||||
group_id = group.id
|
||||
|
||||
if rules is not None:
|
||||
security_group_rules = SecurityGroupRule(nova, module)
|
||||
if security_group_rules.update():
|
||||
changed = True
|
||||
|
||||
if rules:
|
||||
if security_group_rules.create():
|
||||
changed = True
|
||||
if security_group_rules.delete():
|
||||
changed = True
|
||||
|
||||
module.exit_json(changed=changed, group_id=None)
|
||||
module.exit_json(changed=changed, group_id=group_id)
|
||||
|
||||
# this is magic, see lib/ansible/module_common.py
|
||||
#<<INCLUDE_ANSIBLE_MODULE_COMMON>>
|
||||
|
|
Loading…
Reference in a new issue