diff --git a/v1/Application.cfc b/v1/Application.cfc
index ca51ce9..c13b7c7 100644
--- a/v1/Application.cfc
+++ b/v1/Application.cfc
@@ -51,7 +51,7 @@
//variables.framework.docs={};
variables.framework.docs.APIName="Deck API";
- variables.framework.docs.APIVersion="0.103";
+ variables.framework.docs.APIVersion="0.104";
variables.framework.globalHeaders = structNew();
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
diff --git a/v1/resources/instance_ls.cfc b/v1/resources/instance_ls.cfc
index 065842c..e7db520 100644
--- a/v1/resources/instance_ls.cfc
+++ b/v1/resources/instance_ls.cfc
@@ -149,54 +149,40 @@
e.updater_id
u.login as updater_login
u.shortname as updater_shortname
- (select io.operation from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as last_operation
- (select io.instance_operation_uid::text from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as last_operation_uid
- (select io.submit_result from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as submit_result
+ io.operation as last_operation
+ io.instance_operation_uid::text as last_operation_uid
+ io.submit_result as submit_result
- (select coalesce((io.dt_start IS NOT NULL AND io.dt_finish IS NULL AND io.submit_result='201'),false) from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as operation_is_in_progress
- (select coalesce((io.dt_start IS NULL AND io.submit_result='201'),false) from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as operation_is_pending
+ coalesce((io.dt_start IS NOT NULL AND io.dt_finish IS NULL AND io.submit_result='201'),false) as operation_is_in_progress
+ coalesce((io.dt_start IS NULL AND io.submit_result='201'),false) as operation_is_pending
- (select to_char(io.dt_start, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as operation_dt_start
- (select to_char(io.dt_finish, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as operation_dt_finish
- (select round(extract('epoch' from coalesce(io.dt_finish,CURRENT_TIMESTAMP)- io.dt_start),1) from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as duration
+ to_char(io.dt_start, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as operation_dt_start
+ to_char(io.dt_finish, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as operation_dt_finish
+ round(extract('epoch' from coalesce(io.dt_finish,CURRENT_TIMESTAMP)- io.dt_start),1) as duration
- (select case
+ case
when io.operation IN ('delete', 'suspend') AND io.is_successful then 0 /*null*/
when io.is_successful then extract('epoch' from CURRENT_TIMESTAMP - coalesce(io.dt_finish,CURRENT_TIMESTAMP))
else 0 end
- from instance_operation io
- where io.instance_uid=e.instance_uid
- order by dt_submit desc
- limit 1)
- as uptime
+ as uptime
- (select to_char(io.dt_finish, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_operation io where io.instance_uid=e.instance_uid AND io.is_successful AND io.operation='create' order by dt_submit desc limit 1) as dt_deploy
- (select instance_data::text from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as instance_data
- (select st.instance_state_uid::text from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as instance_state_uid
- (select st.is_test from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as is_test
- coalesce((select st.instance_data->>'isDeleted' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1),'false') as is_deleted
- (select st.instance_data->>'isSuspended' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as suspended
- (select cast(st.instance_data->>'params' as json)->>'resourceRealm' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as resource_realm
- (select to_char(st.dt_state, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as dt_state
-
- (case
- when
- (select st.instance_data->>'isDeleted' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) = 'true' then 'deleted'
- when
- (select st.instance_data->>'isSuspended' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) = 'true' then 'suspended'
- when
- (select coalesce(st.instance_data->>'isDeleted','false') from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) = 'false'
- AND
- (select coalesce(st.instance_data->>'isSuspended','false') from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) = 'false'
- then 'running'
- when
- not exists (select * from instance_operation o where o.instance_uid=e.instance_uid) then 'not configured'
- when
- not exists (select * from instance_state st where st.instance_uid=e.instance_uid) then 'not created'
- else null end
- ) as explained_status
-
- (select max(version) from instance_state st where st.instance_uid=e.instance_uid) as version
+ to_char(io.dt_finish, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as dt_deploy
+ st.instance_data::text as instance_data
+ st.instance_state_uid::text as instance_state_uid
+ st.is_test as is_test
+ coalesce(st.instance_data->>'isDeleted','false') as is_deleted
+ st.instance_data->>'isSuspended' as suspended
+ cast(st.instance_data->>'params' as json)->>'resourceRealm' as resource_realm
+ to_char(st.dt_state, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as dt_state
+ (case
+ when st.is_deleted = 'true' then 'deleted'
+ when st.is_suspended = 'true' then 'suspended'
+ when coalesce(st.is_deleted,'false') = 'false' AND coalesce(st.is_suspended, 'false') = 'false' then 'running'
+ when io.instance_uid IS NULL then 'not configured'
+ when st.instance_uid IS NULL then 'not created'
+ else null end
+ ) as explained_status
+ st.version
@@ -218,6 +204,17 @@
join contragent k on (d.contragent_id=k.contragent_id)
join svc v on (e.service_id=v.svc_id)
left outer join usr u on (e.updater_id=u.usr_id)
+ 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
+ from instance_state ist join (select instance_uid, max(version) as version from instance_state group by 1) lastv
+ on (ist.instance_uid=lastv.instance_uid AND ist.version=lastv.version) ) st
+ on (st.instance_uid=e.instance_uid)
+ left outer join (select o.instance_operation_uid, o.instance_uid, o.operation, o.dt_submit, o.submit_result, o.dt_start, o.dt_finish, o.is_successful
+ from instance_operation o join (select instance_uid, max(dt_submit) as dt_submit from instance_operation group by 1) lastv
+ on (o.instance_uid=lastv.instance_uid AND o.dt_submit=lastv.dt_submit) ) io
+ on (e.instance_uid=io.instance_uid)
where s.specification_id=
AND (
@@ -243,6 +240,17 @@
join contragent k on (d.contragent_id=k.contragent_id)
join svc v on (e.service_id=v.svc_id)
left outer join usr u on (e.updater_id=u.usr_id)
+ 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
+ from instance_state ist join (select instance_uid, max(version) as version from instance_state group by 1) lastv
+ on (ist.instance_uid=lastv.instance_uid AND ist.version=lastv.version) ) st
+ on (st.instance_uid=e.instance_uid)
+ left outer join (select o.instance_operation_uid, o.instance_uid, o.operation, o.dt_submit, o.submit_result, o.dt_start, o.dt_finish, o.is_successful
+ from instance_operation o join (select instance_uid, max(dt_submit) as dt_submit from instance_operation group by 1) lastv
+ on (o.instance_uid=lastv.instance_uid AND o.dt_submit=lastv.dt_submit) ) io
+ on (e.instance_uid=io.instance_uid)
where s.specification_id=
@@ -259,6 +267,7 @@
limit #arguments.pageSize#
offset #arguments.pageSize*(arguments.page-1)#
+
select count(*) as cnt
@@ -268,6 +277,19 @@
join contract d on (s.contract_id=d.contract_id)
join contragent k on (d.contragent_id=k.contragent_id)
join svc v on (e.service_id=v.svc_id)
+
+ 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
+ from instance_state ist join (select instance_uid, max(version) as version from instance_state group by 1) lastv
+ on (ist.instance_uid=lastv.instance_uid AND ist.version=lastv.version) ) st
+ on (st.instance_uid=e.instance_uid)
+ left outer join (select o.instance_operation_uid, o.instance_uid, o.operation, o.dt_submit, o.submit_result, o.dt_start, o.dt_finish, o.is_successful
+ from instance_operation o join (select instance_uid, max(dt_submit) as dt_submit from instance_operation group by 1) lastv
+ on (o.instance_uid=lastv.instance_uid AND o.dt_submit=lastv.dt_submit) ) io
+ on (e.instance_uid=io.instance_uid)
+
where s.specification_id=
@@ -302,7 +324,7 @@
-
+
@@ -442,3 +464,48 @@
+
\ No newline at end of file