Beispiel #1
0
 def get_child_floatingips(self, parent_resource, parent_id,
                           required=False, **filters):
     floatingip = nuagelib.NuageFloatingIP()
     return self.restproxy.get(
         floatingip.get_child_resource(parent_resource, parent_id),
         extra_headers=floatingip.extra_header_filter(**filters),
         required=required)
 def delete_nuage_floatingip(self, id):
     nuagefip = nuagelib.NuageFloatingIP()
     resp = self.restproxy.rest_call('DELETE', nuagefip.delete_resource(id),
                                     '')
     if not nuagefip.validate(resp):
         code = nuagefip.get_error_code(resp)
         raise restproxy.RESTProxyError(nuagefip.error_msg, error_code=code)
Beispiel #3
0
def get_nuage_fip(restproxy_serv, nuage_fip_id):
    req_params = {'fip_id': nuage_fip_id}
    nuage_fip = nuagelib.NuageFloatingIP(create_params=req_params)
    resp = restproxy_serv.rest_call('GET', nuage_fip.get_fip_resource(), '')
    if not nuage_fip.validate(resp):
        raise restproxy.RESTProxyError(nuage_fip.error_msg)
    return nuage_fip.get_response_obj(resp)
Beispiel #4
0
 def get_nuage_floatingip(self, id, required=False, **filters):
     floatingip = nuagelib.NuageFloatingIP()
     floatingips = self.restproxy.get(
         floatingip.get_resource_by_id(id),
         extra_headers=floatingip.extra_header_filter(**filters),
         required=required)
     if floatingips:
         return floatingips[0]
Beispiel #5
0
 def create_nuage_floatingip_details(self, params):
     req_params = {
         'domain_id': params['nuage_rtr_id'],
         'shared_netid': params['nuage_fippool_id'],
         'address': params['neutron_fip_ip'],
         'externalID': get_vsd_external_id(params['neutron_fip_id'])
     }
     nuage_fip = nuagelib.NuageFloatingIP(create_params=req_params)
     response = self.restproxy.post(nuage_fip.post_resource(),
                                    nuage_fip.post_data())
     return response[0]
Beispiel #6
0
    def get_nuage_fip_by_id(self, neutron_fip_id):
        req_params = {
            'externalID': get_vsd_external_id(neutron_fip_id)
        }
        nuage_fip = nuagelib.NuageFloatingIP(create_params=req_params)
        nuage_extra_headers = nuage_fip.extra_headers()

        fips = self.restproxy.get(nuage_fip.get_resource(),
                                  extra_headers=nuage_extra_headers,
                                  required=True)
        return fips[0] if fips else None
    def get_nuage_fip_by_id(self, params):
        req_params = {'externalID': get_vsd_external_id(params['fip_id'])}
        nuage_fip = nuagelib.NuageFloatingIP(create_params=req_params)
        nuage_extra_headers = nuage_fip.extra_headers()

        fips = self.restproxy.get(nuage_fip.get_resource(),
                                  extra_headers=nuage_extra_headers,
                                  required=True)
        return {
            'nuage_fip_id': fips[0]['ID'],
            'nuage_assigned': fips[0]['assigned']
        } if fips else None
 def create_nuage_fip_for_vpnaas(self, params):
     req_params = {
         'domain_id': params['nuage_rtr_id'],
         'shared_netid': params['nuage_fippool_id'],
         'externalID': params['vpn_id']
     }
     nuage_fip = nuagelib.NuageFloatingIP(create_params=req_params)
     response = self.restproxy.rest_call('POST', nuage_fip.post_resource(),
                                         nuage_fip.post_fip_data())
     if not nuage_fip.validate(response):
         code = nuage_fip.get_error_code(response)
         raise restproxy.RESTProxyError(nuage_fip.error_msg, code)
     return response[3][0]
 def create_nuage_floatingip(self, params):
     req_params = {
         'domain_id': params['nuage_rtr_id'],
         'shared_netid': params['nuage_fippool_id'],
         'address': params['neutron_fip_ip'],
         'externalID': get_vsd_external_id(params['neutron_fip_id'])
     }
     nuage_fip = nuagelib.NuageFloatingIP(create_params=req_params)
     response = self.restproxy.rest_call('POST', nuage_fip.post_resource(),
                                         nuage_fip.post_data())
     if not nuage_fip.validate(response):
         code = nuage_fip.get_error_code(response)
         raise restproxy.RESTProxyError(nuage_fip.error_msg, code)
     return nuage_fip.get_fip_id(response)
