diff --git a/requirements.txt b/requirements.txt
index 2d0d0e51..5cea7cd8 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -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
diff --git a/setup.cfg b/setup.cfg
index 22beaae1..59ab40f2 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -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
diff --git a/zunclient/osc/__init__.py b/zunclient/osc/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/zunclient/osc/plugin.py b/zunclient/osc/plugin.py
new file mode 100644
index 00000000..d9582dba
--- /dev/null
+++ b/zunclient/osc/plugin.py
@@ -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
diff --git a/zunclient/tests/unit/osc/__init__.py b/zunclient/tests/unit/osc/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/zunclient/tests/unit/osc/test_plugin.py b/zunclient/tests/unit/osc/test_plugin.py
new file mode 100644
index 00000000..9a90ca57
--- /dev/null
+++ b/zunclient/tests/unit/osc/test_plugin.py
@@ -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')