def main(): """Main function""" module = build_module() config = Config(module, "vpc") try: resource = None if module.params['id']: resource = True else: v = search_resource(config) if len(v) > 1: raise Exception( "Found more than one resource(%s)" % ", ".join([navigate_value(i, ["id"]) for i in v])) if len(v) == 1: resource = v[0] module.params['id'] = navigate_value(resource, ["id"]) result = {} changed = False if module.params['state'] == 'present': if resource is None: if not module.check_mode: create(config) changed = True current = read_resource(config, exclude_output=True) expect = user_input_parameters(module) if are_different_dicts(expect, current): if not module.check_mode: update(config) changed = True result = read_resource(config) result['id'] = module.params.get('id') else: if resource: if not module.check_mode: delete(config) changed = True except Exception as ex: module.fail_json(msg=str(ex)) else: result['changed'] = changed module.exit_json(**result)
def check_resource_option(resource, module): opts = user_input_parameters(module) resource = { "enterprise_project_id": resource.get("enterprise_project_id"), "name": resource.get("name"), "vpc_id": resource.get("vpc_id"), "id": resource.get("id"), } if are_different_dicts(resource, opts): raise Exception("Cannot change option from (%s) to (%s) for an" " existing security group(%s)." % (resource, opts, module.params.get('id')))
def main(): """Main function""" module = build_module() config = Config(module, "vpc") try: resource = None if module.params.get("id"): resource = get_resource_by_id(config) if module.params['state'] == 'present': opts = user_input_parameters(module) if are_different_dicts(resource, opts): raise Exception( "Cannot change option from (%s) to (%s) for an" " existing route.(%s)" % (resource, opts, config.module.params.get( 'id'))) else: v = search_resource(config) if len(v) > 1: raise Exception("Found more than one resource(%s)" % ", ".join([ navigate_value(i, ["id"]) for i in v])) if len(v) == 1: resource = update_properties(module, {"read": v[0]}, None) module.params['id'] = navigate_value(resource, ["id"]) result = {} changed = False if module.params['state'] == 'present': if resource is None: if not module.check_mode: resource = create(config) changed = True result = resource else: if resource: if not module.check_mode: delete(config) changed = True except Exception as ex: module.fail_json(msg=str(ex)) else: result['changed'] = changed module.exit_json(**result)
def test_nested_dictionaries_with_difference(self): value1 = { 'foo': { 'quiet': { 'tree': 'test' }, 'bar': 'baz' }, 'test': 'original' } value2 = { 'foo': { 'quiet': { 'tree': 'baz' }, 'bar': 'hello' }, 'test': 'original' } value3 = {'foo': {'quiet': {'tree': 'test'}, 'bar': 'baz'}} self.assertTrue(are_different_dicts(value1, value2)) self.assertTrue(are_different_dicts(value1, value3)) self.assertTrue(are_different_dicts(value2, value3))
def main(): """Main function""" module = HwcModule( argument_spec=dict( state=dict( default='present', choices=['present', 'absent'], type='str'), timeouts=dict(type='dict', options=dict( create=dict(default='15m', type='str'), update=dict(default='15m', type='str'), delete=dict(default='15m', type='str'), ), default=dict()), name=dict(required=True, type='str'), cidr=dict(required=True, type='str') ), supports_check_mode=True, ) config = Config(module, 'vpc') state = module.params['state'] if (not module.params.get("id")) and module.params.get("name"): module.params['id'] = get_id_by_name(config) fetch = None link = self_link(module) # the link will include Nones if required format parameters are missed if not re.search('/None/|/None$', link): client = config.client(get_region(module), "vpc", "project") fetch = fetch_resource(module, client, link) if fetch: fetch = fetch.get('vpc') changed = False if fetch: if state == 'present': expect = _get_editable_properties(module) current_state = response_to_hash(module, fetch) current = {"cidr": current_state["cidr"]} if are_different_dicts(expect, current): if not module.check_mode: fetch = update(config, self_link(module)) fetch = response_to_hash(module, fetch.get('vpc')) changed = True else: fetch = current_state else: if not module.check_mode: delete(config, self_link(module)) fetch = {} changed = True else: if state == 'present': if not module.check_mode: fetch = create(config, "vpcs") fetch = response_to_hash(module, fetch.get('vpc')) changed = True else: fetch = {} fetch.update({'changed': changed}) module.exit_json(**fetch)
def test_arrays_strings_no_difference(self): value1 = {'foo': ['baz', 'bar']} self.assertFalse(are_different_dicts(value1, value1))
def test_simple_no_difference(self): value1 = {'foo': 'bar', 'test': 'original'} self.assertFalse(are_different_dicts(value1, value1))