def test_0010_update(self): """Test the method Platform.update_external_network() Update name and description of the external network created by setup. Verifies name and description after update completes. Reset the name and description to original. This test passes if name and description are updated successfully. """ logger = Environment.get_default_logger() platform = Platform(TestExtNet._sys_admin_client) new_name = 'updated_' + TestExtNet._name new_description = 'Updated ' + TestExtNet._description ext_net = platform.update_external_network(TestExtNet._name, new_name, new_description) task = ext_net['{' + NSMAP['vcloud'] + '}Tasks'].Task[0] TestExtNet._sys_admin_client.get_task_monitor().wait_for_success( task=task) logger.debug('Updated external network ' + TestExtNet._name + '.') ext_net = platform.get_external_network(new_name) self.assertIsNotNone(ext_net) self.assertEqual(new_description, ext_net['{' + NSMAP['vcloud'] + '}Description'].text) # Reset the name and description to original ext_net = platform.update_external_network(new_name, self._name, self._description) task = ext_net['{' + NSMAP['vcloud'] + '}Tasks'].Task[0] TestExtNet._sys_admin_client.get_task_monitor().wait_for_success( task=task)
def test_0010_update(self): """Test the method Platform.update_external_network() Update name and description of the external network created by setup. Verifies name and description after update completes. Reset the name and description to original. This test passes if name and description are updated successfully. """ logger = Environment.get_default_logger() platform = Platform(TestExtNet._sys_admin_client) new_name = 'updated_' + TestExtNet._name new_description = 'Updated ' + TestExtNet._description ext_net = platform.update_external_network(TestExtNet._name, new_name, new_description) task = ext_net['{' + NSMAP['vcloud'] + '}Tasks'].Task[0] TestExtNet._sys_admin_client.get_task_monitor().wait_for_success( task=task) logger.debug('Updated external network ' + TestExtNet._name + '.') ext_net = platform.get_external_network(new_name) self.assertIsNotNone(ext_net) self.assertEqual(new_description, ext_net['{' + NSMAP['vcloud'] + '}Description'].text) # Reset the name and description to original ext_net = platform.update_external_network(new_name, self._name, self._description) task = ext_net['{' + NSMAP['vcloud'] + '}Tasks'].Task[0] TestExtNet._sys_admin_client.get_task_monitor().wait_for_success( task=task)
def update_external_network(ctx, name, new_name, new_description): try: restore_session(ctx) client = ctx.obj['client'] platform = Platform(client) ext_net = platform.update_external_network( name=name, new_name=new_name, new_description=new_description) stdout(ext_net['{' + NSMAP['vcloud'] + '}Tasks'].Task[0], ctx) stdout('External network updated successfully.', ctx) except Exception as e: stderr(e, ctx)
class VcdExternalNetwork(VcdAnsibleModule): def __init__(self, **kwargs): super(VcdExternalNetwork, self).__init__(**kwargs) self.platform = Platform(self.client) def manage_states(self): state = self.params.get('state') if state == "present": return self.create() if state == "update": return self.update() if state == "absent": return self.delete() def manage_operations(self): operation = self.params.get('operation') if operation == "list_networks": return self.list_external_networks() if operation == "add_subnet": return self.add_subnet() if operation == "add_ip_ranges": return self.add_ip_ranges() if operation == "modify_ip_ranges": return self.modify_ip_ranges() if operation == "delete_ip_ranges": return self.delete_ip_ranges() if operation == "enable_subnet": return self.enable_subnet() if operation == "attach_port_group": return self.attach_port_group() if operation == "detach_port_group": return self.detach_port_group() def create(self): vc_name = self.params.get('vc_name') port_group_names = self.params.get('port_group_names') network_name = self.params.get('network_name') gateway_ip = self.params.get('gateway_ip') netmask = self.params.get('netmask') ip_ranges = self.params.get('ip_ranges') primary_dns_ip = self.params.get('primary_dns_ip') secondary_dns_ip = self.params.get('secondary_dns_ip') dns_suffix = self.params.get('dns_suffix') description = self.params.get('description') response = dict() response['changed'] = False try: self.platform.get_external_network(network_name) except EntityNotFoundException: self.platform.create_external_network(network_name, vc_name, port_group_names, gateway_ip, netmask, ip_ranges, description, primary_dns_ip, secondary_dns_ip, dns_suffix) msg = "External Network {0} is created" response['msg'] = msg.format(network_name) response['changed'] = True else: msg = "External Network {0} is already present" response['warnings'] = msg.format(network_name) return response def update(self): network_name = self.params.get('network_name') new_network_name = self.params.get('new_network_name') description = self.params.get('description') response = dict() response['changed'] = False try: self.platform.get_external_network(network_name) self.platform.update_external_network( network_name, new_network_name, description) except EntityNotFoundException: msg = "External Network {0} does not exists" response['msg'] = msg.format(network_name) else: msg = "External Network {0} has been updated with {1}" response['msg'] = msg.format(network_name, new_network_name) response['changed'] = True return response def delete(self): network_name = self.params.get('network_name') force_delete = self.params.get('force_delete') response = dict() response['changed'] = False try: task = self.platform.delete_external_network( network_name, force_delete) self.execute_task(task) except EntityNotFoundException: msg = "External Network {0} does not exists" response['msg'] = msg.format(network_name) else: msg = "External Network {0} has been deleted" response['msg'] = msg.format(network_name) response['changed'] = True return response def list_external_networks(self): response = dict() response['msg'] = list() response['changed'] = False networks = self.platform.list_external_networks() response['msg'] = [v for k, v in networks.items() if k == "name"] return response def add_subnet(self): network_name = self.params.get('network_name') gateway_ip = self.params.get('gateway_ip') netmask = self.params.get('netmask') ip_ranges = self.params.get('ip_ranges') primary_dns_ip = self.params.get('primary_dns_ip') secondary_dns_ip = self.params.get('secondary_dns_ip') dns_suffix = self.params.get('dns_suffix') response = dict() response['changed'] = False network = self.get_network(network_name) network.add_subnet(network_name, gateway_ip, netmask, ip_ranges, primary_dns_ip, secondary_dns_ip, dns_suffix) msg = "A new subnet has been added to network {0}" response['msg'] = msg.format(network_name) response['changed'] = True return response def add_ip_ranges(self): network_name = self.params.get('network_name') gateway_ip = self.params.get('gateway_ip') ip_ranges = self.params.get('ip_ranges') response = dict() response['changed'] = False network = self.get_network(network_name) network.add_ip_range(gateway_ip, ip_ranges) msg = "A new ip ranges has been added to network {0}" response['msg'] = msg.format(network_name) response['changed'] = True return response def modify_ip_ranges(self): network_name = self.params.get('network_name') gateway_ip = self.params.get('gateway_ip') ip_ranges = self.params.get('ip_ranges') new_ip_ranges = self.params.get('new_ip_ranges') response = dict() response['changed'] = False if len(ip_ranges) != len(new_ip_ranges): raise ValueError( "ip_ranges and new_ip_ranges should have same length") network = self.get_network(network_name) for i in range(len(ip_ranges)): network.modify_ip_range(gateway_ip, ip_ranges[i], new_ip_ranges[i]) msg = "Ip ranges have been updated to network {0}" response['msg'] = msg.format(network_name) response['changed'] = True return response def delete_ip_ranges(self): network_name = self.params.get('network_name') gateway_ip = self.params.get('gateway_ip') ip_ranges = self.params.get('ip_ranges') response = dict() response['changed'] = False network = self.get_network(network_name) network.delete_ip_range(gateway_ip, ip_ranges) msg = "Ip ranges have been deleted from network {0}" response['msg'] = msg.format(network_name) response['changed'] = True return response def enable_subnet(self): network_name = self.params.get('network_name') gateway_ip = self.params.get('gateway_ip') enable_subnet = self.params.get('enable_subnet') response = dict() response['changed'] = False network = self.get_network(network_name) network.enable_subnet(gateway_ip, enable_subnet) s = "has been enabled" if enable_subnet else "has been disabled" msg = "subnet with gatway {0} {1} now in network {2}" response['msg'] = msg.format(gateway_ip, s, network_name) response['changed'] = True return response def attach_port_group(self): network_name = self.params.get('network_name') vc_name = self.params.get('vc_name') port_group_names = self.params.get('port_group_names') response = dict() response['changed'] = False network = self.get_network(network_name) for port_group_name in port_group_names: network.attach_port_group(vc_name, port_group_name) msg = "port groups {0} have been attached now from network {1}" response['msg'] = msg.format(','.join(port_group_names), network_name) response['changed'] = True return response def detach_port_group(self): network_name = self.params.get('network_name') vc_name = self.params.get('vc_name') port_group_names = self.params.get('port_group_names') response = dict() response['changed'] = False network = self.get_network(network_name) for port_group_name in port_group_names: network.detach_port_group(vc_name, port_group_name) msg = "port groups {0} have been detached now from network {1}" response['msg'] = msg.format(','.join(port_group_names), network_name) response['changed'] = True return response def get_network(self, network_name): network_resource = self.platform.get_external_network(network_name) return ExternalNetwork(self.client, resource=network_resource)