Beispiel #10
0
    def delete_fip_qos(self, nuage_fip):
        fip_updates = {}
        ratelimiters_to_be_deleted = []
        for os_direction, vsd_direction in constants.DIRECTIONS_OS_VSD.items():
            existing_ratelimit = nuage_fip['{}RateLimiterID'.format(
                vsd_direction)]
            if existing_ratelimit:
                fip_updates['{}RateLimiterID'.format(vsd_direction)] = None
                ratelimiters_to_be_deleted.append(existing_ratelimit)

        if fip_updates:
            floatingip = nuagelib.NuageFloatingIP(create_params={'domain_id'})
            self.restproxy.put(floatingip.put_resource() % nuage_fip['ID'],
                               fip_updates)

        if ratelimiters_to_be_deleted:
            # We can only delete a rate limiter once it is no longer in use
            for ratelimiter in ratelimiters_to_be_deleted:
                self._delete_ratelimiter(ratelimiter)
Beispiel #11
0
    def get_nuage_fip_by_id(self, params):
        req_params = {'externalID': get_vsd_external_id(params['fip_id'])}
        nuage_fip = nuagelib.NuageFloatingIP(create_params=req_params)
        nuage_extra_headers = nuage_fip.extra_headers()

        response = self.restproxy.rest_call('GET',
                                            nuage_fip.get_resource(),
                                            '',
                                            extra_headers=nuage_extra_headers)

        if not nuage_fip.validate(response):
            raise restproxy.RESTProxyError(nuage_fip.error_msg)

        ret = None
        if len(response[3]) > 0:
            ret = {
                'nuage_fip_id': response[3][0]['ID'],
                'nuage_assigned': response[3][0]['assigned']
            }
        return ret
Beispiel #12
0
    def create_update_fip_qos(self, neutron_fip, nuage_fip):
        fip_updates = {}
        ratelimiters_to_be_deleted = []
        for os_direction, vsd_direction in constants.DIRECTIONS_OS_VSD.items():
            existing_ratelimit = nuage_fip['{}RateLimiterID'.format(
                vsd_direction)]
            new_rate = neutron_fip['nuage_{}_fip_rate_kbps'.format(
                os_direction)]
            if new_rate is None:
                continue
            if float(new_rate) == -1:
                # remove fip rate limit if exists
                if existing_ratelimit:
                    ratelimiters_to_be_deleted.append(existing_ratelimit)
                    fip_updates['{}RateLimiterID'.format(vsd_direction)] = None
            else:
                # VSD is defined as mbps, OS as kbps
                new_rate = float(new_rate) / 1000
                if existing_ratelimit:
                    self._update_ratelimiter(existing_ratelimit, new_rate)
                else:
                    name = '{}_{}'.format(vsd_direction, neutron_fip['id'])
                    rl = self._create_ratelimiter(
                        name=name,
                        description='Openstack FIP Rate Limiter for FIP {}, '
                        'vsd direction: {}.'.format(neutron_fip['id'],
                                                    vsd_direction),
                        external_id=get_vsd_external_id(name),
                        peak_information_rate=new_rate)
                    fip_updates['{}RateLimiterID'.format(
                        vsd_direction)] = rl['ID']

        if fip_updates:
            floatingip = nuagelib.NuageFloatingIP(create_params={'domain_id'})
            self.restproxy.put(floatingip.put_resource() % nuage_fip['ID'],
                               fip_updates)

        if ratelimiters_to_be_deleted:
            # We can only delete a rate limiter once it is no longer in use
            for ratelimiter in ratelimiters_to_be_deleted:
                self._delete_ratelimiter(ratelimiter)
Beispiel #13
0
def get_nuage_fip(restproxy_serv, nuage_fip_id):
    req_params = {'fip_id': nuage_fip_id}
    nuage_fip = nuagelib.NuageFloatingIP(create_params=req_params)
    return restproxy_serv.get(nuage_fip.get_fip_resource(), required=True)[0]
Beispiel #14
0
 def update_vport_floatingip(self, vport_id, floatingip_id):
     floatingip = nuagelib.NuageFloatingIP()
     self.restproxy.put(
         floatingip.get_child_resource(nuagelib.NuageVPort.resource,
                                       vport_id),
         floatingip_id)
Beispiel #15
0
 def delete_nuage_floatingip(self, id):
     nuagefip = nuagelib.NuageFloatingIP()
     self.restproxy.delete(nuagefip.delete_resource(id))