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 _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_nuage_domain_id_from_subnet(self, dom_subn_id): return helper._get_nuage_domain_id_from_subnet(self.restproxy, dom_subn_id)