Merge "TVD AdminUtils: Use only objects from specific plugin"
This commit is contained in:
commit
3caac5a518
@ -694,6 +694,11 @@ def get_project_plugin_mappings(session):
|
|||||||
return session.query(nsx_models.NsxProjectPluginMapping).all()
|
return session.query(nsx_models.NsxProjectPluginMapping).all()
|
||||||
|
|
||||||
|
|
||||||
|
def get_project_plugin_mappings_by_plugin(session, plugin):
|
||||||
|
return session.query(nsx_models.NsxProjectPluginMapping).filter_by(
|
||||||
|
plugin=plugin).all()
|
||||||
|
|
||||||
|
|
||||||
def add_nsx_vpn_connection_mapping(session, neutron_id, session_id,
|
def add_nsx_vpn_connection_mapping(session, neutron_id, session_id,
|
||||||
dpd_profile_id, ike_profile_id,
|
dpd_profile_id, ike_profile_id,
|
||||||
ipsec_profile_id, peer_ep_id):
|
ipsec_profile_id, peer_ep_id):
|
||||||
|
@ -16,6 +16,7 @@ import sys
|
|||||||
|
|
||||||
import six
|
import six
|
||||||
from vmware_nsx._i18n import _
|
from vmware_nsx._i18n import _
|
||||||
|
from vmware_nsx.db import db
|
||||||
from vmware_nsx.shell import resources as nsxadmin
|
from vmware_nsx.shell import resources as nsxadmin
|
||||||
|
|
||||||
from neutron.common import profiler # noqa
|
from neutron.common import profiler # noqa
|
||||||
@ -112,3 +113,16 @@ def fix_mismatches_handler(resource):
|
|||||||
nsxadmin.Operations.FIX_MISMATCH.value)
|
nsxadmin.Operations.FIX_MISMATCH.value)
|
||||||
return func
|
return func
|
||||||
return wrap
|
return wrap
|
||||||
|
|
||||||
|
|
||||||
|
def get_plugin_filters(context, plugin):
|
||||||
|
# Return filters for the neutron list apis so that only resources from
|
||||||
|
# a specific plugin will be returned.
|
||||||
|
filters = {}
|
||||||
|
core_plugin = nsxadmin.get_plugin()
|
||||||
|
if core_plugin == 'nsxtvd':
|
||||||
|
maps = db.get_project_plugin_mappings_by_plugin(
|
||||||
|
context.session, plugin)
|
||||||
|
if maps:
|
||||||
|
filters['project_id'] = [m.project for m in maps]
|
||||||
|
return filters
|
||||||
|
@ -73,8 +73,9 @@ class NeutronSecurityGroupDB(
|
|||||||
self.context, sg_id)
|
self.context, sg_id)
|
||||||
|
|
||||||
def get_security_groups(self):
|
def get_security_groups(self):
|
||||||
|
filters = utils.get_plugin_filters(self.context)
|
||||||
return super(NeutronSecurityGroupDB,
|
return super(NeutronSecurityGroupDB,
|
||||||
self).get_security_groups(self.context)
|
self).get_security_groups(self.context, filters=filters)
|
||||||
|
|
||||||
def get_security_group_id_by_section_id(self, section_id):
|
def get_security_group_id_by_section_id(self, section_id):
|
||||||
section_url = ("/api/4.0/firewall/globalroot-0/config/layer3sections"
|
section_url = ("/api/4.0/firewall/globalroot-0/config/layer3sections"
|
||||||
|
@ -22,8 +22,10 @@ from neutron_lib import context as neutron_context
|
|||||||
from neutron_lib.plugins import directory
|
from neutron_lib.plugins import directory
|
||||||
|
|
||||||
from vmware_nsx.common import config
|
from vmware_nsx.common import config
|
||||||
|
from vmware_nsx.extensions import projectpluginmap
|
||||||
from vmware_nsx import plugin
|
from vmware_nsx import plugin
|
||||||
from vmware_nsx.plugins.nsx_v.vshield import vcns
|
from vmware_nsx.plugins.nsx_v.vshield import vcns
|
||||||
|
from vmware_nsx.shell.admin.plugins.common import utils as admin_utils
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -37,6 +39,11 @@ def get_nsxv_client():
|
|||||||
insecure=cfg.CONF.nsxv.insecure)
|
insecure=cfg.CONF.nsxv.insecure)
|
||||||
|
|
||||||
|
|
||||||
|
def get_plugin_filters(context):
|
||||||
|
return admin_utils.get_plugin_filters(
|
||||||
|
context, projectpluginmap.NsxPlugins.NSX_V)
|
||||||
|
|
||||||
|
|
||||||
class NeutronDbClient(common_db.CommonDbMixin):
|
class NeutronDbClient(common_db.CommonDbMixin):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(NeutronDbClient, self)
|
super(NeutronDbClient, self)
|
||||||
@ -47,6 +54,8 @@ class NsxVPluginWrapper(plugin.NsxVPlugin):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
config.register_nsxv_azs(cfg.CONF, cfg.CONF.nsxv.availability_zones)
|
config.register_nsxv_azs(cfg.CONF, cfg.CONF.nsxv.availability_zones)
|
||||||
|
self.context = neutron_context.get_admin_context()
|
||||||
|
self.filters = get_plugin_filters(self.context)
|
||||||
super(NsxVPluginWrapper, self).__init__()
|
super(NsxVPluginWrapper, self).__init__()
|
||||||
# Make this the core plugin
|
# Make this the core plugin
|
||||||
directory.add_plugin('CORE', self)
|
directory.add_plugin('CORE', self)
|
||||||
@ -98,6 +107,32 @@ class NsxVPluginWrapper(plugin.NsxVPlugin):
|
|||||||
LOG.warning("Sorry. Waited for too long. Some jobs are still "
|
LOG.warning("Sorry. Waited for too long. Some jobs are still "
|
||||||
"running.")
|
"running.")
|
||||||
|
|
||||||
|
def _update_filters(self, requested_filters):
|
||||||
|
filters = self.filters.copy()
|
||||||
|
if requested_filters:
|
||||||
|
filters.update(requested_filters)
|
||||||
|
return filters
|
||||||
|
|
||||||
|
def get_networks(self, context, filters=None, fields=None):
|
||||||
|
filters = self._update_filters(filters)
|
||||||
|
return super(NsxVPluginWrapper, self).get_networks(
|
||||||
|
context, filters=filters, fields=fields)
|
||||||
|
|
||||||
|
def get_subnets(self, context, filters=None, fields=None):
|
||||||
|
filters = self._update_filters(filters)
|
||||||
|
return super(NsxVPluginWrapper, self).get_subnets(
|
||||||
|
context, filters=filters, fields=fields)
|
||||||
|
|
||||||
|
def get_ports(self, context, filters=None, fields=None):
|
||||||
|
filters = self._update_filters(filters)
|
||||||
|
return super(NsxVPluginWrapper, self).get_ports(
|
||||||
|
self.context, filters=filters, fields=fields)
|
||||||
|
|
||||||
|
def get_routers(self, context, filters=None, fields=None):
|
||||||
|
filters = self._update_filters(filters)
|
||||||
|
return super(NsxVPluginWrapper, self).get_routers(
|
||||||
|
self.context, filters=filters, fields=fields)
|
||||||
|
|
||||||
|
|
||||||
def get_nsxv_backend_edges():
|
def get_nsxv_backend_edges():
|
||||||
"""Get a list of all the backend edges and some of their attributes
|
"""Get a list of all the backend edges and some of their attributes
|
||||||
|
@ -45,7 +45,8 @@ def list_missing_networks(resource, event, trigger, **kwargs):
|
|||||||
nsxlib = utils.get_connected_nsxlib()
|
nsxlib = utils.get_connected_nsxlib()
|
||||||
plugin = db_base_plugin_v2.NeutronDbPluginV2()
|
plugin = db_base_plugin_v2.NeutronDbPluginV2()
|
||||||
admin_cxt = neutron_context.get_admin_context()
|
admin_cxt = neutron_context.get_admin_context()
|
||||||
neutron_networks = plugin.get_networks(admin_cxt)
|
filters = utils.get_plugin_filters(admin_cxt)
|
||||||
|
neutron_networks = plugin.get_networks(admin_cxt, filters=filters)
|
||||||
networks = []
|
networks = []
|
||||||
for net in neutron_networks:
|
for net in neutron_networks:
|
||||||
neutron_id = net['id']
|
neutron_id = net['id']
|
||||||
|
@ -119,9 +119,9 @@ def list_missing_ports(resource, event, trigger, **kwargs):
|
|||||||
And ports with wrong switch profiles
|
And ports with wrong switch profiles
|
||||||
"""
|
"""
|
||||||
admin_cxt = neutron_context.get_admin_context()
|
admin_cxt = neutron_context.get_admin_context()
|
||||||
|
filters = v3_utils.get_plugin_filters(admin_cxt)
|
||||||
with PortsPlugin() as plugin:
|
with PortsPlugin() as plugin:
|
||||||
neutron_ports = plugin.get_ports(admin_cxt)
|
neutron_ports = plugin.get_ports(admin_cxt, filters=filters)
|
||||||
port_client, profile_client = get_port_and_profile_clients()
|
port_client, profile_client = get_port_and_profile_clients()
|
||||||
|
|
||||||
# get pre-defined profile ids
|
# get pre-defined profile ids
|
||||||
@ -228,7 +228,8 @@ def migrate_compute_ports_vms(resource, event, trigger, **kwargs):
|
|||||||
|
|
||||||
# Go over all the compute ports from the plugin
|
# Go over all the compute ports from the plugin
|
||||||
admin_cxt = neutron_context.get_admin_context()
|
admin_cxt = neutron_context.get_admin_context()
|
||||||
port_filters = {'device_owner': ['compute:None']}
|
port_filters = v3_utils.get_plugin_filters(admin_cxt)
|
||||||
|
port_filters['device_owner'] = ['compute:None']
|
||||||
with PortsPlugin() as plugin:
|
with PortsPlugin() as plugin:
|
||||||
neutron_ports = plugin.get_ports(admin_cxt, filters=port_filters)
|
neutron_ports = plugin.get_ports(admin_cxt, filters=port_filters)
|
||||||
|
|
||||||
@ -325,11 +326,12 @@ def migrate_exclude_ports(resource, event, trigger, **kwargs):
|
|||||||
def tag_default_ports(resource, event, trigger, **kwargs):
|
def tag_default_ports(resource, event, trigger, **kwargs):
|
||||||
nsxlib = v3_utils.get_connected_nsxlib()
|
nsxlib = v3_utils.get_connected_nsxlib()
|
||||||
admin_cxt = neutron_context.get_admin_context()
|
admin_cxt = neutron_context.get_admin_context()
|
||||||
|
filters = v3_utils.get_plugin_filters(admin_cxt)
|
||||||
|
|
||||||
# the plugin creation below will create the NS group and update the default
|
# the plugin creation below will create the NS group and update the default
|
||||||
# OS section to have the correct applied to group
|
# OS section to have the correct applied to group
|
||||||
with v3_utils.NsxV3PluginWrapper() as _plugin:
|
with v3_utils.NsxV3PluginWrapper() as _plugin:
|
||||||
neutron_ports = _plugin.get_ports(admin_cxt)
|
neutron_ports = _plugin.get_ports(admin_cxt, filters=filters)
|
||||||
for port in neutron_ports:
|
for port in neutron_ports:
|
||||||
neutron_id = port['id']
|
neutron_id = port['id']
|
||||||
# get the network nsx id from the mapping table
|
# get the network nsx id from the mapping table
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from vmware_nsx.common import config # noqa
|
|
||||||
from vmware_nsx.common import utils as nsx_utils
|
from vmware_nsx.common import utils as nsx_utils
|
||||||
from vmware_nsx.db import db as nsx_db
|
from vmware_nsx.db import db as nsx_db
|
||||||
from vmware_nsx.shell.admin.plugins.common import constants
|
from vmware_nsx.shell.admin.plugins.common import constants
|
||||||
@ -29,7 +28,6 @@ from neutron.db import db_base_plugin_v2
|
|||||||
from neutron.db import l3_db
|
from neutron.db import l3_db
|
||||||
from neutron_lib.callbacks import registry
|
from neutron_lib.callbacks import registry
|
||||||
from neutron_lib import context as neutron_context
|
from neutron_lib import context as neutron_context
|
||||||
from oslo_config import cfg
|
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@ -48,7 +46,8 @@ def list_missing_routers(resource, event, trigger, **kwargs):
|
|||||||
nsxlib = utils.get_connected_nsxlib()
|
nsxlib = utils.get_connected_nsxlib()
|
||||||
plugin = RoutersPlugin()
|
plugin = RoutersPlugin()
|
||||||
admin_cxt = neutron_context.get_admin_context()
|
admin_cxt = neutron_context.get_admin_context()
|
||||||
neutron_routers = plugin.get_routers(admin_cxt)
|
filters = utils.get_plugin_filters(admin_cxt)
|
||||||
|
neutron_routers = plugin.get_routers(admin_cxt, filters=filters)
|
||||||
routers = []
|
routers = []
|
||||||
for router in neutron_routers:
|
for router in neutron_routers:
|
||||||
neutron_id = router['id']
|
neutron_id = router['id']
|
||||||
@ -90,7 +89,8 @@ def update_nat_rules(resource, event, trigger, **kwargs):
|
|||||||
# Go over all neutron routers
|
# Go over all neutron routers
|
||||||
plugin = RoutersPlugin()
|
plugin = RoutersPlugin()
|
||||||
admin_cxt = neutron_context.get_admin_context()
|
admin_cxt = neutron_context.get_admin_context()
|
||||||
neutron_routers = plugin.get_routers(admin_cxt)
|
filters = utils.get_plugin_filters(admin_cxt)
|
||||||
|
neutron_routers = plugin.get_routers(admin_cxt, filters=filters)
|
||||||
num_of_updates = 0
|
num_of_updates = 0
|
||||||
for router in neutron_routers:
|
for router in neutron_routers:
|
||||||
neutron_id = router['id']
|
neutron_id = router['id']
|
||||||
@ -185,21 +185,19 @@ def update_dhcp_relay(resource, event, trigger, **kwargs):
|
|||||||
LOG.error("DHCP relay is not supported by NSX version %s", version)
|
LOG.error("DHCP relay is not supported by NSX version %s", version)
|
||||||
return
|
return
|
||||||
|
|
||||||
# initialize the availability zones and nsxlib
|
|
||||||
config.register_nsxv3_azs(cfg.CONF, cfg.CONF.nsx_v3.availability_zones)
|
|
||||||
|
|
||||||
admin_cxt = neutron_context.get_admin_context()
|
admin_cxt = neutron_context.get_admin_context()
|
||||||
|
filters = utils.get_plugin_filters(admin_cxt)
|
||||||
with utils.NsxV3PluginWrapper() as plugin:
|
with utils.NsxV3PluginWrapper() as plugin:
|
||||||
# Make sure FWaaS was initialized
|
# Make sure FWaaS was initialized
|
||||||
plugin.init_fwaas_for_admin_utils()
|
plugin.init_fwaas_for_admin_utils()
|
||||||
|
|
||||||
# get all neutron routers and interfaces ports
|
# get all neutron routers and interfaces ports
|
||||||
routers = plugin.get_routers(admin_cxt)
|
routers = plugin.get_routers(admin_cxt, filters=filters)
|
||||||
for router in routers:
|
for router in routers:
|
||||||
LOG.info("Updating router %s", router['id'])
|
LOG.info("Updating router %s", router['id'])
|
||||||
filters = {'device_owner': [l3_db.DEVICE_OWNER_ROUTER_INTF],
|
port_filters = {'device_owner': [l3_db.DEVICE_OWNER_ROUTER_INTF],
|
||||||
'device_id': [router['id']]}
|
'device_id': [router['id']]}
|
||||||
ports = plugin.get_ports(admin_cxt, filters=filters)
|
ports = plugin.get_ports(admin_cxt, filters=port_filters)
|
||||||
for port in ports:
|
for port in ports:
|
||||||
# get the backend router port by the tag
|
# get the backend router port by the tag
|
||||||
nsx_port_id = nsxlib.get_id_by_resource_and_tag(
|
nsx_port_id = nsxlib.get_id_by_resource_and_tag(
|
||||||
@ -217,7 +215,10 @@ def update_dhcp_relay(resource, event, trigger, **kwargs):
|
|||||||
nsx_port_id, relay_service_uuid=az.dhcp_relay_service)
|
nsx_port_id, relay_service_uuid=az.dhcp_relay_service)
|
||||||
|
|
||||||
# if FWaaS is enables, also update the firewall rules
|
# if FWaaS is enables, also update the firewall rules
|
||||||
plugin.update_router_firewall(admin_cxt, router['id'])
|
try:
|
||||||
|
plugin.update_router_firewall(admin_cxt, router['id'])
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
LOG.info("Done.")
|
LOG.info("Done.")
|
||||||
|
|
||||||
|
@ -41,10 +41,12 @@ class NeutronSecurityGroupApi(securitygroups_db.SecurityGroupDbMixin,
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(NeutronSecurityGroupApi, self)
|
super(NeutronSecurityGroupApi, self)
|
||||||
self.context = neutron_context.get_admin_context()
|
self.context = neutron_context.get_admin_context()
|
||||||
|
self.filters = v3_utils.get_plugin_filters(self.context)
|
||||||
|
|
||||||
def get_security_groups(self):
|
def get_security_groups(self):
|
||||||
return super(NeutronSecurityGroupApi,
|
return super(NeutronSecurityGroupApi,
|
||||||
self).get_security_groups(self.context)
|
self).get_security_groups(self.context,
|
||||||
|
filters=self.filters)
|
||||||
|
|
||||||
def delete_security_group(self, sg_id):
|
def delete_security_group(self, sg_id):
|
||||||
return super(NeutronSecurityGroupApi,
|
return super(NeutronSecurityGroupApi,
|
||||||
|
@ -25,11 +25,14 @@ from neutron_lib.plugins import directory
|
|||||||
from neutron_fwaas.services.firewall import fwaas_plugin as fwaas_plugin_v1
|
from neutron_fwaas.services.firewall import fwaas_plugin as fwaas_plugin_v1
|
||||||
from neutron_fwaas.services.firewall import fwaas_plugin_v2
|
from neutron_fwaas.services.firewall import fwaas_plugin_v2
|
||||||
|
|
||||||
|
from vmware_nsx.common import config
|
||||||
from vmware_nsx.db import db as nsx_db
|
from vmware_nsx.db import db as nsx_db
|
||||||
|
from vmware_nsx.extensions import projectpluginmap
|
||||||
from vmware_nsx.plugins.nsx_v3 import plugin
|
from vmware_nsx.plugins.nsx_v3 import plugin
|
||||||
from vmware_nsx.plugins.nsx_v3 import utils as v3_utils
|
from vmware_nsx.plugins.nsx_v3 import utils as v3_utils
|
||||||
from vmware_nsx.services.fwaas.nsx_v3 import fwaas_callbacks_v1
|
from vmware_nsx.services.fwaas.nsx_v3 import fwaas_callbacks_v1
|
||||||
from vmware_nsx.services.fwaas.nsx_v3 import fwaas_callbacks_v2
|
from vmware_nsx.services.fwaas.nsx_v3 import fwaas_callbacks_v2
|
||||||
|
from vmware_nsx.shell.admin.plugins.common import utils as admin_utils
|
||||||
from vmware_nsxlib.v3 import nsx_constants
|
from vmware_nsxlib.v3 import nsx_constants
|
||||||
|
|
||||||
_NSXLIB = None
|
_NSXLIB = None
|
||||||
@ -57,16 +60,30 @@ def get_connected_nsxlib(nsx_username=None, nsx_password=None,
|
|||||||
return _NSXLIB
|
return _NSXLIB
|
||||||
|
|
||||||
|
|
||||||
|
def get_plugin_filters(context):
|
||||||
|
return admin_utils.get_plugin_filters(
|
||||||
|
context, projectpluginmap.NsxPlugins.NSX_T)
|
||||||
|
|
||||||
|
|
||||||
class NeutronDbClient(db_base_plugin_v2.NeutronDbPluginV2):
|
class NeutronDbClient(db_base_plugin_v2.NeutronDbPluginV2):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(NeutronDbClient, self).__init__()
|
super(NeutronDbClient, self).__init__()
|
||||||
self.context = context.get_admin_context()
|
self.context = context.get_admin_context()
|
||||||
|
self.filters = get_plugin_filters(self.context)
|
||||||
|
|
||||||
|
def _update_filters(self, requested_filters):
|
||||||
|
filters = self.filters.copy()
|
||||||
|
if requested_filters:
|
||||||
|
filters.update(requested_filters)
|
||||||
|
return filters
|
||||||
|
|
||||||
def get_ports(self, filters=None, fields=None):
|
def get_ports(self, filters=None, fields=None):
|
||||||
|
filters = self._update_filters(filters)
|
||||||
return super(NeutronDbClient, self).get_ports(
|
return super(NeutronDbClient, self).get_ports(
|
||||||
self.context, filters=filters, fields=fields)
|
self.context, filters=filters, fields=fields)
|
||||||
|
|
||||||
def get_networks(self, filters=None, fields=None):
|
def get_networks(self, filters=None, fields=None):
|
||||||
|
filters = self._update_filters(filters)
|
||||||
return super(NeutronDbClient, self).get_networks(
|
return super(NeutronDbClient, self).get_networks(
|
||||||
self.context, filters=filters, fields=fields)
|
self.context, filters=filters, fields=fields)
|
||||||
|
|
||||||
@ -106,6 +123,8 @@ class NeutronDbClient(db_base_plugin_v2.NeutronDbPluginV2):
|
|||||||
|
|
||||||
class NsxV3PluginWrapper(plugin.NsxV3Plugin):
|
class NsxV3PluginWrapper(plugin.NsxV3Plugin):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
# initialize the availability zones
|
||||||
|
config.register_nsxv3_azs(cfg.CONF, cfg.CONF.nsx_v3.availability_zones)
|
||||||
super(NsxV3PluginWrapper, self).__init__()
|
super(NsxV3PluginWrapper, self).__init__()
|
||||||
self.context = context.get_admin_context()
|
self.context = context.get_admin_context()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user