From e3bd404d65b45afd4fdbe5a6da1a73b8ad934e2a Mon Sep 17 00:00:00 2001 From: Patrick Brady Date: Fri, 23 Feb 2018 12:35:46 -0500 Subject: Code fix for attach and detach volumes Cherry-picked to split up commit https://gerrit.onap.org/r/#/c/31149/ into individual jira tickets. open stack consumes cdp-pal openstack jars to connect to cinder, this fix retrives set of volumes from volumeservice provider and performs attach or detach through compute service. Change-Id: I59bce60d9f79ba9285f284fe1f56945e63d0bcba Signed-off-by: Patrick Brady Signed-off-by: kusuma kumari M Issue-ID: APPC-448 --- .../operation/impl/AttachVolumeServer.java | 70 +-- .../operation/impl/DettachVolumeServer.java | 92 ++-- .../resources/json/APPC/APPC_AttachVolumeVM.json | 180 +++---- .../resources/json/APPC/APPC_DetachVolumeVM.json | 524 ++++++++++----------- 4 files changed, 436 insertions(+), 430 deletions(-) diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/onap/appc/adapter/iaas/provider/operation/impl/AttachVolumeServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/onap/appc/adapter/iaas/provider/operation/impl/AttachVolumeServer.java index fe42076f3..e27b1594d 100644 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/onap/appc/adapter/iaas/provider/operation/impl/AttachVolumeServer.java +++ b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/onap/appc/adapter/iaas/provider/operation/impl/AttachVolumeServer.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP : APPC * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Copyright (C) 2017 Amdocs * ============================================================================= @@ -25,7 +25,6 @@ package org.onap.appc.adapter.iaas.provider.operation.impl; import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.ATTACHVOLUME_SERVICE; import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - import com.att.cdp.exceptions.ZoneException; import com.att.cdp.zones.ComputeService; import com.att.cdp.zones.Context; @@ -74,48 +73,57 @@ public class AttachVolumeServer extends ProviderServerOperation { String identStr = (ident == null) ? null : ident.toString(); context = getContext(requestContext, vmUrl, identStr); if (context != null) { - tenantName = context.getTenantName();// this variable also is used in case of exception + tenantName = context.getTenantName();// this variable also is + // used in case of + // exception requestContext.reset(); server = lookupServer(requestContext, context, vm.getServerId()); logger.debug(Msg.SERVER_FOUND, vmUrl, context.getTenantName(), server.getStatus().toString()); Context contx = server.getContext(); ComputeService service = contx.getComputeService(); VolumeService volumeService = contx.getVolumeService(); - logger.info("Collecting volume status for volume id: " + volumeId); + logger.info("collecting volume status for volume -id:" + volumeId); List volumes = volumeService.getVolumes(); - logger.info("Size of volume list: " + volumes.size()); - for (Volume volume : volumes) { - logger.info("Processing volume with id: " + volume.getId()); - if (!volume.getId().equals(volumeId)) { + Volume volume = new Volume(); + logger.info("Size of volume list :" + volumes.size()); + if (volumes != null && !volumes.isEmpty()) { + if (!(volumes.contains(volumeId))) { volume.setId(volumeId); - logger.info("Ready to Attach Volume to the server: " + Volume.Status.ATTACHING); + logger.info("Ready to Attach Volume to the server:"); service.attachVolume(server, volume, device); - logger.info("Volume status after performing attach: " + volume.getStatus()); - - validateAttach(volumeService, volumeId, requestContext); + logger.info("Volume status after performing attach:" + volume.getStatus()); + if (validateAttach(volumeService, volumeId)) { + ctx.setAttribute("VOLUME_STATUS", "SUCCESS"); + doSuccess(requestContext); + } else { + String msg = "Failed to attach Volume"; + logger.info("Volume with " + volumeId + " unable to attach"); + ctx.setAttribute("VOLUME_STATUS", "FAILURE"); + doFailure(requestContext, HttpStatus.NOT_IMPLEMENTED_501, msg); + } } else { - String msg = "Volume with id: " + volumeId + " cannot be attached as it already exists"; - logger.info(msg); + String msg = "Volume with volume id " + volumeId + " cannot be attached as it already exists"; + logger.info("Alreday volumes exists:"); + ctx.setAttribute("VOLUME_STATUS", "FAILURE"); doFailure(requestContext, HttpStatus.NOT_IMPLEMENTED_501, msg); } } context.close(); - doSuccess(requestContext); - ctx.setAttribute("VOLUME_STATUS", "SUCCESS"); } else { ctx.setAttribute("VOLUME_STATUS", "CONTEXT_NOT_FOUND"); } } catch (ZoneException e) { String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vmUrl); logger.error(msg); + ctx.setAttribute("VOLUME_STATUS", "FAILURE"); doFailure(requestContext, HttpStatus.NOT_FOUND_404, msg); } catch (RequestFailedException e) { - logger.error("An error occurred in attachVolume", e); + ctx.setAttribute("VOLUME_STATUS", "FAILURE"); doFailure(requestContext, e.getStatus(), e.getMessage()); } catch (Exception ex) { String msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, ex, ex.getClass().getSimpleName(), - ATTACHVOLUME_SERVICE.toString(), vmUrl, tenantName); - logger.error(msg, ex); + ATTACHVOLUME_SERVICE.toString(), vmUrl, tenantName); + ctx.setAttribute("VOLUME_STATUS", "FAILURE"); doFailure(requestContext, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); } return server; @@ -123,24 +131,22 @@ public class AttachVolumeServer extends ProviderServerOperation { @Override protected ModelObject executeProviderOperation(Map params, SvcLogicContext context) - throws APPCException { + throws APPCException { setMDC(Operation.ATTACHVOLUME_SERVICE.toString(), "App-C IaaS Adapter:attachVolume", ADAPTER_NAME); logOperation(Msg.ATTACHINGVOLUME_SERVER, params, context); return attachVolume(params, context); } - private void validateAttach(VolumeService vs, String volId, RequestContext requestContext) - throws RequestFailedException, ZoneException { - - List volList = vs.getVolumes(); - for (Volume v : volList) { - if (v.getId().equals(volId)) { - logger.info("Volume with id: " + volId + " attached successfully"); - doSuccess(requestContext); - } else { - logger.info("Failed to attach volume with id: " + volId); - } + protected boolean validateAttach(VolumeService volumeService, String volumeId) + throws RequestFailedException, ZoneException { + boolean flag = false; + List volumeList = volumeService.getVolumes(); + if (volumeList.contains(volumeId)) { + flag = true; + } else { + flag = false; } + logger.info("validateAttach flag-->" + flag); + return flag; } - } diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/onap/appc/adapter/iaas/provider/operation/impl/DettachVolumeServer.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/onap/appc/adapter/iaas/provider/operation/impl/DettachVolumeServer.java index 6f0ab87be..d9b30cbb8 100644 --- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/onap/appc/adapter/iaas/provider/operation/impl/DettachVolumeServer.java +++ b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/onap/appc/adapter/iaas/provider/operation/impl/DettachVolumeServer.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP : APPC * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Copyright (C) 2017 Amdocs * ============================================================================= @@ -23,9 +23,8 @@ */ package org.onap.appc.adapter.iaas.provider.operation.impl; -import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.ATTACHVOLUME_SERVICE; +import static org.onap.appc.adapter.iaas.provider.operation.common.enums.Operation.DETACHVOLUME_SERVICE; import static org.onap.appc.adapter.utils.Constants.ADAPTER_NAME; - import com.att.cdp.exceptions.ZoneException; import com.att.cdp.zones.ComputeService; import com.att.cdp.zones.Context; @@ -52,12 +51,11 @@ import org.onap.appc.i18n.Msg; import org.onap.ccsdk.sli.core.sli.SvcLogicContext; public class DettachVolumeServer extends ProviderServerOperation { - private final EELFLogger logger = EELFManager.getInstance().getLogger(DettachVolumeServer.class); @Override protected ModelObject executeProviderOperation(Map params, SvcLogicContext context) - throws APPCException { + throws APPCException { setMDC(Operation.DETACHVOLUME_SERVICE.toString(), "App-C IaaS Adapter:dettachVolume", ADAPTER_NAME); logOperation(Msg.DETTACHINGVOLUME_SERVER, params, context); return dettachVolume(params, context); @@ -65,84 +63,86 @@ public class DettachVolumeServer extends ProviderServerOperation { private Server dettachVolume(Map params, SvcLogicContext ctx) { Server server = null; - RequestContext rc = new RequestContext(ctx); - rc.isAlive(); + RequestContext requestContext = new RequestContext(ctx); + requestContext.isAlive(); String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME); String vmUrl = params.get(ProviderAdapter.PROPERTY_INSTANCE_URL); String volumeId = params.get(ProviderAdapter.VOLUME_ID); VMURL vm = VMURL.parseURL(vmUrl); Context context; - String tenantName = "Unknown";//to be used also in case of exception + String tenantName = "Unknown";// to be used also in case of exception try { - if (validateVM(rc, appName, vmUrl, vm)) { + if (validateVM(requestContext, appName, vmUrl, vm)) { return null; } IdentityURL ident = IdentityURL.parseURL(params.get(ProviderAdapter.PROPERTY_IDENTITY_URL)); String identStr = (ident == null) ? null : ident.toString(); - context = getContext(rc, vmUrl, identStr); + context = getContext(requestContext, vmUrl, identStr); if (context != null) { - tenantName = context.getTenantName();//this variable also is used in case of exception - rc.reset(); - server = lookupServer(rc, context, vm.getServerId()); + tenantName = context.getTenantName();// this variable also is + // used in case of + // exception + requestContext.reset(); + server = lookupServer(requestContext, context, vm.getServerId()); logger.debug(Msg.SERVER_FOUND, vmUrl, context.getTenantName(), server.getStatus().toString()); Context contx = server.getContext(); ComputeService service = contx.getComputeService(); - VolumeService vs = contx.getVolumeService(); + VolumeService volumeService = contx.getVolumeService(); logger.info("collecting volume status for volume -id: " + volumeId); - List volList = vs.getVolumes(); - logger.info("Size of volume list: " + volList.size()); - if (!volList.isEmpty()) { - for (Volume v : volList) { - logger.info("list of volumesif exists: " + v.getId()); - if (v.getId().equals(volumeId)) { - v.setId(volumeId); - logger.info("Ready to Detach Volume from the server: " + Volume.Status.DETACHING); - service.detachVolume(server, v); - logger.info("Volume status after performing detach: " + v.getStatus()); - if (validateDetach(vs, volumeId)) { - doSuccess(rc); - } + List volumes = volumeService.getVolumes(); + Volume volume = new Volume(); + logger.info("Size of volume list: " + volumes.size()); + if (volumes != null && !volumes.isEmpty()) { + if (volumes.contains(volumeId)) { + volume.setId(volumeId); + logger.info("Ready to Detach Volume from the server: " + Volume.Status.DETACHING); + service.detachVolume(server, volume); + logger.info("Volume status after performing detach: " + volume.getStatus()); + if (validateDetach(volumeService, volumeId)) { + doSuccess(requestContext); } else { - String msg = - "Volume with volume id " + volumeId + " cannot be detached as it doesn't exists"; - doFailure(rc, HttpStatus.NOT_IMPLEMENTED_501, msg); + String msg = "Volume with volume id " + volumeId + " cannot be detached "; + ctx.setAttribute("VOLUME_STATUS", "FAILURE"); + doFailure(requestContext, HttpStatus.NOT_IMPLEMENTED_501, msg); + logger.info("unable to detach volume from the server"); } + } else { + String msg = "Volume with volume id " + volumeId + " cannot be detached as it doesn't exists"; + ctx.setAttribute("VOLUME_STATUS", "FAILURE"); + doFailure(requestContext, HttpStatus.NOT_IMPLEMENTED_501, msg); } + logger.info("volumestatus:" + ctx.getAttribute("VOLUME_STATUS")); } context.close(); - doSuccess(rc); - ctx.setAttribute("VOLUME_STATUS", "SUCCESS"); } else { ctx.setAttribute("VOLUME_STATUS", "CONTEXT_NOT_FOUND"); } } catch (ZoneException e) { String msg = EELFResourceManager.format(Msg.SERVER_NOT_FOUND, e, vmUrl); logger.error(msg); - doFailure(rc, HttpStatus.NOT_FOUND_404, msg); + doFailure(requestContext, HttpStatus.NOT_FOUND_404, msg); } catch (RequestFailedException e) { logger.error("An error occurred when processing the request", e); - doFailure(rc, e.getStatus(), e.getMessage()); + doFailure(requestContext, e.getStatus(), e.getMessage()); } catch (Exception e) { String msg = EELFResourceManager.format(Msg.SERVER_OPERATION_EXCEPTION, e, e.getClass().getSimpleName(), - ATTACHVOLUME_SERVICE.toString(), vmUrl, tenantName); + DETACHVOLUME_SERVICE.toString(), vmUrl, tenantName); logger.error(msg, e); - doFailure(rc, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); + doFailure(requestContext, HttpStatus.INTERNAL_SERVER_ERROR_500, msg); } return server; } - protected boolean validateDetach(VolumeService vs, String volId) throws RequestFailedException, ZoneException { + protected boolean validateDetach(VolumeService volumeService, String volId) + throws RequestFailedException, ZoneException { boolean flag = false; - List volList = vs.getVolumes(); - for (Volume v : volList) { - if (!v.getId().equals(volId)) { - logger.info("Volume with " + volId + "detached successsfully"); - flag = true; - } else { - logger.info("failed to detach volume with id" + volId); - flag = false; - } + List volumes = volumeService.getVolumes(); + if (!volumes.contains(volId)) { + flag = true; + } else { + flag = false; } + logger.info("validateDetach flag-->" + flag); return flag; } } diff --git a/appc-directed-graph/appc-dgraph/provider/src/main/resources/json/APPC/APPC_AttachVolumeVM.json b/appc-directed-graph/appc-dgraph/provider/src/main/resources/json/APPC/APPC_AttachVolumeVM.json index 8684afa59..2b33c7e1c 100644 --- a/appc-directed-graph/appc-dgraph/provider/src/main/resources/json/APPC/APPC_AttachVolumeVM.json +++ b/appc-directed-graph/appc-dgraph/provider/src/main/resources/json/APPC/APPC_AttachVolumeVM.json @@ -1,20 +1,20 @@ [ { - "id": "8c8d638b.d864e8", + "id": "5007ce02.07f1d", "type": "dgstart", "name": "DGSTART", "outputs": 1, - "x": 84, - "y": 84, - "z": "1eca43d0.41972c", + "x": 87, + "y": 73.11666870117188, + "z": "bb7eafb1.d37d2", "wires": [ [ - "67bc77ec.cfab9" + "7d845d7f.b28f8c" ] ] }, { - "id": "67bc77ec.cfab9", + "id": "7d845d7f.b28f8c", "type": "service-logic", "name": "APPC 4.0.0", "module": "APPC", @@ -22,240 +22,240 @@ "comments": "", "xml": "", "outputs": 1, - "x": 241, - "y": 84, - "z": "1eca43d0.41972c", + "x": 220, + "y": 38.116668701171875, + "z": "bb7eafb1.d37d2", "wires": [ [ - "9ab2a765.c334e" + "2bf8e045.73a448" ] ] }, { - "id": "9ab2a765.c334e", + "id": "2bf8e045.73a448", "type": "method", "name": "AttachVolume", "xml": "\n", "comments": "", "outputs": 1, - "x": 439, - "y": 86, - "z": "1eca43d0.41972c", + "x": 418, + "y": 40.116668701171875, + "z": "bb7eafb1.d37d2", "wires": [ [ - "af60ef65.5a714" + "468a32bf.35f284" ] ] }, { - "id": "9d95111e.b625", + "id": "6d9a583d.567f7", "type": "success", "name": "success", "xml": "\n", "comments": "", "outputs": 1, - "x": 806.9999694824219, - "y": 295.9999694824219, - "z": "1eca43d0.41972c", + "x": 785.9999694824219, + "y": 250.11663818359375, + "z": "bb7eafb1.d37d2", "wires": [ [ - "3f10a3d4.fa8644" + "9b1062e9.283098" ] ] }, { - "id": "98f61d5c.9857e8", + "id": "ddd78a95.68e358", "type": "other", "name": "other", "xml": "\n", "comments": "", "outputs": 1, - "x": 815.9999694824219, - "y": 174.99996948242188, - "z": "1eca43d0.41972c", + "x": 794.9999694824219, + "y": 129.11663818359375, + "z": "bb7eafb1.d37d2", "wires": [ [ - "b2efb443.b631a" + "f06647ab.96aca" ] ] }, { - "id": "6be48d2c.b63d8c", + "id": "10c52db4.a51652", "type": "returnSuccess", "name": "return success", "xml": "", "comments": "", - "x": 1362.9999694824219, - "y": 267.9999694824219, - "z": "1eca43d0.41972c", + "x": 1341.9999694824219, + "y": 222.11663818359375, + "z": "bb7eafb1.d37d2", "wires": [] }, { - "id": "3ebaa10e.c55e6e", + "id": "84c0dae5.04bb7", "type": "returnFailure", "name": "return failure", "xml": "\n\n", "comments": "", - "x": 1123.9999694824219, - "y": 174.99996948242188, - "z": "1eca43d0.41972c", + "x": 1102.9999694824219, + "y": 129.11663818359375, + "z": "bb7eafb1.d37d2", "wires": [] }, { - "id": "3f10a3d4.fa8644", + "id": "9b1062e9.283098", "type": "switchNode", - "name": "switch error-code", - "xml": "\n", + "name": "switch status", + "xml": "\n", "comments": "", "outputs": 1, - "x": 999.9999694824219, - "y": 296.9999694824219, - "z": "1eca43d0.41972c", + "x": 978.9999694824219, + "y": 251.11663818359375, + "z": "bb7eafb1.d37d2", "wires": [ [ - "78e00fc2.178ca8", - "5cb2873d.ba509" + "69b4b801.d2dd58", + "4a833666.1d3a3" ] ] }, { - "id": "78e00fc2.178ca8", + "id": "69b4b801.d2dd58", "type": "success", - "name": "SUCCESS 200", - "xml": "\n", + "name": "success", + "xml": "\n", "comments": "", "outputs": 1, - "x": 1181.9999694824219, - "y": 266.9999694824219, - "z": "1eca43d0.41972c", + "x": 1160.9999694824219, + "y": 221.11663818359375, + "z": "bb7eafb1.d37d2", "wires": [ [ - "6be48d2c.b63d8c" + "10c52db4.a51652" ] ] }, { - "id": "5cb2873d.ba509", + "id": "4a833666.1d3a3", "type": "outcome", "name": "ERROR", "xml": "\n", "comments": "", "outputs": 1, - "x": 1173.9999694824219, - "y": 425.9999694824219, - "z": "1eca43d0.41972c", + "x": 1152.9999694824219, + "y": 380.11663818359375, + "z": "bb7eafb1.d37d2", "wires": [ [ - "c45d6cad.1266a8" + "df65c991.2b7fa8" ] ] }, { - "id": "c45d6cad.1266a8", + "id": "df65c991.2b7fa8", "type": "block", "name": "block", "xml": "\n", "atomic": "false", "comments": "", "outputs": 1, - "x": 1306.9999694824219, - "y": 426.9999694824219, - "z": "1eca43d0.41972c", + "x": 1285.9999694824219, + "y": 381.11663818359375, + "z": "bb7eafb1.d37d2", "wires": [ [ - "4593642b.a03a34", - "7bdd8ae4.5a04e4" + "21987bda.eebd5c", + "3d82b93b.845e96" ] ] }, { - "id": "4593642b.a03a34", + "id": "21987bda.eebd5c", "type": "returnFailure", "name": "return failure", "xml": "\n\n\n", "comments": "", - "x": 1441.9999694824219, - "y": 468, - "z": "1eca43d0.41972c", + "x": 1420.9999694824219, + "y": 422.1166687011719, + "z": "bb7eafb1.d37d2", "wires": [] }, { - "id": "b2efb443.b631a", + "id": "f06647ab.96aca", "type": "block", "name": "block", "xml": "\n", "atomic": "false", "comments": "", "outputs": 1, - "x": 971.9999694824219, - "y": 174.99996948242188, - "z": "1eca43d0.41972c", + "x": 950.9999694824219, + "y": 129.11663818359375, + "z": "bb7eafb1.d37d2", "wires": [ [ - "3ebaa10e.c55e6e" + "84c0dae5.04bb7" ] ] }, { - "id": "80ee82a0.8401c8", + "id": "ff624428.83add8", "type": "record", "name": "record", - "xml": "\n\n\n\n\n\n\n\n\n\n\n", "comments": "", "outputs": 1, - "x": 643.9999694824219, - "y": 230, - "z": "1eca43d0.41972c", + "x": 622.9999694824219, + "y": 184.11666870117188, + "z": "bb7eafb1.d37d2", "wires": [ [ - "98f61d5c.9857e8", - "9d95111e.b625" + "ddd78a95.68e358", + "6d9a583d.567f7" ] ] } diff --git a/appc-directed-graph/appc-dgraph/provider/src/main/resources/json/APPC/APPC_DetachVolumeVM.json b/appc-directed-graph/appc-dgraph/provider/src/main/resources/json/APPC/APPC_DetachVolumeVM.json index 32fe9c2e1..2fbca8f8a 100644 --- a/appc-directed-graph/appc-dgraph/provider/src/main/resources/json/APPC/APPC_DetachVolumeVM.json +++ b/appc-directed-graph/appc-dgraph/provider/src/main/resources/json/APPC/APPC_DetachVolumeVM.json @@ -1,262 +1,262 @@ -[ - { - "id": "eeae9def.4d566", - "type": "dgstart", - "name": "DGSTART", - "outputs": 1, - "x": 93, - "y": 92, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "f51d1b93.7d168" - ] - ] - }, - { - "id": "f51d1b93.7d168", - "type": "service-logic", - "name": "APPC 4.0.0", - "module": "APPC", - "version": "4.0.0", - "comments": "", - "xml": "", - "outputs": 1, - "x": 250, - "y": 92, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "10439b1c.b0fbc5" - ] - ] - }, - { - "id": "10439b1c.b0fbc5", - "type": "method", - "name": "DetachVolume", - "xml": "\n", - "comments": "", - "outputs": 1, - "x": 448, - "y": 94, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "cf4fac38.3b932" - ] - ] - }, - { - "id": "6f1b4f51.cab76", - "type": "success", - "name": "success", - "xml": "\n", - "comments": "", - "outputs": 1, - "x": 815.9999694824219, - "y": 303.9999694824219, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "f6364905.533518" - ] - ] - }, - { - "id": "eda3e619.a190e", - "type": "other", - "name": "other", - "xml": "\n", - "comments": "", - "outputs": 1, - "x": 824.9999694824219, - "y": 182.99996948242188, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "b81aef23.ced6e8" - ] - ] - }, - { - "id": "361abfaa.ca34b8", - "type": "returnSuccess", - "name": "return success", - "xml": "", - "comments": "", - "x": 1371.9999694824219, - "y": 275.9999694824219, - "z": "65f0ae97.bfd7e8", - "wires": [] - }, - { - "id": "5b028b69.7d6af4", - "type": "returnFailure", - "name": "return failure", - "xml": "\n\n", - "comments": "", - "x": 1132.9999694824219, - "y": 182.99996948242188, - "z": "65f0ae97.bfd7e8", - "wires": [] - }, - { - "id": "f6364905.533518", - "type": "switchNode", - "name": "switch error-code", - "xml": "\n", - "comments": "", - "outputs": 1, - "x": 1008.9999694824219, - "y": 304.9999694824219, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "567026e7.afed6", - "ee60ee08.fb232" - ] - ] - }, - { - "id": "567026e7.afed6", - "type": "success", - "name": "SUCCESS 200", - "xml": "\n", - "comments": "", - "outputs": 1, - "x": 1190.9999694824219, - "y": 274.9999694824219, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "361abfaa.ca34b8" - ] - ] - }, - { - "id": "ee60ee08.fb232", - "type": "outcome", - "name": "ERROR", - "xml": "\n", - "comments": "", - "outputs": 1, - "x": 1182.9999694824219, - "y": 433.9999694824219, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "285baaf0.7d06de" - ] - ] - }, - { - "id": "285baaf0.7d06de", - "type": "block", - "name": "block", - "xml": "\n", - "atomic": "false", - "comments": "", - "outputs": 1, - "x": 1315.9999694824219, - "y": 434.9999694824219, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "44fe2b94.9c5d94", - "961f42bf.beb62" - ] - ] - }, - { - "id": "44fe2b94.9c5d94", - "type": "returnFailure", - "name": "return failure", - "xml": "\n\n\n", - "comments": "", - "x": 1450.9999694824219, - "y": 476, - "z": "65f0ae97.bfd7e8", - "wires": [] - }, - { - "id": "b81aef23.ced6e8", - "type": "block", - "name": "block", - "xml": "\n", - "atomic": "false", - "comments": "", - "outputs": 1, - "x": 980.9999694824219, - "y": 182.99996948242188, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "5b028b69.7d6af4" - ] - ] - }, - { - "id": "34472fd1.b14ab", - "type": "record", - "name": "record", - "xml": "\n\n\n\n\n\n\n\n\n\n\n", - "comments": "", - "outputs": 1, - "x": 652.9999694824219, - "y": 238, - "z": "65f0ae97.bfd7e8", - "wires": [ - [ - "eda3e619.a190e", - "6f1b4f51.cab76" - ] - ] - } -] +[ + { + "id": "d54b463c.a823b8", + "type": "dgstart", + "name": "DGSTART", + "outputs": 1, + "x": 93.11666870117188, + "y": 41, + "z": "9904acd2.cfae1", + "wires": [ + [ + "a2bb678c.5e00c" + ] + ] + }, + { + "id": "a2bb678c.5e00c", + "type": "service-logic", + "name": "APPC 4.0.0", + "module": "APPC", + "version": "4.0.0", + "comments": "", + "xml": "", + "outputs": 1, + "x": 250.11666870117188, + "y": 41, + "z": "9904acd2.cfae1", + "wires": [ + [ + "e60f98b3.977f1" + ] + ] + }, + { + "id": "e60f98b3.977f1", + "type": "method", + "name": "DetachVolume", + "xml": "\n", + "comments": "", + "outputs": 1, + "x": 448.1166687011719, + "y": 43, + "z": "9904acd2.cfae1", + "wires": [ + [ + "e8d72dbd.c9baa" + ] + ] + }, + { + "id": "f548774.5415008", + "type": "success", + "name": "success", + "xml": "\n", + "comments": "", + "outputs": 1, + "x": 816.1166381835938, + "y": 252.99996948242188, + "z": "9904acd2.cfae1", + "wires": [ + [ + "329389c7.ceb186" + ] + ] + }, + { + "id": "efa29456.b2b9e", + "type": "other", + "name": "other", + "xml": "\n", + "comments": "", + "outputs": 1, + "x": 825.1166381835938, + "y": 131.99996948242188, + "z": "9904acd2.cfae1", + "wires": [ + [ + "26584913.762376" + ] + ] + }, + { + "id": "85b565d0.ef33d8", + "type": "returnSuccess", + "name": "return success", + "xml": "", + "comments": "", + "x": 1372.1166381835938, + "y": 224.99996948242188, + "z": "9904acd2.cfae1", + "wires": [] + }, + { + "id": "8cb513a7.354458", + "type": "returnFailure", + "name": "return failure", + "xml": "\n\n", + "comments": "", + "x": 1133.1166381835938, + "y": 131.99996948242188, + "z": "9904acd2.cfae1", + "wires": [] + }, + { + "id": "329389c7.ceb186", + "type": "switchNode", + "name": "switch status", + "xml": "\n", + "comments": "", + "outputs": 1, + "x": 1009.1166381835938, + "y": 253.99996948242188, + "z": "9904acd2.cfae1", + "wires": [ + [ + "720cbf6d.f49518", + "1de7a2bc.3c680d" + ] + ] + }, + { + "id": "720cbf6d.f49518", + "type": "success", + "name": "success", + "xml": "\n", + "comments": "", + "outputs": 1, + "x": 1191.1166381835938, + "y": 223.99996948242188, + "z": "9904acd2.cfae1", + "wires": [ + [ + "85b565d0.ef33d8" + ] + ] + }, + { + "id": "1de7a2bc.3c680d", + "type": "outcome", + "name": "ERROR", + "xml": "\n", + "comments": "", + "outputs": 1, + "x": 1183.1166381835938, + "y": 382.9999694824219, + "z": "9904acd2.cfae1", + "wires": [ + [ + "83ea6cce.ef1b58" + ] + ] + }, + { + "id": "83ea6cce.ef1b58", + "type": "block", + "name": "block", + "xml": "\n", + "atomic": "false", + "comments": "", + "outputs": 1, + "x": 1316.1166381835938, + "y": 383.9999694824219, + "z": "9904acd2.cfae1", + "wires": [ + [ + "115510d5.27d387", + "6be0b92f.7a4028" + ] + ] + }, + { + "id": "115510d5.27d387", + "type": "returnFailure", + "name": "return failure", + "xml": "\n\n\n", + "comments": "", + "x": 1451.1166381835938, + "y": 425, + "z": "9904acd2.cfae1", + "wires": [] + }, + { + "id": "26584913.762376", + "type": "block", + "name": "block", + "xml": "\n", + "atomic": "false", + "comments": "", + "outputs": 1, + "x": 981.1166381835938, + "y": 131.99996948242188, + "z": "9904acd2.cfae1", + "wires": [ + [ + "8cb513a7.354458" + ] + ] + }, + { + "id": "88de342c.a6a72", + "type": "record", + "name": "record", + "xml": "\n\n\n\n\n\n\n\n\n\n\n", + "comments": "", + "outputs": 1, + "x": 653.1166381835938, + "y": 187, + "z": "9904acd2.cfae1", + "wires": [ + [ + "efa29456.b2b9e", + "f548774.5415008" + ] + ] + } +] -- cgit 1.2.3-korg