117 lines
5.0 KiB
Python
Raw Normal View History

# 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.
from oslo_config import cfg
Delete Tempest fork, import from tempest and tempest_lib A while ago we copied Tempest networking API tests in to the Neutron repo, and along came thousands of lines of code of Tempest testing infrastructure (neutron.tests.tempest). For a while we periodically refreshed our fork via: tools/copy_api_tests_from_tempest.sh I think it's time we move away from that model by eliminating the fork. We do this by deleting unused code and importing the rest from tempest_lib. There's some Tempest code still not moved from Tempest to tempest_lib in tempest.common. I think it's preferable to import that code than to copy it, and Tempest cores mostly agree. Manila and Ironic also do the same. To be able to import from tempest I added it as a requirement: Since Tempest is not on PyPi, I had to get it from git. Only the api tests environment needs Tempest, so instead of adding it to test-requirements, I added it specifically to the api and api-constraints venvs. neutron.tests.tempest.test and neutron.tests.tempest.common.* still remain. These are tighly coupled with one another, and sadly since Neutron forked Tempest code, Tempest has made significant changes to those files that also require changes to the test files. I aim to get rid of the Neutron fork of these files in a follow up change. Also fixed import grouping in test files so that it's std libs, 3rd party libs, and then Neutron code. * Removed neutron.tests.tempest.config: - We only added one option after the fork. I created a new group called 'neutron_plugin_options' and moved the new option to that group. This is in preperation for the Tempest plugin architecture, where you're supposed to add new config options to a new group and not to existing configuration groups. Note that this is obviously a backward incompatible change, but it's to an option added in the same cycle. * Removed neutron.tests.tempest.test and neutron.tests.tempest.common. - This introduced an API change to the way we access Keystone, which required mechanical changes to a few tests (create_tenant calls need a different client now). - The way Tempest manages primary, admin and alternative tenant credentials was changed after we forked, which required another mechanical change to a few tests. * Cut all of the Keystone clients we don't need. We only need to create/delete tenants, the other clients were used in Tempest by actual Keystone tests. * Changed neutron.tests.api.base.BaseNetworkTest: - Re-implemented get_client_manager so that it returns the Neutron clients manager and not the one in the Tempest repo. - Updated it from the Tempest repo so that it uses the new way to manage credentials (Since it now uses the Tempest test base class and not our out of date forked copy). Change-Id: I4f9193dfe26f2d36985cb480a98709ec182a2f7b
2016-01-19 11:47:14 -05:00
from tempest import config
Delete Tempest fork, import from tempest and tempest_lib A while ago we copied Tempest networking API tests in to the Neutron repo, and along came thousands of lines of code of Tempest testing infrastructure (neutron.tests.tempest). For a while we periodically refreshed our fork via: tools/copy_api_tests_from_tempest.sh I think it's time we move away from that model by eliminating the fork. We do this by deleting unused code and importing the rest from tempest_lib. There's some Tempest code still not moved from Tempest to tempest_lib in tempest.common. I think it's preferable to import that code than to copy it, and Tempest cores mostly agree. Manila and Ironic also do the same. To be able to import from tempest I added it as a requirement: Since Tempest is not on PyPi, I had to get it from git. Only the api tests environment needs Tempest, so instead of adding it to test-requirements, I added it specifically to the api and api-constraints venvs. neutron.tests.tempest.test and neutron.tests.tempest.common.* still remain. These are tighly coupled with one another, and sadly since Neutron forked Tempest code, Tempest has made significant changes to those files that also require changes to the test files. I aim to get rid of the Neutron fork of these files in a follow up change. Also fixed import grouping in test files so that it's std libs, 3rd party libs, and then Neutron code. * Removed neutron.tests.tempest.config: - We only added one option after the fork. I created a new group called 'neutron_plugin_options' and moved the new option to that group. This is in preperation for the Tempest plugin architecture, where you're supposed to add new config options to a new group and not to existing configuration groups. Note that this is obviously a backward incompatible change, but it's to an option added in the same cycle. * Removed neutron.tests.tempest.test and neutron.tests.tempest.common. - This introduced an API change to the way we access Keystone, which required mechanical changes to a few tests (create_tenant calls need a different client now). - The way Tempest manages primary, admin and alternative tenant credentials was changed after we forked, which required another mechanical change to a few tests. * Cut all of the Keystone clients we don't need. We only need to create/delete tenants, the other clients were used in Tempest by actual Keystone tests. * Changed neutron.tests.api.base.BaseNetworkTest: - Re-implemented get_client_manager so that it returns the Neutron clients manager and not the one in the Tempest repo. - Updated it from the Tempest repo so that it uses the new way to manage credentials (Since it now uses the Tempest test base class and not our out of date forked copy). Change-Id: I4f9193dfe26f2d36985cb480a98709ec182a2f7b
2016-01-19 11:47:14 -05:00
CONF = config.CONF
Delete Tempest fork, import from tempest and tempest_lib A while ago we copied Tempest networking API tests in to the Neutron repo, and along came thousands of lines of code of Tempest testing infrastructure (neutron.tests.tempest). For a while we periodically refreshed our fork via: tools/copy_api_tests_from_tempest.sh I think it's time we move away from that model by eliminating the fork. We do this by deleting unused code and importing the rest from tempest_lib. There's some Tempest code still not moved from Tempest to tempest_lib in tempest.common. I think it's preferable to import that code than to copy it, and Tempest cores mostly agree. Manila and Ironic also do the same. To be able to import from tempest I added it as a requirement: Since Tempest is not on PyPi, I had to get it from git. Only the api tests environment needs Tempest, so instead of adding it to test-requirements, I added it specifically to the api and api-constraints venvs. neutron.tests.tempest.test and neutron.tests.tempest.common.* still remain. These are tighly coupled with one another, and sadly since Neutron forked Tempest code, Tempest has made significant changes to those files that also require changes to the test files. I aim to get rid of the Neutron fork of these files in a follow up change. Also fixed import grouping in test files so that it's std libs, 3rd party libs, and then Neutron code. * Removed neutron.tests.tempest.config: - We only added one option after the fork. I created a new group called 'neutron_plugin_options' and moved the new option to that group. This is in preperation for the Tempest plugin architecture, where you're supposed to add new config options to a new group and not to existing configuration groups. Note that this is obviously a backward incompatible change, but it's to an option added in the same cycle. * Removed neutron.tests.tempest.test and neutron.tests.tempest.common. - This introduced an API change to the way we access Keystone, which required mechanical changes to a few tests (create_tenant calls need a different client now). - The way Tempest manages primary, admin and alternative tenant credentials was changed after we forked, which required another mechanical change to a few tests. * Cut all of the Keystone clients we don't need. We only need to create/delete tenants, the other clients were used in Tempest by actual Keystone tests. * Changed neutron.tests.api.base.BaseNetworkTest: - Re-implemented get_client_manager so that it returns the Neutron clients manager and not the one in the Tempest repo. - Updated it from the Tempest repo so that it uses the new way to manage credentials (Since it now uses the Tempest test base class and not our out of date forked copy). Change-Id: I4f9193dfe26f2d36985cb480a98709ec182a2f7b
2016-01-19 11:47:14 -05:00
NeutronPluginOptions = [
cfg.ListOpt('provider_vlans',
default=[],
help='List of provider networks available in the deployment.'),
cfg.BoolOpt('specify_floating_ip_address_available',
default=True,
help='Allow passing an IP Address of the floating ip when '
'creating the floating ip'),
cfg.ListOpt('available_type_drivers',
default=[],
help='List of network types available to neutron, '
'e.g. vxlan,vlan,gre.'),
cfg.StrOpt('agent_availability_zone',
help='The availability zone for all agents in the deployment. '
'Configure this only when the single value is used by '
'all agents in the deployment.'),
cfg.IntOpt('max_networks_per_project',
default=4,
help='Max number of networks per project. '
'Configure this only when project is limited with real '
'vlans in deployment.'),
cfg.StrOpt('l3_agent_mode',
help='The agent mode for L3 agents in the deployment. '
'Configure this only when the single value is used by '
'all agents in the deployment.'),
cfg.StrOpt('test_mtu_networks',
default='[{"provider:network_type":"vxlan",'
'"mtu":1200, "cidr":"10.100.0.0/16"}'
','
'{"provider:network_type":"vxlan",'
'"mtu":1300, "cidr":"10.200.0.0/16"}]',
help='Configuration for test networks. The format is JSON. '
'"provider:network_type":<TYPE> - string '
'"mtu":<MTU> - integer '
'"cidr"<SUBNET/MASK> - string '
'"provider:segmentation_id":<VLAN_ID> - integer'),
# Option for feature to connect via SSH to VMs using an intermediate SSH
# server
cfg.StrOpt('ssh_proxy_jump_host',
default=None,
help='Proxy jump host used to connect via SSH to VMs..'),
cfg.StrOpt('ssh_proxy_jump_username',
default='root',
help='User name used to connect to "ssh_proxy_jump_host".'),
cfg.StrOpt('ssh_proxy_jump_password',
default=None,
help='Password used to connect to "ssh_proxy_jump_host".'),
cfg.StrOpt('ssh_proxy_jump_keyfile',
default=None,
help='Keyfile used to connect to "ssh_proxy_jump_host".'),
cfg.IntOpt('ssh_proxy_jump_port',
default=22,
help='Port used to connect to "ssh_proxy_jump_host".'),
# Options for special, "advanced" image like e.g. Ubuntu. Such image can be
# used in tests which require some more advanced tool than available in
# Cirros
cfg.StrOpt('advanced_image_ref',
default=None,
help='Valid advanced image uuid to be used in tests. '
'It is an image that supports features that Cirros '
'does not, like Ubuntu or CentOS supporting advanced '
'features.'),
cfg.StrOpt('advanced_image_flavor_ref',
default=None,
help='Valid flavor to use with advanced image in tests. '
'This is required if advanced image has to be used in '
'tests.'),
cfg.StrOpt('advanced_image_ssh_user',
default=None,
help='Name of ssh user to use with advanced image in tests. '
'This is required if advanced image has to be used in '
'tests.'),
]
Delete Tempest fork, import from tempest and tempest_lib A while ago we copied Tempest networking API tests in to the Neutron repo, and along came thousands of lines of code of Tempest testing infrastructure (neutron.tests.tempest). For a while we periodically refreshed our fork via: tools/copy_api_tests_from_tempest.sh I think it's time we move away from that model by eliminating the fork. We do this by deleting unused code and importing the rest from tempest_lib. There's some Tempest code still not moved from Tempest to tempest_lib in tempest.common. I think it's preferable to import that code than to copy it, and Tempest cores mostly agree. Manila and Ironic also do the same. To be able to import from tempest I added it as a requirement: Since Tempest is not on PyPi, I had to get it from git. Only the api tests environment needs Tempest, so instead of adding it to test-requirements, I added it specifically to the api and api-constraints venvs. neutron.tests.tempest.test and neutron.tests.tempest.common.* still remain. These are tighly coupled with one another, and sadly since Neutron forked Tempest code, Tempest has made significant changes to those files that also require changes to the test files. I aim to get rid of the Neutron fork of these files in a follow up change. Also fixed import grouping in test files so that it's std libs, 3rd party libs, and then Neutron code. * Removed neutron.tests.tempest.config: - We only added one option after the fork. I created a new group called 'neutron_plugin_options' and moved the new option to that group. This is in preperation for the Tempest plugin architecture, where you're supposed to add new config options to a new group and not to existing configuration groups. Note that this is obviously a backward incompatible change, but it's to an option added in the same cycle. * Removed neutron.tests.tempest.test and neutron.tests.tempest.common. - This introduced an API change to the way we access Keystone, which required mechanical changes to a few tests (create_tenant calls need a different client now). - The way Tempest manages primary, admin and alternative tenant credentials was changed after we forked, which required another mechanical change to a few tests. * Cut all of the Keystone clients we don't need. We only need to create/delete tenants, the other clients were used in Tempest by actual Keystone tests. * Changed neutron.tests.api.base.BaseNetworkTest: - Re-implemented get_client_manager so that it returns the Neutron clients manager and not the one in the Tempest repo. - Updated it from the Tempest repo so that it uses the new way to manage credentials (Since it now uses the Tempest test base class and not our out of date forked copy). Change-Id: I4f9193dfe26f2d36985cb480a98709ec182a2f7b
2016-01-19 11:47:14 -05:00
# TODO(amuller): Redo configuration options registration as part of the planned
# transition to the Tempest plugin architecture
for opt in NeutronPluginOptions:
CONF.register_opt(opt, 'neutron_plugin_options')
config_opts_translator = {
'project_network_cidr': 'tenant_network_cidr',
'project_network_v6_cidr': 'tenant_network_v6_cidr',
'project_network_mask_bits': 'tenant_network_mask_bits',
'project_network_v6_mask_bits': 'tenant_network_v6_mask_bits'}
def safe_get_config_value(group, name):
"""Safely get Oslo config opts from Tempest, using old and new names."""
conf_group = getattr(CONF, group)
try:
return getattr(conf_group, name)
except cfg.NoSuchOptError:
return getattr(conf_group, config_opts_translator[name])