Exemplo n.º 1
0
def describe_security_groups(context, group_name=None, group_id=None,
                             filter=None):
    default_vpc_id = None
    default_vpc = ec2utils.check_and_create_default_vpc(context)
    if default_vpc:
        default_vpc_id = default_vpc['id']
    formatted_security_groups = SecurityGroupDescriber(
        default_vpc_id).describe(context, group_id, group_name, filter)
    return {'securityGroupInfo': formatted_security_groups}
Exemplo n.º 2
0
def describe_security_groups(context, group_name=None, group_id=None,
                             filter=None):
    default_vpc_id = None
    default_vpc = ec2utils.check_and_create_default_vpc(context)
    if default_vpc:
        default_vpc_id = default_vpc['id']
    formatted_security_groups = SecurityGroupDescriber(
        default_vpc_id).describe(context, group_id, group_name, filter)
    return {'securityGroupInfo': formatted_security_groups}
Exemplo n.º 3
0
    def release_address(self, context, public_ip, allocation_id):
        neutron = clients.neutron(context)
        if public_ip:
            # TODO(ft): implement search in DB layer
            address = next((addr for addr in
                            db_api.get_items(context, 'eipalloc')
                            if addr['public_ip'] == public_ip), None)
            if address and _is_address_valid(context, neutron, address):
                msg = _('You must specify an allocation id when releasing a '
                        'VPC elastic IP address')
                raise exception.InvalidParameterValue(msg)
            os_floating_ip = self.get_os_floating_ip_by_public_ip(context,
                                                                  public_ip)
            try:
                neutron.delete_floatingip(os_floating_ip['id'])
            except neutron_exception.NotFound:
                pass
            return

        address = ec2utils.get_db_item(context, allocation_id)
        if not _is_address_valid(context, neutron, address):
            raise exception.InvalidAllocationIDNotFound(
                id=allocation_id)

        if 'network_interface_id' in address:
            if CONF.disable_ec2_classic:
                network_interface_id = address['network_interface_id']
                network_interface = db_api.get_item_by_id(context,
                                                          network_interface_id)
                default_vpc = ec2utils.check_and_create_default_vpc(context)
                if default_vpc:
                    default_vpc_id = default_vpc['id']
                if (network_interface and
                        network_interface['vpc_id'] == default_vpc_id):
                    association_id = ec2utils.change_ec2_id_kind(address['id'],
                                                                 'eipassoc')
                    self.disassociate_address(
                        context, association_id=association_id)
                else:
                    raise exception.InvalidIPAddressInUse(
                        ip_address=address['public_ip'])
            else:
                raise exception.InvalidIPAddressInUse(
                    ip_address=address['public_ip'])

        with common.OnCrashCleaner() as cleaner:
            db_api.delete_item(context, address['id'])
            cleaner.addCleanup(db_api.restore_item, context,
                               'eipalloc', address)
            try:
                neutron.delete_floatingip(address['os_id'])
            except neutron_exception.NotFound:
                pass
Exemplo n.º 4
0
    def release_address(self, context, public_ip, allocation_id):
        neutron = clients.neutron(context)
        if public_ip:
            # TODO(ft): implement search in DB layer
            address = next((addr for addr in
                            db_api.get_items(context, 'eipalloc')
                            if addr['public_ip'] == public_ip), None)
            if address and _is_address_valid(context, neutron, address):
                msg = _('You must specify an allocation id when releasing a '
                        'VPC elastic IP address')
                raise exception.InvalidParameterValue(msg)
            os_floating_ip = self.get_os_floating_ip_by_public_ip(context,
                                                                  public_ip)
            try:
                neutron.delete_floatingip(os_floating_ip['id'])
            except neutron_exception.NotFound:
                pass
            return

        address = ec2utils.get_db_item(context, allocation_id)
        if not _is_address_valid(context, neutron, address):
            raise exception.InvalidAllocationIDNotFound(
                id=allocation_id)

        if 'network_interface_id' in address:
            if CONF.disable_ec2_classic:
                network_interface_id = address['network_interface_id']
                network_interface = db_api.get_item_by_id(context,
                                                          network_interface_id)
                default_vpc = ec2utils.check_and_create_default_vpc(context)
                if default_vpc:
                    default_vpc_id = default_vpc['id']
                if (network_interface and
                        network_interface['vpc_id'] == default_vpc_id):
                    association_id = ec2utils.change_ec2_id_kind(address['id'],
                                                                 'eipassoc')
                    self.disassociate_address(
                        context, association_id=association_id)
                else:
                    raise exception.InvalidIPAddressInUse(
                        ip_address=address['public_ip'])
            else:
                raise exception.InvalidIPAddressInUse(
                    ip_address=address['public_ip'])

        with common.OnCrashCleaner() as cleaner:
            db_api.delete_item(context, address['id'])
            cleaner.addCleanup(db_api.restore_item, context,
                               'eipalloc', address)
            try:
                neutron.delete_floatingip(address['os_id'])
            except neutron_exception.NotFound:
                pass
Exemplo n.º 5
0
 def get_default_vpc(self, context):
     if CONF.disable_ec2_classic:
         default_vpc = ec2utils.check_and_create_default_vpc(context)
         if default_vpc:
             return default_vpc['id']
     return 'none'
Exemplo n.º 6
0
 def get_default_vpc(self, context):
     if CONF.disable_ec2_classic:
         default_vpc = ec2utils.check_and_create_default_vpc(context)
         if default_vpc:
             return default_vpc['id']
     return 'none'
Exemplo n.º 7
0
def describe_subnets(context, subnet_id=None, filter=None):
    ec2utils.check_and_create_default_vpc(context)
    formatted_subnets = SubnetDescriber().describe(context,
                                                   ids=subnet_id,
                                                   filter=filter)
    return {'subnetSet': formatted_subnets}
Exemplo n.º 8
0
def describe_internet_gateways(context, internet_gateway_id=None,
                               filter=None):
    ec2utils.check_and_create_default_vpc(context)
    formatted_igws = InternetGatewayDescriber().describe(
            context, ids=internet_gateway_id, filter=filter)
    return {'internetGatewaySet': formatted_igws}
Exemplo n.º 9
0
def describe_route_tables(context, route_table_id=None, filter=None):
    ec2utils.check_and_create_default_vpc(context)
    formatted_route_tables = RouteTableDescriber().describe(
            context, ids=route_table_id, filter=filter)
    return {'routeTableSet': formatted_route_tables}
Exemplo n.º 10
0
def describe_internet_gateways(context, internet_gateway_id=None,
                               filter=None):
    ec2utils.check_and_create_default_vpc(context)
    formatted_igws = InternetGatewayDescriber().describe(
            context, ids=internet_gateway_id, filter=filter)
    return {'internetGatewaySet': formatted_igws}