summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRick Bartra <rb560u@att.com>2018-08-16 14:53:30 -0400
committerRick Bartra <rb560u@att.com>2018-08-17 13:40:11 -0400
commit6b87d7d633dff0e73302a44f75b88de108203c7d (patch)
treed21a5c07fb71a1b7dbae83f02bd4a62027d89b28
Framework for Airship Tempest Plugin
This commit includes the following: - Base Classes for: * Shipyard tests * Shipyard RBAC tests - Unfinished Shipyard REST Clients for: * Document Staging API * Action API * Airflow Monitoring API * Log Retrieval API - RBAC Tests for Shipyard: * get workflows * get actions * get configdocs Future commits can follow this commit to further test Airship components.
-rw-r--r--README.rst6
-rw-r--r--airship_tempest_plugin/README.rst6
-rw-r--r--airship_tempest_plugin/__init__.py0
-rw-r--r--airship_tempest_plugin/config.py46
-rw-r--r--airship_tempest_plugin/plugin.py43
-rw-r--r--airship_tempest_plugin/services/__init__.py0
-rw-r--r--airship_tempest_plugin/services/shipyard/__init__.py0
-rw-r--r--airship_tempest_plugin/services/shipyard/json/__init__.py0
-rw-r--r--airship_tempest_plugin/services/shipyard/json/actions_client.py34
-rw-r--r--airship_tempest_plugin/services/shipyard/json/airflow_monitoring_client.py34
-rw-r--r--airship_tempest_plugin/services/shipyard/json/document_staging_client.py34
-rw-r--r--airship_tempest_plugin/tests/__init__.py0
-rw-r--r--airship_tempest_plugin/tests/api/__init__.py0
-rw-r--r--airship_tempest_plugin/tests/api/common/__init__.py0
-rw-r--r--airship_tempest_plugin/tests/api/common/rbac_roles.yaml13
-rw-r--r--airship_tempest_plugin/tests/api/shipyard/__init__.py0
-rw-r--r--airship_tempest_plugin/tests/api/shipyard/base.py57
-rw-r--r--airship_tempest_plugin/tests/api/shipyard/rbac/__init__.py0
-rw-r--r--airship_tempest_plugin/tests/api/shipyard/rbac/rbac_base.py38
-rw-r--r--airship_tempest_plugin/tests/api/shipyard/rbac/test_actions_rbac.py35
-rw-r--r--airship_tempest_plugin/tests/api/shipyard/rbac/test_airflow_monitoring_rbac.py35
-rw-r--r--airship_tempest_plugin/tests/api/shipyard/rbac/test_document_staging_rbac.py35
-rw-r--r--airship_tempest_plugin/tests/scenario/__init__.py0
-rw-r--r--setup.cfg51
-rw-r--r--setup.py29
25 files changed, 496 insertions, 0 deletions
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..f028be8
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,6 @@
1===============================================
2Tempest Integration of airship-tempest-plugin
3===============================================
4
5The purpose of this plugin is to provide automated tests
6for all OpenStack Airship components.
diff --git a/airship_tempest_plugin/README.rst b/airship_tempest_plugin/README.rst
new file mode 100644
index 0000000..1a0edb4
--- /dev/null
+++ b/airship_tempest_plugin/README.rst
@@ -0,0 +1,6 @@
1===============================================
2Tempest Integration of airship-tempest-plugin
3===============================================
4
5This directory contains Tempest tests to cover the airship-tempest-plugin project.
6
diff --git a/airship_tempest_plugin/__init__.py b/airship_tempest_plugin/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/__init__.py
diff --git a/airship_tempest_plugin/config.py b/airship_tempest_plugin/config.py
new file mode 100644
index 0000000..73287b2
--- /dev/null
+++ b/airship_tempest_plugin/config.py
@@ -0,0 +1,46 @@
1# Copyright 2015
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15from oslo_config import cfg
16
17service_available_group = cfg.OptGroup(name="service_available",
18 title="Available Airship Services")
19
20ServiceAvailableGroup = [
21 cfg.BoolOpt("shipyard",
22 default=True,
23 help="Whether or not Shipyard is expected to be available."),
24]
25
26shipyard_group = cfg.OptGroup(name='shipyard',
27 title='Shipyard service options')
28
29ShipyardGroup = [
30 cfg.StrOpt('endpoint_type',
31 default='internal',
32 choices=['public', 'admin', 'internal'],
33 help="The endpoint type to use for the Shipyard service"),
34 cfg.StrOpt('catalog_type',
35 default='shipyard',
36 help="Catalog type of the Shipyard service"),
37]
38
39def get_opt_lists(self, conf):
40 """
41 Get a list of options for sample config generation
42 """
43 return [
44 (service_available_group, ServiceAvailableGroup),
45 (shipyard_group, ShipyardGroup)
46 ]
diff --git a/airship_tempest_plugin/plugin.py b/airship_tempest_plugin/plugin.py
new file mode 100644
index 0000000..d7056c0
--- /dev/null
+++ b/airship_tempest_plugin/plugin.py
@@ -0,0 +1,43 @@
1# Copyright 2015
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
16
17import os
18
19from tempest import config
20from tempest.test_discover import plugins
21
22from airship_tempest_plugin import config as project_config
23
24
25class AirshipRbacPlugin(plugins.TempestPlugin):
26 def load_tests(self):
27 base_path = os.path.split(os.path.dirname(
28 os.path.abspath(__file__)))[0]
29 test_dir = "airship_tempest_plugin/tests"
30 full_test_dir = os.path.join(base_path, test_dir)
31 return full_test_dir, base_path
32
33 def register_opts(self, conf):
34 config.register_opt_group(conf, project_config.service_available_group,
35 project_config.ServiceAvailableGroup)
36 config.register_opt_group(conf, project_config.shipyard_group,
37 project_config.ShipyardGroup)
38 def get_opt_lists(self):
39 return [
40 (project_config.service_available_group.name,
41 project_config.ServiceAvailableGroup),
42 (project_config.shipyard_group.name, project_config.ShipyardGroup),
43 ]
diff --git a/airship_tempest_plugin/services/__init__.py b/airship_tempest_plugin/services/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/services/__init__.py
diff --git a/airship_tempest_plugin/services/shipyard/__init__.py b/airship_tempest_plugin/services/shipyard/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/services/shipyard/__init__.py
diff --git a/airship_tempest_plugin/services/shipyard/json/__init__.py b/airship_tempest_plugin/services/shipyard/json/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/services/shipyard/json/__init__.py
diff --git a/airship_tempest_plugin/services/shipyard/json/actions_client.py b/airship_tempest_plugin/services/shipyard/json/actions_client.py
new file mode 100644
index 0000000..f45517c
--- /dev/null
+++ b/airship_tempest_plugin/services/shipyard/json/actions_client.py
@@ -0,0 +1,34 @@
1# Copyright 2018 AT&T Corp
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15#
16
17"""
18http://airship-shipyard.readthedocs.io/en/latest/API.html#action-api
19"""
20
21from oslo_serialization import jsonutils as json
22from six.moves.urllib import parse as urllib
23
24from tempest.lib.common import rest_client
25
26
27class ActionsClient(rest_client.RestClient):
28 api_version = "v1.0"
29
30 def get_actions(self):
31 resp, body = self.get('actions')
32 self.expected_success(200, resp.status)
33 body = json.loads(body)
34 return rest_client.ResponseBody(resp, body)
diff --git a/airship_tempest_plugin/services/shipyard/json/airflow_monitoring_client.py b/airship_tempest_plugin/services/shipyard/json/airflow_monitoring_client.py
new file mode 100644
index 0000000..e6ec292
--- /dev/null
+++ b/airship_tempest_plugin/services/shipyard/json/airflow_monitoring_client.py
@@ -0,0 +1,34 @@
1# Copyright 2018 AT&T Corp
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15#
16
17"""
18http://airship-shipyard.readthedocs.io/en/latest/API.html#airflow-monitoring-api
19"""
20
21from oslo_serialization import jsonutils as json
22from six.moves.urllib import parse as urllib
23
24from tempest.lib.common import rest_client
25
26
27class AirflowMonitoringClient(rest_client.RestClient):
28 api_version = "v1.0"
29
30 def get_workflows(self):
31 resp, body = self.get('workflows')
32 self.expected_success(200, resp.status)
33 body = json.loads(body)
34 return rest_client.ResponseBody(resp, body)
diff --git a/airship_tempest_plugin/services/shipyard/json/document_staging_client.py b/airship_tempest_plugin/services/shipyard/json/document_staging_client.py
new file mode 100644
index 0000000..80acae4
--- /dev/null
+++ b/airship_tempest_plugin/services/shipyard/json/document_staging_client.py
@@ -0,0 +1,34 @@
1# Copyright 2018 AT&T Corp
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15#
16
17"""
18http://airship-shipyard.readthedocs.io/en/latest/API.html#document-staging-api
19"""
20
21from oslo_serialization import jsonutils as json
22from six.moves.urllib import parse as urllib
23
24from tempest.lib.common import rest_client
25
26
27class DocumentStagingClient(rest_client.RestClient):
28 api_version = "v1.0"
29
30 def get_configdocs(self):
31 resp, body = self.get('configdocs')
32 self.expected_success(200, resp.status)
33 body = json.loads(body)
34 return rest_client.ResponseBody(resp, body)
diff --git a/airship_tempest_plugin/tests/__init__.py b/airship_tempest_plugin/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/tests/__init__.py
diff --git a/airship_tempest_plugin/tests/api/__init__.py b/airship_tempest_plugin/tests/api/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/__init__.py
diff --git a/airship_tempest_plugin/tests/api/common/__init__.py b/airship_tempest_plugin/tests/api/common/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/common/__init__.py
diff --git a/airship_tempest_plugin/tests/api/common/rbac_roles.yaml b/airship_tempest_plugin/tests/api/common/rbac_roles.yaml
new file mode 100644
index 0000000..69063c7
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/common/rbac_roles.yaml
@@ -0,0 +1,13 @@
1shipyard:
2 get_actions:
3 - admin
4 - admin_ucp
5 - admin_ucp_viewer
6 get_configdocs:
7 - admin
8 - admin_ucp
9 - admin_ucp_viewer
10 get_workflows:
11 - admin
12 - admin_ucp
13 - admin_ucp_viewer
diff --git a/airship_tempest_plugin/tests/api/shipyard/__init__.py b/airship_tempest_plugin/tests/api/shipyard/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/shipyard/__init__.py
diff --git a/airship_tempest_plugin/tests/api/shipyard/base.py b/airship_tempest_plugin/tests/api/shipyard/base.py
new file mode 100644
index 0000000..88f8233
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/shipyard/base.py
@@ -0,0 +1,57 @@
1# Copyright 2018 AT&T Corp
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15#
16
17from airship_tempest_plugin.services.shipyard.json.actions_client import ActionsClient
18from airship_tempest_plugin.services.shipyard.json.document_staging_client import DocumentStagingClient
19from airship_tempest_plugin.services.shipyard.json.airflow_monitoring_client import AirflowMonitoringClient
20
21from tempest import config
22from tempest import test
23
24from patrole_tempest_plugin import rbac_utils
25
26CONF = config.CONF
27
28class BaseShipyardTest(test.BaseTestCase):
29 """Base class for Shipyard tests."""
30 credentials = ['primary', 'admin']
31
32 @classmethod
33 def skip_checks(cls):
34 super(BaseShipyardTest, cls).skip_checks()
35 if not CONF.service_available.shipyard:
36 raise cls.skipException("Shipyard is not enabled in the deployment")
37
38 @classmethod
39 def setup_clients(cls):
40 super(BaseShipyardTest, cls).setup_clients()
41 cls.auth_provider = cls.os_primary.auth_provider
42
43 cls.shipyard_actions_client = ActionsClient(
44 cls.auth_provider,
45 CONF.shipyard.catalog_type,
46 CONF.identity.region,
47 CONF.shipyard.endpoint_type)
48 cls.shipyard_document_staging_client = DocumentStagingClient(
49 cls.auth_provider,
50 CONF.shipyard.catalog_type,
51 CONF.identity.region,
52 CONF.shipyard.endpoint_type)
53 cls.shipyard_airflow_monitoring_client = AirflowMonitoringClient(
54 cls.auth_provider,
55 CONF.shipyard.catalog_type,
56 CONF.identity.region,
57 CONF.shipyard.endpoint_type)
diff --git a/airship_tempest_plugin/tests/api/shipyard/rbac/__init__.py b/airship_tempest_plugin/tests/api/shipyard/rbac/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/shipyard/rbac/__init__.py
diff --git a/airship_tempest_plugin/tests/api/shipyard/rbac/rbac_base.py b/airship_tempest_plugin/tests/api/shipyard/rbac/rbac_base.py
new file mode 100644
index 0000000..655a21f
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/shipyard/rbac/rbac_base.py
@@ -0,0 +1,38 @@
1# Copyright 2018 AT&T Corp
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15#
16
17from airship_tempest_plugin.services.shipyard.json.actions_client import ActionsClient
18from airship_tempest_plugin.tests.api.shipyard import base
19
20from tempest import config
21
22from patrole_tempest_plugin import rbac_utils
23
24CONF = config.CONF
25
26class BaseShipyardRbacTest(rbac_utils.RbacUtilsMixin,
27 base.BaseShipyardTest):
28 """Base class for Shipyard RBAC tests."""
29
30 @classmethod
31 def skip_checks(cls):
32 super(BaseShipyardRbacTest, cls).skip_checks()
33 cls.skip_rbac_checks()
34
35 @classmethod
36 def setup_clients(cls):
37 super(BaseShipyardRbacTest, cls).setup_clients()
38 cls.setup_rbac_utils()
diff --git a/airship_tempest_plugin/tests/api/shipyard/rbac/test_actions_rbac.py b/airship_tempest_plugin/tests/api/shipyard/rbac/test_actions_rbac.py
new file mode 100644
index 0000000..84c95b1
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/shipyard/rbac/test_actions_rbac.py
@@ -0,0 +1,35 @@
1# Copyright 2018 AT&T Corp
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15#
16
17from airship_tempest_plugin.tests.api.shipyard.rbac import rbac_base
18
19from patrole_tempest_plugin import rbac_rule_validation
20
21from tempest.common import utils
22from tempest.lib import decorators
23from tempest.lib.common.utils import data_utils
24from tempest.lib.common.utils import test_utils
25
26from tempest.api.identity import base
27
28class ActionsRbacTest(rbac_base.BaseShipyardRbacTest):
29
30 @rbac_rule_validation.action(service="shipyard",
31 rules=["get_actions"])
32 @decorators.idempotent_id('183dd007-8a97-4070-afc3-9318401ebad7')
33 def test_get_actions(self):
34 with self.rbac_utils.override_role(self):
35 self.shipyard_actions_client.get_actions()
diff --git a/airship_tempest_plugin/tests/api/shipyard/rbac/test_airflow_monitoring_rbac.py b/airship_tempest_plugin/tests/api/shipyard/rbac/test_airflow_monitoring_rbac.py
new file mode 100644
index 0000000..74fd2d3
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/shipyard/rbac/test_airflow_monitoring_rbac.py
@@ -0,0 +1,35 @@
1# Copyright 2018 AT&T Corp
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15#
16
17from airship_tempest_plugin.tests.api.shipyard.rbac import rbac_base
18
19from patrole_tempest_plugin import rbac_rule_validation
20
21from tempest.common import utils
22from tempest.lib import decorators
23from tempest.lib.common.utils import data_utils
24from tempest.lib.common.utils import test_utils
25
26from tempest.api.identity import base
27
28class AirflowMonitoringRbacTest(rbac_base.BaseShipyardRbacTest):
29
30 @rbac_rule_validation.action(service="shipyard",
31 rules=["get_configdocs"])
32 @decorators.idempotent_id('0ab53b15-bce9-494f-9a11-34dd2c44d699')
33 def test_get_workflows(self):
34 with self.rbac_utils.override_role(self):
35 self.shipyard_airflow_monitoring_client.get_workflows()
diff --git a/airship_tempest_plugin/tests/api/shipyard/rbac/test_document_staging_rbac.py b/airship_tempest_plugin/tests/api/shipyard/rbac/test_document_staging_rbac.py
new file mode 100644
index 0000000..2906cda
--- /dev/null
+++ b/airship_tempest_plugin/tests/api/shipyard/rbac/test_document_staging_rbac.py
@@ -0,0 +1,35 @@
1# Copyright 2018 AT&T Corp
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15#
16
17from airship_tempest_plugin.tests.api.shipyard.rbac import rbac_base
18
19from patrole_tempest_plugin import rbac_rule_validation
20
21from tempest.common import utils
22from tempest.lib import decorators
23from tempest.lib.common.utils import data_utils
24from tempest.lib.common.utils import test_utils
25
26from tempest.api.identity import base
27
28class DocumentStagingRbacTest(rbac_base.BaseShipyardRbacTest):
29
30 @rbac_rule_validation.action(service="shipyard",
31 rules=["get_configdocs"])
32 @decorators.idempotent_id('0ab53b15-bce9-494f-9a11-34dd2c44d699')
33 def test_get_configdocs(self):
34 with self.rbac_utils.override_role(self):
35 self.shipyard_document_staging_client.get_configdocs()
diff --git a/airship_tempest_plugin/tests/scenario/__init__.py b/airship_tempest_plugin/tests/scenario/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/airship_tempest_plugin/tests/scenario/__init__.py
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..113f6b7
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,51 @@
1[metadata]
2name = airship-tempest-plugin
3summary = This project contains tests for Airship components
4description-file =
5 README.rst
6author = OpenStack
7author-email = openstack-dev@lists.openstack.org
8home-page = http://www.openstack.org/
9classifier =
10 Environment :: OpenStack
11 Intended Audience :: Information Technology
12 Intended Audience :: System Administrators
13 License :: OSI Approved :: Apache Software License
14 Operating System :: POSIX :: Linux
15 Programming Language :: Python
16 Programming Language :: Python :: 2
17 Programming Language :: Python :: 2.7
18 Programming Language :: Python :: 3
19 Programming Language :: Python :: 3.3
20 Programming Language :: Python :: 3.4
21
22[files]
23packages =
24 airship_tempest_plugin
25
26[build_sphinx]
27all-files = 1
28warning-is-error = 1
29source-dir = doc/source
30build-dir = doc/build
31
32[upload_sphinx]
33upload-dir = doc/build/html
34
35[compile_catalog]
36directory = airship-tempest-plugin/locale
37domain = airship-tempest-plugin
38
39[update_catalog]
40domain = airship-tempest-plugin
41output_dir = airship-tempest-plugin/locale
42input_file = airship-tempest-plugin/locale/airship-tempest-plugin.pot
43
44[extract_messages]
45keywords = _ gettext ngettext l_ lazy_gettext
46mapping_file = babel.cfg
47output_file = airship-tempest-plugin/locale/airship-tempest-plugin.pot
48
49[entry_points]
50tempest.test_plugins =
51 airship_rbac_tests = airship_tempest_plugin.plugin:AirshipRbacPlugin
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..056c16c
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,29 @@
1# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12# implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
17import setuptools
18
19# In python < 2.7.4, a lazy loading of package `pbr` will break
20# setuptools if some other modules registered functions in `atexit`.
21# solution from: http://bugs.python.org/issue15881#msg170215
22try:
23 import multiprocessing # noqa
24except ImportError:
25 pass
26
27setuptools.setup(
28 setup_requires=['pbr'],
29 pbr=True)