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