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)
Exemple #3
0
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)
Exemple #4
0
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 []
Exemple #6
0
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)
Exemple #8
0
 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())
Exemple #9
0
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)
Exemple #10
0
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)
Exemple #14
0
 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())
Exemple #15
0
 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)
Exemple #16
0
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)
Exemple #19
0
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)
Exemple #26
0
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)
Exemple #27
0
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)
Exemple #28
0
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]