Initial movement to new repo with cleanup
This commit is contained in:
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
*.pyc
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
|
.tox
|
||||||
|
.testrepository
|
||||||
5
.gitreview
Normal file
5
.gitreview
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
[gerrit]
|
||||||
|
host=review.openstack.org
|
||||||
|
port=29418
|
||||||
|
project=openstack/heat-tempest-plugin.git
|
||||||
12
.testr.conf
Normal file
12
.testr.conf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
|
||||||
|
OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
|
||||||
|
OS_LOG_CAPTURE=${OS_LOG_CAPTURE:-1} \
|
||||||
|
OS_DEBUG=${OS_DEBUG:-1} \
|
||||||
|
OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-500} \
|
||||||
|
OS_TEST_LOCK_PATH=${OS_TEST_LOCK_PATH:-${TMPDIR:-'/tmp'}} \
|
||||||
|
${PYTHON:-python} -m subunit.run discover -t ${OS_TOP_LEVEL:-./} ${OS_TEST_PATH:-./heat_tempest_plugin} $LISTOPT $IDOPTION
|
||||||
|
|
||||||
|
test_id_option=--load-list $IDFILE
|
||||||
|
test_list_option=--list
|
||||||
|
group_regex=([^\.]*\.)*
|
||||||
28
README.rst
Normal file
28
README.rst
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
===================
|
||||||
|
Heat Tempest Plugin
|
||||||
|
===================
|
||||||
|
|
||||||
|
Tests can be run as a tempest plugin against any heat-enabled OpenStack
|
||||||
|
cloud, however defaults match running against a recent DevStack.
|
||||||
|
|
||||||
|
To run the tests against DevStack, do the following:
|
||||||
|
|
||||||
|
# Define DEST
|
||||||
|
|
||||||
|
export DEST=/opt/stack
|
||||||
|
|
||||||
|
# create test resources and write tempest config
|
||||||
|
|
||||||
|
$DEST/heat/heat_integrationtests/prepare_test_env.sh
|
||||||
|
|
||||||
|
$DEST/heat/heat_integrationtests/prepare_test_network.sh
|
||||||
|
|
||||||
|
# run tempest selecting only these tests
|
||||||
|
|
||||||
|
cd $DEST/tempest
|
||||||
|
|
||||||
|
tempest run --regex heat_tempest_plugin.tests
|
||||||
|
|
||||||
|
If custom configuration is required, edit the [orchestration_plugin] section of
|
||||||
|
|
||||||
|
$DEST/tempest/etc/tempest.conf
|
||||||
@@ -19,7 +19,7 @@ from oslo_log import log as logging
|
|||||||
import paramiko
|
import paramiko
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from heat_integrationtests.common import exceptions
|
from heat_tempest_plugin.common import exceptions
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -27,10 +27,10 @@ from six.moves import urllib
|
|||||||
import testscenarios
|
import testscenarios
|
||||||
import testtools
|
import testtools
|
||||||
|
|
||||||
from heat_integrationtests.common import clients
|
from heat_tempest_plugin.common import exceptions
|
||||||
from heat_integrationtests.common import config
|
from heat_tempest_plugin.common import remote_client
|
||||||
from heat_integrationtests.common import exceptions
|
from heat_tempest_plugin import config
|
||||||
from heat_integrationtests.common import remote_client
|
from heat_tempest_plugin.services import clients
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
_LOG_FORMAT = "%(levelname)8s [%(name)s] %(message)s"
|
_LOG_FORMAT = "%(levelname)8s [%(name)s] %(message)s"
|
||||||
@@ -85,7 +85,7 @@ class HeatIntegrationTest(testscenarios.WithScenarios,
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(HeatIntegrationTest, self).setUp()
|
super(HeatIntegrationTest, self).setUp()
|
||||||
|
|
||||||
self.conf = config.CONF.heat_plugin
|
self.conf = config.CONF.orchestration_plugin
|
||||||
|
|
||||||
self.assertIsNotNone(self.conf.auth_url,
|
self.assertIsNotNone(self.conf.auth_url,
|
||||||
'No auth_url configured')
|
'No auth_url configured')
|
||||||
@@ -18,12 +18,12 @@ service_available_group = cfg.OptGroup(name="service_available",
|
|||||||
title="Available OpenStack Services")
|
title="Available OpenStack Services")
|
||||||
|
|
||||||
ServiceAvailableGroup = [
|
ServiceAvailableGroup = [
|
||||||
cfg.BoolOpt("heat_plugin",
|
cfg.BoolOpt("orchestration_plugin",
|
||||||
default=True,
|
default=True,
|
||||||
help="Whether or not heat is expected to be available"),
|
help="Whether or not heat is expected to be available"),
|
||||||
]
|
]
|
||||||
|
|
||||||
heat_group = cfg.OptGroup(name="heat_plugin",
|
heat_group = cfg.OptGroup(name="orchestration_plugin",
|
||||||
title="Heat Service Options")
|
title="Heat Service Options")
|
||||||
|
|
||||||
HeatGroup = [
|
HeatGroup = [
|
||||||
@@ -42,13 +42,13 @@ HeatGroup = [
|
|||||||
secret=True),
|
secret=True),
|
||||||
cfg.StrOpt('project_name',
|
cfg.StrOpt('project_name',
|
||||||
help="Project name to use for API requests.",
|
help="Project name to use for API requests.",
|
||||||
deprecated_opts=[cfg.DeprecatedOpt('tenant_name',
|
deprecated_opts=[cfg.DeprecatedOpt(
|
||||||
group='heat_plugin')]),
|
'tenant_name', group='orchestration_plugin')]),
|
||||||
cfg.StrOpt('admin_project_name',
|
cfg.StrOpt('admin_project_name',
|
||||||
default='admin',
|
default='admin',
|
||||||
help="Admin project name to use for admin API requests.",
|
help="Admin project name to use for admin API requests.",
|
||||||
deprecated_opts=[cfg.DeprecatedOpt('admin_tenant_name',
|
deprecated_opts=[cfg.DeprecatedOpt(
|
||||||
group='heat_plugin')]),
|
'admin_tenant_name', group='orchestration_plugin')]),
|
||||||
cfg.StrOpt('auth_url',
|
cfg.StrOpt('auth_url',
|
||||||
help="Full URI of the OpenStack Identity API (Keystone)."),
|
help="Full URI of the OpenStack Identity API (Keystone)."),
|
||||||
cfg.StrOpt('auth_version',
|
cfg.StrOpt('auth_version',
|
||||||
@@ -101,7 +101,7 @@ HeatGroup = [
|
|||||||
default='public',
|
default='public',
|
||||||
help="Visible floating network name "),
|
help="Visible floating network name "),
|
||||||
cfg.StrOpt('boot_config_env',
|
cfg.StrOpt('boot_config_env',
|
||||||
default=('heat_integrationtests/scenario/templates'
|
default=('heat_tempest_plugin/tests/scenario/templates'
|
||||||
'/boot_config_none_env.yaml'),
|
'/boot_config_none_env.yaml'),
|
||||||
help="Path to environment file which defines the "
|
help="Path to environment file which defines the "
|
||||||
"resource type Heat::InstallConfigAgent. Needs to "
|
"resource type Heat::InstallConfigAgent. Needs to "
|
||||||
41
heat_tempest_plugin/plugin.py
Normal file
41
heat_tempest_plugin/plugin.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# Copyright 2015
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from tempest import config
|
||||||
|
from tempest.test_discover import plugins
|
||||||
|
|
||||||
|
from heat_tempest_plugin import config as heat_config
|
||||||
|
|
||||||
|
|
||||||
|
class HeatTempestPlugin(plugins.TempestPlugin):
|
||||||
|
def load_tests(self):
|
||||||
|
base_path = os.path.split(os.path.dirname(
|
||||||
|
os.path.abspath(__file__)))[0]
|
||||||
|
test_dir = "heat_tempest_plugin"
|
||||||
|
full_test_dir = os.path.join(base_path, test_dir)
|
||||||
|
return full_test_dir, base_path
|
||||||
|
|
||||||
|
def register_opts(self, conf):
|
||||||
|
config.register_opt_group(conf, heat_config.service_available_group,
|
||||||
|
heat_config.ServiceAvailableGroup)
|
||||||
|
config.register_opt_group(conf, heat_config.heat_group,
|
||||||
|
heat_config.HeatGroup)
|
||||||
|
heat_config.CONF = config.CONF
|
||||||
|
|
||||||
|
def get_opt_lists(self):
|
||||||
|
return [(heat_config.heat_group.name,
|
||||||
|
heat_config.HeatGroup)]
|
||||||
@@ -14,7 +14,6 @@ import os
|
|||||||
|
|
||||||
from ceilometerclient import client as ceilometer_client
|
from ceilometerclient import client as ceilometer_client
|
||||||
from cinderclient import client as cinder_client
|
from cinderclient import client as cinder_client
|
||||||
from heat.common.i18n import _
|
|
||||||
from heatclient import client as heat_client
|
from heatclient import client as heat_client
|
||||||
from keystoneauth1 import exceptions as kc_exceptions
|
from keystoneauth1 import exceptions as kc_exceptions
|
||||||
from keystoneauth1.identity.generic import password
|
from keystoneauth1.identity.generic import password
|
||||||
@@ -73,11 +72,7 @@ class ClientManager(object):
|
|||||||
|
|
||||||
self.auth_version = self.conf.auth_version
|
self.auth_version = self.conf.auth_version
|
||||||
if not self.auth_version:
|
if not self.auth_version:
|
||||||
try:
|
|
||||||
self.auth_version = self.conf.auth_url.split('/v')[1]
|
self.auth_version = self.conf.auth_url.split('/v')[1]
|
||||||
except IndexError:
|
|
||||||
raise ValueError(_('Please specify version in auth_url or '
|
|
||||||
'auth_version in config.'))
|
|
||||||
self.insecure = self.conf.disable_ssl_certificate_validation
|
self.insecure = self.conf.disable_ssl_certificate_validation
|
||||||
self.ca_file = self.conf.ca_file
|
self.ca_file = self.conf.ca_file
|
||||||
|
|
||||||
0
heat_tempest_plugin/tests/api/__init__.py
Normal file
0
heat_tempest_plugin/tests/api/__init__.py
Normal file
@@ -18,9 +18,9 @@ import os
|
|||||||
from gabbi import driver
|
from gabbi import driver
|
||||||
from six.moves.urllib import parse as urlparse
|
from six.moves.urllib import parse as urlparse
|
||||||
|
|
||||||
from heat_integrationtests.common import clients
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.common import config
|
from heat_tempest_plugin import config
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.services import clients
|
||||||
|
|
||||||
TESTS_DIR = 'gabbits'
|
TESTS_DIR = 'gabbits'
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ def load_tests(loader, tests, pattern):
|
|||||||
"""Provide a TestSuite to the discovery process."""
|
"""Provide a TestSuite to the discovery process."""
|
||||||
test_dir = os.path.join(os.path.dirname(__file__), TESTS_DIR)
|
test_dir = os.path.join(os.path.dirname(__file__), TESTS_DIR)
|
||||||
|
|
||||||
conf = config.CONF.heat_plugin
|
conf = config.CONF.orchestration_plugin
|
||||||
if conf.auth_url is None:
|
if conf.auth_url is None:
|
||||||
# It's not configured, let's not load tests
|
# It's not configured, let's not load tests
|
||||||
return
|
return
|
||||||
0
heat_tempest_plugin/tests/functional/__init__.py
Normal file
0
heat_tempest_plugin/tests/functional/__init__.py
Normal file
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
from oslo_utils import reflection
|
from oslo_utils import reflection
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
|
|
||||||
|
|
||||||
class FunctionalTestsBase(test.HeatIntegrationTest):
|
class FunctionalTestsBase(test.HeatIntegrationTest):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
# Simple stack
|
# Simple stack
|
||||||
test_template = {
|
test_template = {
|
||||||
@@ -18,8 +18,8 @@ from oslo_log import log as logging
|
|||||||
import six
|
import six
|
||||||
from testtools import matchers
|
from testtools import matchers
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@@ -18,8 +18,8 @@ from six.moves.urllib import parse
|
|||||||
from swiftclient import utils as swiftclient_utils
|
from swiftclient import utils as swiftclient_utils
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class AwsStackTest(functional_base.FunctionalTestsBase):
|
class AwsStackTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class CancelUpdateTest(functional_base.FunctionalTestsBase):
|
class CancelUpdateTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
from heatclient import exc
|
from heatclient import exc
|
||||||
import keystoneclient
|
import keystoneclient
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class ServiceBasedExposureTest(functional_base.FunctionalTestsBase):
|
class ServiceBasedExposureTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
cfn_template = '''
|
cfn_template = '''
|
||||||
@@ -14,8 +14,8 @@
|
|||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
test_template_one_resource = {
|
test_template_one_resource = {
|
||||||
'heat_template_version': 'pike',
|
'heat_template_version': 'pike',
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
test_template = '''
|
test_template = '''
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
test_template = '''
|
test_template = '''
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
import copy
|
import copy
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
test_template = '''
|
test_template = '''
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class DefaultParametersTest(functional_base.FunctionalTestsBase):
|
class DefaultParametersTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class DeleteInProgressTest(functional_base.FunctionalTestsBase):
|
class DeleteInProgressTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class EncryptedParametersTest(functional_base.FunctionalTestsBase):
|
class EncryptedParametersTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
test_encryption_vol_type = {
|
test_encryption_vol_type = {
|
||||||
'heat_template_version': '2015-04-30',
|
'heat_template_version': '2015-04-30',
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
TEMPLATE = '''
|
TEMPLATE = '''
|
||||||
@@ -14,8 +14,8 @@ import uuid
|
|||||||
|
|
||||||
from zaqarclient.queues.v2 import client as zaqarclient
|
from zaqarclient.queues.v2 import client as zaqarclient
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class ZaqarEventSinkTest(functional_base.FunctionalTestsBase):
|
class ZaqarEventSinkTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class ExternalReferencesTest(functional_base.FunctionalTestsBase):
|
class ExternalReferencesTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,8 +10,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class HeatAutoscalingTest(functional_base.FunctionalTestsBase):
|
class HeatAutoscalingTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class HooksTest(functional_base.FunctionalTestsBase):
|
class HooksTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
from heatclient import exc as heat_exceptions
|
from heatclient import exc as heat_exceptions
|
||||||
|
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ import json
|
|||||||
|
|
||||||
from testtools import matchers
|
from testtools import matchers
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class InstanceGroupTest(functional_base.FunctionalTestsBase):
|
class InstanceGroupTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class LoadBalancerv2Test(functional_base.FunctionalTestsBase):
|
class LoadBalancerv2Test(functional_base.FunctionalTestsBase):
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
# where the get_attr calls are used. Nevertheless, it did sort-of work, and
|
# where the get_attr calls are used. Nevertheless, it did sort-of work, and
|
||||||
# this test will help keep it that way.
|
# this test will help keep it that way.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
initial_template = '''
|
initial_template = '''
|
||||||
@@ -16,8 +16,8 @@ from oslo_messaging._drivers import common
|
|||||||
from oslo_messaging import transport
|
from oslo_messaging import transport
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
BASIC_NOTIFICATIONS = [
|
BASIC_NOTIFICATIONS = [
|
||||||
'orchestration.stack.create.start',
|
'orchestration.stack.create.start',
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
server_with_sub_fixed_ip_template = '''
|
server_with_sub_fixed_ip_template = '''
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class OSWaitCondition(functional_base.FunctionalTestsBase):
|
class OSWaitCondition(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
from heatclient import exc
|
from heatclient import exc
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
test_template_one_resource = {
|
test_template_one_resource = {
|
||||||
'heat_template_version': '2013-05-23',
|
'heat_template_version': '2013-05-23',
|
||||||
@@ -14,7 +14,7 @@ import time
|
|||||||
|
|
||||||
from oslo_concurrency import processutils
|
from oslo_concurrency import processutils
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class PurgeTest(functional_base.FunctionalTestsBase):
|
class PurgeTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -19,7 +19,7 @@ import eventlet
|
|||||||
from oslo_concurrency import processutils
|
from oslo_concurrency import processutils
|
||||||
from six.moves import configparser
|
from six.moves import configparser
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class ReloadOnSighupTest(functional_base.FunctionalTestsBase):
|
class ReloadOnSighupTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
from heatclient import exc
|
from heatclient import exc
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class RemoteStackTest(functional_base.FunctionalTestsBase):
|
class RemoteStackTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class ReplaceDeprecatedResourceTest(functional_base.FunctionalTestsBase):
|
class ReplaceDeprecatedResourceTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
TEMPLATE_SIMPLE = '''
|
TEMPLATE_SIMPLE = '''
|
||||||
@@ -17,7 +17,7 @@ from heatclient import exc
|
|||||||
import six
|
import six
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class ResourceGroupTest(functional_base.FunctionalTestsBase):
|
class ResourceGroupTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
test_template_depend = {
|
test_template_depend = {
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class StackSnapshotRestoreTest(functional_base.FunctionalTestsBase):
|
class StackSnapshotRestoreTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -21,9 +21,9 @@ import yaml
|
|||||||
|
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
|
|
||||||
from heat_integrationtests.common import exceptions
|
from heat_tempest_plugin.common import exceptions
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class ParallelDeploymentsTest(functional_base.FunctionalTestsBase):
|
class ParallelDeploymentsTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class SoftwareDeploymentGroupTest(functional_base.FunctionalTestsBase):
|
class SoftwareDeploymentGroupTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class StackEventsTest(functional_base.FunctionalTestsBase):
|
class StackEventsTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class StackOutputsTest(functional_base.FunctionalTestsBase):
|
class StackOutputsTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class StackTagTest(functional_base.FunctionalTestsBase):
|
class StackTagTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
test_template = '''
|
test_template = '''
|
||||||
heat_template_version: 2014-10-16
|
heat_template_version: 2014-10-16
|
||||||
@@ -16,8 +16,8 @@ from heatclient import exc as heat_exceptions
|
|||||||
import six
|
import six
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class TemplateResourceTest(functional_base.FunctionalTestsBase):
|
class TemplateResourceTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -15,7 +15,7 @@ import six
|
|||||||
|
|
||||||
from heatclient import exc
|
from heatclient import exc
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class StackTemplateValidateTest(functional_base.FunctionalTestsBase):
|
class StackTemplateValidateTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class TemplateAPITest(functional_base.FunctionalTestsBase):
|
class TemplateAPITest(functional_base.FunctionalTestsBase):
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
template_subnet_old_network = """
|
template_subnet_old_network = """
|
||||||
heat_template_version: 2016-10-14
|
heat_template_version: 2016-10-14
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class StackUnicodeTemplateTest(functional_base.FunctionalTestsBase):
|
class StackUnicodeTemplateTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
test_template = {
|
test_template = {
|
||||||
'heat_template_version': '2013-05-23',
|
'heat_template_version': '2013-05-23',
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class StackValidationTest(functional_base.FunctionalTestsBase):
|
class StackValidationTest(functional_base.FunctionalTestsBase):
|
||||||
@@ -15,7 +15,7 @@ import json
|
|||||||
from keystoneclient.v3 import client as keystoneclient
|
from keystoneclient.v3 import client as keystoneclient
|
||||||
from zaqarclient.queues.v2 import client as zaqarclient
|
from zaqarclient.queues.v2 import client as zaqarclient
|
||||||
|
|
||||||
from heat_integrationtests.functional import functional_base
|
from heat_tempest_plugin.tests.functional import functional_base
|
||||||
|
|
||||||
|
|
||||||
class ZaqarWaitConditionTest(functional_base.FunctionalTestsBase):
|
class ZaqarWaitConditionTest(functional_base.FunctionalTestsBase):
|
||||||
0
heat_tempest_plugin/tests/scenario/__init__.py
Normal file
0
heat_tempest_plugin/tests/scenario/__init__.py
Normal file
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
from oslo_utils import reflection
|
from oslo_utils import reflection
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
|
|
||||||
|
|
||||||
class ScenarioTestsBase(test.HeatIntegrationTest):
|
class ScenarioTestsBase(test.HeatIntegrationTest):
|
||||||
@@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.scenario import scenario_base
|
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -15,8 +15,8 @@ import time
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.scenario import scenario_base
|
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||||
|
|
||||||
|
|
||||||
class AutoscalingLoadBalancerTest(scenario_base.ScenarioTestsBase):
|
class AutoscalingLoadBalancerTest(scenario_base.ScenarioTestsBase):
|
||||||
@@ -15,8 +15,8 @@ import time
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.scenario import scenario_base
|
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||||
|
|
||||||
|
|
||||||
class AutoscalingLoadBalancerv2Test(scenario_base.ScenarioTestsBase):
|
class AutoscalingLoadBalancerv2Test(scenario_base.ScenarioTestsBase):
|
||||||
@@ -10,8 +10,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from heat_integrationtests.common import test
|
from heat_tempest_plugin.common import test
|
||||||
from heat_integrationtests.scenario import scenario_base
|
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||||
from heatclient.common import template_utils
|
from heatclient.common import template_utils
|
||||||
|
|
||||||
|
|
||||||
@@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from heat_integrationtests.common import exceptions
|
from heat_tempest_plugin.common import exceptions
|
||||||
from heat_integrationtests.scenario import scenario_base
|
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||||
|
|
||||||
|
|
||||||
class CfnInitIntegrationTest(scenario_base.ScenarioTestsBase):
|
class CfnInitIntegrationTest(scenario_base.ScenarioTestsBase):
|
||||||
@@ -13,8 +13,8 @@
|
|||||||
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from heat_integrationtests.common import exceptions
|
from heat_tempest_plugin.common import exceptions
|
||||||
from heat_integrationtests.scenario import scenario_base
|
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||||
|
|
||||||
|
|
||||||
class ServerSignalIntegrationTest(scenario_base.ScenarioTestsBase):
|
class ServerSignalIntegrationTest(scenario_base.ScenarioTestsBase):
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
from heatclient.common import template_utils
|
from heatclient.common import template_utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from heat_integrationtests.scenario import scenario_base
|
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||||
|
|
||||||
CFG1_SH = '''#!/bin/sh
|
CFG1_SH = '''#!/bin/sh
|
||||||
echo "Writing to /tmp/$bar"
|
echo "Writing to /tmp/$bar"
|
||||||
@@ -15,8 +15,8 @@ from cinderclient import exceptions as cinder_exceptions
|
|||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from heat_integrationtests.common import exceptions
|
from heat_tempest_plugin.common import exceptions
|
||||||
from heat_integrationtests.scenario import scenario_base
|
from heat_tempest_plugin.tests.scenario import scenario_base
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
20
requirements.txt
Normal file
20
requirements.txt
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# 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.
|
||||||
|
eventlet!=0.18.3,!=0.20.1,<0.21.0,>=0.18.2 # MIT
|
||||||
|
keystoneauth1>=3.2.0 # Apache-2.0
|
||||||
|
oslo.config>=4.6.0 # Apache-2.0
|
||||||
|
oslo.log>=3.30.0 # Apache-2.0
|
||||||
|
paramiko>=2.0.0 # LGPLv2.1+
|
||||||
|
python-ceilometerclient>=2.5.0 # Apache-2.0
|
||||||
|
python-cinderclient>=3.2.0 # Apache-2.0
|
||||||
|
python-heatclient>=1.10.0 # Apache-2.0
|
||||||
|
python-neutronclient>=6.3.0 # Apache-2.0
|
||||||
|
python-novaclient>=9.1.0 # Apache-2.0
|
||||||
|
python-swiftclient>=3.2.0 # Apache-2.0
|
||||||
|
python-zaqarclient>=1.0.0 # Apache-2.0
|
||||||
|
testtools>=1.4.0 # MIT
|
||||||
|
testscenarios>=0.4 # Apache-2.0/BSD
|
||||||
|
tempest>=16.1.0 # Apache-2.0
|
||||||
|
gabbi>=1.35.0 # Apache-2.0
|
||||||
|
kombu!=4.0.2,>=4.0.0 # BSD
|
||||||
48
setup.cfg
Normal file
48
setup.cfg
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
[metadata]
|
||||||
|
name = heat-tempest-plugin
|
||||||
|
summary = OpenStack Orchestration Tempest Plugin
|
||||||
|
description-file =
|
||||||
|
README.rst
|
||||||
|
author = OpenStack
|
||||||
|
author-email = openstack-dev@lists.openstack.org
|
||||||
|
home-page = http://docs.openstack.org/developer/heat-tempest-plugin
|
||||||
|
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
|
||||||
|
Programming Language :: Python :: 3
|
||||||
|
Programming Language :: Python :: 3.5
|
||||||
|
|
||||||
|
keywords =
|
||||||
|
setup
|
||||||
|
distutils
|
||||||
|
|
||||||
|
[files]
|
||||||
|
packages =
|
||||||
|
heat_tempest_plugin
|
||||||
|
|
||||||
|
[entry_points]
|
||||||
|
tempest.test_plugins =
|
||||||
|
heat = heat_tempest_plugin.plugin:HeatTempestPlugin
|
||||||
|
|
||||||
|
[global]
|
||||||
|
setup-hooks =
|
||||||
|
pbr.hooks.setup_hook
|
||||||
|
|
||||||
|
[build_sphinx]
|
||||||
|
all_files = 1
|
||||||
|
build-dir = doc/build
|
||||||
|
source-dir = doc/source
|
||||||
|
|
||||||
|
[egg_info]
|
||||||
|
tag_build =
|
||||||
|
tag_date = 0
|
||||||
|
tag_svn_revision = 0
|
||||||
|
|
||||||
|
[wheel]
|
||||||
|
universal = 1
|
||||||
29
setup.py
Normal file
29
setup.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
|
||||||
|
import setuptools
|
||||||
|
|
||||||
|
# In python < 2.7.4, a lazy loading of package `pbr` will break
|
||||||
|
# setuptools if some other modules registered functions in `atexit`.
|
||||||
|
# solution from: http://bugs.python.org/issue15881#msg170215
|
||||||
|
try:
|
||||||
|
import multiprocessing # noqa
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
setuptools.setup(
|
||||||
|
setup_requires=['pbr>=2.0.0'],
|
||||||
|
pbr=True)
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user