def delete_vdc_routed_network(ctx, name): try: restore_session(ctx, vdc_required=True) client = ctx.obj['client'] vdc_href = ctx.obj['profiles'].get('vdc_href') vdc = VDC(client, href=vdc_href) task = vdc.delete_routed_orgvdc_network(name) stdout(task, ctx) except Exception as e: stderr(e, ctx)
def test_180_delete_routed_orgvdc_networks(self): org_record = self.client.get_org_by_name( self.config['vcd']['org_name']) org = Org(self.client, href=org_record.get('href')) vdc_resource = org.get_vdc(self.config['vcd']['vdc_name']) vdc = VDC(self.client, href=vdc_resource.get('href')) result = vdc.delete_routed_orgvdc_network( name=self.config['vcd']['vdc_routed_network_name'], force=True) task = self.client.get_task_monitor().wait_for_success(task=result) assert task.get('status') == TaskStatus.SUCCESS.value
def test_0098_teardown(self): """Removes the added vdc, gateway and routed networks. """ vdc = VDC(TestIpSecVpn._client, resource=TestIpSecVpn._vdc_resource) task1 = vdc.delete_routed_orgvdc_network( name=TestIpSecVpn._routed_network_name) TestIpSecVpn._client.get_task_monitor().wait_for_success(task=task1) task2 = vdc.delete_gateway(name=TestIpSecVpn._gateway_name) TestIpSecVpn._client.get_task_monitor().wait_for_success(task=task2) vdc.enable_vdc(enable=False) vdc.delete_vdc()
def test_180_delete_routed_orgvdc_networks(self): org_record = self.client.get_org_by_name( self.config['vcd']['org_name']) org = Org(self.client, href=org_record.get('href')) vdc_resource = org.get_vdc(self.config['vcd']['vdc_name']) vdc = VDC(self.client, href=vdc_resource.get('href')) result = vdc.delete_routed_orgvdc_network( name=self.config['vcd']['vdc_routed_network_name'], force=True) task = self.client.get_task_monitor().wait_for_success( task=result) assert task.get('status') == TaskStatus.SUCCESS.value
class OrgVdcNetwork(VcdAnsibleModule): def __init__(self, **kwargs): super(OrgVdcNetwork, self).__init__(**kwargs) self.vdc_name = self.params.get('vdc_name') self.org_name = self.params.get('org_name') org_resource = self.client.get_org_by_name(self.org_name) self.org = Org(self.client, resource=org_resource) vdc_resource = self.org.get_vdc(self.vdc_name) self.vdc = VDC(self.client, name=self.vdc_name, resource=vdc_resource) def manage_states(self): state = self.params.get('state') if state == "present": return self.create_org_vdc_network() if state == "absent": return self.delete_org_vdc_network() def create_org_vdc_network(self): direct = self.params.get('direct') isolated = self.params.get('isolated') routed = self.params.get('routed') if direct: return self.create_org_vdc_direct_network() elif isolated: return self.create_org_vdc_isolated_network() elif routed: return self.create_org_vdc_routed_network() raise ValueError("Bool 'direct', 'isolated' or 'routed' is missing") def create_org_vdc_direct_network(self): response = dict() response['changed'] = False network_name = self.params.get('network_name') parent_network_name = self.params.get('parent_network_name') description = self.params.get('description') shared = self.params.get('shared') try: self.vdc.get_direct_orgvdc_network(network_name) except EntityNotFoundException: create_task = self.vdc.create_directly_connected_vdc_network( network_name, parent_network_name, description=description, is_shared=shared) self.execute_task(create_task.Tasks.Task[0]) msg = 'Org VDC Direct Network {0} has been created' response['msg'] = msg.format(network_name) response['changed'] = True else: msg = 'Org VDC Direct Network {0} is already present' response['warnings'] = msg.format(network_name) return response def create_org_vdc_isolated_network(self): response = dict() response['changed'] = False network_name = self.params.get('network_name') network_cidr = self.params.get('network_cidr') description = self.params.get('description') shared = self.params.get('shared') 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') ip_range_start = self.params.get('ip_range_start') ip_range_end = self.params.get('ip_range_end') dhcp_enabled = self.params.get('dhcp_enabled') default_lease_time = self.params.get('default_lease_time') max_lease_time = self.params.get('max_lease_time') dhcp_ip_range_start = self.params.get('dhcp_ip_range_start') dhcp_ip_range_end = self.params.get('dhcp_ip_range_end') try: self.vdc.get_isolated_orgvdc_network(network_name) except EntityNotFoundException: create_task = self.vdc.create_isolated_vdc_network( network_name, network_cidr, description=description, primary_dns_ip=primary_dns_ip, secondary_dns_ip=secondary_dns_ip, dns_suffix=dns_suffix, ip_range_start=ip_range_start, ip_range_end=ip_range_end, is_dhcp_enabled=dhcp_enabled, default_lease_time=default_lease_time, max_lease_time=max_lease_time, dhcp_ip_range_start=dhcp_ip_range_start, dhcp_ip_range_end=dhcp_ip_range_end, is_shared=shared) self.execute_task(create_task.Tasks.Task[0]) msg = 'Org VDC Isolated Network {0} has been created' response['msg'] = msg.format(network_name) response['changed'] = True else: msg = 'Org VDC Isolated Network {0} is already present' response['warnings'] = msg.format(network_name) return response def create_org_vdc_routed_network(self): response = dict() response['changed'] = False network_name = self.params.get('network_name') gateway_name = self.params.get('gateway_name') network_cidr = self.params.get('network_cidr') description = self.params.get('description') shared = self.params.get('shared') 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') ip_range_start = self.params.get('ip_range_start') ip_range_end = self.params.get('ip_range_end') guest_vx_vlan_allowed = self.params.get('guest_vx_vlan_allowed') sub_interface = self.params.get('sub_interface') distributed_interface = self.params.get('distributed_interface') retain_net_info_across_deployments = self.params.get( 'retain_net_info_across_deployments') try: self.vdc.get_routed_orgvdc_network(network_name) except EntityNotFoundException: create_task = self.vdc.create_routed_vdc_network( network_name, gateway_name, network_cidr, description=description, primary_dns_ip=primary_dns_ip, secondary_dns_ip=secondary_dns_ip, dns_suffix=dns_suffix, ip_range_start=ip_range_start, ip_range_end=ip_range_end, is_shared=shared, guest_vx_vlan_allowed=guest_vx_vlan_allowed, sub_interface=sub_interface, distributed_interface=distributed_interface, retain_net_info_across_deployments= retain_net_info_across_deployments) self.execute_task(create_task.Tasks.Task[0]) msg = 'Org VDC Routed Network {0} has been created' response['msg'] = msg.format(network_name) response['changed'] = True else: msg = 'Org VDC Routed Network {0} is already present' response['warnings'] = msg.format(network_name) return response def delete_org_vdc_network(self): response = dict() response['changed'] = False direct = self.params.get('direct') isolated = self.params.get('isolated') routed = self.params.get('routed') if direct: return self.delete_org_vdc_direct_network() if isolated: return self.delete_org_vdc_isolated_network() if routed: return self.delete_org_vdc_routed_network() raise ValueError("Bool 'direct', 'isolated' or 'routed' is missing") def delete_org_vdc_direct_network(self): response = dict() response['changed'] = False network_name = self.params.get('network_name') force = self.params.get('force') try: self.vdc.get_direct_orgvdc_network(network_name) except EntityNotFoundException: msg = "Org VDC Direct Network {0} is not present" response['warnings'] = msg.format(network_name) else: delete_task = self.vdc.delete_direct_orgvdc_network(network_name, force=force) self.execute_task(delete_task) msg = 'Org VDC Direct Network {} has been deleted' response['msg'] = msg.format(network_name) response['changed'] = True return response def delete_org_vdc_isolated_network(self): response = dict() response['changed'] = False network_name = self.params.get('network_name') force = self.params.get('force') try: self.vdc.get_isolated_orgvdc_network(network_name) except EntityNotFoundException: msg = "Org VDC Direct Network {0} is not present" response['warnings'] = msg.format(network_name) else: delete_task = self.vdc.delete_isolated_orgvdc_network(network_name, force=force) self.execute_task(delete_task) msg = 'Org VDC Direct Network {} has been deleted' response['msg'] = msg.format(network_name) response['changed'] = True return response def delete_org_vdc_routed_network(self): response = dict() response['changed'] = False network_name = self.params.get('network_name') force = self.params.get('force') try: self.vdc.get_routed_orgvdc_network(network_name) except EntityNotFoundException: msg = "Org VDC Direct Network {0} is not present" response['warnings'] = msg.format(network_name) else: delete_task = self.vdc.delete_routed_orgvdc_network(network_name, force=force) self.execute_task(delete_task) msg = 'Org VDC Direct Network {} has been deleted' response['msg'] = msg.format(network_name) response['changed'] = True return response
class VdcNet(VcdAnsibleModule): def __init__(self, **kwargs): super(VdcNet, self).__init__(**kwargs) self.vdc_name = self.params.get('vdc_name') self.org_name = self.params.get('org_name') self.gateway_name = self.params.get('gateway_name') self.network_name = self.params.get('network_name') self.description = self.params.get('description') self.parent_network_name = self.params.get('parent_network_name') self.shared = self.params.get('shared') self.gateway_ip = self.params.get('gateway_ip') self.netmask = self.params.get('netmask') self.network_cidr = self.params.get('network_cidr') self.primary_dns_ip = self.params.get('primary_dns_ip') self.secondary_dns_ip = self.params.get('secondary_dns_ip') self.dns_suffix = self.params.get('dns_suffix') self.ip_range_start = self.params.get('ip_range_start') self.ip_range_end = self.params.get('ip_range_end') self.dhcp_enabled = self.params.get('dhcp_enabled') self.default_lease_time = self.params.get('default_lease_time') self.max_lease_time = self.params.get('max_lease_time') self.dhcp_ip_range_start = self.params.get('dhcp_ip_range_start') self.dhcp_ip_range_end = self.params.get('dhcp_ip_range_end') self.force = self.params.get('force') self.state = self.params.get('state') self.direct = self.params.get('direct') self.isolated = self.params.get('isolated') self.routed = self.params.get('routed') self.guest_vlan_allowed = self.params.get('guest_vlan_allowed') self.sub_interface = self.params.get('sub_interface') self.distributed_interface = self.params.get('distributed_interface') self.retain_net_info_across_deployments = self.params.get( 'retain_net_info_across_deployments') org_resource = self.client.get_org_by_name(self.org_name) self.org = Org(self.client, resource=org_resource) vdc_resource = self.org.get_vdc(self.vdc_name) self.vdc = VDC(self.client, name=self.vdc_name, resource=vdc_resource) def manage_states(self): state = self.params.get('state') if state == "present": if self.direct: return self.create_direct_network() elif self.isolated: return self.create_isolated_network() elif self.routed: return self.create_routed_network() else: raise Exception("Bool 'direct', 'isolated' or 'routed' is missing") if state == "absent": return self.delete_network() def create_direct_network(self): response = dict() try: self.vdc.get_direct_orgvdc_network(self.network_name) except EntityNotFoundException: create = self.vdc.create_directly_connected_vdc_network( self.network_name, self.parent_network_name, description=self.description, is_shared=self.shared) self.execute_task(create.Tasks.Task[0]) response['msg'] = 'Network {0} created'.format(self.network_name) response['changed'] = True else: response['warnings'] = 'Network {0} is already present.'.format( self.network_name) return response def create_isolated_network(self): response = dict() try: self.vdc.get_isolated_orgvdc_network(self.network_name) except EntityNotFoundException: create = self.vdc.create_isolated_vdc_network( self.network_name, self.network_cidr, description=self.description, primary_dns_ip=self.primary_dns_ip, secondary_dns_ip=self.secondary_dns_ip, dns_suffix=self.dns_suffix, ip_range_start=self.ip_range_start, ip_range_end=self.ip_range_end, is_dhcp_enabled=self.dhcp_enabled, default_lease_time=self.default_lease_time, max_lease_time=self.max_lease_time, dhcp_ip_range_start=self.dhcp_ip_range_start, dhcp_ip_range_end=self.dhcp_ip_range_end, is_shared=self.shared) self.execute_task(create.Tasks.Task[0]) response['msg'] = 'Network {0} created'.format(self.network_name) response['changed'] = True else: response['warnings'] = 'Network {0} is already present.'.format( self.network_name) return response def create_routed_network(self): response = dict() try: self.vdc.get_routed_orgvdc_network(self.network_name) except EntityNotFoundException: create = self.vdc.create_routed_vdc_network( self.network_name, self.gateway_name, self.network_cidr, description=self.description, primary_dns_ip=self.primary_dns_ip, secondary_dns_ip=self.secondary_dns_ip, dns_suffix=self.dns_suffix, ip_range_start=self.ip_range_start, ip_range_end=self.ip_range_end, is_shared=self.shared, guest_vlan_allowed=self.guest_vlan_allowed, sub_interface=self.sub_interface, distributed_interface=self.distributed_interface, retain_net_info_across_deployments=self.retain_net_info_across_deployments) self.execute_task(create.Tasks.Task[0]) response['msg'] = 'Network {0} created'.format(self.network_name) response['changed'] = True else: response['warnings'] = 'Network {0} is already present.'.format( self.network_name) return response def delete_network(self): response = dict() try: if self.direct: self.vdc.get_direct_orgvdc_network(self.network_name) elif self.isolated: self.vdc.get_isolated_orgvdc_network(self.network_name) elif self.routed: self.vdc.get_routed_orgvdc_network(self.network_name) except EntityNotFoundException: response['warnings'] = 'Network {} is not present.'.format( self.network_name) else: if self.direct: delete = self.vdc.delete_direct_orgvdc_network( self.network_name, force=self.force) elif self.isolated: delete = self.vdc.delete_isolated_orgvdc_network( self.network_name, force=self.force) elif self.routed: delete = self.vdc.delete_routed_orgvdc_network( self.network_name, force=self.force) self.execute_task(delete) response['msg'] = 'Network {} has been deleted.'.format( self.network_name) response['changed'] = True return response
cfg.org.org_isol_nw.name)) vdc.delete_isolated_orgvdc_network(cfg.org.org_isol_nw.name) except Exception: print("The isolated network {0} does not exist.".format( cfg.org.org_isol_nw.name)) # Ensure Routed Org Network doesn't exist and delete it. ------------------------------------------ print("\nFetching the routed network {0} ...".format( cfg.org.org_routed_nw.name)) try: routed_network = vdc.get_routed_orgvdc_network(cfg.org.org_routed_nw.name) print("The routed network {0} exists, deleting".format( cfg.org.org_routed_nw.name)) # print('name: {}'.format(routed_network.attrib['name'])) # print('href: {}'.format(routed_network.attrib['href'])) delete_nw = vdc.delete_routed_orgvdc_network(cfg.org.org_routed_nw.name) # Test whether it's been deleted i = 0 while i < 60: obj = client.get_resource(delete_nw.attrib['href']) if obj.attrib['status'] != 'success': print(obj.attrib['status']) i += 1 time.sleep(1) else: print("The network {0} doesn't exist".format( cfg.org.org_routed_nw.name)) i = 61 except Exception: print("The routed network {0} does not exist".format(