summaryrefslogtreecommitdiff
path: root/openstackclient/image
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/image')
-rw-r--r--openstackclient/image/client.py28
-rw-r--r--openstackclient/image/v1/image.py25
-rw-r--r--openstackclient/image/v2/image.py25
3 files changed, 72 insertions, 6 deletions
diff --git a/openstackclient/image/client.py b/openstackclient/image/client.py
index c55ff853..35779664 100644
--- a/openstackclient/image/client.py
+++ b/openstackclient/image/client.py
@@ -31,9 +31,15 @@ API_VERSIONS = {
"2": "glanceclient.v2.client.Client",
}
+IMAGE_API_TYPE = 'image'
+IMAGE_API_VERSIONS = {
+ '1': 'openstackclient.api.image_v1.APIv1',
+ '2': 'openstackclient.api.image_v2.APIv2',
+}
+
def make_client(instance):
- """Returns an image service client."""
+ """Returns an image service client"""
image_client = utils.get_client_class(
API_NAME,
instance._api_version[API_NAME],
@@ -45,13 +51,31 @@ def make_client(instance):
region_name=instance._region_name,
)
- return image_client(
+ client = image_client(
endpoint,
token=instance.auth.get_token(instance.session),
cacert=instance._cacert,
insecure=instance._insecure,
)
+ # Create the low-level API
+
+ image_api = utils.get_client_class(
+ API_NAME,
+ instance._api_version[API_NAME],
+ IMAGE_API_VERSIONS)
+ LOG.debug('Instantiating image api: %s', image_api)
+
+ client.api = image_api(
+ session=instance.session,
+ endpoint=instance.get_endpoint_for_service_type(
+ IMAGE_API_TYPE,
+ region_name=instance._region_name,
+ )
+ )
+
+ return client
+
def build_option_parser(parser):
"""Hook to add global options"""
diff --git a/openstackclient/image/v1/image.py b/openstackclient/image/v1/image.py
index d7ece254..fc70000d 100644
--- a/openstackclient/image/v1/image.py
+++ b/openstackclient/image/v1/image.py
@@ -300,6 +300,21 @@ class ListImage(lister.Lister):
metavar="<size>",
help="Number of images to request in each paginated request",
)
+ public_group = parser.add_mutually_exclusive_group()
+ public_group.add_argument(
+ "--public",
+ dest="public",
+ action="store_true",
+ default=False,
+ help="List only public images",
+ )
+ public_group.add_argument(
+ "--private",
+ dest="private",
+ action="store_true",
+ default=False,
+ help="List only private images",
+ )
parser.add_argument(
'--long',
action='store_true',
@@ -316,15 +331,21 @@ class ListImage(lister.Lister):
kwargs = {}
if parsed_args.page_size is not None:
kwargs["page_size"] = parsed_args.page_size
+ if parsed_args.public:
+ kwargs['public'] = True
+ if parsed_args.private:
+ kwargs['private'] = True
+ kwargs['detailed'] = parsed_args.long
- data = image_client.images.list(**kwargs)
if parsed_args.long:
columns = ('ID', 'Name', 'Disk Format', 'Container Format',
'Size', 'Status')
else:
columns = ("ID", "Name")
- return (columns, (utils.get_item_properties(s, columns) for s in data))
+ data = image_client.api.image_list(**kwargs)
+
+ return (columns, (utils.get_dict_properties(s, columns) for s in data))
class SaveImage(command.Command):
diff --git a/openstackclient/image/v2/image.py b/openstackclient/image/v2/image.py
index d5ee692c..2e0fd393 100644
--- a/openstackclient/image/v2/image.py
+++ b/openstackclient/image/v2/image.py
@@ -65,6 +65,21 @@ class ListImage(lister.Lister):
metavar="<size>",
help="Number of images to request in each paginated request",
)
+ public_group = parser.add_mutually_exclusive_group()
+ public_group.add_argument(
+ "--public",
+ dest="public",
+ action="store_true",
+ default=False,
+ help="List only public images",
+ )
+ public_group.add_argument(
+ "--private",
+ dest="private",
+ action="store_true",
+ default=False,
+ help="List only private images",
+ )
parser.add_argument(
'--long',
action='store_true',
@@ -81,15 +96,21 @@ class ListImage(lister.Lister):
kwargs = {}
if parsed_args.page_size is not None:
kwargs["page_size"] = parsed_args.page_size
+ if parsed_args.public:
+ kwargs['public'] = True
+ if parsed_args.private:
+ kwargs['private'] = True
+ kwargs['detailed'] = parsed_args.long
- data = image_client.images.list(**kwargs)
if parsed_args.long:
columns = ('ID', 'Name', 'Disk Format', 'Container Format',
'Size', 'Status')
else:
columns = ("ID", "Name")
- return (columns, (utils.get_item_properties(s, columns) for s in data))
+ data = image_client.api.image_list(**kwargs)
+
+ return (columns, (utils.get_dict_properties(s, columns) for s in data))
class SaveImage(command.Command):