def delete_resources_created_for_l2dom_providernet(restproxy_serv, l2domid): nuagel2domain = nuagelib.NuageL2Domain() # Get bridge vport on given l2domain bridge_vports = restproxy_serv.rest_call( 'GET', nuagel2domain.get_all_vports(l2domid), '', nuagel2domain.extra_headers_vport_get()) if not nuagel2domain.validate(bridge_vports): raise restproxy.RESTProxyError(nuagel2domain.error_msg) # Delete bridge interface and bridge vport if it is subnet created for # provider net if bridge_vports and bridge_vports[VSD_RESP_OBJ]: nuage_vport = nuagelib.NuageVPort() bridge_vport = bridge_vports[VSD_RESP_OBJ][0] bridge_iface = restproxy_serv.rest_call( 'GET', nuage_vport.post_bridge_interface(bridge_vport['ID']), '') if not nuage_vport.validate(bridge_iface): raise restproxy.RESTProxyError(nuage_vport.error_msg) if bridge_iface and bridge_iface[VSD_RESP_OBJ]: bridge_iface_id = bridge_iface[VSD_RESP_OBJ][0]['ID'] restproxy_serv.rest_call( 'DELETE', nuage_vport.del_bridge_interface(bridge_iface_id), '') # Delete bridge vport nuage_vport = nuagelib.NuageVPort({'vport_id': bridge_vport['ID']}) restproxy_serv.delete(nuage_vport.delete_resource()) # Delete vlan obj on gateway port delete_vlan_for_gw_port(restproxy_serv, bridge_vport)
def delete_resources_created_for_domainsubnet_providernet( restproxy_serv, pg_obj, nuage_subn_id, neutron_subn_id): # Get vports on the given nuage domain subnet nuagel3domsub = nuagelib.NuageSubnet() bridge_vports = restproxy_serv.rest_call( 'GET', nuagel3domsub.get_all_vports(nuage_subn_id), '', nuagel3domsub.extra_headers_vport_get()) if not nuagel3domsub.validate(bridge_vports): raise restproxy.RESTProxyError(nuagel3domsub.error_msg) # Delete bridge interface and bridge vport if it is subnet created for # provider net if bridge_vports and bridge_vports[3]: nuage_vport = nuagelib.NuageVPort() vport = bridge_vports[VSD_RESP_OBJ][0] bridge_iface = restproxy_serv.rest_call( 'GET', nuage_vport.post_bridge_interface(vport['ID']), '') if not nuage_vport.validate(bridge_iface): raise restproxy.RESTProxyError(nuage_vport.error_msg) if bridge_iface and bridge_iface[VSD_RESP_OBJ]: bridge_iface_id = \ bridge_iface[constants.VSD_RESP_OBJ][0]['ID'] restproxy_serv.rest_call( 'DELETE', nuage_vport.del_bridge_interface(bridge_iface_id), '') # Delete bridge vport nuage_vport = nuagelib.NuageVPort({'vport_id': vport['ID']}) restproxy_serv.rest_call( 'DELETE', nuage_vport.get_resource(), '') # Delete vlan obj on gateway port delete_vlan_for_gw_port(restproxy_serv, vport) # Get defaultPG on nuage domain and delete if it is subnet created for # providernet if bridge_vports: nuage_dom_id = helper.get_domain_id_by_nuage_subnet_id( restproxy_serv, nuage_subn_id) params = { 'domain_id': nuage_dom_id } nuage_policygroup = nuagelib.NuagePolicygroup(create_params=params) pg_name = 'defaultPG-' + neutron_subn_id nuage_policygroups = restproxy_serv.get( nuage_policygroup.post_resource(), extra_headers=nuage_policygroup.extra_headers_get_name(pg_name)) if nuage_policygroups: nuage_policygroup_id = nuage_policygroups[0]['ID'] if nuage_policygroup_id: pg_obj._delete_policy_group(nuage_policygroup_id)
def get_child_vports(restproxy_serv, parent_resource, parent_id, required=False, **filters): nuage_vport = nuagelib.NuageVPort() return restproxy_serv.get( nuage_vport.get_child_resource(parent_resource, parent_id), extra_headers=nuage_vport.extra_header_filter(**filters), required=required)
def get_nuage_port_by_id(restproxy_serv, params): req_params = {'externalID': get_vsd_external_id(params['neutron_port_id'])} vport_type = params.get('nuage_vport_type') if vport_type == constants.HOST_VPORT_TYPE: req_params['vport_id'] = params['nuage_vport_id'] nuage_intf = nuagelib.NuageHostInterface(create_params=req_params) nuage_extra_headers = nuage_intf.extra_headers_by_externalid() else: nuage_intf = nuagelib.NuageVMInterface(create_params=req_params) nuage_extra_headers = nuage_intf.extra_headers_for_all_vmifs() response = restproxy_serv.rest_call('GET', nuage_intf.get_all_resource(), '', extra_headers=nuage_extra_headers) if not nuage_intf.validate(response): raise restproxy.RESTProxyError(nuage_intf.error_msg, nuage_intf.vsd_error_code) if len(response[3]) > 0: port = response[3][0] req_params = {'vport_id': port['VPortID']} nuage_vport = nuagelib.NuageVPort(create_params=req_params) vport_resp = restproxy_serv.rest_call('GET', nuage_vport.get_resource(), '') if not nuage_vport.validate(vport_resp): raise restproxy.RESTProxyError(nuage_vport.error_msg, nuage_vport.vsd_error_code) vport = vport_resp[3][0] vport['nuage_vif_id'] = port['ID'] return vport
def get_nuage_vport_by_name(restproxy_serv, nuage_subnet_id, nuage_vport_name, subnet_type): req_params = dict() extra_params = { 'vport_name': nuage_vport_name } nuage_vport = nuagelib.NuageVPort(create_params=req_params, extra_params=extra_params) if subnet_type == constants.L2DOMAIN: req_params['l2domain_id'] = nuage_subnet_id res_url = nuage_vport.get_vports_for_l2domain() else: req_params['subnet_id'] = nuage_subnet_id res_url = nuage_vport.get_vports_for_subnet() response = restproxy_serv.rest_call( 'GET', res_url, '', nuage_vport.extra_headers_get_by_name()) if not nuage_vport.validate(response): raise restproxy.RESTProxyError(nuage_vport.error_msg) if nuage_vport.check_response_exist(response): return nuage_vport.get_response_obj(response) return []
def get_nuage_port_by_id(restproxy_serv, params): req_params = { 'externalID': get_vsd_external_id(params['neutron_port_id']) } vport_type = params.get('nuage_vport_type') if vport_type == constants.HOST_VPORT_TYPE: req_params['vport_id'] = params['nuage_vport_id'] nuage_intf = nuagelib.NuageHostInterface(create_params=req_params) nuage_extra_headers = nuage_intf.extra_headers_by_externalid() else: nuage_intf = nuagelib.NuageVMInterface(create_params=req_params) nuage_extra_headers = nuage_intf.extra_headers_for_all_vmifs() interfaces = restproxy_serv.get(nuage_intf.get_all_resource(), extra_headers=nuage_extra_headers, required=True) if interfaces: interface = interfaces[0] req_params = {'vport_id': interface['VPortID']} nuage_vport = nuagelib.NuageVPort(create_params=req_params) vport = restproxy_serv.get(nuage_vport.get_resource(), required=True)[0] vport['nuage_vif_id'] = interface['ID'] return vport return None
def get_vports_for_policygroup(restproxy_serv, policygroup_id): req_params = { 'policygroup_id': policygroup_id } nuage_vport = nuagelib.NuageVPort(create_params=req_params) return restproxy_serv.get(nuage_vport.get_vports_for_policygroup(), required=True)
def update_nuage_vm_vport(self, params): req_params = { 'vport_id': params['nuage_vport_id'], 'fip_id': params['nuage_fip_id'] } nuagevport = nuagelib.NuageVPort(create_params=req_params) self.restproxy.put(nuagevport.put_resource(), nuagevport.fip_update_data())
def get_vport_assoc_with_fip(restproxy_serv, nuage_fip_id): req_params = {'fip_id': nuage_fip_id} nuage_vport = nuagelib.NuageVPort(create_params=req_params) resp = restproxy_serv.rest_call('GET', nuage_vport.get_vport_for_fip(), '') if not nuage_vport.validate(resp): raise restproxy.RESTProxyError(nuage_vport.error_msg) if nuage_vport.check_response_exist(resp): return nuage_vport.get_response_obj(resp)
def delete_nuage_vport(restproxy_serv, vport_id): # Delete vport nuage_vport = nuagelib.NuageVPort() del_resp = restproxy_serv.rest_call('DELETE', nuage_vport.del_vport(vport_id), '') if not nuage_vport.delete_validate(del_resp): raise restproxy.RESTProxyError(nuage_vport.error_msg, nuage_vport.vsd_error_code)
def update_mac_spoofing_on_vport(self, params, status): req_params = {'vport_id': params['vport_id']} extra_params = {'mac_spoofing': status} nuage_vport = nuagelib.NuageVPort(create_params=req_params, extra_params=extra_params) self.restproxy.put(nuage_vport.put_resource(), nuage_vport.mac_spoofing_update_data()) LOG.debug("MAC spoofing changed to %s on vport %s", status, params['vport_id'])
def get_vports(restproxy_serv, parent, parent_id, headers=None, **filters): nuagevport = nuagelib.NuageVPort() if headers is None: headers = {} generated_header = nuagevport.extra_header_filter(**filters) if generated_header is not None: headers.update(generated_header) return restproxy_serv.get(nuagevport.get_child_resource( parent.resource, parent_id), extra_headers=headers)
def delete_nuage_vport(restproxy_serv, nuage_vport_id): req_params = { 'vport_id': nuage_vport_id } nuage_vport = nuagelib.NuageVPort(create_params=req_params) response = restproxy_serv.rest_call('DELETE', nuage_vport.delete_resource(), '') if not nuage_vport.validate(response): raise restproxy.RESTProxyError(nuage_vport.error_msg)
def get_host_and_bridge_vports(self, subnet_id, subnet_type): if subnet_type == constants.L2DOMAIN: parent = nuagelib.NuageL2Domain elif subnet_type == constants.SUBNET: parent = nuagelib.NuageSubnet else: return [] vport = nuagelib.NuageVPort() return helper.get_vports(self.restproxy, parent=parent, parent_id=subnet_id, headers=vport.extra_headers_host_or_bridge())
def get_vports_by_external_ids(self, parent, parent_id, external_ids): if parent == constants.L2DOMAIN: parent = nuagelib.NuageL2Domain.resource elif parent == constants.SUBNET: parent = nuagelib.NuageSubnet.resource nuage_vport = nuagelib.NuageVPort() return helper.get_by_field_values(self.restproxy, resource=nuage_vport, field_name='externalID', field_values=external_ids, parent=parent, parent_id=parent_id)
def get_nuage_vport(restproxy_serv, nuage_vport_id): req_params = {'vport_id': nuage_vport_id} nuage_vport = nuagelib.NuageVPort(create_params=req_params) try: vports = restproxy_serv.get(nuage_vport.get_resource(), required=True) return vports[0] except restproxy.RESTProxyError as e: if e.code == constants.RES_NOT_FOUND: # This is because HEAT does not call get_all before get. So we # explicitly have to return empty list and not throw an exception. return None raise
def get_vports_for_l2domain(restproxy_serv, nuage_l2dom_id): req_params = { 'l2domain_id': nuage_l2dom_id } nuage_vport = nuagelib.NuageVPort(create_params=req_params) response = restproxy_serv.rest_call('GET', nuage_vport.get_vports_for_l2domain(), '') if not nuage_vport.validate(response): raise restproxy.RESTProxyError(nuage_vport.error_msg) return nuage_vport.get_response_objlist(response)
def get_nuage_vport(restproxy_serv, nuage_vport_id): req_params = { 'vport_id': nuage_vport_id } nuage_vport = nuagelib.NuageVPort(create_params=req_params) response = restproxy_serv.rest_call('GET', nuage_vport.get_resource(), '') if not nuage_vport.validate(response): error_code = nuage_vport.get_error_code(response) if error_code == constants.RES_NOT_FOUND: # This is because HEAT does not call get_all before get. So we # explicitly have to return empty list and not throw an exception. return [] raise restproxy.RESTProxyError(nuage_vport.error_msg, error_code) if nuage_vport.check_response_exist(response): return nuage_vport.get_response_obj(response)
def get_nuage_vport_by_name(restproxy_serv, nuage_subnet_id, nuage_vport_name, subnet_type): req_params = dict() extra_params = {'vport_name': nuage_vport_name} nuage_vport = nuagelib.NuageVPort(create_params=req_params, extra_params=extra_params) if subnet_type == constants.L2DOMAIN: req_params['l2domain_id'] = nuage_subnet_id res_url = nuage_vport.get_vports_for_l2domain() else: req_params['subnet_id'] = nuage_subnet_id res_url = nuage_vport.get_vports_for_subnet() vports = restproxy_serv.get(res_url, nuage_vport.extra_headers_get_by_name(), required=True) return vports[0] if vports else None
def update_nuage_vm_vport(self, params): req_params = { 'vport_id': params['nuage_vport_id'], 'fip_id': params['nuage_fip_id'] } nuage_fip = None nuagevport = nuagelib.NuageVPort(create_params=req_params) if params['nuage_fip_id']: nuage_fip = self.restproxy.rest_call( 'GET', nuagevport.get_resource(), '') # call PUT only if fip_id update required for the vport or when passed # nuage_fip_id param is None if (not nuage_fip or (nuage_fip and (nuage_fip[3][0]['associatedFloatingIPID'] != params['nuage_fip_id']))): resp = self.restproxy.rest_call('PUT', nuagevport.put_resource(), nuagevport.fip_update_data()) if not nuagevport.validate(resp): raise restproxy.RESTProxyError(nuagevport.error_msg)
def delete_nuage_vport(restproxy_serv, vport_id): # Delete vport nuage_vport = nuagelib.NuageVPort() restproxy_serv.delete(nuage_vport.del_vport(vport_id))
def _create_vport_interface(subnet_id, restproxy_serv, subn_type, vport_type, params): nuage_vlan_id = params.get('nuage_vlan_id') req_params = dict() extra_params = { 'vlan': nuage_vlan_id, 'externalID': get_vsd_external_id(params.get('externalid')) } if vport_type == constants.BRIDGE_VPORT_TYPE: extra_params['type'] = constants.BRIDGE_VPORT_TYPE extra_params['name'] = 'Bridge Vport ' + nuage_vlan_id else: extra_params['type'] = constants.HOST_VPORT_TYPE extra_params['name'] = 'Host Vport ' + nuage_vlan_id extra_params[constants.PORTSECURITY] = params[constants.PORTSECURITY] nuage_vport = nuagelib.NuageVPort(create_params=req_params, extra_params=extra_params) if subn_type == constants.SUBNET: req_params['subnet_id'] = subnet_id extra_params['net_type'] = constants.SUBNET.upper() resource_url = nuage_vport.post_vport_for_subnet() else: req_params['l2domain_id'] = subnet_id extra_params['net_type'] = constants.L2DOMAIN.upper() resource_url = nuage_vport.post_vport_for_l2domain() # create the vport vport = restproxy_serv.post( resource_url, nuage_vport.post_vport_data(), on_res_exists=restproxy_serv.vport_retrieve_by_ext_id_and_vlan, ignore_err_codes=[restproxy.REST_VLAN_IN_USE_ERR_CODE])[0] # create the interface nuage_vport_id = vport['ID'] req_params['vport_id'] = nuage_vport_id if vport_type == constants.BRIDGE_VPORT_TYPE: # Setting the intf name as "BRIDGE INTERFACE(<vport_id>)" extra_params['name'] = "BRIDGE INTERFACE(" + nuage_vport_id + ")" nuage_interface = nuagelib.NuageBridgeInterface( create_params=req_params, extra_params=extra_params) resource_url = nuage_interface.post_resource_by_vport() else: extra_params['ipaddress'] = params['ipaddress'] extra_params['ipaddress_v6'] = params.get('ipaddress_v6') extra_params['mac'] = params['mac'] extra_params['externalID'] = get_vsd_external_id(params['externalid']) nuage_interface = nuagelib.NuageHostInterface( create_params=req_params, extra_params=extra_params) resource_url = nuage_interface.post_resource_by_vport() vport_intf = restproxy_serv.post( resource_url, nuage_interface.post_iface_data(), on_res_exists=restproxy_serv.retrieve_by_external_id, ignore_err_codes=[restproxy.REST_IFACE_EXISTS_ERR_CODE])[0] return {'vport': vport, 'interface': vport_intf}
def create_bridge_vport_iface_for_pnet(restproxy_serv, pg_obj, params): l2domain_id = params.get('l2domain_id') nuage_subnet_id = params.get('nuage_subnet_id') gw_type = params.get('gw_type') nuage_vlan_id = params.get('nuage_vlan_id') # Create vport of type bridge and attach vlan vport_params = { 'vlan': nuage_vlan_id, 'type': 'BRIDGE', 'name': 'Bridge Vport ' + nuage_vlan_id, 'externalID': params.get('neutron_subnet_id') } if l2domain_id: nuagel2domain = nuagelib.NuageL2Domain() vport_response = restproxy_serv.rest_call( 'POST', nuagel2domain.vport_post(l2domain_id), nuagel2domain.vport_post_data(vport_params)) if not nuagel2domain.validate(vport_response): raise restproxy.RESTProxyError(nuagel2domain.error_msg) if vport_response[VSD_RESP_OBJ]: vport_id = vport_response[VSD_RESP_OBJ][0]['ID'] # Create Bridge interface in the vport nuage_vport = nuagelib.NuageVPort() bridge_iface = restproxy_serv.rest_call( 'POST', nuage_vport.post_bridge_interface(vport_id), nuage_vport.post_bridge_iface_data( constants.L2DOMAIN.upper(), "BRIDGE INTERFACE(" + vport_id + ")", params.get('neutron_subnet_id'))) if not nuage_vport.validate(bridge_iface): raise restproxy.RESTProxyError(nuage_vport.error_msg) # Create a policygroup for this bridge vport and create default rules nuage_policygroup_id = \ pg_obj.create_policygroup_default_allow_any_rule( l2domain_id, None, params.get('neutron_subnet_id'), gw_type) # Add vport to the policygroup pg_obj.update_vport_policygroups(vport_id, [nuage_policygroup_id]) else: nuage_subnet = nuagelib.NuageSubnet() vport_response = restproxy_serv.rest_call( 'POST', nuage_subnet.vport_post(nuage_subnet_id), nuage_subnet.vport_post_data(vport_params)) if not nuage_subnet.validate(vport_response): raise restproxy.RESTProxyError(nuage_subnet.error_msg) if vport_response[VSD_RESP_OBJ]: vport_id = vport_response[VSD_RESP_OBJ][0]['ID'] # Create Bridge interface in the vport nuage_vport = nuagelib.NuageVPort() bridge_iface = restproxy_serv.rest_call( 'POST', nuage_vport.post_bridge_interface(vport_id), nuage_vport.post_bridge_iface_data( "SUBNET", "BRIDGE INTERFACE(" + vport_id + ")", params.get('neutron_subnet_id'))) if not nuage_vport.validate(bridge_iface): raise restproxy.RESTProxyError(nuage_vport.error_msg) # Get rtr id from nuage_subnet_id nuage_rtr_id = helper._get_nuage_domain_id_from_subnet( restproxy_serv, nuage_subnet_id) # Create a policygroup for this bridge vport and create default rules nuage_policygroup_id = \ pg_obj.create_policygroup_default_allow_any_rule( None, nuage_rtr_id, params.get('neutron_subnet_id'), gw_type) # Add vport to the policygroup pg_obj.update_vport_policygroups(vport_id, [nuage_policygroup_id])
def get_nuage_vport_by_id(restproxy_serv, id, required=True): vportlib = nuagelib.NuageVPort() vports = restproxy_serv.get(vportlib.get_by_id(id), required=required) return vports[0] if vports else None
def update_vport(restproxy_serv, id, data): vport = nuagelib.NuageVPort(create_params={'vport_id': id}) restproxy_serv.put(vport.put_resource(), data)
def get_vports_for_l2domain(restproxy_serv, nuage_l2dom_id): req_params = {'l2domain_id': nuage_l2dom_id} nuage_vport = nuagelib.NuageVPort(create_params=req_params) return restproxy_serv.get(nuage_vport.get_vports_for_l2domain(), required=True)
def get_vports_for_subnet(restproxy_serv, nuage_subnet_id): req_params = {'subnet_id': nuage_subnet_id} nuage_vport = nuagelib.NuageVPort(create_params=req_params) return restproxy_serv.get(nuage_vport.get_vports_for_subnet(), required=True)
def delete_nuage_vport(restproxy_serv, nuage_vport_id): req_params = {'vport_id': nuage_vport_id} nuage_vport = nuagelib.NuageVPort(create_params=req_params) restproxy_serv.delete(nuage_vport.delete_resource())
def _create_vport_interface(subnet_id, pg_obj, restproxy_serv, subn_type, vport_type, params): gw_type = params.get('gw_type') nuage_vlan_id = params.get('nuage_vlan_id') req_params = dict() extra_params = { 'vlan': nuage_vlan_id, 'externalID': get_vsd_external_id(params.get('externalid')) } if vport_type == constants.BRIDGE_VPORT_TYPE: extra_params['type'] = constants.BRIDGE_VPORT_TYPE extra_params['name'] = 'Bridge Vport ' + nuage_vlan_id extra_params['externalID'] = get_vsd_external_id( params['neutron_subnet_id']) else: extra_params['type'] = constants.HOST_VPORT_TYPE extra_params['name'] = 'Host Vport ' + nuage_vlan_id extra_params[constants.PORTSECURITY] = params[constants.PORTSECURITY] nuage_vport = nuagelib.NuageVPort(create_params=req_params, extra_params=extra_params) if subn_type == constants.SUBNET: req_params['subnet_id'] = subnet_id extra_params['net_type'] = constants.SUBNET.upper() resource_url = nuage_vport.post_vport_for_subnet() else: req_params['l2domain_id'] = subnet_id extra_params['net_type'] = constants.L2DOMAIN.upper() resource_url = nuage_vport.post_vport_for_l2domain() # create the vport vport = restproxy_serv.post( resource_url, nuage_vport.post_vport_data(), on_res_exists=restproxy_serv.retrieve_by_external_id, ignore_err_codes=[restproxy.REST_VLAN_IN_USE_ERR_CODE])[0] # create the interface nuage_vport_id = vport['ID'] req_params['vport_id'] = nuage_vport_id if vport_type == constants.BRIDGE_VPORT_TYPE: # Setting the intf name as "BRIDGE INTERFACE(<vport_id>)" extra_params['name'] = "BRIDGE INTERFACE(" + nuage_vport_id + ")" nuage_interface = nuagelib.NuageBridgeInterface( create_params=req_params, extra_params=extra_params) resource_url = nuage_interface.post_resource_by_vport() else: extra_params['ipaddress'] = params['ipaddress'] extra_params['mac'] = params['mac'] extra_params['externalID'] = get_vsd_external_id(params['externalid']) nuage_interface = nuagelib.NuageHostInterface( create_params=req_params, extra_params=extra_params) resource_url = nuage_interface.post_resource_by_vport() vport_intf = restproxy_serv.post( resource_url, nuage_interface.post_iface_data(), on_res_exists=restproxy_serv.retrieve_by_external_id, ignore_err_codes=[restproxy.REST_IFACE_EXISTS_ERR_CODE])[0] if (not params.get('nuage_managed_subnet') and params.get('port_security_enabled')): if subn_type == constants.SUBNET: # Get rtr id from nuage_subnet_id nuage_rtr_id = helper._get_nuage_domain_id_from_subnet( restproxy_serv, subnet_id) _create_policygroup_for_vport(gw_type, None, nuage_rtr_id, params.get('neutron_subnet_id'), pg_obj, restproxy_serv, vport, subn_type) else: _create_policygroup_for_vport(gw_type, subnet_id, None, params.get('neutron_subnet_id'), pg_obj, restproxy_serv, vport, subn_type) if (not params.get('nuage_managed_subnet') and not params.get('port_security_enabled')): if subn_type == constants.SUBNET: nuage_rtr_id = helper._get_nuage_domain_id_from_subnet( restproxy_serv, subnet_id) _add_policy_group_for_port_sec(gw_type, None, nuage_rtr_id, pg_obj, nuage_vport_id) else: _add_policy_group_for_port_sec(gw_type, subnet_id, None, pg_obj, nuage_vport_id) ret = { 'vport': vport, 'interface': vport_intf } return ret
def get_vport_assoc_with_fip(restproxy_serv, nuage_fip_id): req_params = {'fip_id': nuage_fip_id} nuage_vport = nuagelib.NuageVPort(create_params=req_params) return restproxy_serv.get(nuage_vport.get_vport_for_fip(), required=True)[0]