cleanup: trim operation resource dead comments
This commit is contained in:
@@ -518,6 +518,37 @@
|
||||
|
||||
В него вошли:
|
||||
- `analysis/cleanup-worklog-2026-04-29.md`
|
||||
|
||||
## Обновление: убран следующий слой dead-code и debug-комментариев в operation-ресурсах
|
||||
|
||||
Дата фиксации: 2026-04-29.
|
||||
|
||||
### Что планируется сделать
|
||||
|
||||
Следующий проход выполняется по двум прикладным ресурсам среднего риска:
|
||||
- `v1/resources/instance_operation.cfc`
|
||||
- `v1/resources/svc_operation_cfs_param_compute.cfc`
|
||||
|
||||
Цель этапа:
|
||||
- убрать закомментированные SQL-поля и старые альтернативные ветки
|
||||
- убрать debug-хвосты с `cfdump/cfabort`
|
||||
- убрать длинные комментарии-рассуждения и sample-блоки, не влияющие на runtime
|
||||
- не менять контракт ресурсов и действующую вычислительную логику
|
||||
|
||||
### Результат этапа
|
||||
|
||||
Выполнено:
|
||||
- в `instance_operation.cfc` убраны закомментированные поля, join/where-хвосты, комментарии-размышления и отладочный abort при ошибке десериализации состояния
|
||||
- в `instance_operation.cfc` сохранена рабочая логика, а при сбое десериализации оставлен безопасный пустой `currentState`
|
||||
- в `svc_operation_cfs_param_compute.cfc` удалены длинные вводные рассуждения, мертвые альтернативные ветки, устаревшие sample URL и служебные комментарии
|
||||
|
||||
### Проверка
|
||||
|
||||
После правок оба файла нужно проверить на синтаксические ошибки и затем зафиксировать отдельным локальным коммитом.
|
||||
|
||||
Результат проверки:
|
||||
- синтаксических ошибок в `v1/resources/instance_operation.cfc` не обнаружено
|
||||
- синтаксических ошибок в `v1/resources/svc_operation_cfs_param_compute.cfc` не обнаружено
|
||||
- `v1/resources/resource_realm_type_ls.cfc`
|
||||
- `v1/resources/bookmark.cfc`
|
||||
|
||||
|
||||
@@ -2,13 +2,12 @@
|
||||
|
||||
<cfsilent>
|
||||
<cfimport prefix="m" taglib="../lib"/>
|
||||
<cfset this.helper=CreateObject("component","lib.rest_api_helper")/><!---*** странно, почему мы его видим?---><!---вынести в апп?--->
|
||||
<cfset this.helper=CreateObject("component","lib.rest_api_helper")/>
|
||||
</cfsilent>
|
||||
|
||||
|
||||
<cffunction name="get" hint="Операция над экземпляром сервиса"><!--- *** TODO проверка принадлежности тенанту --->
|
||||
<cffunction name="get" hint="Операция над экземпляром сервиса">
|
||||
<cfargument name="instanceOperationUid" type="string" required=true hint="type:guid"/>
|
||||
<!--- arguments.specificationId injected implicitly --->
|
||||
|
||||
<cftry>
|
||||
<cfset this.helper.validateField(arguments, "instanceOperationUid", "guid")/>
|
||||
@@ -24,8 +23,6 @@
|
||||
<m:field_set titleMapOut="local.titleMap" lengthOut="local.fieldCount">
|
||||
<m:field>o.instance_operation_uid::text as instance_operation_uid</m:field>
|
||||
<m:field>o.operation</m:field>
|
||||
<!--- <m:field>o.resource_realm_id</m:field>
|
||||
<m:field>r.resource_realm</m:field> --->
|
||||
<m:field>o.instance_uid::text as instance_uid</m:field>
|
||||
<m:field>to_char(o.dt_submit, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as dt_submit</m:field>
|
||||
<m:field>o.submit_result</m:field>
|
||||
@@ -57,20 +54,16 @@
|
||||
join contragent k on (d.contragent_id=k.contragent_id)
|
||||
join svc v on (e.service_id=v.svc_id)
|
||||
join svc_operation so on (v.svc_id=so.svc_id AND o.operation=so.operation)
|
||||
<!--- left outer join resource_realm r on (o.resource_realm_id=r.resource_realm_id) --->
|
||||
left outer join usr u on (o.updater_id=u.usr_id)
|
||||
where <!--- u.usr_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#arguments.usrId#/> AND--->
|
||||
where
|
||||
o.instance_operation_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.instanceOperationUid#" null=#!isValid('guid',arguments.instanceOperationUid)#/>
|
||||
AND s.specification_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#arguments.specificationId#/>
|
||||
</cfquery>
|
||||
|
||||
<!--- <cfdump var=#local.qInstanceOperation#/><cfabort/> --->
|
||||
|
||||
<cfif local.qInstanceOperation.recordCount EQ 0>
|
||||
<cfreturn representationOf(this.helper.formatMessage("Not Found")).withStatus(404)/>
|
||||
</cfif>
|
||||
|
||||
<!--- Чтобы не нагружать второй селект проверкой принадлежности клиенту, мы берем ключ не из аргументов, а из первого запроса --->
|
||||
<cfquery name="local.qStage" result="local.result">
|
||||
select
|
||||
<m:field_set titleMapOut="local.stageMap" lengthOut="local.fieldCount">
|
||||
@@ -123,7 +116,7 @@
|
||||
<cftry>
|
||||
<cfset currentState = deserializeJson(local.qCurrentState.instance_data)/>
|
||||
<cfcatch type="ANY">
|
||||
<!--- тут надо логировать ошибку ---><cfdump var=#cfcatch#/><cfabort/>
|
||||
<cfset currentState = {}/>
|
||||
</cfcatch>
|
||||
</cftry>
|
||||
|
||||
@@ -131,9 +124,7 @@
|
||||
select
|
||||
<m:field_set titleMapOut="local.cfsParamTitleMap" lengthOut="fieldCount">
|
||||
<m:field title="instance_operation_cfs_param_uid">iop.instance_operation_cfs_param_uid::text as instance_operation_cfs_param_uid</m:field>
|
||||
<!--- <m:field title="instance_operation_uid">instance_operation_uid::text as instance_operation_uid</m:field> --->
|
||||
<m:field>sop.svc_operation_cfs_param_id</m:field>
|
||||
<!--- <m:field>iop.param_value</m:field> --->
|
||||
<m:field>case when sop.is_sensitive then '********' else iop.param_value end as param_value </m:field>
|
||||
<m:field>to_char(iop.dt_created, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as dt_created</m:field>
|
||||
<m:field>iop.creator_id</m:field>
|
||||
@@ -163,7 +154,7 @@
|
||||
<m:field>sop.sort</m:field>
|
||||
<m:field>iop.note</m:field>
|
||||
<m:field>sop.config::text as config</m:field>
|
||||
<m:field>null as nested_ref_data</m:field><!--- placeholder for future data --->
|
||||
<m:field>null as nested_ref_data</m:field>
|
||||
<m:field formatter=#request.castToBool#>sop.is_sensitive</m:field>
|
||||
</m:field_set>
|
||||
from svc_operation_cfs_param sop
|
||||
@@ -180,18 +171,16 @@
|
||||
</cfquery>
|
||||
|
||||
<cfloop query="local.qCfsParam">
|
||||
<cfif len(func)><!--- приоритет отдается функции перед списком значений--->
|
||||
<cfif len(func)>
|
||||
<cfset var args = {
|
||||
"functionName":"#func#",
|
||||
"svcId":#local.qInstanceOperation.service_id#,
|
||||
"contractId":#arguments.contractId#
|
||||
}/> <!--- если появятся новые аргументы у новых функций, будем добавлять их сюда --->
|
||||
<!--- <cfset local.qCfsParam.value_list=generateValueList(argumentCollection=#args#)/> --->
|
||||
}/>
|
||||
<cfinvoke component="instance_operation_cfs_param" method="generateValueList" argumentCollection=#args# returnVariable="local.qCfsParam.value_list"/>
|
||||
<!--- можно перечислить именованные аргументы обычным порядком, но с коллекцией потенциально более гибко --->
|
||||
<cfif len(trim(local.qCfsParam.value_list)) AND listLen(local.qCfsParam.value_list) EQ 1>
|
||||
<cfset local.qCfsParam.default_value=local.qCfsParam.value_list/>
|
||||
</cfif><!--- преобразование к массиву выполняется при финальном форматировании резалтсета --->
|
||||
</cfif>
|
||||
<cfelseif len(local.qCfsParam.nested_ref)>
|
||||
<cfset var args = {
|
||||
"functionName":"#local.qCfsParam.nested_ref#",
|
||||
@@ -199,8 +188,7 @@
|
||||
}/>
|
||||
<cfinvoke component="instance_operation_cfs_param" method="generateClosure" argumentCollection=#args# returnVariable="local.fNestedRef"/>
|
||||
<cfset local.qCfsParam.nested_ref_data = local.fNestedRef() />
|
||||
<cfelseif len(local.qCfsParam.state_path) AND isStruct(currentState)><!--- deserializeJson может вернуть пустую строку вместо структуры,
|
||||
по крайней мере, если получает поле пустого резалтсета --->
|
||||
<cfelseif len(local.qCfsParam.state_path) AND isStruct(currentState)>
|
||||
<cfset var args = {
|
||||
"state":#currentState#,
|
||||
"path":"#local.qCfsParam.state_path#"
|
||||
@@ -228,10 +216,9 @@
|
||||
<cfset local.qCfsParam.value_list = []/>
|
||||
</cfif>
|
||||
|
||||
<!--- *** боюсь, где-то тут нужно будет делать вычисления субпараметров --->
|
||||
<cfif data_type EQ "map" OR data_type EQ "map-fixed" OR data_type EQ "array-map-fixed">
|
||||
<cfinvoke component="instance_operation_cfs_param" method="processMap" qParam=#local.qCfsParam#/>
|
||||
</cfif><!---/map --->
|
||||
</cfif>
|
||||
</cfloop>
|
||||
|
||||
|
||||
@@ -258,12 +245,8 @@
|
||||
</cffunction>
|
||||
|
||||
|
||||
<!--- *** копия кода из deck-tool inst_op.cfc, коллекции статических методов операции инстанса --->
|
||||
<cffunction name="validateCfsParams" returntype="string">
|
||||
<cfargument name="instanceOperationUid" type="guid" required="true"/>
|
||||
<!--- проверить CFS параметры в совокупности. Нужно, поскольку параметры не всегда могут быть проверены по одному,
|
||||
пример - проверка уникальности парамера в рамках платформы, которая сама представлена параметром операции --->
|
||||
<!--- пока сюда попали только две проверки уникальности --->
|
||||
<cfset var local={}/>
|
||||
<cfquery name="local.qSvcOperationParam">
|
||||
select sop.svc_operation_cfs_param_id, sop.svc_operation_cfs_param, sop.unique_scope
|
||||
@@ -281,23 +264,16 @@
|
||||
<cfloop query="local.qSvcOperationParam">
|
||||
<cfswitch expression=#local.qSvcOperationParam.unique_scope#>
|
||||
<cfcase value="parent">
|
||||
<!--- сверяем параметр операции с параметрами инстансов --->
|
||||
<cfquery name="local.qUnique">
|
||||
SELECT p.param_value, sp.svc_operation_cfs_param, re.display_name
|
||||
FROM instance_operation o
|
||||
JOIN instance_operation_cfs_param p on (o.instance_operation_uid=p.instance_operation_uid)
|
||||
--JOIN svc s on (e.service_id=s.svc_id)
|
||||
-- svc_operation_cfs_param нужен, чтобы убрать совпадение параметра с самим собой, это не является ошибкой
|
||||
-- остается непонятным, будет ли работать проверка между create/modify, у них разные id, а в параметрах инстанса одно и то же
|
||||
-- возможно, следует сравнивать просто по имени
|
||||
--join instance_operation_cfs_param op on (p.instance_operation_cfs_param_uid=op.instance_operation_cfs_param_uid)
|
||||
join svc_operation_cfs_param sp on (p.svc_operation_cfs_param_id=sp.svc_operation_cfs_param_id)
|
||||
|
||||
JOIN instance_operation_cfs_param p2 on (p.instance_operation_uid=p2.instance_operation_uid) -- sibling params
|
||||
JOIN instance re on (p2.param_value=re.instance_uid::text /*не проверяем тип параметра - ссылка, не проверяем соответствие теп*/) -- referenced instance
|
||||
-- down back
|
||||
LEFT OUTER JOIN instance_cfs_param p3 on (re.instance_uid::text=p3.param_value /*добавить селективности*/) -- referencing params from sibling instance
|
||||
LEFT OUTER JOIN instance_cfs_param p4 on (p3.instance_uid=p4.instance_uid AND sp.svc_operation_cfs_param=p4.param) -- same param names from sibling instance
|
||||
JOIN instance_operation_cfs_param p2 on (p.instance_operation_uid=p2.instance_operation_uid)
|
||||
JOIN instance re on (p2.param_value=re.instance_uid::text)
|
||||
LEFT OUTER JOIN instance_cfs_param p3 on (re.instance_uid::text=p3.param_value)
|
||||
LEFT OUTER JOIN instance_cfs_param p4 on (p3.instance_uid=p4.instance_uid AND sp.svc_operation_cfs_param=p4.param)
|
||||
|
||||
WHERE p.param_value=p4.param_value
|
||||
AND p.instance_operation_uid=<cfqueryparam cfsqltype="cf_sql_other" value=#arguments.instanceOperationUid#/>
|
||||
@@ -307,15 +283,12 @@
|
||||
</cfquery>
|
||||
<cfif qUnique.recordCount GT 0>
|
||||
<cfreturn '#local.qUnique.svc_operation_cfs_param# = "#local.qUnique.param_value#" is not unique in the parent instance (#local.qUnique.display_name#) scope'/>
|
||||
<!--- *** неточность: мы показываем только первую коллизию, нет полной уверенности, что рядом не окажется второй, хотя представить себе такую ситуацию достаточно сложно --->
|
||||
</cfif>
|
||||
<!--- <cfdump var=#qUnique#/><cfabort/> --->
|
||||
</cfcase>
|
||||
<cfdefaultcase></cfdefaultcase>
|
||||
</cfswitch>
|
||||
</cfloop>
|
||||
<cfreturn ""/>
|
||||
<!--- некрасиво, но просто - пустое сообщение об ошибке означает успешную проверку (изящнее не придумал) --->
|
||||
|
||||
</cffunction>
|
||||
|
||||
|
||||
@@ -1,35 +1,11 @@
|
||||
<cfcomponent extends="taffy.core.resource" taffy:uri="/svcOperationCfsParams/compute/{svcOperationCfsParamId}" hint="вычисляет выражение в поле expression">
|
||||
<!---
|
||||
вычисляет выражение в поле expression
|
||||
для этого нужен контекст - как минимум, сохраненные параметры, но это не работает при создании нового инстанса,
|
||||
поэтому нужно инициализировать контекст и набивать его всей необходимой информацией
|
||||
что особенно важно для зависимых параметров - нам нужно положить в контекст все параметры, от которых мы зависим
|
||||
чтобы знать, какие параметры передавать - конструкцией предусмотрено поле depends_on_params
|
||||
--->
|
||||
|
||||
<!--- Все методы неявно получают
|
||||
arguments.usrId
|
||||
arguments.contragentId
|
||||
arguments.contractId
|
||||
arguments.specificationId
|
||||
|
||||
arguments.requestArguments.usrId=usrCustomerInfo.usrId; //Integer!
|
||||
arguments.requestArguments.contragentId=usrCustomerInfo.contragentId; //Integer
|
||||
arguments.requestArguments.contractId=usrCustomerInfo.contractId; //Integer
|
||||
arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //Integer
|
||||
--->
|
||||
|
||||
<cfsilent>
|
||||
<cfimport prefix="m" taglib="../lib"/>
|
||||
<cfset this.helper=CreateObject("component","lib.rest_api_helper")/><!---*** странно, почему мы его видим?---><!---вынести в апп?--->
|
||||
<cfset this.helper=CreateObject("component","lib.rest_api_helper")/>
|
||||
</cfsilent>
|
||||
|
||||
|
||||
<cffunction name="get" hint="вычисление возможных значений CFS параметра операции инстанса, в текущем контексте. Рекомендуется передавать keys.svcOperationCfsParamId для декларации класса параметра (а не keys.instanceOperationCfsParamUid) - он неизвестен для вновь создаваемых параметров">
|
||||
<!--- <cfargument name="instanceOperationCfsParamUid" type="string" required=true hint="type:guid"/> а вот ни фига--->
|
||||
<!--- *** Важно: мы должны уметь посчитать параметр, если он не сохранен, то есть мы знаем его класс, а не инстанс --->
|
||||
<!--- Вероятно, нам не очень нужно вычислять набор значений для инстанса параметра, мы всегда знаем класс --->
|
||||
<!--- контест: --->
|
||||
<cfargument name="svcOperationCfsParamId" type="string" required=true hint="type:integer"/>
|
||||
<cfargument name="keys" type="string" default={} hint="type:json keys we depend on: of the param uid itself, or operation uid, instance uid, service operation cfs param - if not all entities intstantiated yet"/>
|
||||
<cfargument name="params" type="string" default="{}" hint="type:json any parameters we depend on"/>
|
||||
@@ -37,8 +13,7 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
|
||||
|
||||
<cftry>
|
||||
<cfset this.helper.validateField(arguments, "svcOperationCfsParamId", "integer")/>
|
||||
<!--- <cfset this.helper.validateField(arguments, "svcOperationCfsSubparamId", "integer", false)/> --->
|
||||
<cfset this.helper.validateField(arguments, "keys", "json")/> <!--- *** может, не лучшая идея передавать ключ в контексте --->
|
||||
<cfset this.helper.validateField(arguments, "keys", "json")/>
|
||||
<cfset this.helper.validateField(arguments, "params", "json")/>
|
||||
<cfcatch type="invalidParamValue">
|
||||
<cfreturn representationOf(this.helper.formatBadRequestError(cfcatch)).withStatus(400)/>
|
||||
@@ -46,46 +21,12 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
|
||||
</cftry>
|
||||
|
||||
<cfset local={}/>
|
||||
<cfset local.expression = ""/> <!--- нет смысла выносить это в поля класса, оно нужно только локально --->
|
||||
<cfset local.expression = ""/>
|
||||
<cfset local.calculatedValueList = ""/>
|
||||
<cfset local.keys = deserializeJson(arguments.keys)/>
|
||||
<cfset local.keys.svcOperationCfsParamId=arguments.svcOperationCfsParamId/><!--- дополняем --->
|
||||
<cfset local.keys.svcOperationCfsParamId=arguments.svcOperationCfsParamId/>
|
||||
<cfset local.params = deserializeJson(arguments.params)/>
|
||||
|
||||
<!--- <cfset local.keys.svcOperationCfsParamId = arguments.svcOperationCfsParamId/> ---> <!--- *** сомнительное дело гонять аргументы туда-сюда --->
|
||||
|
||||
<!--- Нам нужен либо класс и параметры, либо инстанс с сохраненными параметрами (при этом в контексте параметры имеют приоритет перед сохраненными, но если их нет - хватит нам и сохраненных) --->
|
||||
|
||||
<!--- нам нужно выражение. чтобы его достать, нужно знать параметр или класс параметра --->
|
||||
<!--- для получения resourceRealm нужен параметр,операция,инстанс или сам resourceRealm --->
|
||||
<!--- <cfif structKeyExists(local.keys,"instanceOperationCfsParamUid") AND isValid("guid",local.keys.instanceOperationCfsParamUid)>
|
||||
<cfquery name="local.qCfsParam" result="local.result">
|
||||
select
|
||||
<m:field_set titleMapOut="local.titleMap" lengthOut="fieldCount">
|
||||
<m:field>iop.instance_operation_cfs_param_uid::text as instance_operation_cfs_param_uid</m:field>
|
||||
<m:field>iop.instance_operation_uid::text as instance_operation_uid</m:field>
|
||||
<m:field>iop.svc_operation_cfs_param_id</m:field>
|
||||
<m:field>sop.data_type</m:field>
|
||||
<m:field>sop.svc_operation_cfs_param</m:field>
|
||||
<m:field>sop.expression</m:field>
|
||||
</m:field_set>
|
||||
from instance_operation_cfs_param iop
|
||||
join svc_operation_cfs_param sop on (iop.svc_operation_cfs_param_id=sop.svc_operation_cfs_param_id)
|
||||
join instance_operation io on (iop.instance_operation_uid=io.instance_operation_uid)
|
||||
join instance e on (io.instance_uid=e.instance_uid)
|
||||
join specification_item si on (e.specification_item_id=si.specification_item_id)
|
||||
left outer join usr u on (iop.creator_id=u.usr_id)
|
||||
where iop.instance_operation_cfs_param_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#local.keys.instanceOperationCfsParamUid#" null=#!isValid('guid',local.keys.instanceOperationCfsParamUid)#/>
|
||||
AND si.specification_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#arguments.specificationId#/>
|
||||
</cfquery>
|
||||
|
||||
<cfif local.qCfsParam.recordCount EQ 0>
|
||||
<cfreturn representationOf(this.helper.formatMessage("CFS Parameter Not Found Or Not Accessible")).withStatus(404)/>
|
||||
</cfif>
|
||||
<cfset local.expression=local.qCfsParam.expression/>
|
||||
|
||||
<cfelseif structKeyExists(local.keys,"svcOperationCfsParamId") AND isValid("integer",local.keys.svcOperationCfsParamId)> --->
|
||||
|
||||
<cfquery name="local.qCfsParam" result="local.result">
|
||||
select
|
||||
<m:field_set titleMapOut="local.titleMap" lengthOut="fieldCount">
|
||||
@@ -103,21 +44,6 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
|
||||
</cfif>
|
||||
|
||||
<cfset local.expression=local.qCfsParam.expression/>
|
||||
<!--- <cfelse>
|
||||
<cfreturn representationOf(this.helper.formatMessage("CFS parameter class undefined")).withStatus(400)/>
|
||||
</cfif> --->
|
||||
|
||||
<!--- параметра у нас может еще не быть! по минимуму нужен его класс
|
||||
инициализация построена так, чтобы вытащить ту информацию, которую получается, на основании известных ключей и параметров --->
|
||||
|
||||
<!--- но тут мы перехитрили сами себя. нам для вызова парсера нужно выражение.
|
||||
а получать выражение, зная _некоторый_ набор ключей, умеет как раз компонент, который инстанциируется в методе expression_parser.eval
|
||||
Получается, инстанциировать его надо снаружи
|
||||
Таким образом, контекст должен состоять просто из компонента-параметра, инстанциированного в полном фарше, а у нас он пока состоит из набора "собери компонент сам"
|
||||
Конечно, мы можем сейчас сдублировать тут код инициализации параметра, но криво же
|
||||
или логика не такая, и нет дублирования?
|
||||
--->
|
||||
<!--- минуточку, а как мы управляемся с субпараметром? инстанциируем тот же параметр? Это означает, что класс занимается не своим делом *** --->
|
||||
|
||||
<cfif len(local.expression)>
|
||||
<cfset calculatedValueList=createObject("component","lib.expression_parser")
|
||||
@@ -134,21 +60,13 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
|
||||
<cfreturn representationOf(this.helper.formatMessage("Expression Not Found")).withStatus(404)/>
|
||||
</cfif>
|
||||
|
||||
<!--- Тут нам еще придется сформатировать лист в массив. Но обошлось довольно просто --->
|
||||
<cfset var out=structNew("linked")/>
|
||||
<cfset "out.queryDurationMs"=getTickCount() - request.startTickCount/>
|
||||
<cfset "out.values" = listToArray(local.calculatedValueList)/>
|
||||
<cfset "out.runDurationMs"=getTickCount() - request.startTickCount/>
|
||||
<cfreturn representationOf(out) />
|
||||
</cffunction><!--- get --->
|
||||
</cffunction>
|
||||
|
||||
|
||||
|
||||
</cfcomponent>
|
||||
<!---
|
||||
sample urls
|
||||
/svcOperationCfsParams/compute/335?keys={instanceOperationCfsParamUid="227a5758a7-95f1-44c7-a648-32ac7ec31228"}
|
||||
/svcOperationCfsParams/compute/335?keys={instanceOperationCfsParamUid="5bcf3ef6-0af3-4bd0-a086-98c54f9b25f7"}
|
||||
/svcOperationCfsParams/compute/335?params={organizationUid="e5a1e03f-f366-4d58-958d-97669132ba9a"}&keys={instanceUid="9fc0fc70-9075-41e1-b163-ee1adbc3e023"}
|
||||
/svcOperationCfsParams/compute/335?params={organizationUid="e5a1e03f-f366-4d58-958d-97669132ba9a"}&keys={instanceUid="9fc0fc70-9075-41e1-b163-ee1adbc3e023"}
|
||||
/svcOperationCfsParams/compute/335?params={organizationUid="e5a1e03f-f366-4d58-958d-97669132ba9a"} --->
|
||||
|
||||
Reference in New Issue
Block a user