class EdgeInCatalogWhole(VcdAnsibleModule): def __init__(self, **kwargs): super(EdgeInCatalogWhole, self).__init__(**kwargs) self.host = self.params.get('host') self.host = self.params.get('host') self.user = self.params.get('user') self.password = self.params.get('password') self.api_version = self.params.get('api_version') self.vdc_name = self.params.get('vdc_name') self.org_name = self.params.get('org_name') self.edge_name = self.params.get('edge_name') logged_in_org = self.client.get_org_by_name(self.org_name) self.org = Org(self.client, resource=logged_in_org) #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): operation = self.params.get('operation') if operation == "read": return self.get_edge_information() def get_edge_information(self): operation = self.params.get('operation') if operation: return self.run_get_edge_information() raise ValueError("Operation type is must be read, now is missing") def run_get_edge_information(self): response = dict() response['changed'] = False edge_name = self.params.get('edge_name') description = self.params.get('description') try: self.vdc.get_direct_orgvdc_network(edge_name) except EntityNotFoundException: msg = 'EDGE INFO Cannot be found for {0} ' response['msg'] = error.__str__(msg) response['changed'] = True else: msg = 'EDGE INFO Network {0} is already present' response['warnings'] = msg.format(edge_name) 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
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
sys.exit() # Ensure VDC exists. print("Fetching VDC...") try: vdc_resource = org.get_vdc(cfg.org.vdc_name) vdc = VDC(client, resource=vdc_resource) print("VDC already exists: {0}".format(cfg.org.vdc_name)) except Exception: print("VDC {0} does not exist, exiting".format(cfg.org['vdc_name'])) sys.exit() # Ensure Direct Org Network doesn't exist. print("Fetching Network...") try: network_resource = vdc.get_direct_orgvdc_network( cfg.org.org_direct_nw.name) print("Network already exists: {0}".format(cfg.org.org_direct_nw.name)) except Exception: print("Network {0} does not exist, creating".format( cfg.org.org_direct_nw.name)) network_res = vdc.create_directly_connected_vdc_network( network_name=cfg.org.org_direct_nw.name, parent_network_name=cfg.org.org_direct_nw.parent_network, is_shared=cfg.org.org_direct_nw.is_shared) handle_task(client, network_res.Tasks.Task[0]) # Final report ------------------------------------------------------------------------------------ new_direct_network = vdc.get_direct_orgvdc_network(cfg.org.org_direct_nw.name) print( '\nNew Direct network is created -------------------------------------------------'