Object API commands using our REST API layer

* Add object-store API to ClientManager
* Add object-store client
* Add Object API library in openstackclient.object.v1.lib
* Add Object API {container,object} list commands
* Add library tests
* Add command tests

This should complete the Object v1 container and object list commands

Change-Id: Ib1770d45efa8871959826b85faafa1e0bcef0a03
This commit is contained in:
Dean Troyer
2013-08-20 15:13:41 -05:00
parent ce0d303911
commit 4a69e441a0
5 changed files with 25 additions and 2 deletions

View File

@@ -20,6 +20,7 @@ import logging
from openstackclient.compute import client as compute_client
from openstackclient.identity import client as identity_client
from openstackclient.image import client as image_client
from openstackclient.object import client as object_client
from openstackclient.volume import client as volume_client
@@ -44,6 +45,7 @@ class ClientManager(object):
compute = ClientCache(compute_client.make_client)
identity = ClientCache(identity_client.make_client)
image = ClientCache(image_client.make_client)
object = ClientCache(object_client.make_client)
volume = ClientCache(volume_client.make_client)
def __init__(self, token=None, url=None, auth_url=None, project_name=None,

View File

@@ -38,6 +38,7 @@ KEYRING_SERVICE = 'openstack'
DEFAULT_COMPUTE_API_VERSION = '2'
DEFAULT_IDENTITY_API_VERSION = '2.0'
DEFAULT_IMAGE_API_VERSION = '1'
DEFAULT_OBJECT_API_VERSION = '1'
DEFAULT_VOLUME_API_VERSION = '1'
DEFAULT_DOMAIN = 'default'
@@ -187,6 +188,15 @@ class OpenStackShell(app.App):
help='Image API version, default=' +
DEFAULT_IMAGE_API_VERSION +
' (Env: OS_IMAGE_API_VERSION)')
parser.add_argument(
'--os-object-api-version',
metavar='<object-api-version>',
default=env(
'OS_OBJECT_API_VERSION',
default=DEFAULT_OBJECT_API_VERSION),
help='Object API version, default=' +
DEFAULT_OBJECT_API_VERSION +
' (Env: OS_OBJECT_API_VERSION)')
parser.add_argument(
'--os-volume-api-version',
metavar='<volume-api-version>',
@@ -339,14 +349,15 @@ class OpenStackShell(app.App):
'compute': self.options.os_compute_api_version,
'identity': self.options.os_identity_api_version,
'image': self.options.os_image_api_version,
'object-store': self.options.os_object_api_version,
'volume': self.options.os_volume_api_version,
}
# Add the API version-specific commands
for api in self.api_version.keys():
version = '.v' + self.api_version[api].replace('.', '_')
self.command_manager.add_command_group(
'openstack.' + api + version)
cmd_group = 'openstack.' + api.replace('-', '_') + version
self.command_manager.add_command_group(cmd_group)
# Commands that span multiple APIs
self.command_manager.add_command_group(

View File

@@ -44,6 +44,11 @@ class FakeClientManager(object):
pass
class FakeRESTApi(object):
def __init__(self):
pass
class FakeResource(object):
def __init__(self, manager, info, loaded=False):
self.manager = manager

View File

@@ -71,6 +71,7 @@ class TestCommand(TestCase):
self.fake_stdout = fakes.FakeStdout()
self.app = fakes.FakeApp(self.fake_stdout)
self.app.client_manager = fakes.FakeClientManager()
self.app.restapi = fakes.FakeRESTApi()
def check_parser(self, cmd, args, verify_args):
cmd_parser = cmd.get_parser('check_parser')

View File

@@ -239,6 +239,10 @@ openstack.compute.v2 =
server_unrescue = openstackclient.compute.v2.server:UnrescueServer
server_unset = openstackclient.compute.v2.server:UnsetServer
openstack.object_store.v1 =
container_list = openstackclient.object.v1.container:ListContainer
object_list = openstackclient.object.v1.object:ListObject
openstack.volume.v1 =
snapshot_create = openstackclient.volume.v1.snapshot:CreateSnapshot
snapshot_delete = openstackclient.volume.v1.snapshot:DeleteSnapshot