084 availableResourceRealms bugfix

This commit is contained in:
msyu
2025-04-07 23:30:20 +03:00
parent da5f32b6a7
commit 74f906f28b
3 changed files with 25 additions and 20 deletions
+1 -1
View File
@@ -51,7 +51,7 @@
//variables.framework.docs={};
variables.framework.docs.APIName="Deck API";
variables.framework.docs.APIVersion="0.083";
variables.framework.docs.APIVersion="0.084";
variables.framework.globalHeaders = structNew();
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
+2 -17
View File
@@ -307,11 +307,10 @@
<cfset local.instanceUid=#createGUID()#/>
<!--- </cfif> --->
<!--- ****** проверка доступности платформы ***** --->
<cftry>
<cfset this.helper.keyExistsAndValid(arguments, "serviceId", "integer")/>
<cfset checkDisplayName(arguments.displayName, arguments.usrId, local.instanceUid)/>
<cfset checkResourceRealmId(arguments.resourceRealmId, arguments.usrId, arguments.serviceId)/>
<!--- делаем вставку в спецификацию и таблицу экземпляров --->
<cfquery name="local.qSpecItem">
@@ -360,21 +359,7 @@
</cffunction>
<cffunction name="checkResourceRealmId">
<cfargument name="resourceRealmId" type="numeric" required=true/>
<cfargument name="usrId" type="numeric" required=true/>
<cfset var local={}/>
<cfif NOT resourceRealmId GT 0>
<cfthrow type="InvalidParamValue" message="resource realm undefined" detail="Не выбрана ресурсная платформа"/>
</cfif>
Проверить соответствие сервису
Проверить доступ (это предварительная проверка! настоящая проверка перед запуском операции)
<cfreturn/>
</cffunction>
+22 -2
View File
@@ -10,7 +10,7 @@
<cffunction name="post" hint="Создание новой операции. Отдельно загружаются CFS параметры, генерируются RFS параметры. Запускается операция отдельным вызовом. До запуска CFS параметры могут корректироваться (а надо?). Запущенная операция вместе с параметрами навсегда становится Read Only (при желании можем реализовать ее клонирование). Можем реализовать корректировку параметров, но непонятно, зачем. Когда мы конфигурируем инстанс, на самом деле мы задаем CFS параметры операции create. Можно править параметры, а можно пересоздать операцию с новыми параметрами. Предусмотреть удаление (метод DELETE) незапущенной операции?">
<cfargument name="instanceUid" type="string" required=true hint="type:guid"/>
<cfargument name="operation" type="string" required=true hint="type:string decsiption: operation name, e.g. create"/>
<cfargument name="resourceRealmId" type="string" default=-1 hint="type:integer decsiption: идентификатор ресурсной платформы"/>
<cfargument name="resourceRealmId" type="string" default=-1 hint="type:integer decsiption: идентификатор ресурсной платформы"/><!--- *** --->
<!--- *** полноценная валидация операции предполагает проверку, что операция поддерживается для данного сервиса и текущего состояния инстанса. Можно представить себе зависимость этого от параметров, но хотелось бы избежать такого усложнения --->
<!--- Можно отметить, что, например, допустимость операции delete зависит от контекста - сколько времени сервис остановлен --->
<cftry>
@@ -30,6 +30,8 @@
<!--- *** Добавить проверку разрешенных переходов, например, create нельзя сделать на развернутом экземпляре
*** Вероятно, допустимые переходы нужно либо специфицировать в документации, либо явно опубликовать (инстанс может публиковать список допустимых операций) --->
<cfset checkResourceRealmId(arguments.resourceRealmId, arguments.usrId, arguments.serviceId)/>
<cfcatch type="invalidParamValue">
<cfreturn representationOf(this.helper.formatBadRequestError(cfcatch)).withStatus(400)/>
</cfcatch>
@@ -51,7 +53,7 @@
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.usrId#" />
,<cfqueryparam cfsqltype="cf_sql_timestamp" value="#Now()#" />
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.usrId#" />
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.resourceRealmId#" />
,<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.resourceRealmId#"/>
);
</cfquery>
@@ -65,5 +67,23 @@
.withStatus(201, "Created")
/>
</cffunction>
<cffunction name="checkResourceRealmId">
<cfargument name="resourceRealmId" type="numeric" required=true/>
<cfargument name="usrId" type="numeric" required=true/>
<cfargument name="instanceUid" type="guid" required=true/>
<cfset var local={}/>
<cfreturn/> <!--- *************** --->
<cfif NOT resourceRealmId GT 0>
<cfthrow type="InvalidParamValue" message="resource realm undefined" detail="Не выбрана ресурсная платформа"/>
</cfif>
Проверить соответствие сервису
Проверить доступ (это предварительная проверка! настоящая проверка перед запуском операции)
<cfreturn/>
</cffunction>
</cfcomponent>