diff --git a/.gitignore b/.gitignore index 9b4d590..bdf9d54 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ *~ *venv .idea +*.egg* +.tox diff --git a/cinder/tests/unit/volume/drivers/test_ebs.py b/cinder/tests/unit/volume/drivers/test_ec2.py similarity index 100% rename from cinder/tests/unit/volume/drivers/test_ebs.py rename to cinder/tests/unit/volume/drivers/test_ec2.py diff --git a/neutron/aws/neutron/common/config.py b/neutron/aws/neutron/common/config.py deleted file mode 100644 index dfab47c..0000000 --- a/neutron/aws/neutron/common/config.py +++ /dev/null @@ -1,262 +0,0 @@ -# Copyright 2011 VMware, 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. - -""" -Routines for configuring Neutron -""" - -import os -import sys - -from keystoneclient import auth -from keystoneclient import session as ks_session -from oslo_config import cfg -from oslo_db import options as db_options -from oslo_log import log as logging -import oslo_messaging -from paste import deploy - -from neutron.api.v2 import attributes -from neutron.common import utils -from neutron.i18n import _LI -from neutron import policy -from neutron import version - - -LOG = logging.getLogger(__name__) - -core_opts = [ - cfg.StrOpt('bind_host', default='0.0.0.0', - help=_("The host IP to bind to")), - cfg.IntOpt('bind_port', default=9696, - help=_("The port to bind to")), - cfg.StrOpt('api_paste_config', default="api-paste.ini", - help=_("The API paste config file to use")), - cfg.StrOpt('api_extensions_path', default="", - help=_("The path for API extensions")), - cfg.StrOpt('auth_strategy', default='keystone', - help=_("The type of authentication to use")), - cfg.StrOpt('core_plugin', - help=_("The core plugin Neutron will use")), - cfg.ListOpt('service_plugins', default=[], - help=_("The service plugins Neutron will use")), - cfg.StrOpt('base_mac', default="fa:16:3e:00:00:00", - help=_("The base MAC address Neutron will use for VIFs")), - cfg.IntOpt('mac_generation_retries', default=16, - help=_("How many times Neutron will retry MAC generation")), - cfg.BoolOpt('allow_bulk', default=True, - help=_("Allow the usage of the bulk API")), - cfg.BoolOpt('allow_pagination', default=False, - help=_("Allow the usage of the pagination")), - cfg.BoolOpt('allow_sorting', default=False, - help=_("Allow the usage of the sorting")), - cfg.StrOpt('pagination_max_limit', default="-1", - help=_("The maximum number of items returned in a single " - "response, value was 'infinite' or negative integer " - "means no limit")), - cfg.IntOpt('max_dns_nameservers', default=5, - help=_("Maximum number of DNS nameservers")), - cfg.IntOpt('max_subnet_host_routes', default=20, - help=_("Maximum number of host routes per subnet")), - cfg.IntOpt('max_fixed_ips_per_port', default=5, - help=_("Maximum number of fixed ips per port")), - cfg.StrOpt('default_ipv4_subnet_pool', default=None, - help=_("Default IPv4 subnet-pool to be used for automatic " - "subnet CIDR allocation")), - cfg.StrOpt('default_ipv6_subnet_pool', default=None, - help=_("Default IPv6 subnet-pool to be used for automatic " - "subnet CIDR allocation")), - cfg.IntOpt('dhcp_lease_duration', default=86400, - deprecated_name='dhcp_lease_time', - help=_("DHCP lease duration (in seconds). Use -1 to tell " - "dnsmasq to use infinite lease times.")), - cfg.StrOpt('dns_domain', - default='openstacklocal', - help=_('Domain to use for building the hostnames')), - cfg.BoolOpt('dhcp_agent_notification', default=True, - help=_("Allow sending resource operation" - " notification to DHCP agent")), - cfg.BoolOpt('allow_overlapping_ips', default=False, - help=_("Allow overlapping IP support in Neutron")), - cfg.StrOpt('host', default=utils.get_hostname(), - help=_("Hostname to be used by the neutron server, agents and " - "services running on this machine. All the agents and " - "services running on this machine must use the same " - "host value.")), - cfg.BoolOpt('force_gateway_on_subnet', default=True, - help=_("Ensure that configured gateway is on subnet. " - "For IPv6, validate only if gateway is not a link " - "local address. Deprecated, to be removed during the " - "K release, at which point the check will be " - "mandatory.")), - cfg.BoolOpt('notify_nova_on_port_status_changes', default=True, - help=_("Send notification to nova when port status changes")), - cfg.BoolOpt('notify_nova_on_port_data_changes', default=True, - help=_("Send notification to nova when port data (fixed_ips/" - "floatingip) changes so nova can update its cache.")), - cfg.StrOpt('nova_url', - default='http://127.0.0.1:8774/v2', - help=_('URL for connection to nova. ' - 'Deprecated in favour of an auth plugin in [nova].')), - cfg.StrOpt('nova_region_name', - help=_('Region Name')), - cfg.StrOpt('nova_admin_username', - help=_('Username for connecting to nova in admin context. ' - 'Deprecated in favour of an auth plugin in [nova].')), - cfg.StrOpt('nova_admin_password', - help=_('Password for connection to nova in admin context. ' - 'Deprecated in favour of an auth plugin in [nova].'), - secret=True), - cfg.StrOpt('nova_admin_tenant_id', - help=_('The uuid of the admin nova tenant. ' - 'Deprecated in favour of an auth plugin in [nova].')), - cfg.StrOpt('nova_admin_tenant_name', - help=_('The name of the admin nova tenant. ' - 'Deprecated in favour of an auth plugin in [nova].')), - cfg.StrOpt('nova_admin_auth_url', - default='http://localhost:5000/v2.0', - help=_('Authorization URL for connecting to nova in admin ' - 'context. ' - 'Deprecated in favour of an auth plugin in [nova].')), - cfg.IntOpt('send_events_interval', default=2, - help=_('Number of seconds between sending events to nova if ' - 'there are any events to send.')), - cfg.BoolOpt('advertise_mtu', default=False, - help=_('If True, effort is made to advertise MTU settings ' - 'to VMs via network methods (DHCP and RA MTU options) ' - 'when the network\'s preferred MTU is known.')), - cfg.StrOpt('ipam_driver', default=None, - help=_('IPAM driver to use.')), - cfg.BoolOpt('vlan_transparent', default=False, - help=_('If True, then allow plugins that support it to ' - 'create VLAN transparent networks.')), -] - -core_cli_opts = [ - cfg.StrOpt('state_path', - default='/var/lib/neutron', - help=_("Where to store Neutron state files. " - "This directory must be writable by the agent.")), -] - -# Register the configuration options -cfg.CONF.register_opts(core_opts) -cfg.CONF.register_cli_opts(core_cli_opts) - -# Ensure that the control exchange is set correctly -oslo_messaging.set_transport_defaults(control_exchange='neutron') - - -def set_db_defaults(): - # Update the default QueuePool parameters. These can be tweaked by the - # conf variables - max_pool_size, max_overflow and pool_timeout - db_options.set_defaults( - cfg.CONF, - connection='sqlite://', - sqlite_db='', max_pool_size=10, - max_overflow=20, pool_timeout=10) - -set_db_defaults() - -NOVA_CONF_SECTION = 'nova' - -nova_deprecated_opts = { - 'cafile': [cfg.DeprecatedOpt('nova_ca_certificates_file', 'DEFAULT')], - 'insecure': [cfg.DeprecatedOpt('nova_api_insecure', 'DEFAULT')], -} -ks_session.Session.register_conf_options(cfg.CONF, NOVA_CONF_SECTION, - deprecated_opts=nova_deprecated_opts) -auth.register_conf_options(cfg.CONF, NOVA_CONF_SECTION) - -nova_opts = [ - cfg.StrOpt('region_name', - deprecated_name='nova_region_name', - deprecated_group='DEFAULT', - help=_('Name of nova region to use. Useful if keystone manages' - ' more than one region.')), - cfg.StrOpt('endpoint_type', - default='public', - choices=['public', 'admin', 'internal'], - help=_('Type of the nova endpoint to use. This endpoint will' - ' be looked up in the keystone catalog and should be' - ' one of public, internal or admin.')), -] -cfg.CONF.register_opts(nova_opts, group=NOVA_CONF_SECTION) - -logging.register_options(cfg.CONF) - - -def init(args, **kwargs): - cfg.CONF(args=args, project='neutron', - version='%%(prog)s %s' % version.version_info.release_string(), - **kwargs) - - # FIXME(ihrachys): if import is put in global, circular import - # failure occurs - from neutron.common import rpc as n_rpc - n_rpc.init(cfg.CONF) - - # Validate that the base_mac is of the correct format - msg = attributes._validate_regex(cfg.CONF.base_mac, - attributes.MAC_PATTERN) - if msg: - msg = _("Base MAC: %s") % msg - raise Exception(msg) - - -def setup_logging(): - """Sets up the logging options for a log with supplied name.""" - product_name = "neutron" - logging.setup(cfg.CONF, product_name) - LOG.info(_LI("Logging enabled!")) - LOG.info(_LI("%(prog)s version %(version)s"), - {'prog': sys.argv[0], - 'version': version.version_info.release_string()}) - LOG.debug("command line: %s", " ".join(sys.argv)) - - -def reset_service(): - # Reset worker in case SIGHUP is called. - # Note that this is called only in case a service is running in - # daemon mode. - setup_logging() - policy.refresh() - - -def load_paste_app(app_name): - """Builds and returns a WSGI app from a paste config file. - - :param app_name: Name of the application to load - :raises ConfigFilesNotFoundError when config file cannot be located - :raises RuntimeError when application cannot be loaded from config file - """ - - config_path = cfg.CONF.find_file(cfg.CONF.api_paste_config) - if not config_path: - raise cfg.ConfigFilesNotFoundError( - config_files=[cfg.CONF.api_paste_config]) - config_path = os.path.abspath(config_path) - LOG.info(_LI("Config paste file: %s"), config_path) - - try: - app = deploy.loadapp("config:%s" % config_path, name=app_name) - except (LookupError, ImportError): - msg = (_("Unable to load %(app_name)s from " - "configuration file %(config_path)s.") % - {'app_name': app_name, - 'config_path': config_path}) - LOG.exception(msg) - raise RuntimeError(msg) - return app diff --git a/neutron/aws/requirements-aws.txt b/neutron/aws/requirements-aws.txt deleted file mode 100644 index 6e69f51..0000000 --- a/neutron/aws/requirements-aws.txt +++ /dev/null @@ -1,104 +0,0 @@ -# The order of packages is significant, because pip processes them in the order -# of appearance. Changing the order has an impact on the overall integration -# process, which may cause wedges in the gate later. -pbr==1.8.1 - -Paste==2.0.2 -PasteDeploy==1.5.2 -Routes==2.2;python_version=='2.7' -Routes!=2.0,>=1.12.3;python_version!='2.7' -debtcollector==1.3.0 # Apache-2.0 -eventlet==0.18.4 -pecan==1.0.4 -greenlet==0.4.9 -httplib2==0.9.2 -requests==2.9.1 -Jinja2==2.8 # BSD License (3 clause) -keystonemiddleware==4.3.0 -netaddr==0.7.18 -python-neutronclient==4.0.0 -retrying==1.3.3 # Apache-2.0 -ryu==3.30 # Apache-2.0 -SQLAlchemy==1.0.12 -WebOb==1.5.1 -python-keystoneclient==2.2.0 -alembic==0.8.4 -six==1.10.0 -stevedore==1.11.0 # Apache-2.0 -oslo.vmware==2.1.0 -oslo.concurrency==2.6.1 # Apache-2.0 -oslo.config==3.7.0 # Apache-2.0 -oslo.context==2.0.0 # Apache-2.0 -oslo.db==4.5.0 # Apache-2.0 -oslo.i18n==3.3.0 # Apache-2.0 -oslo.log==3.0.0 # Apache-2.0 -oslo.messaging==4.3.0 -oslo.middleware==3.6.0 -oslo.policy==1.4.0 # Apache-2.0 -oslo.rootwrap==4.0.0 # Apache-2.0 -oslo.serialization==2.3.0 # Apache-2.0 -oslo.service==1.5.0 # Apache-2.0 -oslo.utils==3.6.0 # Apache-2.0 -oslo.versionedobjects==1.6.0 - -python-novaclient==3.2.0 -boto3==1.3.1 - -# Windows-only requirements -pywin32;sys_platform=='win32' -wmi;sys_platform=='win32' - -## The following requirements were added by pip freeze: -aioeventlet==0.5.1 -amqp==1.4.9 -anyjson==0.3.3 -appdirs==1.4.0 -Babel==2.2.0 -beautifulsoup4==4.4.1 -cachetools==1.1.5 -cliff==2.0.0 -cmd2==0.6.8 -contextlib2==0.5.1 -decorator==4.0.9 -enum34==1.1.2 -fasteners==0.14.1 -funcsigs==0.4 -futures==3.0.5 -futurist==0.13.0 -iso8601==0.1.11 -keystoneauth1==2.3.0 -kombu==3.0.35 -logutils==0.3.3 -Mako==1.0.4 -MarkupSafe==0.23 -monotonic==1.0 -msgpack-python==0.4.7 -MySQL-python==1.2.5 -netifaces==0.10.4 -os-client-config==1.16.0 -pika==0.10.0 -pika-pool==0.1.3 -positional==1.0.1 -prettytable==0.7.2 -pycadf==2.1.0 -pyinotify==0.9.6 -pyparsing==2.1.1 -python-dateutil==2.5.1 -python-editor==0.5 -pytz==2016.2 -PyYAML==3.11 -repoze.lru==0.6 -requestsexceptions==1.1.3 -simplejson==3.8.2 -singledispatch==3.4.0.3 -sqlalchemy-migrate==0.10.0 -sqlparse==0.1.19 -Tempita==0.5.2 -trollius==2.1 -unicodecsv==0.14.1 -waitress==0.8.10 -WebTest==2.0.20 -wrapt==1.10.6 - -# for ACI -cryptography==1.1.2 diff --git a/neutron/aws/setup.cfg b/neutron/aws/setup.cfg deleted file mode 100644 index 9528933..0000000 --- a/neutron/aws/setup.cfg +++ /dev/null @@ -1,208 +0,0 @@ -[metadata] -name = neutron -summary = OpenStack Networking -description-file = - README.rst -author = OpenStack -author-email = openstack-dev@lists.openstack.org -home-page = http://www.openstack.org/ -classifier = - Environment :: OpenStack - Intended Audience :: Information Technology - Intended Audience :: System Administrators - License :: OSI Approved :: Apache Software License - Operating System :: POSIX :: Linux - Programming Language :: Python - Programming Language :: Python :: 2 - Programming Language :: Python :: 2.7 - -[files] -packages = - neutron -data_files = - etc/neutron = - etc/api-paste.ini - etc/dhcp_agent.ini - etc/l3_agent.ini - etc/metadata_agent.ini - etc/metering_agent.ini - etc/policy.json - etc/neutron.conf - etc/rootwrap.conf - etc/neutron/rootwrap.d = - etc/neutron/rootwrap.d/debug.filters - etc/neutron/rootwrap.d/dhcp.filters - etc/neutron/rootwrap.d/dibbler.filters - etc/neutron/rootwrap.d/iptables-firewall.filters - etc/neutron/rootwrap.d/ebtables.filters - etc/neutron/rootwrap.d/ipset-firewall.filters - etc/neutron/rootwrap.d/l3.filters - etc/neutron/rootwrap.d/linuxbridge-plugin.filters - etc/neutron/rootwrap.d/openvswitch-plugin.filters - etc/init.d = etc/init.d/neutron-server - etc/neutron/plugins/bigswitch = - etc/neutron/plugins/bigswitch/restproxy.ini - etc/neutron/plugins/bigswitch/ssl/ca_certs = - etc/neutron/plugins/bigswitch/ssl/ca_certs/README - etc/neutron/plugins/bigswitch/ssl/host_certs = - etc/neutron/plugins/bigswitch/ssl/host_certs/README - etc/neutron/plugins/brocade = - etc/neutron/plugins/brocade/brocade.ini - etc/neutron/plugins/brocade/brocade_mlx.ini - etc/neutron/plugins/brocade/vyatta = etc/neutron/plugins/brocade/vyatta/vrouter.ini - etc/neutron/plugins/cisco = - etc/neutron/plugins/cisco/cisco_vpn_agent.ini - etc/neutron/plugins/embrane = etc/neutron/plugins/embrane/heleos_conf.ini - etc/neutron/plugins/ml2 = - etc/neutron/plugins/bigswitch/restproxy.ini - etc/neutron/plugins/ml2/linuxbridge_agent.ini - etc/neutron/plugins/ml2/ml2_conf.ini - etc/neutron/plugins/ml2/ml2_conf_brocade.ini - etc/neutron/plugins/ml2/ml2_conf_brocade_fi_ni.ini - etc/neutron/plugins/ml2/ml2_conf_ofa.ini - etc/neutron/plugins/ml2/ml2_conf_fslsdn.ini - etc/neutron/plugins/ml2/ml2_conf_sriov.ini - etc/neutron/plugins/ml2/openvswitch_agent.ini - etc/neutron/plugins/ml2/sriov_agent.ini - etc/neutron/plugins/mlnx = etc/neutron/plugins/mlnx/mlnx_conf.ini - etc/neutron/plugins/nuage = etc/neutron/plugins/nuage/nuage_plugin.ini - etc/neutron/plugins/oneconvergence = etc/neutron/plugins/oneconvergence/nvsdplugin.ini - etc/neutron/plugins/opencontrail = etc/neutron/plugins/opencontrail/contrailplugin.ini - etc/neutron/plugins/ovsvapp = etc/neutron/plugins/ovsvapp/ovsvapp_agent.ini -scripts = - bin/neutron-rootwrap-xen-dom0 - -[entry_points] -console_scripts = - neutron-db-manage = neutron.db.migration.cli:main - neutron-debug = neutron.debug.shell:main - neutron-dhcp-agent = neutron.cmd.eventlet.agents.dhcp:main - neutron-hyperv-agent = neutron.cmd.eventlet.plugins.hyperv_neutron_agent:main - neutron-keepalived-state-change = neutron.cmd.keepalived_state_change:main - neutron-ipset-cleanup = neutron.cmd.ipset_cleanup:main - neutron-l3-agent = neutron.cmd.eventlet.agents.l3:main - neutron-linuxbridge-agent = neutron.plugins.ml2.drivers.linuxbridge.agent.linuxbridge_neutron_agent:main - neutron-metadata-agent = neutron.cmd.eventlet.agents.metadata:main - neutron-mlnx-agent = neutron.cmd.eventlet.plugins.mlnx_neutron_agent:main - neutron-netns-cleanup = neutron.cmd.netns_cleanup:main - neutron-ns-metadata-proxy = neutron.cmd.eventlet.agents.metadata_proxy:main - neutron-ovsvapp-agent = neutron.cmd.eventlet.plugins.ovsvapp_neutron_agent:main - neutron-nvsd-agent = neutron.plugins.oneconvergence.agent.nvsd_neutron_agent:main - neutron-openvswitch-agent = neutron.cmd.eventlet.plugins.ovs_neutron_agent:main - neutron-ovs-cleanup = neutron.cmd.ovs_cleanup:main - neutron-pd-notify = neutron.cmd.pd_notify:main - neutron-restproxy-agent = neutron.plugins.bigswitch.agent.restproxy_agent:main - neutron-server = neutron.cmd.eventlet.server:main_wsgi_eventlet - neutron-dev-server = neutron.cmd.eventlet.server:main_wsgi_pecan - neutron-rpc-server = neutron.cmd.eventlet.server:main_rpc_eventlet - neutron-rootwrap = oslo_rootwrap.cmd:main - neutron-rootwrap-daemon = oslo_rootwrap.cmd:daemon - neutron-usage-audit = neutron.cmd.eventlet.usage_audit:main - neutron-metering-agent = neutron.cmd.eventlet.services.metering_agent:main - neutron-sriov-nic-agent = neutron.plugins.ml2.drivers.mech_sriov.agent.sriov_nic_agent:main - neutron-sanity-check = neutron.cmd.sanity_check:main -neutron.core_plugins = - bigswitch = neutron.plugins.bigswitch.plugin:NeutronRestProxyV2 - brocade = neutron.plugins.brocade.NeutronPlugin:BrocadePluginV2 - embrane = neutron.plugins.embrane.plugins.embrane_ml2_plugin:EmbraneMl2Plugin - ml2 = neutron.plugins.ml2.plugin:Ml2Plugin - nuage = neutron.plugins.nuage.plugin:NuagePlugin - oneconvergence = neutron.plugins.oneconvergence.plugin:OneConvergencePluginV2 -neutron.service_plugins = - dummy = neutron.tests.unit.dummy_plugin:DummyServicePlugin - router = neutron.services.l3_router.l3_router_plugin:L3RouterPlugin - bigswitch_l3 = neutron.plugins.bigswitch.l3_router_plugin:L3RestProxy - brocade_vyatta_l3 = neutron.services.l3_router.brocade.vyatta.vrouter_neutron_plugin:VyattaVRouterPlugin - brocade_mlx_l3 = neutron.services.l3_router.brocade.mlx.l3_router_plugin:BrocadeRouterPlugin - firewall = neutron_fwaas.services.firewall.fwaas_plugin:FirewallPlugin - fsl_firewall = neutron_fwaas.services.firewall.freescale.fwaas_plugin:FirewallPlugin - lbaas = neutron_lbaas.services.loadbalancer.plugin:LoadBalancerPlugin - vpnaas = neutron_vpnaas.services.vpn.plugin:VPNDriverPlugin - metering = neutron.services.metering.metering_plugin:MeteringPlugin - neutron.services.firewall.fwaas_plugin.FirewallPlugin = neutron_fwaas.services.firewall.fwaas_plugin:FirewallPlugin - neutron.services.loadbalancer.plugin.LoadBalancerPlugin = neutron_lbaas.services.loadbalancer.plugin:LoadBalancerPlugin - neutron.services.vpn.plugin.VPNDriverPlugin = neutron_vpnaas.services.vpn.plugin:VPNDriverPlugin - ibm_l3 = neutron.services.l3_router.l3_sdnve:SdnveL3ServicePlugin - qos = neutron.services.qos.qos_plugin:QoSPlugin - # PF9 start - aws_router = neutron.services.l3_router.aws_router_plugin:AwsRouterPlugin - # PF9 end -neutron.qos.notification_drivers = - message_queue = neutron.services.qos.notification_drivers.message_queue:RpcQosServiceNotificationDriver -neutron.ml2.type_drivers = - flat = neutron.plugins.ml2.drivers.type_flat:FlatTypeDriver - local = neutron.plugins.ml2.drivers.type_local:LocalTypeDriver - vlan = neutron.plugins.ml2.drivers.type_vlan:VlanTypeDriver - geneve = neutron.plugins.ml2.drivers.type_geneve:GeneveTypeDriver - gre = neutron.plugins.ml2.drivers.type_gre:GreTypeDriver - vxlan = neutron.plugins.ml2.drivers.type_vxlan:VxlanTypeDriver - opflex = opflexagent.type_opflex:OpflexTypeDriver -neutron.ml2.mechanism_drivers = - ovsvapp = neutron.plugins.ml2.drivers.ovsvapp.mech_driver:OVSvAppAgentMechanismDriver - opendaylight = neutron.plugins.ml2.drivers.opendaylight.driver:OpenDaylightMechanismDriver - logger = neutron.tests.unit.plugins.ml2.drivers.mechanism_logger:LoggerMechanismDriver - test = neutron.tests.unit.plugins.ml2.drivers.mechanism_test:TestMechanismDriver - linuxbridge = neutron.plugins.ml2.drivers.linuxbridge.mech_driver.mech_linuxbridge:LinuxbridgeMechanismDriver - openvswitch = neutron.plugins.ml2.drivers.openvswitch.mech_driver.mech_openvswitch:OpenvswitchMechanismDriver - hyperv = neutron.plugins.ml2.drivers.hyperv.mech_hyperv:HypervMechanismDriver - l2population = neutron.plugins.ml2.drivers.l2pop.mech_driver:L2populationMechanismDriver - ofagent = neutron.plugins.ml2.drivers.ofagent.driver:OfagentMechanismDriver - mlnx = neutron.plugins.ml2.drivers.mlnx.mech_mlnx:MlnxMechanismDriver - brocade = networking_brocade.vdx.ml2driver.mechanism_brocade:BrocadeMechanism - brocade_fi_ni = neutron.plugins.ml2.drivers.brocade.fi_ni.mechanism_brocade_fi_ni:BrocadeFiNiMechanism - fslsdn = neutron.plugins.ml2.drivers.freescale.mechanism_fslsdn:FslsdnMechanismDriver - sriovnicswitch = neutron.plugins.ml2.drivers.mech_sriov.mech_driver.mech_driver:SriovNicSwitchMechanismDriver - fake_agent = neutron.tests.unit.plugins.ml2.drivers.mech_fake_agent:FakeAgentMechanismDriver - sdnve = neutron.plugins.ml2.drivers.ibm.mechanism_sdnve:SdnveMechanismDriver - aws = neutron.plugins.ml2.drivers.aws.mechanism_aws:AwsMechanismDriver -neutron.ml2.extension_drivers = - test = neutron.tests.unit.plugins.ml2.drivers.ext_test:TestExtensionDriver - testdb = neutron.tests.unit.plugins.ml2.drivers.ext_test:TestDBExtensionDriver - port_security = neutron.plugins.ml2.extensions.port_security:PortSecurityExtensionDriver - qos = neutron.plugins.ml2.extensions.qos:QosExtensionDriver -neutron.openstack.common.cache.backends = - memory = neutron.openstack.common.cache._backends.memory:MemoryBackend -neutron.ipam_drivers = - fake = neutron.tests.unit.ipam.fake_driver:FakeDriver - internal = neutron.ipam.drivers.neutrondb_ipam.driver:NeutronDbPool -neutron.agent.l2.extensions = - qos = neutron.agent.l2.extensions.qos:QosAgentExtension -neutron.qos.agent_drivers = - ovs = neutron.plugins.ml2.drivers.openvswitch.agent.extension_drivers.qos_driver:QosOVSAgentDriver - sriov = neutron.plugins.ml2.drivers.mech_sriov.agent.extension_drivers.qos_driver:QosSRIOVAgentDriver -neutron.agent.linux.pd_drivers = - dibbler = neutron.agent.linux.dibbler:PDDibbler -# These are for backwards compat with Icehouse notification_driver configuration values -oslo.messaging.notify.drivers = - neutron.openstack.common.notifier.log_notifier = oslo_messaging.notify._impl_log:LogDriver - neutron.openstack.common.notifier.no_op_notifier = oslo_messaging.notify._impl_noop:NoOpDriver - neutron.openstack.common.notifier.rpc_notifier2 = oslo_messaging.notify._impl_messaging:MessagingV2Driver - neutron.openstack.common.notifier.rpc_notifier = oslo_messaging.notify._impl_messaging:MessagingDriver - neutron.openstack.common.notifier.test_notifier = oslo_messaging.notify._impl_test:TestDriver -neutron.db.alembic_migrations = - neutron = neutron.db.migration:alembic_migrations - -[build_sphinx] -all_files = 1 -build-dir = doc/build -source-dir = doc/source - -[extract_messages] -keywords = _ gettext ngettext l_ lazy_gettext -mapping_file = babel.cfg -output_file = neutron/locale/neutron.pot - -[compile_catalog] -directory = neutron/locale -domain = neutron - -[update_catalog] -domain = neutron -output_dir = neutron/locale -input_file = neutron/locale/neutron.pot - -[wheel] -universal = 1 - -[pbr] -warnerrors = true diff --git a/neutron/aws/neutron/common/aws_utils.py b/neutron/neutron/common/aws_utils.py similarity index 100% rename from neutron/aws/neutron/common/aws_utils.py rename to neutron/neutron/common/aws_utils.py diff --git a/neutron/aws/neutron/common/exceptions.py b/neutron/neutron/common/exceptions.py similarity index 100% rename from neutron/aws/neutron/common/exceptions.py rename to neutron/neutron/common/exceptions.py diff --git a/neutron/gce/neutron/common/gceconf.py b/neutron/neutron/common/gceconf.py similarity index 100% rename from neutron/gce/neutron/common/gceconf.py rename to neutron/neutron/common/gceconf.py diff --git a/neutron/gce/neutron/common/gceutils.py b/neutron/neutron/common/gceutils.py similarity index 100% rename from neutron/gce/neutron/common/gceutils.py rename to neutron/neutron/common/gceutils.py diff --git a/neutron/aws/neutron/plugins/ml2/drivers/aws/__init__.py b/neutron/neutron/plugins/ml2/drivers/aws/__init__.py similarity index 100% rename from neutron/aws/neutron/plugins/ml2/drivers/aws/__init__.py rename to neutron/neutron/plugins/ml2/drivers/aws/__init__.py diff --git a/neutron/aws/neutron/plugins/ml2/drivers/aws/callbacks.py b/neutron/neutron/plugins/ml2/drivers/aws/callbacks.py similarity index 100% rename from neutron/aws/neutron/plugins/ml2/drivers/aws/callbacks.py rename to neutron/neutron/plugins/ml2/drivers/aws/callbacks.py diff --git a/neutron/aws/neutron/plugins/ml2/drivers/aws/mechanism_aws.py b/neutron/neutron/plugins/ml2/drivers/aws/mechanism_aws.py similarity index 100% rename from neutron/aws/neutron/plugins/ml2/drivers/aws/mechanism_aws.py rename to neutron/neutron/plugins/ml2/drivers/aws/mechanism_aws.py diff --git a/neutron/gce/neutron/plugins/ml2/drivers/gce/__init__.py b/neutron/neutron/plugins/ml2/drivers/gce/__init__.py similarity index 100% rename from neutron/gce/neutron/plugins/ml2/drivers/gce/__init__.py rename to neutron/neutron/plugins/ml2/drivers/gce/__init__.py diff --git a/neutron/gce/neutron/plugins/ml2/drivers/gce/mech_gce.py b/neutron/neutron/plugins/ml2/drivers/gce/mech_gce.py similarity index 100% rename from neutron/gce/neutron/plugins/ml2/drivers/gce/mech_gce.py rename to neutron/neutron/plugins/ml2/drivers/gce/mech_gce.py diff --git a/neutron/aws/neutron/plugins/ml2/managers.py b/neutron/neutron/plugins/ml2/managers.py similarity index 100% rename from neutron/aws/neutron/plugins/ml2/managers.py rename to neutron/neutron/plugins/ml2/managers.py diff --git a/neutron/aws/neutron/services/l3_router/aws_router_plugin.py b/neutron/neutron/services/l3_router/aws_router_plugin.py similarity index 100% rename from neutron/aws/neutron/services/l3_router/aws_router_plugin.py rename to neutron/neutron/services/l3_router/aws_router_plugin.py diff --git a/neutron/gce/neutron/services/l3_router/gce_router_plugin.py b/neutron/neutron/services/l3_router/gce_router_plugin.py similarity index 100% rename from neutron/gce/neutron/services/l3_router/gce_router_plugin.py rename to neutron/neutron/services/l3_router/gce_router_plugin.py diff --git a/neutron/gce/requirements-gce.txt b/neutron/requirements-gce.txt similarity index 100% rename from neutron/gce/requirements-gce.txt rename to neutron/requirements-gce.txt diff --git a/nova/tests/ec2/__init__.py b/nova/tests/unit/virt/ec2/__init__.py similarity index 100% rename from nova/tests/ec2/__init__.py rename to nova/tests/unit/virt/ec2/__init__.py diff --git a/nova/tests/ec2/test_driver.py b/nova/tests/unit/virt/ec2/test_ec2.py similarity index 100% rename from nova/tests/ec2/test_driver.py rename to nova/tests/unit/virt/ec2/test_ec2.py diff --git a/nova/tests/gce/__init__.py b/nova/tests/unit/virt/gce/__init__.py similarity index 100% rename from nova/tests/gce/__init__.py rename to nova/tests/unit/virt/gce/__init__.py diff --git a/nova/tests/gce/data/disk/get_disk.json b/nova/tests/unit/virt/gce/data/disk/get_disk.json similarity index 100% rename from nova/tests/gce/data/disk/get_disk.json rename to nova/tests/unit/virt/gce/data/disk/get_disk.json diff --git a/nova/tests/gce/data/image/get_image.json b/nova/tests/unit/virt/gce/data/image/get_image.json similarity index 100% rename from nova/tests/gce/data/image/get_image.json rename to nova/tests/unit/virt/gce/data/image/get_image.json diff --git a/nova/tests/gce/data/instance/get_instance.json b/nova/tests/unit/virt/gce/data/instance/get_instance.json similarity index 100% rename from nova/tests/gce/data/instance/get_instance.json rename to nova/tests/unit/virt/gce/data/instance/get_instance.json diff --git a/nova/tests/gce/data/instance/get_instance_without_boot.json b/nova/tests/unit/virt/gce/data/instance/get_instance_without_boot.json similarity index 100% rename from nova/tests/gce/data/instance/get_instance_without_boot.json rename to nova/tests/unit/virt/gce/data/instance/get_instance_without_boot.json diff --git a/nova/tests/gce/data/instance/list_instances.json b/nova/tests/unit/virt/gce/data/instance/list_instances.json similarity index 100% rename from nova/tests/gce/data/instance/list_instances.json rename to nova/tests/unit/virt/gce/data/instance/list_instances.json diff --git a/nova/tests/gce/data/machines_info/list_machines_info.json b/nova/tests/unit/virt/gce/data/machines_info/list_machines_info.json similarity index 100% rename from nova/tests/gce/data/machines_info/list_machines_info.json rename to nova/tests/unit/virt/gce/data/machines_info/list_machines_info.json diff --git a/nova/tests/gce/data/omni.json b/nova/tests/unit/virt/gce/data/omni.json similarity index 100% rename from nova/tests/gce/data/omni.json rename to nova/tests/unit/virt/gce/data/omni.json diff --git a/nova/tests/gce/data/service/service_data.json b/nova/tests/unit/virt/gce/data/service/service_data.json similarity index 100% rename from nova/tests/gce/data/service/service_data.json rename to nova/tests/unit/virt/gce/data/service/service_data.json diff --git a/nova/tests/gce/gce_mock.py b/nova/tests/unit/virt/gce/gce_mock.py similarity index 100% rename from nova/tests/gce/gce_mock.py rename to nova/tests/unit/virt/gce/gce_mock.py diff --git a/nova/tests/gce/test_gce.py b/nova/tests/unit/virt/gce/test_gce.py similarity index 100% rename from nova/tests/gce/test_gce.py rename to nova/tests/unit/virt/gce/test_gce.py diff --git a/nova/ec2/__init__.py b/nova/virt/ec2/__init__.py similarity index 100% rename from nova/ec2/__init__.py rename to nova/virt/ec2/__init__.py diff --git a/nova/ec2/cloud_burst_filter.py b/nova/virt/ec2/cloud_burst_filter.py similarity index 100% rename from nova/ec2/cloud_burst_filter.py rename to nova/virt/ec2/cloud_burst_filter.py diff --git a/nova/ec2/ec2driver.py b/nova/virt/ec2/ec2driver.py similarity index 99% rename from nova/ec2/ec2driver.py rename to nova/virt/ec2/ec2driver.py index af0c953..c0420cc 100644 --- a/nova/ec2/ec2driver.py +++ b/nova/virt/ec2/ec2driver.py @@ -70,7 +70,7 @@ aws_opts = [ ] CONF = cfg.CONF -CONF.import_opt('my_ip', 'nova.netconf') +#CONF.import_opt('my_ip', 'nova.netconf') CONF.register_group(aws_group) CONF.register_opts(aws_opts, group=aws_group) diff --git a/nova/ec2/exception_handler.py b/nova/virt/ec2/exception_handler.py similarity index 100% rename from nova/ec2/exception_handler.py rename to nova/virt/ec2/exception_handler.py diff --git a/nova/gce/__init__.py b/nova/virt/gce/__init__.py similarity index 100% rename from nova/gce/__init__.py rename to nova/virt/gce/__init__.py diff --git a/nova/gce/constants.py b/nova/virt/gce/constants.py similarity index 100% rename from nova/gce/constants.py rename to nova/virt/gce/constants.py diff --git a/nova/gce/create-nova-flavors-gce.py b/nova/virt/gce/create-nova-flavors-gce.py similarity index 100% rename from nova/gce/create-nova-flavors-gce.py rename to nova/virt/gce/create-nova-flavors-gce.py diff --git a/nova/gce/driver.py b/nova/virt/gce/driver.py similarity index 100% rename from nova/gce/driver.py rename to nova/virt/gce/driver.py diff --git a/nova/gce/gceutils.py b/nova/virt/gce/gceutils.py similarity index 100% rename from nova/gce/gceutils.py rename to nova/virt/gce/gceutils.py diff --git a/omni-requirements.txt b/omni-requirements.txt new file mode 100644 index 0000000..092a286 --- /dev/null +++ b/omni-requirements.txt @@ -0,0 +1,5 @@ +google-api-python-client>=1.4.2 # Apache-2.0 +moto +boto>=2.32.1 # MIT +ipaddr +google_compute_engine \ No newline at end of file diff --git a/run_tests.sh b/run_tests.sh new file mode 100644 index 0000000..5e3f22f --- /dev/null +++ b/run_tests.sh @@ -0,0 +1,133 @@ +#!/bin/bash +# Copyright (c) 2017 Platform9 Systems Inc. +# +# 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 expressed or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +key="$1" + +case $key in + -j) JENKINSRUN=true;; + -wj) JENKINSRUN=false;; +esac + +if [ -d "$DIRECTORY" ]; then + rm -rf $DIRECTORY +fi + +if [ "$JENKINSRUN" = true ]; then + export OMNI_DIR="$BASE/new/omni" + sudo chown -R jenkins:stack $OMNI_DIR + cd $OMNI_DIR +fi + +WORKSPACE=$(pwd) +DIRECTORY="$WORKSPACE/omnitests" +GCE_TEST="test_gce" +AWS_TEST="test_ec2" +declare -A results +declare -i fail +declare -i pass + +mkdir $DIRECTORY + +clone_repos() { + project=$1 + git clone -b stable/newton --depth 1 https://github.com/openstack/$project.git $DIRECTORY/$project +} + +copy_cinder_files() { + cp -R $WORKSPACE/cinder/tests/unit/volume/drivers/ $DIRECTORY/cinder/cinder/tests/unit/volume/ + cp -R $WORKSPACE/cinder/volume/drivers/ $DIRECTORY/cinder/cinder/volume/ +} + +copy_glance_files() { + cp -R $WORKSPACE/glance/glance_store/tests/unit/ $DIRECTORY/glance_store/glance_store/tests + cp $WORKSPACE/glance/gce/gceutils.py $DIRECTORY/glance_store/glance_store/_drivers/ + cp -R $WORKSPACE/glance/glance_store/_drivers/ $DIRECTORY/glance_store/glance_store/ +} + +copy_nova_files() { + cp -R $WORKSPACE/nova/virt/ $DIRECTORY/nova/nova/ + cp -R $WORKSPACE/nova/tests/unit/virt $DIRECTORY/nova/nova/tests/unit +} + +copy_neutron_files() { + cp -R $WORKSPACE/neutron/neutron/common/ $DIRECTORY/neutron/neutron/ + cp -R $WORKSPACE/neutron/neutron/plugins/ml2/drivers/ $DIRECTORY/neutron/neutron/plugins/ml2/ + cp $WORKSPACE/neutron/neutron/services/l3_router/* $DIRECTORY/neutron/neutron/services/l3_router/ + cp -R $WORKSPACE/neutron/tests/common/ $DIRECTORY/neutron/neutron/tests/ + cp -R $WORKSPACE/neutron/tests/plugins/ml2/drivers/ $DIRECTORY/neutron/neutron/tests/unit/plugins/ml2/ +} + +run_tests() { + project=$1 + tests=$2 + cd $DIRECTORY/$project + cat $WORKSPACE/omni-requirements.txt >> requirements.txt + tox -epy27 $tests > $DIRECTORY/$project.log +} + +check_results() { + project=$1 + fail=$(awk '/Failed: /{print}' $DIRECTORY/$project.log | awk -F ': ' '{print $2}') + pass=$(awk '/Passed: /{print}' $DIRECTORY/$project.log | awk -F ': ' '{print $2}') + if [[ $fail -gt 0 ]]; then + results+=( ["$project"]="FAILED" ) + elif [[ $pass -gt 0 ]]; then + results+=( ["$project"]="PASSED" ) + else + # When tests failed due to import errors, we don't get number of failed + # or passed tests. In this case, we are assigning UNKNOWN state to tests + results+=( ["$project"]="UNKNOWN" ) + fi +} + +echo "============Cloning repos============" +clone_repos cinder & +clone_repos nova & +clone_repos glance_store & +clone_repos neutron & +wait + +copy_cinder_files +copy_nova_files +copy_glance_files +copy_neutron_files + +echo "============Running tests============" +run_tests cinder "$GCE_TEST $AWS_TEST" & +run_tests nova "$GCE_TEST $AWS_TEST" & +run_tests glance_store "$GCE_TEST" & +run_tests neutron "$GCE_TEST" & +wait + +check_results cinder +check_results nova +check_results glance_store +check_results neutron + +echo "===========================================================================================" +echo "Log files are in $DIRECTORY/. Please check log files for UNKNOWN status." +echo "Cinder results: ${results[cinder]}" +echo "Nova results: ${results[nova]}" +echo "Glance results: ${results[glance_store]}" +echo "Neutron results: ${results[neutron]}" +echo "===========================================================================================" + +if [ "${results[cinder]}" = "FAILED" ] || \ + [ "${results[nova]}" = "FAILED" ] || \ + [ "${results[glance_store]}" = "FAILED" ] || \ + [ "${results[neutron]}" = "FAILED" ]; then + echo "Test cases failed" + exit 1 +fi diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..3ecede6 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,11 @@ +[metadata] +name = omni +summary = Omni Project +description-file = README.md +classifier = + Environment :: OpenStack + License :: OSI Approved :: Apache Software License + Operating System :: POSIX :: Linux + Programming Language :: Python + Programming Language :: Python :: 2 + Programming Language :: Python :: 2.7 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..deef104 --- /dev/null +++ b/setup.py @@ -0,0 +1,19 @@ +# Copyright (c) 2017 Platform9 Systems Inc. +# +# 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 expressed or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import setuptools + +setuptools.setup( + setup_requires=['pbr>=1.8'], + pbr=True) diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..741c553 --- /dev/null +++ b/tox.ini @@ -0,0 +1,9 @@ +[tox] +envlist = py27 +skipsdist = true +minversion = 2.3.2 + +[testenv] +usedevelop = True +whitelist_externals = bash +commands = bash run_tests.sh -wj