Merge "Initial version of clustering service support"
This commit is contained in:
0
openstack/clustering/__init__.py
Normal file
0
openstack/clustering/__init__.py
Normal file
27
openstack/clustering/clustering_service.py
Normal file
27
openstack/clustering/clustering_service.py
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from openstack.auth import service_filter
|
||||||
|
|
||||||
|
|
||||||
|
class ClusteringService(service_filter.ServiceFilter):
|
||||||
|
"""The clustering service."""
|
||||||
|
|
||||||
|
valid_versions = [service_filter.ValidVersion('v1')]
|
||||||
|
UNVERSIONED = None
|
||||||
|
|
||||||
|
def __init__(self, version=None):
|
||||||
|
"""Create a clustering service."""
|
||||||
|
super(ClusteringService, self).__init__(
|
||||||
|
service_type='clustering',
|
||||||
|
version=version
|
||||||
|
)
|
||||||
31
openstack/clustering/version.py
Normal file
31
openstack/clustering/version.py
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
|
from openstack.clustering import clustering_service
|
||||||
|
from openstack import resource
|
||||||
|
|
||||||
|
|
||||||
|
class Version(resource.Resource):
|
||||||
|
resource_key = 'version'
|
||||||
|
resources_key = 'versions'
|
||||||
|
base_path = '/'
|
||||||
|
service = clustering_service.ClusteringService(
|
||||||
|
version=clustering_service.ClusteringService.UNVERSIONED
|
||||||
|
)
|
||||||
|
|
||||||
|
# capabilities
|
||||||
|
allow_list = True
|
||||||
|
|
||||||
|
# Properties
|
||||||
|
links = resource.prop('links')
|
||||||
|
status = resource.prop('status')
|
||||||
0
openstack/tests/unit/clustering/__init__.py
Normal file
0
openstack/tests/unit/clustering/__init__.py
Normal file
28
openstack/tests/unit/clustering/test_clustering_service.py
Normal file
28
openstack/tests/unit/clustering/test_clustering_service.py
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# 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 testtools
|
||||||
|
|
||||||
|
from openstack.clustering import clustering_service
|
||||||
|
|
||||||
|
|
||||||
|
class TestClusteringService(testtools.TestCase):
|
||||||
|
|
||||||
|
def test_service(self):
|
||||||
|
sot = clustering_service.ClusteringService()
|
||||||
|
self.assertEqual('clustering', sot.service_type)
|
||||||
|
self.assertEqual('public', sot.visibility)
|
||||||
|
self.assertIsNone(sot.region)
|
||||||
|
self.assertIsNone(sot.service_name)
|
||||||
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
self.assertEqual('v1', sot.valid_versions[0].module)
|
||||||
|
self.assertEqual('v1', sot.valid_versions[0].path)
|
||||||
43
openstack/tests/unit/clustering/test_version.py
Normal file
43
openstack/tests/unit/clustering/test_version.py
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# 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 testtools
|
||||||
|
|
||||||
|
from openstack.clustering import version
|
||||||
|
|
||||||
|
IDENTIFIER = 'IDENTIFIER'
|
||||||
|
EXAMPLE = {
|
||||||
|
'id': IDENTIFIER,
|
||||||
|
'links': '2',
|
||||||
|
'status': '3',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class TestVersion(testtools.TestCase):
|
||||||
|
|
||||||
|
def test_basic(self):
|
||||||
|
sot = version.Version()
|
||||||
|
self.assertEqual('version', sot.resource_key)
|
||||||
|
self.assertEqual('versions', sot.resources_key)
|
||||||
|
self.assertEqual('/', sot.base_path)
|
||||||
|
self.assertEqual('clustering', sot.service.service_type)
|
||||||
|
self.assertFalse(sot.allow_create)
|
||||||
|
self.assertFalse(sot.allow_retrieve)
|
||||||
|
self.assertFalse(sot.allow_update)
|
||||||
|
self.assertFalse(sot.allow_delete)
|
||||||
|
self.assertTrue(sot.allow_list)
|
||||||
|
|
||||||
|
def test_make_it(self):
|
||||||
|
sot = version.Version(EXAMPLE)
|
||||||
|
self.assertEqual(EXAMPLE['id'], sot.id)
|
||||||
|
self.assertEqual(EXAMPLE['links'], sot.links)
|
||||||
|
self.assertEqual(EXAMPLE['status'], sot.status)
|
||||||
Reference in New Issue
Block a user