1
0
Fork 0
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:
John Dewey 2013-12-07 10:19:28 -08:00
parent 1e646a3112
commit 6fe8496ab3

View file

@ -157,14 +157,14 @@ class SecurityGroup(NovaGroup):
self._name = module.params.get('name') self._name = module.params.get('name')
self._description = module.params.get('description') self._description = module.params.get('description')
def exists(self): def get(self):
return self._get_secgroup(self._name) return self._get_secgroup(self._name)
def create(self): def create(self):
self._sg.create(self._name, self._description) return self._sg.create(self._name, self._description)
def delete(self): def delete(self):
self._sg.delete(self._name) return self._sg.delete(self._name)
class SecurityGroupRule(NovaGroup): class SecurityGroupRule(NovaGroup):
@ -219,8 +219,6 @@ class SecurityGroupRule(NovaGroup):
r = self._concat_security_group_rule(rule) r = self._concat_security_group_rule(rule)
if r in self._current_rules: if r in self._current_rules:
return self._current_rules[r] return self._current_rules[r]
else:
return False
def _validate_rules(self): def _validate_rules(self):
for rule in self._rules: for rule in self._rules:
@ -260,6 +258,14 @@ class SecurityGroupRule(NovaGroup):
changed = True changed = True
return changed return changed
def update(self):
changed = False
if self.create():
changed = True
if self.delete():
changed = True
return changed
def main(): def main():
module = AnsibleModule( module = AnsibleModule(
@ -274,7 +280,7 @@ def main():
region_name=dict(default=None), region_name=dict(default=None),
state = dict(default='present', choices=['present', 'absent']), state = dict(default='present', choices=['present', 'absent']),
), ),
supports_check_mode=True, supports_check_mode=False,
) )
login_username = module.params.get('login_username') login_username = module.params.get('login_username')
login_password = module.params.get('login_password') login_password = module.params.get('login_password')
@ -309,24 +315,26 @@ def main():
rules = module.params.get('rules') rules = module.params.get('rules')
state = module.params.get('state') state = module.params.get('state')
security_group = SecurityGroup(nova, module) security_group = SecurityGroup(nova, module)
security_group_rules = SecurityGroupRule(nova, module)
changed = False changed = False
if security_group.exists(): group_id = None
group = security_group.get()
if group:
group_id = group.id
if state == 'absent': if state == 'absent':
security_group.delete() security_group.delete()
changed = True changed = True
elif state == 'present': 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 changed = True
if rules: module.exit_json(changed=changed, group_id=group_id)
if security_group_rules.create():
changed = True
if security_group_rules.delete():
changed = True
module.exit_json(changed=changed, group_id=None)
# this is magic, see lib/ansible/module_common.py # this is magic, see lib/ansible/module_common.py
#<<INCLUDE_ANSIBLE_MODULE_COMMON>> #<<INCLUDE_ANSIBLE_MODULE_COMMON>>