Initial commit for openstack-client support in python-zunclient
This patch enables openstack-client support in python-zunclient by setting entry points and implementing two interface functions `make_client(instance)` and `build_option_parser(parser)`. Partially implements:blueprint zun-osc-plugin Change-Id: I79e0a79f2e8f606098476db1f78ecd1f1f5d2241
This commit is contained in:
parent
fd44c2beea
commit
263d1a956e
@ -3,6 +3,7 @@
|
||||
# process, which may cause wedges in the gate later.
|
||||
|
||||
pbr>=1.6 # Apache-2.0
|
||||
PrettyTable>=0.7.1,<0.8 # BSD
|
||||
osc-lib>=1.2.0 # Apache-2.0
|
||||
oslo.i18n>=2.1.0 # Apache-2.0
|
||||
oslo.utils>=3.16.0 # Apache-2.0
|
||||
PrettyTable>=0.7.1,<0.8 # BSD
|
||||
|
@ -28,6 +28,9 @@ packages =
|
||||
console_scripts =
|
||||
zun = zunclient.shell:main
|
||||
|
||||
openstack.cli.extension =
|
||||
container = zunclient.osc.plugin
|
||||
|
||||
[build_sphinx]
|
||||
source-dir = doc/source
|
||||
build-dir = doc/build
|
||||
|
0
zunclient/osc/__init__.py
Normal file
0
zunclient/osc/__init__.py
Normal file
55
zunclient/osc/plugin.py
Normal file
55
zunclient/osc/plugin.py
Normal file
@ -0,0 +1,55 @@
|
||||
# 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 logging
|
||||
|
||||
from osc_lib import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
DEFAULT_CONTAINER_API_VERSION = "1"
|
||||
API_VERSION_OPTION = "os_container_api_version"
|
||||
API_NAME = "container"
|
||||
API_VERSIONS = {
|
||||
'1': 'zunclient.v1.client.Client',
|
||||
}
|
||||
|
||||
|
||||
def make_client(instance):
|
||||
"""Returns a zun service client"""
|
||||
zun_client = utils.get_client_class(
|
||||
API_NAME,
|
||||
instance._api_version[API_NAME],
|
||||
API_VERSIONS)
|
||||
LOG.debug("Instantiating zun client: {0}".format(
|
||||
zun_client))
|
||||
|
||||
client = zun_client(
|
||||
region_name=instance._region_name,
|
||||
session=instance.session,
|
||||
service_type='container',
|
||||
)
|
||||
return client
|
||||
|
||||
|
||||
def build_option_parser(parser):
|
||||
"""Hook to add global options"""
|
||||
parser.add_argument(
|
||||
'--os-container-api-version',
|
||||
metavar='<container-api-version>',
|
||||
default=utils.env(
|
||||
'OS_CONTAINER_API_VERSION',
|
||||
default=DEFAULT_CONTAINER_API_VERSION),
|
||||
help=_("Container API version, default={0}"
|
||||
"(Env:OS_CONTAINER_API_VERSION)").format(
|
||||
DEFAULT_CONTAINER_API_VERSION))
|
||||
return parser
|
0
zunclient/tests/unit/osc/__init__.py
Normal file
0
zunclient/tests/unit/osc/__init__.py
Normal file
32
zunclient/tests/unit/osc/test_plugin.py
Normal file
32
zunclient/tests/unit/osc/test_plugin.py
Normal file
@ -0,0 +1,32 @@
|
||||
# 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 mock
|
||||
|
||||
from zunclient.osc import plugin
|
||||
from zunclient.tests import base
|
||||
|
||||
|
||||
class TestContainerPlugin(base.TestCase):
|
||||
|
||||
@mock.patch("zunclient.v1.client.Client")
|
||||
def test_make_client(self, p_client):
|
||||
|
||||
instance = mock.Mock()
|
||||
instance._api_version = {"container": '1'}
|
||||
instance._region_name = 'zun_region'
|
||||
instance.session = 'zun_session'
|
||||
|
||||
plugin.make_client(instance)
|
||||
p_client.assert_called_with(region_name='zun_region',
|
||||
session='zun_session',
|
||||
service_type='container')
|
Loading…
Reference in New Issue
Block a user