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:
Namrata Sitlani 2016-12-12 07:38:27 +00:00 committed by Namrata
parent fd44c2beea
commit 263d1a956e
6 changed files with 92 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

55
zunclient/osc/plugin.py Normal file
View 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

View File

View 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')