From dc8922305daf201ca0b838e396fbfe7c9fab1d10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=8F=E5=8E=9F=E7=94=B1=E5=B7=B1?= Date: Fri, 27 Feb 2026 11:27:47 +0900 Subject: [PATCH 1/2] :sparkles: Support icc operation command IF-16226 --- eclcli/provider_connectivity/v1/operation.py | 90 ++++++++++++++++++++ setup.cfg | 4 +- 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 eclcli/provider_connectivity/v1/operation.py diff --git a/eclcli/provider_connectivity/v1/operation.py b/eclcli/provider_connectivity/v1/operation.py new file mode 100644 index 0000000..6c79967 --- /dev/null +++ b/eclcli/provider_connectivity/v1/operation.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- + +try: + import json +except ImportError: + import simplejson as json +import copy +from eclcli.common import command +from eclcli.common import utils +from eclcli.i18n import _ # noqa + + +class ListOperation(command.Lister): + _description = _("List operations of between tenants connect") + + def get_parser(self, prog_name): + parser = super(ListOperation, self).get_parser(prog_name) + parser.add_argument( + '--resource_id', + metavar='', + help='Resource ID to query operations [Type: String]') + return parser + + def take_action(self, parsed_args): + client = self.app.eclsdk.conn.provider_connectivity + + columns = [ + 'ID', + 'Resource ID', + 'Request Type', + 'Reception Datetime', + 'Commit Datetime', + 'Status', + ] + column_headers = copy.deepcopy(columns) + + data = client.operations() + + resource_id = getattr(parsed_args, 'resource_id', None) + if resource_id: + data = [datum for datum in data + if datum.resource_id == resource_id] + + sorted(data, + key=lambda datum: datum.reception_datetime, + reverse=True) + + return (column_headers, + (utils.get_item_properties( + s, columns, + formatters={'Metadata': utils.format_dict}, + ) for s in data)) + + +class ShowOperation(command.ShowOne): + _description = _("Show operation of between tenants connect") + + def get_parser(self, prog_name): + parser = super(ShowOperation, self).\ + get_parser(prog_name) + parser.add_argument( + 'operation_id', + metavar='', + help='ID of operation id to look up.') + return parser + + def take_action(self, parsed_args): + client = self.app.eclsdk.conn.provider_connectivity + + rows = [ + 'ID', + 'Resource ID', + 'Request Type', + 'Status', + 'Reception Datetime', + 'Commit Datetime', + 'Request Body', + 'Error', + 'Resource Type', + ] + row_headers = rows + + data = client.get_operation(parsed_args.operation_id) + + if data.request_body: + req_body = data.request_body + req_body_dict = json.loads(req_body) if type(req_body) is str else req_body + setattr(data, 'request_body', json.dumps(req_body_dict, indent=2)) + + return row_headers, (utils.get_item_properties(data, rows)) diff --git a/setup.cfg b/setup.cfg index 0871f7a..1af19d6 100755 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = eclcli -version = 4.6.1 +version = 4.7.0 summary = CLI for Enterprise Cloud 2.0 description-file = README.rst @@ -331,6 +331,8 @@ ecl.provider_connectivity.v1 = icc_network_show = eclcli.provider_connectivity.v1.address_assignment:ShowICCNetwork icc_subnet_list = eclcli.provider_connectivity.v1.address_assignment:ListICCSubnet icc_subnet_show = eclcli.provider_connectivity.v1.address_assignment:ShowICCSubnet + icc_operation_list = eclcli.provider_connectivity.v1.operation:ListOperation + icc_operation_show = eclcli.provider_connectivity.v1.operation:ShowOperation ecl.dns.v2 = dns_zone_create = eclcli.dns.v2.zone:CreateZone dns_zone_list = eclcli.dns.v2.zone:ListZone From 1af30315423ef0302170e2286a6e11b7069c24f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=8F=E5=8E=9F=E7=94=B1=E5=B7=B1?= Date: Mon, 2 Mar 2026 17:01:40 +0900 Subject: [PATCH 2/2] :sparkles: Support icc operation command IF-16226 --- eclcli/provider_connectivity/v1/operation.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/eclcli/provider_connectivity/v1/operation.py b/eclcli/provider_connectivity/v1/operation.py index 6c79967..04af615 100644 --- a/eclcli/provider_connectivity/v1/operation.py +++ b/eclcli/provider_connectivity/v1/operation.py @@ -30,7 +30,7 @@ def take_action(self, parsed_args): 'Request Type', 'Reception Datetime', 'Commit Datetime', - 'Status', + 'Operation Status', ] column_headers = copy.deepcopy(columns) @@ -71,7 +71,7 @@ def take_action(self, parsed_args): 'ID', 'Resource ID', 'Request Type', - 'Status', + 'Operation Status', 'Reception Datetime', 'Commit Datetime', 'Request Body', @@ -87,4 +87,9 @@ def take_action(self, parsed_args): req_body_dict = json.loads(req_body) if type(req_body) is str else req_body setattr(data, 'request_body', json.dumps(req_body_dict, indent=2)) + if data.error: + err = data.error + err_dict = json.loads(err) if type(err) is str else err + setattr(data, 'error', json.dumps(err_dict, indent=2)) + return row_headers, (utils.get_item_properties(data, rows))