Rename nicira configuration elements to match new naming structure
- Every config item prefixed with nvp is prefixed with nsx - deprecation qualifiers are added to preserve bw compatibility - nicira/nvp.ini is renamed to vmware/nsx.ini - symlink nicira/nvp.ini is created to point to vmware/nsx.ini - UT added to verify that nvp.ini and old config items can still parsed correctly; bw-compat will be dropped in Juno Partial-implements blueprint nicira-plugin-renaming Change-Id: I676b868e61064cc5ff17e2246e83ba5c5e4a3449
This commit is contained in:
parent
40210e5a63
commit
79fbeb7ebe
1
etc/neutron/plugins/nicira
Symbolic link
1
etc/neutron/plugins/nicira
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
vmware
|
@ -1,9 +1,9 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
# User name for NVP controller
|
# User name for NSX controller
|
||||||
# nvp_user = admin
|
# nsx_user = admin
|
||||||
|
|
||||||
# Password for NVP controller
|
# Password for NSX controller
|
||||||
# nvp_password = admin
|
# nsx_password = admin
|
||||||
|
|
||||||
# Total time limit for a cluster request
|
# Total time limit for a cluster request
|
||||||
# (including retries across different controllers)
|
# (including retries across different controllers)
|
||||||
@ -18,11 +18,11 @@
|
|||||||
# Maximum number of times a redirect response should be followed
|
# Maximum number of times a redirect response should be followed
|
||||||
# redirects = 2
|
# redirects = 2
|
||||||
|
|
||||||
# Comma-separated list of NVP controller endpoints (<ip>:<port>). When port
|
# Comma-separated list of NSX controller endpoints (<ip>:<port>). When port
|
||||||
# is omitted, 443 is assumed. This option MUST be specified, e.g.:
|
# is omitted, 443 is assumed. This option MUST be specified, e.g.:
|
||||||
# nvp_controllers = xx.yy.zz.ww:443, aa.bb.cc.dd, ee.ff.gg.hh.ee:80
|
# nsx_controllers = xx.yy.zz.ww:443, aa.bb.cc.dd, ee.ff.gg.hh.ee:80
|
||||||
|
|
||||||
# UUID of the pre-existing default NVP Transport zone to be used for creating
|
# UUID of the pre-existing default NSX Transport zone to be used for creating
|
||||||
# tunneled isolated "Neutron" networks. This option MUST be specified, e.g.:
|
# tunneled isolated "Neutron" networks. This option MUST be specified, e.g.:
|
||||||
# default_tz_uuid = 1e8e52cf-fa7f-46b0-a14a-f99835a9cb53
|
# default_tz_uuid = 1e8e52cf-fa7f-46b0-a14a-f99835a9cb53
|
||||||
|
|
||||||
@ -49,86 +49,6 @@
|
|||||||
# number of network gateways allowed per tenant, -1 means unlimited
|
# number of network gateways allowed per tenant, -1 means unlimited
|
||||||
# quota_network_gateway = 5
|
# quota_network_gateway = 5
|
||||||
|
|
||||||
[nvp]
|
|
||||||
# Maximum number of ports for each bridged logical switch
|
|
||||||
# The recommended value for this parameter varies with NVP version
|
|
||||||
# Please use:
|
|
||||||
# NVP 2.x -> 64
|
|
||||||
# NVP 3.0, 3.1 -> 5000
|
|
||||||
# NVP 3.2 -> 10000
|
|
||||||
# max_lp_per_bridged_ls = 5000
|
|
||||||
|
|
||||||
# Maximum number of ports for each overlay (stt, gre) logical switch
|
|
||||||
# max_lp_per_overlay_ls = 256
|
|
||||||
|
|
||||||
# Number of connections to each controller node.
|
|
||||||
# default is 10
|
|
||||||
# concurrent_connections = 10
|
|
||||||
|
|
||||||
# Number of seconds a generation id should be valid for (default -1 meaning do not time out)
|
|
||||||
# nvp_gen_timeout = -1
|
|
||||||
|
|
||||||
# Acceptable values for 'metadata_mode' are:
|
|
||||||
# - 'access_network': this enables a dedicated connection to the metadata
|
|
||||||
# proxy for metadata server access via Neutron router.
|
|
||||||
# - 'dhcp_host_route': this enables host route injection via the dhcp agent.
|
|
||||||
# This option is only useful if running on a host that does not support
|
|
||||||
# namespaces otherwise access_network should be used.
|
|
||||||
# metadata_mode = access_network
|
|
||||||
|
|
||||||
# The default network transport type to use (stt, gre, bridge, ipsec_gre, or ipsec_stt)
|
|
||||||
# default_transport_type = stt
|
|
||||||
|
|
||||||
# Specifies in which mode the plugin needs to operate in order to provide DHCP and
|
|
||||||
# metadata proxy services to tenant instances. If 'agent' is chosen (default)
|
|
||||||
# the NVP plugin relies on external RPC agents (i.e. dhcp and metadata agents) to
|
|
||||||
# provide such services. In this mode, the plugin supports API extensions 'agent'
|
|
||||||
# and 'dhcp_agent_scheduler'. If 'agentless' is chosen (experimental in Havana),
|
|
||||||
# the plugin will use NVP logical services for DHCP and metadata proxy. This
|
|
||||||
# simplifies the deployment model for Neutron, in that the plugin no longer requires
|
|
||||||
# the RPC agents to operate. When 'agentless' is chosen, the config option metadata_mode
|
|
||||||
# becomes ineffective. The mode 'agentless' is not supported for NVP 3.2 or below.
|
|
||||||
# agent_mode = agent
|
|
||||||
|
|
||||||
[nvp_sync]
|
|
||||||
# Interval in seconds between runs of the status synchronization task.
|
|
||||||
# The plugin will aim at resynchronizing operational status for all
|
|
||||||
# resources in this interval, and it should be therefore large enough
|
|
||||||
# to ensure the task is feasible. Otherwise the plugin will be
|
|
||||||
# constantly synchronizing resource status, ie: a new task is started
|
|
||||||
# as soon as the previous is completed.
|
|
||||||
# If this value is set to 0, the state synchronization thread for this
|
|
||||||
# Neutron instance will be disabled.
|
|
||||||
# state_sync_interval = 120
|
|
||||||
|
|
||||||
# Random additional delay between two runs of the state synchronization task.
|
|
||||||
# An additional wait time between 0 and max_random_sync_delay seconds
|
|
||||||
# will be added on top of state_sync_interval.
|
|
||||||
# max_random_sync_delay = 0
|
|
||||||
|
|
||||||
# Minimum delay, in seconds, between two status synchronization requests for NVP.
|
|
||||||
# Depending on chunk size, controller load, and other factors, state
|
|
||||||
# synchronization requests might be pretty heavy. This means the
|
|
||||||
# controller might take time to respond, and its load might be quite
|
|
||||||
# increased by them. This parameter allows to specify a minimum
|
|
||||||
# interval between two subsequent requests.
|
|
||||||
# The value for this parameter must never exceed state_sync_interval.
|
|
||||||
# If this does, an error will be raised at startup.
|
|
||||||
# min_sync_req_delay = 10
|
|
||||||
|
|
||||||
# Minimum number of resources to be retrieved from NVP in a single status
|
|
||||||
# synchronization request.
|
|
||||||
# The actual size of the chunk will increase if the number of resources is such
|
|
||||||
# that using the minimum chunk size will cause the interval between two
|
|
||||||
# requests to be less than min_sync_req_delay
|
|
||||||
# min_chunk_size = 500
|
|
||||||
|
|
||||||
# Enable this option to allow punctual state synchronization on show
|
|
||||||
# operations. In this way, show operations will always fetch the operational
|
|
||||||
# status of the resource from the NVP backend, and this might have
|
|
||||||
# a considerable impact on overall performance.
|
|
||||||
# always_read_status = False
|
|
||||||
|
|
||||||
[vcns]
|
[vcns]
|
||||||
# URL for VCNS manager
|
# URL for VCNS manager
|
||||||
# manager_uri = https://management_ip
|
# manager_uri = https://management_ip
|
||||||
@ -160,7 +80,87 @@
|
|||||||
# default is 2000 (millisecond)
|
# default is 2000 (millisecond)
|
||||||
# task_status_check_interval = 2000
|
# task_status_check_interval = 2000
|
||||||
|
|
||||||
[nvp_dhcp]
|
[nsx]
|
||||||
|
# Maximum number of ports for each bridged logical switch
|
||||||
|
# The recommended value for this parameter varies with NSX version
|
||||||
|
# Please use:
|
||||||
|
# NSX 2.x -> 64
|
||||||
|
# NSX 3.0, 3.1 -> 5000
|
||||||
|
# NSX 3.2 -> 10000
|
||||||
|
# max_lp_per_bridged_ls = 5000
|
||||||
|
|
||||||
|
# Maximum number of ports for each overlay (stt, gre) logical switch
|
||||||
|
# max_lp_per_overlay_ls = 256
|
||||||
|
|
||||||
|
# Number of connections to each controller node.
|
||||||
|
# default is 10
|
||||||
|
# concurrent_connections = 10
|
||||||
|
|
||||||
|
# Number of seconds a generation id should be valid for (default -1 meaning do not time out)
|
||||||
|
# nsx_gen_timeout = -1
|
||||||
|
|
||||||
|
# Acceptable values for 'metadata_mode' are:
|
||||||
|
# - 'access_network': this enables a dedicated connection to the metadata
|
||||||
|
# proxy for metadata server access via Neutron router.
|
||||||
|
# - 'dhcp_host_route': this enables host route injection via the dhcp agent.
|
||||||
|
# This option is only useful if running on a host that does not support
|
||||||
|
# namespaces otherwise access_network should be used.
|
||||||
|
# metadata_mode = access_network
|
||||||
|
|
||||||
|
# The default network transport type to use (stt, gre, bridge, ipsec_gre, or ipsec_stt)
|
||||||
|
# default_transport_type = stt
|
||||||
|
|
||||||
|
# Specifies in which mode the plugin needs to operate in order to provide DHCP and
|
||||||
|
# metadata proxy services to tenant instances. If 'agent' is chosen (default)
|
||||||
|
# the NSX plugin relies on external RPC agents (i.e. dhcp and metadata agents) to
|
||||||
|
# provide such services. In this mode, the plugin supports API extensions 'agent'
|
||||||
|
# and 'dhcp_agent_scheduler'. If 'agentless' is chosen (experimental in Havana),
|
||||||
|
# the plugin will use NSX logical services for DHCP and metadata proxy. This
|
||||||
|
# simplifies the deployment model for Neutron, in that the plugin no longer requires
|
||||||
|
# the RPC agents to operate. When 'agentless' is chosen, the config option metadata_mode
|
||||||
|
# becomes ineffective. The mode 'agentless' is not supported for NSX 4.0 or below.
|
||||||
|
# agent_mode = agent
|
||||||
|
|
||||||
|
[nsx_sync]
|
||||||
|
# Interval in seconds between runs of the status synchronization task.
|
||||||
|
# The plugin will aim at resynchronizing operational status for all
|
||||||
|
# resources in this interval, and it should be therefore large enough
|
||||||
|
# to ensure the task is feasible. Otherwise the plugin will be
|
||||||
|
# constantly synchronizing resource status, ie: a new task is started
|
||||||
|
# as soon as the previous is completed.
|
||||||
|
# If this value is set to 0, the state synchronization thread for this
|
||||||
|
# Neutron instance will be disabled.
|
||||||
|
# state_sync_interval = 120
|
||||||
|
|
||||||
|
# Random additional delay between two runs of the state synchronization task.
|
||||||
|
# An additional wait time between 0 and max_random_sync_delay seconds
|
||||||
|
# will be added on top of state_sync_interval.
|
||||||
|
# max_random_sync_delay = 0
|
||||||
|
|
||||||
|
# Minimum delay, in seconds, between two status synchronization requests for NSX.
|
||||||
|
# Depending on chunk size, controller load, and other factors, state
|
||||||
|
# synchronization requests might be pretty heavy. This means the
|
||||||
|
# controller might take time to respond, and its load might be quite
|
||||||
|
# increased by them. This parameter allows to specify a minimum
|
||||||
|
# interval between two subsequent requests.
|
||||||
|
# The value for this parameter must never exceed state_sync_interval.
|
||||||
|
# If this does, an error will be raised at startup.
|
||||||
|
# min_sync_req_delay = 10
|
||||||
|
|
||||||
|
# Minimum number of resources to be retrieved from NSX in a single status
|
||||||
|
# synchronization request.
|
||||||
|
# The actual size of the chunk will increase if the number of resources is such
|
||||||
|
# that using the minimum chunk size will cause the interval between two
|
||||||
|
# requests to be less than min_sync_req_delay
|
||||||
|
# min_chunk_size = 500
|
||||||
|
|
||||||
|
# Enable this option to allow punctual state synchronization on show
|
||||||
|
# operations. In this way, show operations will always fetch the operational
|
||||||
|
# status of the resource from the NSX backend, and this might have
|
||||||
|
# a considerable impact on overall performance.
|
||||||
|
# always_read_status = False
|
||||||
|
|
||||||
|
[nsx_dhcp]
|
||||||
# (Optional) Comma separated list of additional dns servers. Default is an empty list
|
# (Optional) Comma separated list of additional dns servers. Default is an empty list
|
||||||
# extra_domain_name_servers =
|
# extra_domain_name_servers =
|
||||||
|
|
||||||
@ -170,7 +170,7 @@
|
|||||||
# Default DHCP lease time
|
# Default DHCP lease time
|
||||||
# default_lease_time = 43200
|
# default_lease_time = 43200
|
||||||
|
|
||||||
[nvp_metadata]
|
[nsx_metadata]
|
||||||
# IP address used by Metadata server
|
# IP address used by Metadata server
|
||||||
# metadata_server_address = 127.0.0.1
|
# metadata_server_address = 127.0.0.1
|
||||||
|
|
1
etc/neutron/plugins/vmware/nvp.ini
Symbolic link
1
etc/neutron/plugins/vmware/nvp.ini
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
nsx.ini
|
@ -99,22 +99,22 @@ class NetworkTypes:
|
|||||||
|
|
||||||
|
|
||||||
def create_nvp_cluster(cluster_opts, concurrent_connections,
|
def create_nvp_cluster(cluster_opts, concurrent_connections,
|
||||||
nvp_gen_timeout):
|
nsx_gen_timeout):
|
||||||
cluster = nvp_cluster.NVPCluster(**cluster_opts)
|
cluster = nvp_cluster.NVPCluster(**cluster_opts)
|
||||||
|
|
||||||
def _ctrl_split(x, y):
|
def _ctrl_split(x, y):
|
||||||
return (x, int(y), True)
|
return (x, int(y), True)
|
||||||
|
|
||||||
api_providers = [_ctrl_split(*ctrl.split(':'))
|
api_providers = [_ctrl_split(*ctrl.split(':'))
|
||||||
for ctrl in cluster.nvp_controllers]
|
for ctrl in cluster.nsx_controllers]
|
||||||
cluster.api_client = NvpApiClient.NVPApiHelper(
|
cluster.api_client = NvpApiClient.NVPApiHelper(
|
||||||
api_providers, cluster.nvp_user, cluster.nvp_password,
|
api_providers, cluster.nsx_user, cluster.nsx_password,
|
||||||
request_timeout=cluster.req_timeout,
|
request_timeout=cluster.req_timeout,
|
||||||
http_timeout=cluster.http_timeout,
|
http_timeout=cluster.http_timeout,
|
||||||
retries=cluster.retries,
|
retries=cluster.retries,
|
||||||
redirects=cluster.redirects,
|
redirects=cluster.redirects,
|
||||||
concurrent_connections=concurrent_connections,
|
concurrent_connections=concurrent_connections,
|
||||||
nvp_gen_timeout=nvp_gen_timeout)
|
nvp_gen_timeout=nsx_gen_timeout)
|
||||||
return cluster
|
return cluster
|
||||||
|
|
||||||
|
|
||||||
@ -191,11 +191,11 @@ class NvpPluginV2(addr_pair_db.AllowedAddressPairsMixin,
|
|||||||
}
|
}
|
||||||
|
|
||||||
neutron_extensions.append_api_extensions_path([NVP_EXT_PATH])
|
neutron_extensions.append_api_extensions_path([NVP_EXT_PATH])
|
||||||
self.nvp_opts = cfg.CONF.NVP
|
self.nvp_opts = cfg.CONF.NSX
|
||||||
self.nvp_sync_opts = cfg.CONF.NVP_SYNC
|
self.nvp_sync_opts = cfg.CONF.NSX_SYNC
|
||||||
self.cluster = create_nvp_cluster(cfg.CONF,
|
self.cluster = create_nvp_cluster(cfg.CONF,
|
||||||
self.nvp_opts.concurrent_connections,
|
self.nvp_opts.concurrent_connections,
|
||||||
self.nvp_opts.nvp_gen_timeout)
|
self.nvp_opts.nsx_gen_timeout)
|
||||||
|
|
||||||
self.base_binding_dict = {
|
self.base_binding_dict = {
|
||||||
pbin.VIF_TYPE: pbin.VIF_TYPE_OVS,
|
pbin.VIF_TYPE: pbin.VIF_TYPE_OVS,
|
||||||
@ -872,7 +872,7 @@ class NvpPluginV2(addr_pair_db.AllowedAddressPairsMixin,
|
|||||||
if (network and not attr.is_attr_set(
|
if (network and not attr.is_attr_set(
|
||||||
network.get(mpnet.SEGMENTS))):
|
network.get(mpnet.SEGMENTS))):
|
||||||
return [{"zone_uuid": cluster.default_tz_uuid,
|
return [{"zone_uuid": cluster.default_tz_uuid,
|
||||||
"transport_type": cfg.CONF.NVP.default_transport_type}]
|
"transport_type": cfg.CONF.NSX.default_transport_type}]
|
||||||
|
|
||||||
# Convert fields from db to nvp format
|
# Convert fields from db to nvp format
|
||||||
if bindings:
|
if bindings:
|
||||||
|
@ -401,7 +401,7 @@ class NvpAdvancedPlugin(sr_db.ServiceRouter_mixin,
|
|||||||
# use defautl transport zone
|
# use defautl transport zone
|
||||||
transport_zone_config = [{
|
transport_zone_config = [{
|
||||||
"zone_uuid": self.cluster.default_tz_uuid,
|
"zone_uuid": self.cluster.default_tz_uuid,
|
||||||
"transport_type": cfg.CONF.NVP.default_transport_type
|
"transport_type": cfg.CONF.NSX.default_transport_type
|
||||||
}]
|
}]
|
||||||
return self.vcns_driver.create_lswitch(name, transport_zone_config)
|
return self.vcns_driver.create_lswitch(name, transport_zone_config)
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import sys
|
|||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
|
|
||||||
from neutron.common import config
|
from neutron.common import config
|
||||||
from neutron.plugins.nicira.common import config as nvp_cfg # noqa
|
from neutron.plugins.nicira.common import config as nsx_config # noqa
|
||||||
from neutron.plugins.nicira import NeutronPlugin
|
from neutron.plugins.nicira import NeutronPlugin
|
||||||
from neutron.plugins.nicira import nvplib
|
from neutron.plugins.nicira import nvplib
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ def help(name):
|
|||||||
|
|
||||||
|
|
||||||
def get_nsx_controllers(cluster):
|
def get_nsx_controllers(cluster):
|
||||||
return cluster.nvp_controllers
|
return cluster.nsx_controllers
|
||||||
|
|
||||||
|
|
||||||
def config_helper(config_entity, cluster):
|
def config_helper(config_entity, cluster):
|
||||||
@ -79,11 +79,11 @@ def main():
|
|||||||
print("\tretry_interval: %d" % cfg.CONF.database.retry_interval)
|
print("\tretry_interval: %d" % cfg.CONF.database.retry_interval)
|
||||||
print("\tmax_retries: %d" % cfg.CONF.database.max_retries)
|
print("\tmax_retries: %d" % cfg.CONF.database.max_retries)
|
||||||
print("----------------------- NSX Options -----------------------")
|
print("----------------------- NSX Options -----------------------")
|
||||||
print("\tNSX Generation Timeout %d" % cfg.CONF.NVP.nvp_gen_timeout)
|
print("\tNSX Generation Timeout %d" % cfg.CONF.NSX.nsx_gen_timeout)
|
||||||
print("\tNumber of concurrent connections to each controller %d" %
|
print("\tNumber of concurrent connections to each controller %d" %
|
||||||
cfg.CONF.NVP.concurrent_connections)
|
cfg.CONF.NSX.concurrent_connections)
|
||||||
print("\tmax_lp_per_bridged_ls: %s" % cfg.CONF.NVP.max_lp_per_bridged_ls)
|
print("\tmax_lp_per_bridged_ls: %s" % cfg.CONF.NSX.max_lp_per_bridged_ls)
|
||||||
print("\tmax_lp_per_overlay_ls: %s" % cfg.CONF.NVP.max_lp_per_overlay_ls)
|
print("\tmax_lp_per_overlay_ls: %s" % cfg.CONF.NSX.max_lp_per_overlay_ls)
|
||||||
print("----------------------- Cluster Options -----------------------")
|
print("----------------------- Cluster Options -----------------------")
|
||||||
print("\trequested_timeout: %s" % cfg.CONF.req_timeout)
|
print("\trequested_timeout: %s" % cfg.CONF.req_timeout)
|
||||||
print("\tretries: %s" % cfg.CONF.retries)
|
print("\tretries: %s" % cfg.CONF.retries)
|
||||||
@ -91,8 +91,8 @@ def main():
|
|||||||
print("\thttp_timeout: %s" % cfg.CONF.http_timeout)
|
print("\thttp_timeout: %s" % cfg.CONF.http_timeout)
|
||||||
cluster = NeutronPlugin.create_nvp_cluster(
|
cluster = NeutronPlugin.create_nvp_cluster(
|
||||||
cfg.CONF,
|
cfg.CONF,
|
||||||
cfg.CONF.NVP.concurrent_connections,
|
cfg.CONF.NSX.concurrent_connections,
|
||||||
cfg.CONF.NVP.nvp_gen_timeout)
|
cfg.CONF.NSX.nsx_gen_timeout)
|
||||||
nsx_controllers = get_nsx_controllers(cluster)
|
nsx_controllers = get_nsx_controllers(cluster)
|
||||||
num_controllers = len(nsx_controllers)
|
num_controllers = len(nsx_controllers)
|
||||||
print("Number of controllers found: %s" % num_controllers)
|
print("Number of controllers found: %s" % num_controllers)
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
||||||
|
|
||||||
# Copyright 2012 Nicira Networks, Inc.
|
|
||||||
# All Rights Reserved
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
# not use this file except in compliance with the License. You may obtain
|
|
||||||
# a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
||||||
# License for the specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
@ -1,6 +1,6 @@
|
|||||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||||
|
|
||||||
# Copyright 2012 Nicira, Inc.
|
# Copyright 2012 VMware, Inc.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
# not use this file except in compliance with the License. You may obtain
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -29,20 +29,26 @@ class MetadataModes:
|
|||||||
INDIRECT = 'dhcp_host_route'
|
INDIRECT = 'dhcp_host_route'
|
||||||
|
|
||||||
|
|
||||||
nvp_opts = [
|
base_opts = [
|
||||||
cfg.IntOpt('max_lp_per_bridged_ls', default=5000,
|
cfg.IntOpt('max_lp_per_bridged_ls', default=5000,
|
||||||
|
deprecated_group='NVP',
|
||||||
help=_("Maximum number of ports of a logical switch on a "
|
help=_("Maximum number of ports of a logical switch on a "
|
||||||
"bridged transport zone (default 5000)")),
|
"bridged transport zone (default 5000)")),
|
||||||
cfg.IntOpt('max_lp_per_overlay_ls', default=256,
|
cfg.IntOpt('max_lp_per_overlay_ls', default=256,
|
||||||
|
deprecated_group='NVP',
|
||||||
help=_("Maximum number of ports of a logical switch on an "
|
help=_("Maximum number of ports of a logical switch on an "
|
||||||
"overlay transport zone (default 256)")),
|
"overlay transport zone (default 256)")),
|
||||||
cfg.IntOpt('concurrent_connections', default=10,
|
cfg.IntOpt('concurrent_connections', default=10,
|
||||||
help=_("Maximum concurrent connections to each NVP "
|
deprecated_group='NVP',
|
||||||
|
help=_("Maximum concurrent connections to each NSX "
|
||||||
"controller.")),
|
"controller.")),
|
||||||
cfg.IntOpt('nvp_gen_timeout', default=-1,
|
cfg.IntOpt('nsx_gen_timeout', default=-1,
|
||||||
|
deprecated_name='nvp_gen_timeout',
|
||||||
|
deprecated_group='NVP',
|
||||||
help=_("Number of seconds a generation id should be valid for "
|
help=_("Number of seconds a generation id should be valid for "
|
||||||
"(default -1 meaning do not time out)")),
|
"(default -1 meaning do not time out)")),
|
||||||
cfg.StrOpt('metadata_mode', default=MetadataModes.DIRECT,
|
cfg.StrOpt('metadata_mode', default=MetadataModes.DIRECT,
|
||||||
|
deprecated_group='NVP',
|
||||||
help=_("If set to access_network this enables a dedicated "
|
help=_("If set to access_network this enables a dedicated "
|
||||||
"connection to the metadata proxy for metadata server "
|
"connection to the metadata proxy for metadata server "
|
||||||
"access via Neutron router. If set to dhcp_host_route "
|
"access via Neutron router. If set to dhcp_host_route "
|
||||||
@ -51,41 +57,50 @@ nvp_opts = [
|
|||||||
"does not support namespaces otherwise access_network "
|
"does not support namespaces otherwise access_network "
|
||||||
"should be used.")),
|
"should be used.")),
|
||||||
cfg.StrOpt('default_transport_type', default='stt',
|
cfg.StrOpt('default_transport_type', default='stt',
|
||||||
|
deprecated_group='NVP',
|
||||||
help=_("The default network tranport type to use (stt, gre, "
|
help=_("The default network tranport type to use (stt, gre, "
|
||||||
"bridge, ipsec_gre, or ipsec_stt)")),
|
"bridge, ipsec_gre, or ipsec_stt)")),
|
||||||
cfg.StrOpt('agent_mode', default=AgentModes.AGENT,
|
cfg.StrOpt('agent_mode', default=AgentModes.AGENT,
|
||||||
|
deprecated_group='NVP',
|
||||||
help=_("The mode used to implement DHCP/metadata services."))
|
help=_("The mode used to implement DHCP/metadata services."))
|
||||||
]
|
]
|
||||||
|
|
||||||
sync_opts = [
|
sync_opts = [
|
||||||
cfg.IntOpt('state_sync_interval', default=120,
|
cfg.IntOpt('state_sync_interval', default=120,
|
||||||
|
deprecated_group='NVP_SYNC',
|
||||||
help=_("Interval in seconds between runs of the state "
|
help=_("Interval in seconds between runs of the state "
|
||||||
"synchronization task. Set it to 0 to disable it")),
|
"synchronization task. Set it to 0 to disable it")),
|
||||||
cfg.IntOpt('max_random_sync_delay', default=0,
|
cfg.IntOpt('max_random_sync_delay', default=0,
|
||||||
|
deprecated_group='NVP_SYNC',
|
||||||
help=_("Maximum value for the additional random "
|
help=_("Maximum value for the additional random "
|
||||||
"delay in seconds between runs of the state "
|
"delay in seconds between runs of the state "
|
||||||
"synchronization task")),
|
"synchronization task")),
|
||||||
cfg.IntOpt('min_sync_req_delay', default=10,
|
cfg.IntOpt('min_sync_req_delay', default=10,
|
||||||
|
deprecated_group='NVP_SYNC',
|
||||||
help=_('Minimum delay, in seconds, between two state '
|
help=_('Minimum delay, in seconds, between two state '
|
||||||
'synchronization queries to NVP. It must not '
|
'synchronization queries to NSX. It must not '
|
||||||
'exceed state_sync_interval')),
|
'exceed state_sync_interval')),
|
||||||
cfg.IntOpt('min_chunk_size', default=500,
|
cfg.IntOpt('min_chunk_size', default=500,
|
||||||
help=_('Minimum number of resources to be retrieved from NVP '
|
deprecated_group='NVP_SYNC',
|
||||||
|
help=_('Minimum number of resources to be retrieved from NSX '
|
||||||
'during state synchronization')),
|
'during state synchronization')),
|
||||||
cfg.BoolOpt('always_read_status', default=False,
|
cfg.BoolOpt('always_read_status', default=False,
|
||||||
|
deprecated_group='NVP_SYNC',
|
||||||
help=_('Always read operational status from backend on show '
|
help=_('Always read operational status from backend on show '
|
||||||
'operations. Enabling this option might slow down '
|
'operations. Enabling this option might slow down '
|
||||||
'the system.'))
|
'the system.'))
|
||||||
]
|
]
|
||||||
|
|
||||||
connection_opts = [
|
connection_opts = [
|
||||||
cfg.StrOpt('nvp_user',
|
cfg.StrOpt('nsx_user',
|
||||||
default='admin',
|
default='admin',
|
||||||
help=_('User name for NVP controllers in this cluster')),
|
deprecated_name='nvp_user',
|
||||||
cfg.StrOpt('nvp_password',
|
help=_('User name for NSX controllers in this cluster')),
|
||||||
|
cfg.StrOpt('nsx_password',
|
||||||
default='admin',
|
default='admin',
|
||||||
|
deprecated_name='nvp_password',
|
||||||
secret=True,
|
secret=True,
|
||||||
help=_('Password for NVP controllers in this cluster')),
|
help=_('Password for NSX controllers in this cluster')),
|
||||||
cfg.IntOpt('req_timeout',
|
cfg.IntOpt('req_timeout',
|
||||||
default=30,
|
default=30,
|
||||||
help=_('Total time limit for a cluster request')),
|
help=_('Total time limit for a cluster request')),
|
||||||
@ -98,22 +113,23 @@ connection_opts = [
|
|||||||
cfg.IntOpt('redirects',
|
cfg.IntOpt('redirects',
|
||||||
default=2,
|
default=2,
|
||||||
help=_('Number of times a redirect should be followed')),
|
help=_('Number of times a redirect should be followed')),
|
||||||
cfg.ListOpt('nvp_controllers',
|
cfg.ListOpt('nsx_controllers',
|
||||||
help=_("Lists the NVP controllers in this cluster")),
|
deprecated_name='nvp_controllers',
|
||||||
|
help=_("Lists the NSX controllers in this cluster")),
|
||||||
]
|
]
|
||||||
|
|
||||||
cluster_opts = [
|
cluster_opts = [
|
||||||
cfg.StrOpt('default_tz_uuid',
|
cfg.StrOpt('default_tz_uuid',
|
||||||
help=_("This is uuid of the default NVP Transport zone that "
|
help=_("This is uuid of the default NSX Transport zone that "
|
||||||
"will be used for creating tunneled isolated "
|
"will be used for creating tunneled isolated "
|
||||||
"\"Neutron\" networks. It needs to be created in NVP "
|
"\"Neutron\" networks. It needs to be created in NSX "
|
||||||
"before starting Neutron with the nvp plugin.")),
|
"before starting Neutron with the nsx plugin.")),
|
||||||
cfg.StrOpt('default_l3_gw_service_uuid',
|
cfg.StrOpt('default_l3_gw_service_uuid',
|
||||||
help=_("Unique identifier of the NVP L3 Gateway service "
|
help=_("Unique identifier of the NSX L3 Gateway service "
|
||||||
"which will be used for implementing routers and "
|
"which will be used for implementing routers and "
|
||||||
"floating IPs")),
|
"floating IPs")),
|
||||||
cfg.StrOpt('default_l2_gw_service_uuid',
|
cfg.StrOpt('default_l2_gw_service_uuid',
|
||||||
help=_("Unique identifier of the NVP L2 Gateway service "
|
help=_("Unique identifier of the NSX L2 Gateway service "
|
||||||
"which will be used by default for network gateways")),
|
"which will be used by default for network gateways")),
|
||||||
cfg.StrOpt('default_service_cluster_uuid',
|
cfg.StrOpt('default_service_cluster_uuid',
|
||||||
help=_("Unique identifier of the Service Cluster which will "
|
help=_("Unique identifier of the Service Cluster which will "
|
||||||
@ -158,6 +174,6 @@ vcns_opts = [
|
|||||||
# Register the configuration options
|
# Register the configuration options
|
||||||
cfg.CONF.register_opts(connection_opts)
|
cfg.CONF.register_opts(connection_opts)
|
||||||
cfg.CONF.register_opts(cluster_opts)
|
cfg.CONF.register_opts(cluster_opts)
|
||||||
cfg.CONF.register_opts(nvp_opts, "NVP")
|
|
||||||
cfg.CONF.register_opts(sync_opts, "NVP_SYNC")
|
|
||||||
cfg.CONF.register_opts(vcns_opts, group="vcns")
|
cfg.CONF.register_opts(vcns_opts, group="vcns")
|
||||||
|
cfg.CONF.register_opts(base_opts, group="NSX")
|
||||||
|
cfg.CONF.register_opts(sync_opts, group="NSX_SYNC")
|
||||||
|
@ -45,24 +45,31 @@ SPECIAL_OWNERS = (const.DEVICE_OWNER_DHCP,
|
|||||||
|
|
||||||
dhcp_opts = [
|
dhcp_opts = [
|
||||||
cfg.ListOpt('extra_domain_name_servers',
|
cfg.ListOpt('extra_domain_name_servers',
|
||||||
|
deprecated_group='NVP_DHCP',
|
||||||
default=[],
|
default=[],
|
||||||
help=_('Comma separated list of additional '
|
help=_('Comma separated list of additional '
|
||||||
'domain name servers')),
|
'domain name servers')),
|
||||||
cfg.StrOpt('domain_name',
|
cfg.StrOpt('domain_name',
|
||||||
|
deprecated_group='NVP_DHCP',
|
||||||
default='openstacklocal',
|
default='openstacklocal',
|
||||||
help=_('Domain to use for building the hostnames')),
|
help=_('Domain to use for building the hostnames')),
|
||||||
cfg.IntOpt('default_lease_time', default=43200,
|
cfg.IntOpt('default_lease_time', default=43200,
|
||||||
|
deprecated_group='NVP_DHCP',
|
||||||
help=_("Default DHCP lease time")),
|
help=_("Default DHCP lease time")),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
metadata_opts = [
|
metadata_opts = [
|
||||||
cfg.StrOpt('metadata_server_address', default='127.0.0.1',
|
cfg.StrOpt('metadata_server_address',
|
||||||
|
deprecated_group='NVP_METADATA',
|
||||||
|
default='127.0.0.1',
|
||||||
help=_("IP address used by Metadata server.")),
|
help=_("IP address used by Metadata server.")),
|
||||||
cfg.IntOpt('metadata_server_port',
|
cfg.IntOpt('metadata_server_port',
|
||||||
|
deprecated_group='NVP_METADATA',
|
||||||
default=8775,
|
default=8775,
|
||||||
help=_("TCP Port used by Metadata server.")),
|
help=_("TCP Port used by Metadata server.")),
|
||||||
cfg.StrOpt('metadata_shared_secret',
|
cfg.StrOpt('metadata_shared_secret',
|
||||||
|
deprecated_group='NVP_METADATA',
|
||||||
default='',
|
default='',
|
||||||
help=_('Shared secret to sign instance-id request'),
|
help=_('Shared secret to sign instance-id request'),
|
||||||
secret=True)
|
secret=True)
|
||||||
@ -70,11 +77,11 @@ metadata_opts = [
|
|||||||
|
|
||||||
|
|
||||||
def register_dhcp_opts(config):
|
def register_dhcp_opts(config):
|
||||||
config.CONF.register_opts(dhcp_opts, "NVP_DHCP")
|
config.CONF.register_opts(dhcp_opts, group="NSX_DHCP")
|
||||||
|
|
||||||
|
|
||||||
def register_metadata_opts(config):
|
def register_metadata_opts(config):
|
||||||
config.CONF.register_opts(metadata_opts, "NVP_METADATA")
|
config.CONF.register_opts(metadata_opts, group="NSX_METADATA")
|
||||||
|
|
||||||
|
|
||||||
class LsnManager(object):
|
class LsnManager(object):
|
||||||
@ -268,10 +275,10 @@ class LsnManager(object):
|
|||||||
"""Enable/disable dhcp services with the given config options."""
|
"""Enable/disable dhcp services with the given config options."""
|
||||||
is_enabled = subnet["enable_dhcp"]
|
is_enabled = subnet["enable_dhcp"]
|
||||||
dhcp_options = {
|
dhcp_options = {
|
||||||
"domain_name": cfg.CONF.NVP_DHCP.domain_name,
|
"domain_name": cfg.CONF.NSX_DHCP.domain_name,
|
||||||
"default_lease_time": cfg.CONF.NVP_DHCP.default_lease_time,
|
"default_lease_time": cfg.CONF.NSX_DHCP.default_lease_time,
|
||||||
}
|
}
|
||||||
dns_servers = cfg.CONF.NVP_DHCP.extra_domain_name_servers
|
dns_servers = cfg.CONF.NSX_DHCP.extra_domain_name_servers
|
||||||
dns_servers.extend(subnet["dns_nameservers"])
|
dns_servers.extend(subnet["dns_nameservers"])
|
||||||
if subnet['gateway_ip']:
|
if subnet['gateway_ip']:
|
||||||
dhcp_options["routers"] = subnet["gateway_ip"]
|
dhcp_options["routers"] = subnet["gateway_ip"]
|
||||||
@ -295,7 +302,7 @@ class LsnManager(object):
|
|||||||
"""Configure metadata service for the specified subnet."""
|
"""Configure metadata service for the specified subnet."""
|
||||||
subnet = self.plugin.get_subnet(context, subnet_id)
|
subnet = self.plugin.get_subnet(context, subnet_id)
|
||||||
network_id = subnet['network_id']
|
network_id = subnet['network_id']
|
||||||
meta_conf = cfg.CONF.NVP_METADATA
|
meta_conf = cfg.CONF.NSX_METADATA
|
||||||
metadata_options = {
|
metadata_options = {
|
||||||
'metadata_server_ip': meta_conf.metadata_server_address,
|
'metadata_server_ip': meta_conf.metadata_server_address,
|
||||||
'metadata_server_port': meta_conf.metadata_server_port,
|
'metadata_server_port': meta_conf.metadata_server_port,
|
||||||
@ -492,7 +499,7 @@ def is_user_port(p, check_dev_id=False):
|
|||||||
|
|
||||||
def check_services_requirements(cluster):
|
def check_services_requirements(cluster):
|
||||||
ver = cluster.api_client.get_nvp_version()
|
ver = cluster.api_client.get_nvp_version()
|
||||||
# It sounds like 4.1 is the first one where DHCP in NSX/NVP
|
# It sounds like 4.1 is the first one where DHCP in NSX
|
||||||
# will have the experimental feature
|
# will have the experimental feature
|
||||||
if ver.major >= 4 and ver.minor >= 1:
|
if ver.major >= 4 and ver.minor >= 1:
|
||||||
cluster_id = cfg.CONF.default_service_cluster_uuid
|
cluster_id = cfg.CONF.default_service_cluster_uuid
|
||||||
|
@ -71,7 +71,7 @@ def handle_port_dhcp_access(plugin, context, port_data, action):
|
|||||||
net = plugin.get_network(context, port_data['network_id'])
|
net = plugin.get_network(context, port_data['network_id'])
|
||||||
plugin.schedule_network(context, net)
|
plugin.schedule_network(context, net)
|
||||||
|
|
||||||
active_port = (cfg.CONF.NVP.metadata_mode == config.MetadataModes.INDIRECT
|
active_port = (cfg.CONF.NSX.metadata_mode == config.MetadataModes.INDIRECT
|
||||||
and port_data.get('device_owner') == const.DEVICE_OWNER_DHCP
|
and port_data.get('device_owner') == const.DEVICE_OWNER_DHCP
|
||||||
and port_data.get('fixed_ips', []))
|
and port_data.get('fixed_ips', []))
|
||||||
if active_port:
|
if active_port:
|
||||||
@ -81,7 +81,7 @@ def handle_port_dhcp_access(plugin, context, port_data, action):
|
|||||||
|
|
||||||
|
|
||||||
def handle_port_metadata_access(plugin, context, port, is_delete=False):
|
def handle_port_metadata_access(plugin, context, port, is_delete=False):
|
||||||
if (cfg.CONF.NVP.metadata_mode == config.MetadataModes.INDIRECT and
|
if (cfg.CONF.NSX.metadata_mode == config.MetadataModes.INDIRECT and
|
||||||
port.get('device_owner') == const.DEVICE_OWNER_DHCP):
|
port.get('device_owner') == const.DEVICE_OWNER_DHCP):
|
||||||
if port.get('fixed_ips', []) or is_delete:
|
if port.get('fixed_ips', []) or is_delete:
|
||||||
fixed_ip = port['fixed_ips'][0]
|
fixed_ip = port['fixed_ips'][0]
|
||||||
@ -113,7 +113,7 @@ def handle_port_metadata_access(plugin, context, port, is_delete=False):
|
|||||||
|
|
||||||
|
|
||||||
def handle_router_metadata_access(plugin, context, router_id, interface=None):
|
def handle_router_metadata_access(plugin, context, router_id, interface=None):
|
||||||
if cfg.CONF.NVP.metadata_mode != config.MetadataModes.DIRECT:
|
if cfg.CONF.NSX.metadata_mode != config.MetadataModes.DIRECT:
|
||||||
LOG.debug(_("Metadata access network is disabled"))
|
LOG.debug(_("Metadata access network is disabled"))
|
||||||
return
|
return
|
||||||
if not cfg.CONF.allow_overlapping_ips:
|
if not cfg.CONF.allow_overlapping_ips:
|
||||||
@ -141,7 +141,7 @@ def handle_router_metadata_access(plugin, context, router_id, interface=None):
|
|||||||
"No metadata access network should be "
|
"No metadata access network should be "
|
||||||
"created or destroyed"), router_id)
|
"created or destroyed"), router_id)
|
||||||
# TODO(salvatore-orlando): A better exception handling in the
|
# TODO(salvatore-orlando): A better exception handling in the
|
||||||
# NVP plugin would allow us to improve error handling here
|
# NSX plugin would allow us to improve error handling here
|
||||||
except (ntn_exc.NeutronException, nvp_exc.NvpPluginException,
|
except (ntn_exc.NeutronException, nvp_exc.NvpPluginException,
|
||||||
NvpApiClient.NvpApiException):
|
NvpApiClient.NvpApiException):
|
||||||
# Any exception here should be regarded as non-fatal
|
# Any exception here should be regarded as non-fatal
|
||||||
@ -161,7 +161,7 @@ def _find_metadata_port(plugin, context, ports):
|
|||||||
|
|
||||||
def _create_metadata_access_network(plugin, context, router_id):
|
def _create_metadata_access_network(plugin, context, router_id):
|
||||||
# Add network
|
# Add network
|
||||||
# Network name is likely to be truncated on NVP
|
# Network name is likely to be truncated on NSX
|
||||||
net_data = {'name': 'meta-%s' % router_id,
|
net_data = {'name': 'meta-%s' % router_id,
|
||||||
'tenant_id': '', # intentionally not set
|
'tenant_id': '', # intentionally not set
|
||||||
'admin_state_up': True,
|
'admin_state_up': True,
|
||||||
|
@ -36,10 +36,10 @@ class DhcpMetadataAccess(object):
|
|||||||
|
|
||||||
def setup_dhcpmeta_access(self):
|
def setup_dhcpmeta_access(self):
|
||||||
"""Initialize support for DHCP and Metadata services."""
|
"""Initialize support for DHCP and Metadata services."""
|
||||||
if cfg.CONF.NVP.agent_mode == config.AgentModes.AGENT:
|
if cfg.CONF.NSX.agent_mode == config.AgentModes.AGENT:
|
||||||
self._setup_rpc_dhcp_metadata()
|
self._setup_rpc_dhcp_metadata()
|
||||||
mod = nvp_rpc
|
mod = nvp_rpc
|
||||||
elif cfg.CONF.NVP.agent_mode == config.AgentModes.AGENTLESS:
|
elif cfg.CONF.NSX.agent_mode == config.AgentModes.AGENTLESS:
|
||||||
self._setup_nvp_dhcp_metadata()
|
self._setup_nvp_dhcp_metadata()
|
||||||
mod = nvp_svc
|
mod = nvp_svc
|
||||||
self.handle_network_dhcp_access_delegate = (
|
self.handle_network_dhcp_access_delegate = (
|
||||||
@ -90,7 +90,7 @@ class DhcpMetadataAccess(object):
|
|||||||
error = None
|
error = None
|
||||||
nvp_svc.check_services_requirements(self.cluster)
|
nvp_svc.check_services_requirements(self.cluster)
|
||||||
except nvp_exc.NvpInvalidVersion:
|
except nvp_exc.NvpInvalidVersion:
|
||||||
error = _("Unable to run Neutron with config option '%s', as NVP "
|
error = _("Unable to run Neutron with config option '%s', as NSX "
|
||||||
"does not support it") % config.AgentModes.AGENTLESS
|
"does not support it") % config.AgentModes.AGENTLESS
|
||||||
except nvp_exc.ServiceClusterUnavailable:
|
except nvp_exc.ServiceClusterUnavailable:
|
||||||
error = _("Unmet dependency for config option "
|
error = _("Unmet dependency for config option "
|
||||||
|
@ -26,13 +26,13 @@ from neutron.plugins.nicira.common import exceptions
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
DEFAULT_PORT = 443
|
DEFAULT_PORT = 443
|
||||||
# Raise if one of those attributes is not specified
|
# Raise if one of those attributes is not specified
|
||||||
REQUIRED_ATTRIBUTES = ['default_tz_uuid', 'nvp_user',
|
REQUIRED_ATTRIBUTES = ['default_tz_uuid', 'nsx_user',
|
||||||
'nvp_password', 'nvp_controllers']
|
'nsx_password', 'nsx_controllers']
|
||||||
# Emit a INFO log if one of those attributes is not specified
|
# Emit a INFO log if one of those attributes is not specified
|
||||||
IMPORTANT_ATTRIBUTES = ['default_l3_gw_service_uuid']
|
IMPORTANT_ATTRIBUTES = ['default_l3_gw_service_uuid']
|
||||||
# Deprecated attributes
|
# Deprecated attributes
|
||||||
DEPRECATED_ATTRIBUTES = ['metadata_dhcp_host_route',
|
DEPRECATED_ATTRIBUTES = ['metadata_dhcp_host_route',
|
||||||
'nvp_controller_connection']
|
'nvp_user', 'nvp_password', 'nvp_controllers']
|
||||||
|
|
||||||
|
|
||||||
class NVPCluster(object):
|
class NVPCluster(object):
|
||||||
@ -93,38 +93,13 @@ class NVPCluster(object):
|
|||||||
else:
|
else:
|
||||||
LOG.debug(_("Attribute:%s is empty or null"), attribute)
|
LOG.debug(_("Attribute:%s is empty or null"), attribute)
|
||||||
|
|
||||||
def _process_nvp_controllers(self):
|
def _process_nsx_controllers(self):
|
||||||
# If this raises something is not right, so let it bubble up
|
# If this raises something is not right, so let it bubble up
|
||||||
# TODO(salvatore-orlando): Also validate attribute here
|
# TODO(salvatore-orlando): Also validate attribute here
|
||||||
for i, ctrl in enumerate(self.nvp_controllers or []):
|
for i, ctrl in enumerate(self.nsx_controllers or []):
|
||||||
if len(ctrl.split(':')) == 1:
|
if len(ctrl.split(':')) == 1:
|
||||||
self.nvp_controllers[i] = '%s:%s' % (ctrl, DEFAULT_PORT)
|
self.nsx_controllers[i] = '%s:%s' % (ctrl, DEFAULT_PORT)
|
||||||
|
|
||||||
def _process_nvp_controller_connection(self, connections):
|
def _process_nvp_controllers(self):
|
||||||
|
self.nsx_controllers = self.nvp_controllers
|
||||||
def parse_conn_str(ip, port, user, password, req_timeout,
|
self._process_nsx_controllers()
|
||||||
http_timeout, retries, redirects):
|
|
||||||
# TODO(salvatore-orlando): Set the attributes only
|
|
||||||
# if correspondent non-deprecated options have been
|
|
||||||
# explicitly specified in the ini file
|
|
||||||
# TODO(salvatore-orlando): Validate data to avoid ugly ValueError
|
|
||||||
self.nvp_user = user
|
|
||||||
self._process_attribute('nvp_user')
|
|
||||||
self.nvp_password = password
|
|
||||||
self._process_attribute('nvp_password')
|
|
||||||
self.req_timeout = int(req_timeout)
|
|
||||||
self._process_attribute('req_timeout')
|
|
||||||
self.http_timeout = int(http_timeout)
|
|
||||||
self._process_attribute('http_timeout')
|
|
||||||
self.retries = int(retries)
|
|
||||||
self._process_attribute('retries')
|
|
||||||
self.redirects = int(redirects)
|
|
||||||
self._process_attribute('redirects')
|
|
||||||
try:
|
|
||||||
nvp_controllers = getattr(self, 'nvp_controllers')
|
|
||||||
nvp_controllers.append('%s:%s' % (ip, port))
|
|
||||||
except AttributeError:
|
|
||||||
self.nvp_controllers = ['%s:%s' % (ip, port)]
|
|
||||||
self._process_attribute('nvp_controllers')
|
|
||||||
for conn in connections:
|
|
||||||
parse_conn_str(*conn.split(':'))
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
default_tz_uuid = fake_tz_uuid
|
default_tz_uuid = fake_tz_uuid
|
||||||
nova_zone_id = whatever
|
nova_zone_id = whatever
|
||||||
nvp_controllers = fake_1, fake_2
|
nsx_controllers = fake_1, fake_2
|
||||||
nvp_user = foo
|
nsx_user = foo
|
||||||
nvp_password = bar
|
nsx_password = bar
|
||||||
default_l3_gw_service_uuid = whatever
|
default_l3_gw_service_uuid = whatever
|
||||||
default_l2_gw_service_uuid = whatever
|
default_l2_gw_service_uuid = whatever
|
||||||
default_service_cluster_uuid = whatever
|
default_service_cluster_uuid = whatever
|
5
neutron/tests/unit/nicira/etc/nsx.ini.basic.test
Normal file
5
neutron/tests/unit/nicira/etc/nsx.ini.basic.test
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
default_tz_uuid = fake_tz_uuid
|
||||||
|
nsx_controllers=fake_1,fake_2
|
||||||
|
nsx_user=foo
|
||||||
|
nsx_password=bar
|
13
neutron/tests/unit/nicira/etc/nsx.ini.full.test
Normal file
13
neutron/tests/unit/nicira/etc/nsx.ini.full.test
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
default_tz_uuid = fake_tz_uuid
|
||||||
|
nova_zone_id = whatever
|
||||||
|
nsx_controllers = fake_1, fake_2
|
||||||
|
nsx_user = foo
|
||||||
|
nsx_password = bar
|
||||||
|
default_l3_gw_service_uuid = whatever
|
||||||
|
default_l2_gw_service_uuid = whatever
|
||||||
|
default_interface_name = whatever
|
||||||
|
req_timeout = 14
|
||||||
|
http_timeout = 13
|
||||||
|
redirects = 12
|
||||||
|
retries = 11
|
@ -1,7 +1,7 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
default_tz_uuid = fake_tz_uuid
|
default_tz_uuid = fake_tz_uuid
|
||||||
nvp_controllers=fake_1, fake_2
|
nsx_controllers=fake_1, fake_2
|
||||||
nvp_user=foo
|
nsx_user=foo
|
||||||
nvp_password=bar
|
nsx_password=bar
|
||||||
default_l3_gw_service_uuid = whatever
|
default_l3_gw_service_uuid = whatever
|
||||||
default_l2_gw_service_uuid = whatever
|
default_l2_gw_service_uuid = whatever
|
@ -1,5 +0,0 @@
|
|||||||
[DEFAULT]
|
|
||||||
default_tz_uuid = fake_tz_uuid
|
|
||||||
nvp_controllers=fake_1,fake_2
|
|
||||||
nvp_user=foo
|
|
||||||
nvp_password=bar
|
|
@ -7,7 +7,7 @@ nvp_password = bar
|
|||||||
default_l3_gw_service_uuid = whatever
|
default_l3_gw_service_uuid = whatever
|
||||||
default_l2_gw_service_uuid = whatever
|
default_l2_gw_service_uuid = whatever
|
||||||
default_interface_name = whatever
|
default_interface_name = whatever
|
||||||
req_timeout = 14
|
req_timeout = 4
|
||||||
http_timeout = 13
|
http_timeout = 3
|
||||||
redirects = 12
|
redirects = 2
|
||||||
retries = 11
|
retries = 2
|
||||||
|
@ -34,7 +34,7 @@ class NVPDhcpAgentNotifierTestCase(test_base.OvsDhcpAgentNotifierTestCase):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
test_config['plugin_name_v2'] = PLUGIN_NAME
|
test_config['plugin_name_v2'] = PLUGIN_NAME
|
||||||
test_config['config_files'] = [get_fake_conf('nvp.ini.full.test')]
|
test_config['config_files'] = [get_fake_conf('nsx.ini.full.test')]
|
||||||
|
|
||||||
# mock nvp api client
|
# mock nvp api client
|
||||||
self.fc = fake_nvpapiclient.FakeClient(STUBS_PATH)
|
self.fc = fake_nvpapiclient.FakeClient(STUBS_PATH)
|
||||||
@ -82,7 +82,7 @@ class NVPDhcpAgentNotifierTestCase(test_base.OvsDhcpAgentNotifierTestCase):
|
|||||||
return host_calls
|
return host_calls
|
||||||
|
|
||||||
def _test_gateway_subnet_notification(self, gateway='10.0.0.1'):
|
def _test_gateway_subnet_notification(self, gateway='10.0.0.1'):
|
||||||
cfg.CONF.set_override('metadata_mode', 'dhcp_host_route', 'NVP')
|
cfg.CONF.set_override('metadata_mode', 'dhcp_host_route', 'NSX')
|
||||||
hosts = ['hosta']
|
hosts = ['hosta']
|
||||||
[mock_dhcp, net, subnet, port] = self._network_port_create(
|
[mock_dhcp, net, subnet, port] = self._network_port_create(
|
||||||
hosts, gateway=gateway, owner=constants.DEVICE_OWNER_DHCP)
|
hosts, gateway=gateway, owner=constants.DEVICE_OWNER_DHCP)
|
||||||
|
@ -261,32 +261,32 @@ class LsnManagerTestCase(base.BaseTestCase):
|
|||||||
def test_lsn_port_dhcp_configure(self):
|
def test_lsn_port_dhcp_configure(self):
|
||||||
expected = {
|
expected = {
|
||||||
'routers': '127.0.0.1',
|
'routers': '127.0.0.1',
|
||||||
'default_lease_time': cfg.CONF.NVP_DHCP.default_lease_time,
|
'default_lease_time': cfg.CONF.NSX_DHCP.default_lease_time,
|
||||||
'domain_name': cfg.CONF.NVP_DHCP.domain_name
|
'domain_name': cfg.CONF.NSX_DHCP.domain_name
|
||||||
}
|
}
|
||||||
self._test_lsn_port_dhcp_configure_with_subnet(
|
self._test_lsn_port_dhcp_configure_with_subnet(
|
||||||
expected, dns=[], gw='127.0.0.1', routes=[])
|
expected, dns=[], gw='127.0.0.1', routes=[])
|
||||||
|
|
||||||
def test_lsn_port_dhcp_configure_gatewayless(self):
|
def test_lsn_port_dhcp_configure_gatewayless(self):
|
||||||
expected = {
|
expected = {
|
||||||
'default_lease_time': cfg.CONF.NVP_DHCP.default_lease_time,
|
'default_lease_time': cfg.CONF.NSX_DHCP.default_lease_time,
|
||||||
'domain_name': cfg.CONF.NVP_DHCP.domain_name
|
'domain_name': cfg.CONF.NSX_DHCP.domain_name
|
||||||
}
|
}
|
||||||
self._test_lsn_port_dhcp_configure_with_subnet(expected, gw=None)
|
self._test_lsn_port_dhcp_configure_with_subnet(expected, gw=None)
|
||||||
|
|
||||||
def test_lsn_port_dhcp_configure_with_extra_dns_servers(self):
|
def test_lsn_port_dhcp_configure_with_extra_dns_servers(self):
|
||||||
expected = {
|
expected = {
|
||||||
'default_lease_time': cfg.CONF.NVP_DHCP.default_lease_time,
|
'default_lease_time': cfg.CONF.NSX_DHCP.default_lease_time,
|
||||||
'domain_name_servers': '8.8.8.8,9.9.9.9',
|
'domain_name_servers': '8.8.8.8,9.9.9.9',
|
||||||
'domain_name': cfg.CONF.NVP_DHCP.domain_name
|
'domain_name': cfg.CONF.NSX_DHCP.domain_name
|
||||||
}
|
}
|
||||||
self._test_lsn_port_dhcp_configure_with_subnet(
|
self._test_lsn_port_dhcp_configure_with_subnet(
|
||||||
expected, dns=['8.8.8.8', '9.9.9.9'])
|
expected, dns=['8.8.8.8', '9.9.9.9'])
|
||||||
|
|
||||||
def test_lsn_port_dhcp_configure_with_host_routes(self):
|
def test_lsn_port_dhcp_configure_with_host_routes(self):
|
||||||
expected = {
|
expected = {
|
||||||
'default_lease_time': cfg.CONF.NVP_DHCP.default_lease_time,
|
'default_lease_time': cfg.CONF.NSX_DHCP.default_lease_time,
|
||||||
'domain_name': cfg.CONF.NVP_DHCP.domain_name,
|
'domain_name': cfg.CONF.NSX_DHCP.domain_name,
|
||||||
'classless_static_routes': '8.8.8.8,9.9.9.9'
|
'classless_static_routes': '8.8.8.8,9.9.9.9'
|
||||||
}
|
}
|
||||||
self._test_lsn_port_dhcp_configure_with_subnet(
|
self._test_lsn_port_dhcp_configure_with_subnet(
|
||||||
|
@ -58,7 +58,7 @@ class MacLearningDBTestCase(test_db_plugin.NeutronDbPluginV2TestCase):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.adminContext = context.get_admin_context()
|
self.adminContext = context.get_admin_context()
|
||||||
test_config['config_files'] = [get_fake_conf('nvp.ini.full.test')]
|
test_config['config_files'] = [get_fake_conf('nsx.ini.full.test')]
|
||||||
test_config['plugin_name_v2'] = PLUGIN_NAME
|
test_config['plugin_name_v2'] = PLUGIN_NAME
|
||||||
cfg.CONF.set_override('api_extensions_path', NVPEXT_PATH)
|
cfg.CONF.set_override('api_extensions_path', NVPEXT_PATH)
|
||||||
# Save the original RESOURCE_ATTRIBUTE_MAP
|
# Save the original RESOURCE_ATTRIBUTE_MAP
|
||||||
@ -81,7 +81,7 @@ class MacLearningDBTestCase(test_db_plugin.NeutronDbPluginV2TestCase):
|
|||||||
# Emulate tests against NVP 2.x
|
# Emulate tests against NVP 2.x
|
||||||
instance.return_value.get_nvp_version.return_value = NVPVersion("3.0")
|
instance.return_value.get_nvp_version.return_value = NVPVersion("3.0")
|
||||||
instance.return_value.request.side_effect = _fake_request
|
instance.return_value.request.side_effect = _fake_request
|
||||||
cfg.CONF.set_override('metadata_mode', None, 'NVP')
|
cfg.CONF.set_override('metadata_mode', None, 'NSX')
|
||||||
self.addCleanup(self.fc.reset_all)
|
self.addCleanup(self.fc.reset_all)
|
||||||
self.addCleanup(self.mock_nvpapi.stop)
|
self.addCleanup(self.mock_nvpapi.stop)
|
||||||
self.addCleanup(patch_sync.stop)
|
self.addCleanup(patch_sync.stop)
|
||||||
|
@ -103,7 +103,7 @@ class NiciraPluginV2TestCase(test_plugin.NeutronDbPluginV2TestCase):
|
|||||||
plugin=PLUGIN_NAME,
|
plugin=PLUGIN_NAME,
|
||||||
ext_mgr=None,
|
ext_mgr=None,
|
||||||
service_plugins=None):
|
service_plugins=None):
|
||||||
test_lib.test_config['config_files'] = [get_fake_conf('nvp.ini.test')]
|
test_lib.test_config['config_files'] = [get_fake_conf('nsx.ini.test')]
|
||||||
# mock nvp api client
|
# mock nvp api client
|
||||||
self.fc = fake_nvpapiclient.FakeClient(STUBS_PATH)
|
self.fc = fake_nvpapiclient.FakeClient(STUBS_PATH)
|
||||||
self.mock_nvpapi = mock.patch(NVPAPI_NAME, autospec=True)
|
self.mock_nvpapi = mock.patch(NVPAPI_NAME, autospec=True)
|
||||||
@ -122,7 +122,7 @@ class NiciraPluginV2TestCase(test_plugin.NeutronDbPluginV2TestCase):
|
|||||||
plugin = plugin or PLUGIN_NAME
|
plugin = plugin or PLUGIN_NAME
|
||||||
super(NiciraPluginV2TestCase, self).setUp(plugin=plugin,
|
super(NiciraPluginV2TestCase, self).setUp(plugin=plugin,
|
||||||
ext_mgr=ext_mgr)
|
ext_mgr=ext_mgr)
|
||||||
cfg.CONF.set_override('metadata_mode', None, 'NVP')
|
cfg.CONF.set_override('metadata_mode', None, 'NSX')
|
||||||
self.addCleanup(self.fc.reset_all)
|
self.addCleanup(self.fc.reset_all)
|
||||||
self.addCleanup(mock.patch.stopall)
|
self.addCleanup(mock.patch.stopall)
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ class TestNiciraPortsV2(NiciraPluginV2TestCase,
|
|||||||
HAS_PORT_FILTER = True
|
HAS_PORT_FILTER = True
|
||||||
|
|
||||||
def test_exhaust_ports_overlay_network(self):
|
def test_exhaust_ports_overlay_network(self):
|
||||||
cfg.CONF.set_override('max_lp_per_overlay_ls', 1, group='NVP')
|
cfg.CONF.set_override('max_lp_per_overlay_ls', 1, group='NSX')
|
||||||
with self.network(name='testnet',
|
with self.network(name='testnet',
|
||||||
arg_list=(pnet.NETWORK_TYPE,
|
arg_list=(pnet.NETWORK_TYPE,
|
||||||
pnet.PHYSICAL_NETWORK,
|
pnet.PHYSICAL_NETWORK,
|
||||||
@ -183,7 +183,7 @@ class TestNiciraPortsV2(NiciraPluginV2TestCase,
|
|||||||
self._create_port('json', net['network']['id'], 400)
|
self._create_port('json', net['network']['id'], 400)
|
||||||
|
|
||||||
def test_exhaust_ports_bridged_network(self):
|
def test_exhaust_ports_bridged_network(self):
|
||||||
cfg.CONF.set_override('max_lp_per_bridged_ls', 1, group="NVP")
|
cfg.CONF.set_override('max_lp_per_bridged_ls', 1, group="NSX")
|
||||||
providernet_args = {pnet.NETWORK_TYPE: 'flat',
|
providernet_args = {pnet.NETWORK_TYPE: 'flat',
|
||||||
pnet.PHYSICAL_NETWORK: 'tzuuid'}
|
pnet.PHYSICAL_NETWORK: 'tzuuid'}
|
||||||
with self.network(name='testnet',
|
with self.network(name='testnet',
|
||||||
@ -375,7 +375,7 @@ class TestNiciraNetworksV2(test_plugin.TestNetworksV2,
|
|||||||
class NiciraPortSecurityTestCase(psec.PortSecurityDBTestCase):
|
class NiciraPortSecurityTestCase(psec.PortSecurityDBTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
test_lib.test_config['config_files'] = [get_fake_conf('nvp.ini.test')]
|
test_lib.test_config['config_files'] = [get_fake_conf('nsx.ini.test')]
|
||||||
# mock nvp api client
|
# mock nvp api client
|
||||||
self.fc = fake_nvpapiclient.FakeClient(STUBS_PATH)
|
self.fc = fake_nvpapiclient.FakeClient(STUBS_PATH)
|
||||||
self.mock_nvpapi = mock.patch(NVPAPI_NAME, autospec=True)
|
self.mock_nvpapi = mock.patch(NVPAPI_NAME, autospec=True)
|
||||||
@ -408,7 +408,7 @@ class TestNiciraAllowedAddressPairs(test_addr_pair.TestAllowedAddressPairs,
|
|||||||
class NiciraSecurityGroupsTestCase(ext_sg.SecurityGroupDBTestCase):
|
class NiciraSecurityGroupsTestCase(ext_sg.SecurityGroupDBTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
test_lib.test_config['config_files'] = [get_fake_conf('nvp.ini.test')]
|
test_lib.test_config['config_files'] = [get_fake_conf('nsx.ini.test')]
|
||||||
# mock nvp api client
|
# mock nvp api client
|
||||||
fc = fake_nvpapiclient.FakeClient(STUBS_PATH)
|
fc = fake_nvpapiclient.FakeClient(STUBS_PATH)
|
||||||
self.mock_nvpapi = mock.patch(NVPAPI_NAME, autospec=True)
|
self.mock_nvpapi = mock.patch(NVPAPI_NAME, autospec=True)
|
||||||
@ -747,10 +747,10 @@ class TestNiciraL3NatTestCase(NiciraL3NatTest,
|
|||||||
self._test_floatingip_with_invalid_create_port(self._plugin_name)
|
self._test_floatingip_with_invalid_create_port(self._plugin_name)
|
||||||
|
|
||||||
def _nvp_metadata_setup(self):
|
def _nvp_metadata_setup(self):
|
||||||
cfg.CONF.set_override('metadata_mode', 'access_network', 'NVP')
|
cfg.CONF.set_override('metadata_mode', 'access_network', 'NSX')
|
||||||
|
|
||||||
def _nvp_metadata_teardown(self):
|
def _nvp_metadata_teardown(self):
|
||||||
cfg.CONF.set_override('metadata_mode', None, 'NVP')
|
cfg.CONF.set_override('metadata_mode', None, 'NSX')
|
||||||
|
|
||||||
def test_create_router_name_exceeds_40_chars(self):
|
def test_create_router_name_exceeds_40_chars(self):
|
||||||
name = 'this_is_a_router_whose_name_is_longer_than_40_chars'
|
name = 'this_is_a_router_whose_name_is_longer_than_40_chars'
|
||||||
@ -942,7 +942,7 @@ class TestNiciraL3NatTestCase(NiciraL3NatTest,
|
|||||||
self._nvp_metadata_teardown()
|
self._nvp_metadata_teardown()
|
||||||
|
|
||||||
def test_metadata_dhcp_host_route(self):
|
def test_metadata_dhcp_host_route(self):
|
||||||
cfg.CONF.set_override('metadata_mode', 'dhcp_host_route', 'NVP')
|
cfg.CONF.set_override('metadata_mode', 'dhcp_host_route', 'NSX')
|
||||||
subnets = self._list('subnets')['subnets']
|
subnets = self._list('subnets')['subnets']
|
||||||
with self.subnet() as s:
|
with self.subnet() as s:
|
||||||
with self.port(subnet=s, device_id='1234',
|
with self.port(subnet=s, device_id='1234',
|
||||||
|
@ -275,17 +275,17 @@ class NvpSyncTestCase(base.BaseTestCase):
|
|||||||
|
|
||||||
self.mock_nvpapi.return_value.request.side_effect = _fake_request
|
self.mock_nvpapi.return_value.request.side_effect = _fake_request
|
||||||
self.fake_cluster = nvp_cluster.NVPCluster(
|
self.fake_cluster = nvp_cluster.NVPCluster(
|
||||||
name='fake-cluster', nvp_controllers=['1.1.1.1:999'],
|
name='fake-cluster', nsx_controllers=['1.1.1.1:999'],
|
||||||
default_tz_uuid=_uuid(), nvp_user='foo', nvp_password='bar')
|
default_tz_uuid=_uuid(), nsx_user='foo', nsx_password='bar')
|
||||||
self.fake_cluster.api_client = NvpApiClient.NVPApiHelper(
|
self.fake_cluster.api_client = NvpApiClient.NVPApiHelper(
|
||||||
('1.1.1.1', '999', True),
|
('1.1.1.1', '999', True),
|
||||||
self.fake_cluster.nvp_user, self.fake_cluster.nvp_password,
|
self.fake_cluster.nsx_user, self.fake_cluster.nsx_password,
|
||||||
self.fake_cluster.req_timeout, self.fake_cluster.http_timeout,
|
self.fake_cluster.req_timeout, self.fake_cluster.http_timeout,
|
||||||
self.fake_cluster.retries, self.fake_cluster.redirects)
|
self.fake_cluster.retries, self.fake_cluster.redirects)
|
||||||
# Instantiate Neutron plugin
|
# Instantiate Neutron plugin
|
||||||
# and setup needed config variables
|
# and setup needed config variables
|
||||||
args = ['--config-file', get_fake_conf('neutron.conf.test'),
|
args = ['--config-file', get_fake_conf('neutron.conf.test'),
|
||||||
'--config-file', get_fake_conf('nvp.ini.test')]
|
'--config-file', get_fake_conf('nsx.ini.test')]
|
||||||
config.parse(args=args)
|
config.parse(args=args)
|
||||||
cfg.CONF.set_override('allow_overlapping_ips', True)
|
cfg.CONF.set_override('allow_overlapping_ips', True)
|
||||||
self._plugin = NeutronPlugin.NvpPluginV2()
|
self._plugin = NeutronPlugin.NvpPluginV2()
|
||||||
@ -554,7 +554,7 @@ class NvpSyncTestCase(base.BaseTestCase):
|
|||||||
self.assertEqual(exp_status, q_net['status'])
|
self.assertEqual(exp_status, q_net['status'])
|
||||||
|
|
||||||
def test_synchronize_network_on_get(self):
|
def test_synchronize_network_on_get(self):
|
||||||
cfg.CONF.set_override('always_read_status', True, 'NVP_SYNC')
|
cfg.CONF.set_override('always_read_status', True, 'NSX_SYNC')
|
||||||
ctx = context.get_admin_context()
|
ctx = context.get_admin_context()
|
||||||
with self._populate_data(ctx):
|
with self._populate_data(ctx):
|
||||||
# Put a network down to verify punctual synchronization
|
# Put a network down to verify punctual synchronization
|
||||||
@ -583,7 +583,7 @@ class NvpSyncTestCase(base.BaseTestCase):
|
|||||||
self.assertEqual(exp_status, q_port['status'])
|
self.assertEqual(exp_status, q_port['status'])
|
||||||
|
|
||||||
def test_synchronize_port_on_get(self):
|
def test_synchronize_port_on_get(self):
|
||||||
cfg.CONF.set_override('always_read_status', True, 'NVP_SYNC')
|
cfg.CONF.set_override('always_read_status', True, 'NSX_SYNC')
|
||||||
ctx = context.get_admin_context()
|
ctx = context.get_admin_context()
|
||||||
with self._populate_data(ctx):
|
with self._populate_data(ctx):
|
||||||
# Put a port down to verify punctual synchronization
|
# Put a port down to verify punctual synchronization
|
||||||
@ -613,7 +613,7 @@ class NvpSyncTestCase(base.BaseTestCase):
|
|||||||
self.assertEqual(exp_status, q_rtr['status'])
|
self.assertEqual(exp_status, q_rtr['status'])
|
||||||
|
|
||||||
def test_synchronize_router_on_get(self):
|
def test_synchronize_router_on_get(self):
|
||||||
cfg.CONF.set_override('always_read_status', True, 'NVP_SYNC')
|
cfg.CONF.set_override('always_read_status', True, 'NSX_SYNC')
|
||||||
ctx = context.get_admin_context()
|
ctx = context.get_admin_context()
|
||||||
with self._populate_data(ctx):
|
with self._populate_data(ctx):
|
||||||
# Put a router down to verify punctual synchronization
|
# Put a router down to verify punctual synchronization
|
||||||
|
@ -56,11 +56,11 @@ class NvplibTestCase(base.BaseTestCase):
|
|||||||
|
|
||||||
instance.return_value.request.side_effect = _fake_request
|
instance.return_value.request.side_effect = _fake_request
|
||||||
self.fake_cluster = nvp_cluster.NVPCluster(
|
self.fake_cluster = nvp_cluster.NVPCluster(
|
||||||
name='fake-cluster', nvp_controllers=['1.1.1.1:999'],
|
name='fake-cluster', nsx_controllers=['1.1.1.1:999'],
|
||||||
default_tz_uuid=_uuid(), nvp_user='foo', nvp_password='bar')
|
default_tz_uuid=_uuid(), nsx_user='foo', nsx_password='bar')
|
||||||
self.fake_cluster.api_client = NvpApiClient.NVPApiHelper(
|
self.fake_cluster.api_client = NvpApiClient.NVPApiHelper(
|
||||||
('1.1.1.1', '999', True),
|
('1.1.1.1', '999', True),
|
||||||
self.fake_cluster.nvp_user, self.fake_cluster.nvp_password,
|
self.fake_cluster.nsx_user, self.fake_cluster.nsx_password,
|
||||||
self.fake_cluster.req_timeout, self.fake_cluster.http_timeout,
|
self.fake_cluster.req_timeout, self.fake_cluster.http_timeout,
|
||||||
self.fake_cluster.retries, self.fake_cluster.redirects)
|
self.fake_cluster.retries, self.fake_cluster.redirects)
|
||||||
|
|
||||||
@ -122,11 +122,11 @@ class NvplibNegativeTests(base.BaseTestCase):
|
|||||||
|
|
||||||
instance.return_value.request.side_effect = _faulty_request
|
instance.return_value.request.side_effect = _faulty_request
|
||||||
self.fake_cluster = nvp_cluster.NVPCluster(
|
self.fake_cluster = nvp_cluster.NVPCluster(
|
||||||
name='fake-cluster', nvp_controllers=['1.1.1.1:999'],
|
name='fake-cluster', nsx_controllers=['1.1.1.1:999'],
|
||||||
default_tz_uuid=_uuid(), nvp_user='foo', nvp_password='bar')
|
default_tz_uuid=_uuid(), nsx_user='foo', nsx_password='bar')
|
||||||
self.fake_cluster.api_client = NvpApiClient.NVPApiHelper(
|
self.fake_cluster.api_client = NvpApiClient.NVPApiHelper(
|
||||||
('1.1.1.1', '999', True),
|
('1.1.1.1', '999', True),
|
||||||
self.fake_cluster.nvp_user, self.fake_cluster.nvp_password,
|
self.fake_cluster.nsx_user, self.fake_cluster.nsx_password,
|
||||||
self.fake_cluster.req_timeout, self.fake_cluster.http_timeout,
|
self.fake_cluster.req_timeout, self.fake_cluster.http_timeout,
|
||||||
self.fake_cluster.retries, self.fake_cluster.redirects)
|
self.fake_cluster.retries, self.fake_cluster.redirects)
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||||
|
|
||||||
# Copyright 2013 Nicira Networks, Inc.
|
# Copyright 2013 VMware, Inc.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
# not use this file except in compliance with the License. You may obtain
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -34,28 +34,28 @@ from neutron.tests.unit.nicira import get_fake_conf
|
|||||||
from neutron.tests.unit.nicira import PLUGIN_NAME
|
from neutron.tests.unit.nicira import PLUGIN_NAME
|
||||||
|
|
||||||
BASE_CONF_PATH = get_fake_conf('neutron.conf.test')
|
BASE_CONF_PATH = get_fake_conf('neutron.conf.test')
|
||||||
NVP_BASE_CONF_PATH = get_fake_conf('neutron.conf.test')
|
NSX_INI_PATH = get_fake_conf('nsx.ini.basic.test')
|
||||||
NVP_INI_PATH = get_fake_conf('nvp.ini.basic.test')
|
NSX_INI_FULL_PATH = get_fake_conf('nsx.ini.full.test')
|
||||||
NVP_INI_FULL_PATH = get_fake_conf('nvp.ini.full.test')
|
NSX_INI_AGENTLESS_PATH = get_fake_conf('nsx.ini.agentless.test')
|
||||||
NVP_INI_AGENTLESS_PATH = get_fake_conf('nvp.ini.agentless.test')
|
NVP_INI_DEPR_PATH = get_fake_conf('nvp.ini.full.test')
|
||||||
|
|
||||||
|
|
||||||
class NVPClusterTest(testtools.TestCase):
|
class NSXClusterTest(testtools.TestCase):
|
||||||
|
|
||||||
cluster_opts = {'default_tz_uuid': uuidutils.generate_uuid(),
|
cluster_opts = {'default_tz_uuid': uuidutils.generate_uuid(),
|
||||||
'default_l2_gw_service_uuid': uuidutils.generate_uuid(),
|
'default_l2_gw_service_uuid': uuidutils.generate_uuid(),
|
||||||
'default_l2_gw_service_uuid': uuidutils.generate_uuid(),
|
'default_l2_gw_service_uuid': uuidutils.generate_uuid(),
|
||||||
'nvp_user': 'foo',
|
'nsx_user': 'foo',
|
||||||
'nvp_password': 'bar',
|
'nsx_password': 'bar',
|
||||||
'req_timeout': 45,
|
'req_timeout': 45,
|
||||||
'http_timeout': 25,
|
'http_timeout': 25,
|
||||||
'retries': 7,
|
'retries': 7,
|
||||||
'redirects': 23,
|
'redirects': 23,
|
||||||
'default_interface_name': 'baz',
|
'default_interface_name': 'baz',
|
||||||
'nvp_controllers': ['1.1.1.1:443']}
|
'nsx_controllers': ['1.1.1.1:443']}
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(NVPClusterTest, self).setUp()
|
super(NSXClusterTest, self).setUp()
|
||||||
self.addCleanup(cfg.CONF.reset)
|
self.addCleanup(cfg.CONF.reset)
|
||||||
|
|
||||||
def test_create_cluster(self):
|
def test_create_cluster(self):
|
||||||
@ -65,7 +65,7 @@ class NVPClusterTest(testtools.TestCase):
|
|||||||
|
|
||||||
def test_create_cluster_default_port(self):
|
def test_create_cluster_default_port(self):
|
||||||
opts = self.cluster_opts.copy()
|
opts = self.cluster_opts.copy()
|
||||||
opts['nvp_controllers'] = ['1.1.1.1']
|
opts['nsx_controllers'] = ['1.1.1.1']
|
||||||
cluster = nvp_cluster.NVPCluster(**opts)
|
cluster = nvp_cluster.NVPCluster(**opts)
|
||||||
for (k, v) in self.cluster_opts.iteritems():
|
for (k, v) in self.cluster_opts.iteritems():
|
||||||
self.assertEqual(v, getattr(cluster, k))
|
self.assertEqual(v, getattr(cluster, k))
|
||||||
@ -91,10 +91,10 @@ class ConfigurationTest(testtools.TestCase):
|
|||||||
self.addCleanup(patch_sync.stop)
|
self.addCleanup(patch_sync.stop)
|
||||||
|
|
||||||
def _assert_required_options(self, cluster):
|
def _assert_required_options(self, cluster):
|
||||||
self.assertEqual(cluster.nvp_controllers, ['fake_1:443', 'fake_2:443'])
|
self.assertEqual(cluster.nsx_controllers, ['fake_1:443', 'fake_2:443'])
|
||||||
self.assertEqual(cluster.default_tz_uuid, 'fake_tz_uuid')
|
self.assertEqual(cluster.default_tz_uuid, 'fake_tz_uuid')
|
||||||
self.assertEqual(cluster.nvp_user, 'foo')
|
self.assertEqual(cluster.nsx_user, 'foo')
|
||||||
self.assertEqual(cluster.nvp_password, 'bar')
|
self.assertEqual(cluster.nsx_password, 'bar')
|
||||||
|
|
||||||
def _assert_extra_options(self, cluster):
|
def _assert_extra_options(self, cluster):
|
||||||
self.assertEqual(14, cluster.req_timeout)
|
self.assertEqual(14, cluster.req_timeout)
|
||||||
@ -107,7 +107,7 @@ class ConfigurationTest(testtools.TestCase):
|
|||||||
|
|
||||||
def test_load_plugin_with_full_options(self):
|
def test_load_plugin_with_full_options(self):
|
||||||
q_config.parse(['--config-file', BASE_CONF_PATH,
|
q_config.parse(['--config-file', BASE_CONF_PATH,
|
||||||
'--config-file', NVP_INI_FULL_PATH])
|
'--config-file', NSX_INI_FULL_PATH])
|
||||||
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
||||||
plugin = NeutronManager().get_plugin()
|
plugin = NeutronManager().get_plugin()
|
||||||
cluster = plugin.cluster
|
cluster = plugin.cluster
|
||||||
@ -116,44 +116,44 @@ class ConfigurationTest(testtools.TestCase):
|
|||||||
|
|
||||||
def test_load_plugin_with_required_options_only(self):
|
def test_load_plugin_with_required_options_only(self):
|
||||||
q_config.parse(['--config-file', BASE_CONF_PATH,
|
q_config.parse(['--config-file', BASE_CONF_PATH,
|
||||||
'--config-file', NVP_INI_PATH])
|
'--config-file', NSX_INI_PATH])
|
||||||
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
||||||
plugin = NeutronManager().get_plugin()
|
plugin = NeutronManager().get_plugin()
|
||||||
self._assert_required_options(plugin.cluster)
|
self._assert_required_options(plugin.cluster)
|
||||||
|
|
||||||
def test_defaults(self):
|
def test_defaults(self):
|
||||||
self.assertEqual(5000, cfg.CONF.NVP.max_lp_per_bridged_ls)
|
self.assertEqual(5000, cfg.CONF.NSX.max_lp_per_bridged_ls)
|
||||||
self.assertEqual(256, cfg.CONF.NVP.max_lp_per_overlay_ls)
|
self.assertEqual(256, cfg.CONF.NSX.max_lp_per_overlay_ls)
|
||||||
self.assertEqual(10, cfg.CONF.NVP.concurrent_connections)
|
self.assertEqual(10, cfg.CONF.NSX.concurrent_connections)
|
||||||
self.assertEqual('access_network', cfg.CONF.NVP.metadata_mode)
|
self.assertEqual('access_network', cfg.CONF.NSX.metadata_mode)
|
||||||
self.assertEqual('stt', cfg.CONF.NVP.default_transport_type)
|
self.assertEqual('stt', cfg.CONF.NSX.default_transport_type)
|
||||||
|
|
||||||
self.assertIsNone(cfg.CONF.default_tz_uuid)
|
self.assertIsNone(cfg.CONF.default_tz_uuid)
|
||||||
self.assertEqual('admin', cfg.CONF.nvp_user)
|
self.assertEqual('admin', cfg.CONF.nsx_user)
|
||||||
self.assertEqual('admin', cfg.CONF.nvp_password)
|
self.assertEqual('admin', cfg.CONF.nsx_password)
|
||||||
self.assertEqual(30, cfg.CONF.req_timeout)
|
self.assertEqual(30, cfg.CONF.req_timeout)
|
||||||
self.assertEqual(10, cfg.CONF.http_timeout)
|
self.assertEqual(10, cfg.CONF.http_timeout)
|
||||||
self.assertEqual(2, cfg.CONF.retries)
|
self.assertEqual(2, cfg.CONF.retries)
|
||||||
self.assertEqual(2, cfg.CONF.redirects)
|
self.assertEqual(2, cfg.CONF.redirects)
|
||||||
self.assertIsNone(cfg.CONF.nvp_controllers)
|
self.assertIsNone(cfg.CONF.nsx_controllers)
|
||||||
self.assertIsNone(cfg.CONF.default_l3_gw_service_uuid)
|
self.assertIsNone(cfg.CONF.default_l3_gw_service_uuid)
|
||||||
self.assertIsNone(cfg.CONF.default_l2_gw_service_uuid)
|
self.assertIsNone(cfg.CONF.default_l2_gw_service_uuid)
|
||||||
self.assertEqual('breth0', cfg.CONF.default_interface_name)
|
self.assertEqual('breth0', cfg.CONF.default_interface_name)
|
||||||
|
|
||||||
def test_load_api_extensions(self):
|
def test_load_api_extensions(self):
|
||||||
q_config.parse(['--config-file', NVP_BASE_CONF_PATH,
|
q_config.parse(['--config-file', BASE_CONF_PATH,
|
||||||
'--config-file', NVP_INI_FULL_PATH])
|
'--config-file', NSX_INI_FULL_PATH])
|
||||||
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
||||||
# Load the configuration, and initialize the plugin
|
# Load the configuration, and initialize the plugin
|
||||||
NeutronManager().get_plugin()
|
NeutronManager().get_plugin()
|
||||||
self.assertIn('extensions', cfg.CONF.api_extensions_path)
|
self.assertIn('extensions', cfg.CONF.api_extensions_path)
|
||||||
|
|
||||||
def test_agentless_extensions(self):
|
def test_agentless_extensions(self):
|
||||||
q_config.parse(['--config-file', NVP_BASE_CONF_PATH,
|
q_config.parse(['--config-file', BASE_CONF_PATH,
|
||||||
'--config-file', NVP_INI_AGENTLESS_PATH])
|
'--config-file', NSX_INI_AGENTLESS_PATH])
|
||||||
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
||||||
self.assertEqual(config.AgentModes.AGENTLESS,
|
self.assertEqual(config.AgentModes.AGENTLESS,
|
||||||
cfg.CONF.NVP.agent_mode)
|
cfg.CONF.NSX.agent_mode)
|
||||||
# The version returned from NVP does not really matter here
|
# The version returned from NVP does not really matter here
|
||||||
with mock.patch.object(nvp_client.NVPApiHelper,
|
with mock.patch.object(nvp_client.NVPApiHelper,
|
||||||
'get_nvp_version',
|
'get_nvp_version',
|
||||||
@ -168,22 +168,22 @@ class ConfigurationTest(testtools.TestCase):
|
|||||||
plugin.supported_extension_aliases)
|
plugin.supported_extension_aliases)
|
||||||
|
|
||||||
def test_agentless_extensions_version_fail(self):
|
def test_agentless_extensions_version_fail(self):
|
||||||
q_config.parse(['--config-file', NVP_BASE_CONF_PATH,
|
q_config.parse(['--config-file', BASE_CONF_PATH,
|
||||||
'--config-file', NVP_INI_AGENTLESS_PATH])
|
'--config-file', NSX_INI_AGENTLESS_PATH])
|
||||||
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
||||||
self.assertEqual(config.AgentModes.AGENTLESS,
|
self.assertEqual(config.AgentModes.AGENTLESS,
|
||||||
cfg.CONF.NVP.agent_mode)
|
cfg.CONF.NSX.agent_mode)
|
||||||
with mock.patch.object(nvp_client.NVPApiHelper,
|
with mock.patch.object(nvp_client.NVPApiHelper,
|
||||||
'get_nvp_version',
|
'get_nvp_version',
|
||||||
return_value=nvp_client.NVPVersion("3.2")):
|
return_value=nvp_client.NVPVersion("3.2")):
|
||||||
self.assertRaises(exceptions.NvpPluginException, NeutronManager)
|
self.assertRaises(exceptions.NvpPluginException, NeutronManager)
|
||||||
|
|
||||||
def test_agentless_extensions_unmet_deps_fail(self):
|
def test_agentless_extensions_unmet_deps_fail(self):
|
||||||
q_config.parse(['--config-file', NVP_BASE_CONF_PATH,
|
q_config.parse(['--config-file', BASE_CONF_PATH,
|
||||||
'--config-file', NVP_INI_AGENTLESS_PATH])
|
'--config-file', NSX_INI_AGENTLESS_PATH])
|
||||||
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
||||||
self.assertEqual(config.AgentModes.AGENTLESS,
|
self.assertEqual(config.AgentModes.AGENTLESS,
|
||||||
cfg.CONF.NVP.agent_mode)
|
cfg.CONF.NSX.agent_mode)
|
||||||
with mock.patch.object(nvp_client.NVPApiHelper,
|
with mock.patch.object(nvp_client.NVPApiHelper,
|
||||||
'get_nvp_version',
|
'get_nvp_version',
|
||||||
return_value=nvp_client.NVPVersion("3.2")):
|
return_value=nvp_client.NVPVersion("3.2")):
|
||||||
@ -194,13 +194,46 @@ class ConfigurationTest(testtools.TestCase):
|
|||||||
NeutronManager)
|
NeutronManager)
|
||||||
|
|
||||||
def test_agent_extensions(self):
|
def test_agent_extensions(self):
|
||||||
q_config.parse(['--config-file', NVP_BASE_CONF_PATH,
|
q_config.parse(['--config-file', BASE_CONF_PATH,
|
||||||
'--config-file', NVP_INI_FULL_PATH])
|
'--config-file', NSX_INI_FULL_PATH])
|
||||||
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
||||||
self.assertEqual(config.AgentModes.AGENT,
|
self.assertEqual(config.AgentModes.AGENT,
|
||||||
cfg.CONF.NVP.agent_mode)
|
cfg.CONF.NSX.agent_mode)
|
||||||
plugin = NeutronManager().get_plugin()
|
plugin = NeutronManager().get_plugin()
|
||||||
self.assertIn('agent',
|
self.assertIn('agent',
|
||||||
plugin.supported_extension_aliases)
|
plugin.supported_extension_aliases)
|
||||||
self.assertIn('dhcp_agent_scheduler',
|
self.assertIn('dhcp_agent_scheduler',
|
||||||
plugin.supported_extension_aliases)
|
plugin.supported_extension_aliases)
|
||||||
|
|
||||||
|
|
||||||
|
class OldNVPConfigurationTest(testtools.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(OldNVPConfigurationTest, self).setUp()
|
||||||
|
self.addCleanup(cfg.CONF.reset)
|
||||||
|
self.useFixture(fixtures.MonkeyPatch(
|
||||||
|
'neutron.manager.NeutronManager._instance',
|
||||||
|
None))
|
||||||
|
# Avoid runs of the synchronizer looping call
|
||||||
|
patch_sync = mock.patch.object(sync, '_start_loopingcall')
|
||||||
|
patch_sync.start()
|
||||||
|
self.addCleanup(patch_sync.stop)
|
||||||
|
|
||||||
|
def _assert_required_options(self, cluster):
|
||||||
|
self.assertEqual(cluster.nsx_controllers, ['fake_1:443', 'fake_2:443'])
|
||||||
|
self.assertEqual(cluster.nsx_user, 'foo')
|
||||||
|
self.assertEqual(cluster.nsx_password, 'bar')
|
||||||
|
self.assertEqual(cluster.default_tz_uuid, 'fake_tz_uuid')
|
||||||
|
|
||||||
|
def test_load_plugin_with_deprecated_options(self):
|
||||||
|
q_config.parse(['--config-file', BASE_CONF_PATH,
|
||||||
|
'--config-file', NVP_INI_DEPR_PATH])
|
||||||
|
cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
|
||||||
|
plugin = NeutronManager().get_plugin()
|
||||||
|
cluster = plugin.cluster
|
||||||
|
# Verify old nvp_* params have been fully parsed
|
||||||
|
self._assert_required_options(cluster)
|
||||||
|
self.assertEqual(4, cluster.req_timeout)
|
||||||
|
self.assertEqual(3, cluster.http_timeout)
|
||||||
|
self.assertEqual(2, cluster.retries)
|
||||||
|
self.assertEqual(2, cluster.redirects)
|
||||||
|
@ -64,6 +64,7 @@ data_files =
|
|||||||
etc/neutron/plugins/openvswitch = etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
|
etc/neutron/plugins/openvswitch = etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
|
||||||
etc/neutron/plugins/plumgrid = etc/neutron/plugins/plumgrid/plumgrid.ini
|
etc/neutron/plugins/plumgrid = etc/neutron/plugins/plumgrid/plumgrid.ini
|
||||||
etc/neutron/plugins/ryu = etc/neutron/plugins/ryu/ryu.ini
|
etc/neutron/plugins/ryu = etc/neutron/plugins/ryu/ryu.ini
|
||||||
|
etc/neutron/plugins/vmware = etc/neutron/plugins/vmware/nsx.ini
|
||||||
scripts =
|
scripts =
|
||||||
bin/quantum-rootwrap
|
bin/quantum-rootwrap
|
||||||
bin/neutron-rootwrap
|
bin/neutron-rootwrap
|
||||||
|
Loading…
Reference in New Issue
Block a user