diff options
| author | lsmman <lsmman07@gmail.com> | 2021-10-11 22:52:52 +0900 |
|---|---|---|
| committer | Stephen Finucane <sfinucan@redhat.com> | 2022-09-21 10:34:15 +0100 |
| commit | d163a2090471c8f90c8ad84827fb97dfbf06280b (patch) | |
| tree | b066eca0e976bdc407da7339844a2bad83acde76 /openstackclient/image/v2 | |
| parent | 4024bdb3933dd79eec4bcf99c13f3dbf17add40b (diff) | |
| download | python-openstackclient-d163a2090471c8f90c8ad84827fb97dfbf06280b.tar.gz | |
image: Add 'image task show' commands
This replaces and the 'glance task-show' command. For example:
$ image task show <TASK_ID>
Change-Id: I74cb23e436c373fe238804b903bbeb28f643d5af
Diffstat (limited to 'openstackclient/image/v2')
| -rw-r--r-- | openstackclient/image/v2/task.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/openstackclient/image/v2/task.py b/openstackclient/image/v2/task.py new file mode 100644 index 00000000..5f0c4ed5 --- /dev/null +++ b/openstackclient/image/v2/task.py @@ -0,0 +1,78 @@ +# 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. + +from osc_lib.cli import format_columns +from osc_lib.command import command + +from openstackclient.i18n import _ + + +def _format_task(task): + """Format an task to make it more consistent with OSC operations.""" + + info = {} + properties = {} + + # the only fields we're not including is "links", "tags" and the properties + fields_to_show = [ + 'created_at', + 'expires_at', + 'id', + 'input', + 'message', + 'owner_id', + 'result', + 'status', + 'type', + 'updated_at', + ] + + # split out the usual key and the properties which are top-level + for field in fields_to_show: + info[field] = task.get(field) + + for key in task: + if key in fields_to_show: + continue + + if key in {'location', 'name', 'schema'}: + continue + + properties[key] = task.get(key) + + # add properties back into the dictionary as a top-level key + info['properties'] = format_columns.DictColumn(properties) + + return info + + +class ShowTask(command.ShowOne): + _description = _('Display task details') + + def get_parser(self, prog_name): + parser = super(ShowTask, self).get_parser(prog_name) + + parser.add_argument( + 'task', + metavar='<Task ID>', + help=_('Task to display (ID)'), + ) + + return parser + + def take_action(self, parsed_args): + image_client = self.app.client_manager.image + + task = image_client.get_task(parsed_args.task) + info = _format_task(task) + + return zip(*sorted(info.items())) |
