131 instance_data field removed

This commit is contained in:
msyu
2025-09-01 13:40:38 +03:00
parent f3954bfd7a
commit 9d0e4f20d9
4 changed files with 58 additions and 24 deletions
+2 -2
View File
@@ -50,8 +50,8 @@
//variables.framework.allowCrossDomain = ""; // перепишем явно, возвращая Origin
//variables.framework.docs={};
variables.framework.docs.APIName="Deck API";
variables.framework.docs.APIVersion="0.129"; /*$ git config --global --unset user.password*/
variables.framework.docs.APIName="svc-api";
variables.framework.docs.APIVersion="0.131"; /*instance_data field removed*/ /*$ git config --global --unset user.password*/
variables.framework.globalHeaders = structNew();
+49 -18
View File
@@ -104,8 +104,8 @@
</cfquery><!--- берем local.qInstance.instance_uid ради изоляции (access protection) --->
<cfset local.isCreated = (qCurrentState.recordCount GT 0)/>
<cfset local.isDeleted = (qCurrentState.is_deleted GT 0)/>
<cfset local.isCreated = (local.qCurrentState.recordCount GT 0)/>
<cfset local.isDeleted = (local.qCurrentState.is_deleted GT 0)/>
<!--- <cfdump var=#local.qInstance#/><cfabort/> --->
@@ -189,11 +189,12 @@
--->
<!--- видимо, достаточно нам параметров операции create... но можно и все параметры перебрать --->
<cfquery name="local.qCfsParam" result="local.result">
<cfquery name="local.qCfsParamRef" result="local.result">
select
p.svc_operation_cfs_param
,p.label
,p.descr
,p.is_sensitive
,r.svc_id as ref_svc_id
,r.svc as ref_svc
,r.code as ref_code
@@ -206,13 +207,13 @@
</cfquery>
<cfset var dependencies=[]/>
<!--- <cfset var dependencies=#local.qCfsParam#/> --->
<cfloop query="local.qCfsParam">
<cftry>
<cfset var instanceData=deserializeJson(qCurrentState.instance_data)/>
<cfset var paramName = local.qCfsParam.svc_operation_cfs_param/>
<cfif structKeyExists(instanceData, "params") AND structKeyExists(instanceData.params, paramName)>
<cfset var refKey = structFind(instanceData.params, paramName)/>
<!--- <cfset var dependencies=#local.qCfsParamRef#/> --->
<cftry>
<cfset var local.instanceData=deserializeJson(local.qCurrentState.instance_data)/>
<cfloop query="local.qCfsParamRef">
<cfset var paramName = local.qCfsParamRef.svc_operation_cfs_param/>
<cfif structKeyExists(local.instanceData, "params") AND structKeyExists(local.instanceData.params, paramName)>
<cfset var refKey = structFind(local.instanceData.params, paramName)/>
<cfif isValid("guid",refKey)>
<!--- *** нужно укрепить изоляцию и проконтролировать принадлежность инстанса данному тенанту --->
<cfquery name="qDependency">
@@ -232,14 +233,44 @@
"isAuxiliary": #request.castToBool(qDependency.is_auxiliary)#
}/>
<cfset arrayAppend(dependencies, rec)/>
</cfif>
</cfif>
<cfcatch type="ANY"><!--- *** ---></cfcatch>
</cftry>
</cfloop>
</cfif>
</cfif>
</cfloop>
<cfcatch type="ANY"><!--- *** <cfrethrow/>---></cfcatch>
</cftry>
<!--- ---------------------------------------------------------------------------------- --->
<!--- маскируем секреты *** это не очень похоже на то же самое в списке --->
<cfquery name="local.qCfsParam" result="local.result">
select
p.svc_operation_cfs_param
,p.label
,p.descr
,p.is_sensitive
from svc_operation_cfs_param p
join svc_operation o on (p.svc_operation_id=o.svc_operation_id)
join svc on (o.svc_id=svc.svc_id)
where svc.svc_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#qInstance.service_id#" null=#!isValid('integer',qInstance.service_id)#/>
AND o.operation='create'
</cfquery>
<cftry>
<cfset var local.instanceData=deserializeJson(local.qCurrentState.instance_data)/>
<cfloop query="local.qCfsParam">
<cfset var paramName = local.qCfsParam.svc_operation_cfs_param/>
<cfif structKeyExists(local.instanceData, "params") AND structKeyExists(local.instanceData.params, paramName)>
<!--- маскируем секреты --->
<cfif is_sensitive>
<cfset local.instanceData.params[paramName]="********"/>
</cfif>
</cfif>
</cfloop>
<!--- грубо патчим запрос --->
<cfset local.qCurrentState.instance_data=serializeJson(local.instanceData)/>
<cfcatch type="ANY"><!--- *** <cfrethrow/>---></cfcatch>
</cftry>
<!--- ---------------------------------------------------------------------------------- --->
@@ -248,7 +279,7 @@
<cftry><!--- *** надо бы такие вещи делать асинхронно --->
<cfset vaultUrl=""/>
<cfset instanceData="#deserializeJson(qCurrentState.instance_data)#"/>
<cfset instanceData="#deserializeJson(local.qCurrentState.instance_data)#"/>
<cfif structKeyExists(instanceData,"vaultUrl")>
<cfset vaultUrl=instanceData.vaultUrl/> <!--- v001 --->
<cfelseif structKeyExists(instanceData,"vault")>
@@ -334,7 +365,7 @@
)/>
<!--- <cfset "out.instance.uptime"=(local.qOperation.is_successful GT 0) ? local.qOperation.seconds_passed : 0/> --->
<cfset "out.instance.isCreated"=local.isCreated/>
<cfset "out.instance.isDeleted"=qCurrentState.is_deleted GT 0/>
<cfset "out.instance.isDeleted"=local.qCurrentState.is_deleted GT 0/>
<cfset "out.instance.vaultData"=local.vaultData/>
<cfset "out.instance.state" = (local.qCurrentState.recordCount GT 0) ? this.helper.appendRecord(structNew("linked"), "", local.currentStateTitleMap, local.qCurrentState, this.helper.snake2camel) : {}/>
+6 -3
View File
@@ -29,7 +29,8 @@
"duration"={prefix="inr", type="numeric"},
"uptime"={prefix="inr", type="numeric"},
"dt_deploy"={prefix="inr", type="date"},
"instance_data"={prefix="inr", type="string"},
<!--- "instance_data"={prefix="inr", type="string"}, --->
"monitoring_url"={prefix="inr", type="string"},
"instance_state_uid"={prefix="inr", type="guid"},
"is_deleted"={prefix="inr", type="string"},<!--- not bool --->
"is_suspended"={prefix="inr", type="string"},<!--- not bool --->
@@ -170,12 +171,13 @@
as uptime</m:field>
<m:field>to_char(io.dt_finish, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as dt_deploy</m:field>
<m:field formatter=#function(x){return (deserializeJson(x))}#>st.instance_data::text as instance_data</m:field><!--- *** операция выглядит очень накладно, но можно это поле в дельнейшем не выводить --->
<!--- <m:field formatter=#function(x){return (deserializeJson(x))}#>st.instance_data::text as instance_data</m:field> ---><!--- *** операция выглядит очень накладно, но можно это поле в дельнейшем не выводить --->
<m:field>st.instance_state_uid::text as instance_state_uid</m:field>
<m:field formatter=#request.castToBool#>st.is_test as is_test</m:field>
<m:field formatter=#request.castToBool#>coalesce(st.instance_data->>'isDeleted','false') as is_deleted</m:field><!--- attention it is not bool in state --->
<m:field formatter=#request.castToBool#>st.instance_data->>'isSuspended' as is_suspended</m:field>
<m:field formatter=#request.castToBool#>st.instance_data->'job'->>'pending' as job_is_pending</m:field>
<m:field>st.instance_data->'out'->'monitoring'->>'allDashboards' as monitoring_url</m:field>
<m:field>st.instance_data->'params'->>'resourceRealm' as resource_realm</m:field>
<m:field>to_char(st.dt_state, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as dt_state</m:field>
<!--- <m:field>io.instance_uid::text as io_instance_uid</m:field>
@@ -214,7 +216,8 @@
left outer join (select ist.instance_state_uid, ist.instance_uid, ist.version, ist.dt_state, ist.is_test
,(ist.instance_data->>'isSuspended') as is_suspended
,(ist.instance_data->>'isDeleted') as is_deleted
,(ist.instance_data->'job'->>'pending') as job_is_pending
,(ist.instance_data->'job'->>'pending') as job_is_pending
,(ist.instance_data->'out'->'monitoring'->>'allDashboards') as monitoring_url
,ist.instance_data
from instance_state ist
join (select instance_uid, max(version) as version from instance_state group by 1) lastv
+1 -1
View File
@@ -70,7 +70,7 @@
but for possible value check and verbosity do it in the loop --->
<cfloop query=#local.qCheckCfsParams#>
<cfif (local.qCheckCfsParams.is_required GT 0 AND NOT len(local.qCheckCfsParams.instance_operation_cfs_param_uid) GT 0)><!--- check CFS param existence --->
<cfreturn representationOf(this.helper.formatMessage("required CFS parameter #local.qCheckCfsParams.svc_operation_cfs_param# (#local.qCheckCfsParams.svc_operation_cfs_param_id#) is missing", "Missing required CFS parameter")).withStatus(409)/>
<cfreturn representationOf(this.helper.formatMessage("required CFS parameter #local.qCheckCfsParams.svc_operation_cfs_param# (#local.qCheckCfsParams.svc_operation_cfs_param_id#) is missing", "Missing required CFS parameter")).withStatus(422)/>
<cfelse><!--- validate CFS param--->
<cfset local.cfsParamChecker.checkParam(local.qCheckCfsParams.svc_operation_cfs_param_id, qCheckCfsParams.param_value, qCheckCfsParams.instance_operation_cfs_param_uid)/>
</cfif>