def _get_resources_by_subnet(self, cntxt, neutron_client):
        try:
            subnets = neutron_client.list_subnets().get('subnets')
            subnets_metadata = {}

            allowed_keys = [
                'cidr', 'allocation_pools', 'description', 'dns_nameservers',
                'enable_dhcp', 'gateway_ip', 'host_routes', 'id', 'ip_version',
                'ipv6_address_mode', 'ipv6_ra_mode', 'name', 'network_id',
                'subnetpool_id', 'tenant_id'
            ]

            for subnet in subnets:
                subnet_metadata = {
                    k: subnet[k]
                    for k in subnet if k in allowed_keys
                }
                subnets_metadata[subnet["id"]] = subnet_metadata

            return subnets_metadata
        except Exception as e:
            LOG.exception("List all summary subnets from neutron failed.")
            raise exception.GetProtectionNetworkSubResourceFailed(
                type=self._SUPPORT_RESOURCE_TYPES, reason=six.text_type(e))
        else:
            return []
    def _get_resources_by_network(self, cntxt, neutron_client):
        try:
            networks = neutron_client.list_networks().get('networks')
            networks_metadata = {}

            allowed_keys = [
                'id', 'admin_state_up', 'availability_zone_hints',
                'description', 'ipv4_address_scope', 'ipv6_address_scope',
                'mtu', 'name', 'port_security_enabled', 'router:external',
                'shared', 'status', 'subnets', 'tags', 'tenant_id'
            ]

            for network in networks:
                network_metadata = {
                    k: network[k]
                    for k in network if k in allowed_keys
                }
                networks_metadata[network["id"]] = network_metadata
            return networks_metadata
        except Exception as e:
            LOG.exception("List all summary networks from neutron failed.")
            raise exception.GetProtectionNetworkSubResourceFailed(
                type=self._SUPPORT_RESOURCE_TYPES, reason=six.text_type(e))
        else:
            return []
    def _get_resources_by_port(self, cntxt, neutron_client):
        try:
            ports = neutron_client.list_ports(
                project_id=cntxt.project_id).get('ports')
            ports_metadata = {}

            allowed_keys = [
                'admin_state_up',
                'allowed_address_pairs',
                'description',
                'device_id',
                'device_owner',
                'extra_dhcp_opts',
                'fixed_ips',
                'id',
                'mac_address',
                'name',
                'network_id',
                'port_security_enabled',
                'security_groups',
                'status',
                'tenant_id'
                ]

            for port in ports:
                port_metadata = {
                    k: port[k] for k in port if k in allowed_keys}
                ports_metadata[port["id"]] = port_metadata
            return ports_metadata
        except Exception as e:
            LOG.exception("List all summary ports from neutron failed.")
            raise exception.GetProtectionNetworkSubResourceFailed(
                type=self._SUPPORT_RESOURCE_TYPES,
                reason=six.text_type(e))
    def _get_resources_by_router(self, cntxt, neutron_client):
        try:
            routers = neutron_client.list_routers(
                project_id=cntxt.project_id).get('routers')
            routers_metadata = {}

            allowed_keys = [
                'admin_state_u',
                'availability_zone_hints',
                'description',
                'external_gateway_info',
                'id',
                'name',
                'routes',
                'status'
                ]

            for router in routers:
                router_metadata = {
                    k: router[k] for k in router if k in allowed_keys}
                routers_metadata[router["id"]] = router_metadata

            return routers_metadata
        except Exception as e:
            LOG.exception("List all summary routers from neutron failed.")
            raise exception.GetProtectionNetworkSubResourceFailed(
                type=self._SUPPORT_RESOURCE_TYPES,
                reason=six.text_type(e))
Exemple #5
0
    def _get_resources_by_security_group(self, cntxt, neutron_client):
        try:
            sgs = neutron_client.list_security_groups(
                project_id=cntxt.project_id).get('security_groups')
            sgs_metadata = {}

            allowed_keys = [
                'id', 'description', 'name', 'security_group_rules',
                'tenant_id'
            ]

            for sg in sgs:
                sg_metadata = {k: sg[k] for k in sg if k in allowed_keys}
                sgs_metadata[sg["id"]] = sg_metadata
            return sgs_metadata
        except Exception as e:
            LOG.exception("List all summary security_groups from neutron "
                          "failed.")
            raise exception.GetProtectionNetworkSubResourceFailed(
                type=self._SUPPORT_RESOURCE_TYPES, reason=six.text_type(e))