def get_scalingips(context, filters=None, fields=None, sorts=None, limit=None, marker=None, page_reverse=False): """Retrieve a list of scaling ips. :param context: neutron api request context. :param filters: a dictionary with keys that are valid keys for a scaling ip as listed in the RESOURCE_ATTRIBUTE_MAP object in neutron/api/v2/attributes.py. Values in this dictionary are an iterable containing values that will be used for an exact match comparison for that value. Each result returned by this function will have matched one of the values for each key in filters. :param fields: a list of strings that are valid keys in a scaling IP dictionary as listed in the RESOURCE_ATTRIBUTE_MAP object in neutron/api/v2/attributes.py. Only these fields will be returned. :returns: List of scaling IPs that are accessible to the tenant who submits the request (as indicated by the tenant id of the context) as well as any filters. """ LOG.info('get_scalingips for tenant %s filters %s fields %s' % (context.tenant_id, filters, fields)) scaling_ips = _get_ips_by_type(context, ip_types.SCALING, filters=filters, fields=fields) return [v._make_scaling_ip_dict(scip) for scip in scaling_ips]
def create_scalingip(context, content): """Allocate or reallocate a scaling IP. :param context: neutron api request context. :param content: dictionary describing the scaling ip, with keys as listed in the RESOURCE_ATTRIBUTE_MAP object in neutron/api/v2/attributes.py. All keys will be populated. :returns: Dictionary containing details for the new scaling IP. If values are declared in the fields parameter, then only those keys will be present. """ LOG.info('create_scalingip for tenant %s and body %s', context.tenant_id, content) network_id = content.get('scaling_network_id') ip_address = content.get('scaling_ip_address') requested_ports = content.get('ports', []) network = _get_network(context, network_id) port_fixed_ips = {} for req_port in requested_ports: port = _get_port(context, req_port['port_id']) fixed_ip = _get_fixed_ip(context, req_port.get('fixed_ip_address'), port) port_fixed_ips[port.id] = {"port": port, "fixed_ip": fixed_ip} scip = _allocate_ip(context, network, None, ip_address, ip_types.SCALING) _create_flip(context, scip, port_fixed_ips) return v._make_scaling_ip_dict(scip)
def get_scalingips(context, filters=None, fields=None, sorts=['id'], limit=None, marker=None, page_reverse=False): """Retrieve a list of scaling ips. :param context: neutron api request context. :param filters: a dictionary with keys that are valid keys for a scaling ip as listed in the RESOURCE_ATTRIBUTE_MAP object in neutron/api/v2/attributes.py. Values in this dictionary are an iterable containing values that will be used for an exact match comparison for that value. Each result returned by this function will have matched one of the values for each key in filters. :param fields: a list of strings that are valid keys in a scaling IP dictionary as listed in the RESOURCE_ATTRIBUTE_MAP object in neutron/api/v2/attributes.py. Only these fields will be returned. :returns: List of scaling IPs that are accessible to the tenant who submits the request (as indicated by the tenant id of the context) as well as any filters. """ LOG.info('get_scalingips for tenant %s filters %s fields %s' % (context.tenant_id, filters, fields)) scaling_ips = _get_ips_by_type(context, ip_types.SCALING, filters=filters, fields=fields) return [v._make_scaling_ip_dict(scip) for scip in scaling_ips]
def update_scalingip(context, id, content): """Update an existing scaling IP. :param context: neutron api request context. :param id: id of the scaling ip :param content: dictionary with keys indicating fields to update. valid keys are those that have a value of True for 'allow_put' as listed in the RESOURCE_ATTRIBUTE_MAP object in neutron/api/v2/attributes.py. :returns: Dictionary containing details for the new scaling IP. If values are declared in the fields parameter, then only those keys will be present. """ LOG.info('update_scalingip %s for tenant %s and body %s' % (id, context.tenant_id, content)) requested_ports = content.get('ports', []) flip = _update_flip(context, id, ip_types.SCALING, requested_ports) return v._make_scaling_ip_dict(flip)
def get_scalingip(context, id, fields=None): """Retrieve a scaling IP. :param context: neutron api request context. :param id: The UUID of the scaling IP. :param fields: a list of strings that are valid keys in a scaling IP dictionary as listed in the RESOURCE_ATTRIBUTE_MAP object in neutron/api/v2/attributes.py. Only these fields will be returned. :returns: Dictionary containing details for the scaling IP. If values are declared in the fields parameter, then only those keys will be present. """ LOG.info('get_scalingip %s for tenant %s' % (id, context.tenant_id)) filters = {'address_type': ip_types.SCALING, '_deallocated': False} scaling_ip = db_api.floating_ip_find(context, id=id, scope=db_api.ONE, **filters) if not scaling_ip: raise q_exc.ScalingIpNotFound(id=id) return v._make_scaling_ip_dict(scaling_ip)