From 8b216bf982491685c08fdbfb404d4acf01c049f1 Mon Sep 17 00:00:00 2001
From: guanwenyao <guanwenyao@chinamobile.com>
Date: Wed, 28 Mar 2018 17:42:46 +0800
Subject: support manual scale for NS

Issue-ID: SO-423

Change-Id: I752e096806ec513250a8fb1bf51a2ed57fb05f6e
Signed-off-by: guanwenyao <guanwenyao@chinamobile.com>
---
 .../org/openecomp/mso/apihandlerinfra/Action.java  |   3 +-
 .../mso/apihandlerinfra/E2EServiceInstances.java   | 186 +++++++++++++++++++++
 .../E2EServiceInstanceScaleRequest.java            |  35 ++++
 .../ScaleNsByStepsData.java                        |  54 ++++++
 .../e2eserviceinstancebeans/ScaleNsData.java       |  34 ++++
 .../e2eserviceinstancebeans/ScaleResource.java     |  54 ++++++
 .../e2eserviceinstancebeans/ScaleService.java      |  66 ++++++++
 7 files changed, 431 insertions(+), 1 deletion(-)
 create mode 100644 mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/E2EServiceInstanceScaleRequest.java
 create mode 100644 mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleNsByStepsData.java
 create mode 100644 mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleNsData.java
 create mode 100644 mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleResource.java
 create mode 100644 mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleService.java

(limited to 'mso-api-handlers/mso-api-handler-infra/src/main/java/org')

diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/Action.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/Action.java
index 8c99d067e9..5c84e699d8 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/Action.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/Action.java
@@ -37,5 +37,6 @@ public enum Action {
 	removeRelationships,
 	inPlaceSoftwareUpdate,
 	applyUpdatedConfig,
-	compareModel
+	compareModel,
+	scaleInstance
 }
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
index 2e0b53d5d8..2d0e9ee621 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
@@ -56,6 +56,7 @@ import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInsta
 import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceRequest;
 import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.E2EUserParam;
 import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.GetE2EServiceInstanceResponse;
+import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.*;
 import org.openecomp.mso.serviceinstancebeans.ModelInfo;
 import org.openecomp.mso.serviceinstancebeans.ModelType;
 import org.openecomp.mso.serviceinstancebeans.RequestDetails;
@@ -160,6 +161,23 @@ public class E2EServiceInstances {
 		return getE2EServiceInstances(serviceId, operationId);
 	}
 	
+    /**
+	 * Scale Requests for E2E Service scale Instance on a specified version 
+     */
+	 
+	@POST
+	@Path("/{version:[vV][3-5]}/{serviceId}/scale")
+	@Consumes(MediaType.APPLICATION_JSON)
+	@Produces(MediaType.APPLICATION_JSON)
+	@ApiOperation(value="Scale E2E Service Instance on a specified version",response=Response.class)
+	public Response scaleE2EServiceInstance(String request,
+                                            @PathParam("version") String version,
+                                            @PathParam("serviceId") String serviceId) {
+
+		msoLogger.debug("------------------scale begin------------------");
+		instanceIdMap.put("serviceId", serviceId);
+		return scaleE2EserviceInstances(request, Action.scaleInstance, instanceIdMap, version);
+	}
 	/**
 	 * GET Requests for Comparing model of service instance with target version
 	 */
@@ -921,6 +939,174 @@ public class E2EServiceInstances {
 		return beplStatusUpdate(requestId, startTime, msoRequest, requestClient, respHandler, bpelStatus, action, instanceIdMap);
 	}
 
+   private Response scaleE2EserviceInstances(String requestJSON,
+                                               Action action, HashMap<String, String> instanceIdMap, String version) {
+
+        String requestId = instanceIdMap.get("serviceId");
+        long startTime = System.currentTimeMillis();
+        msoLogger.debug("requestId is: " + requestId);
+		E2EServiceInstanceScaleRequest e2eScaleReq = null;
+
+        MsoRequest msoRequest = new MsoRequest(requestId);
+
+        ObjectMapper mapper = new ObjectMapper();
+        try {
+        	e2eScaleReq = mapper.readValue(requestJSON,
+					E2EServiceInstanceScaleRequest.class);
+
+        } catch (Exception e) {
+
+            msoLogger.debug("Mapping of request to JSON object failed : ", e);
+            Response response = msoRequest.buildServiceErrorResponse(
+                    HttpStatus.SC_BAD_REQUEST,
+                    MsoException.ServiceException,
+                    "Mapping of request to JSON object failed.  "
+                            + e.getMessage(), ErrorNumbers.SVC_BAD_PARAMETER,
+                    null);
+            msoLogger.error(MessageEnum.APIH_REQUEST_VALIDATION_ERROR,
+                    MSO_PROP_APIHANDLER_INFRA, "", "",
+                    MsoLogger.ErrorCode.SchemaError, requestJSON, e);
+            msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                    MsoLogger.ResponseCode.SchemaError,
+                    "Mapping of request to JSON object failed");
+            msoLogger.debug("End of the transaction, the final response is: "
+                    + (String) response.getEntity());
+            createOperationStatusRecordForError(action, requestId);
+            return response;
+        }
+
+        CatalogDatabase db = null;
+        RecipeLookupResult recipeLookupResult = null;
+        try {
+            db = CatalogDatabase.getInstance();
+			//TODO  Get the service template model version uuid from AAI.
+			recipeLookupResult = getServiceInstanceOrchestrationURI(db, null, action);
+        } catch (Exception e) {
+            msoLogger.error(MessageEnum.APIH_DB_ACCESS_EXC,
+                    MSO_PROP_APIHANDLER_INFRA, "", "",
+                    MsoLogger.ErrorCode.AvailabilityError,
+                    "Exception while communciate with Catalog DB", e);
+            msoRequest
+                    .setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
+            Response response = msoRequest.buildServiceErrorResponse(
+                    HttpStatus.SC_NOT_FOUND, MsoException.ServiceException,
+                    "No communication to catalog DB " + e.getMessage(),
+                    ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
+            alarmLogger.sendAlarm("MsoDatabaseAccessError",
+                    MsoAlarmLogger.CRITICAL, Messages.errors
+                            .get(ErrorNumbers.NO_COMMUNICATION_TO_CATALOG_DB));
+            msoRequest.createRequestRecord(Status.FAILED, action);
+            msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                    MsoLogger.ResponseCode.DBAccessError,
+                    "Exception while communciate with DB");
+            msoLogger.debug(END_OF_THE_TRANSACTION
+                    + (String) response.getEntity());
+            return response;
+        } finally {
+            closeCatalogDB(db);
+        }
+        if (recipeLookupResult == null) {
+            msoLogger.error(MessageEnum.APIH_DB_ATTRIBUTE_NOT_FOUND,
+                    MSO_PROP_APIHANDLER_INFRA, "", "",
+                    MsoLogger.ErrorCode.DataError, "No recipe found in DB");
+            msoRequest
+                    .setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
+            Response response = msoRequest.buildServiceErrorResponse(
+                    HttpStatus.SC_NOT_FOUND, MsoException.ServiceException,
+                    "Recipe does not exist in catalog DB",
+                    ErrorNumbers.SVC_GENERAL_SERVICE_ERROR, null);
+            msoRequest.createRequestRecord(Status.FAILED, action);
+            msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                    MsoLogger.ResponseCode.DataNotFound,
+                    "No recipe found in DB");
+            msoLogger.debug(END_OF_THE_TRANSACTION
+                    + (String) response.getEntity());
+            createOperationStatusRecordForError(action, requestId);
+            return response;
+        }
+
+        RequestClient requestClient = null;
+        HttpResponse response = null;
+
+        long subStartTime = System.currentTimeMillis();
+        // String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
+
+        try {
+            requestClient = RequestClientFactory.getRequestClient(
+                    recipeLookupResult.getOrchestrationURI(),
+                    MsoPropertiesUtils.loadMsoProperties());
+
+            JSONObject jjo = new JSONObject(requestJSON);
+            jjo.put("operationId", UUIDChecker.generateUUID(msoLogger));
+
+            String bpmnRequest = jjo.toString();
+
+            // Capture audit event
+            msoLogger
+                    .debug("MSO API Handler Posting call to BPEL engine for url: "
+                            + requestClient.getUrl());
+            String serviceId = instanceIdMap.get("serviceId");
+            String serviceInstanceType = e2eScaleReq.getService().getServiceType();
+            response = requestClient.post(requestId, false,
+					recipeLookupResult.getRecipeTimeout(), action.name(),
+					serviceId, null, null, null, null, null, serviceInstanceType,
+					null, null, null, bpmnRequest, recipeLookupResult.getRecipeParamXsd());
+
+            msoLogger.recordMetricEvent(subStartTime,
+                    MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                    "Successfully received response from BPMN engine", "BPMN",
+                    recipeLookupResult.getOrchestrationURI(), null);
+        } catch (Exception e) {
+            msoLogger.recordMetricEvent(subStartTime,
+                    MsoLogger.StatusCode.ERROR,
+                    MsoLogger.ResponseCode.CommunicationError,
+                    "Exception while communicate with BPMN engine", "BPMN",
+                    recipeLookupResult.getOrchestrationURI(), null);
+            Response resp = msoRequest.buildServiceErrorResponse(
+                    HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException,
+                    "Failed calling bpmn " + e.getMessage(),
+                    ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
+            alarmLogger.sendAlarm("MsoConfigurationError",
+                    MsoAlarmLogger.CRITICAL,
+                    Messages.errors.get(ErrorNumbers.NO_COMMUNICATION_TO_BPEL));
+            msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR,
+                    MSO_PROP_APIHANDLER_INFRA, "", "",
+                    MsoLogger.ErrorCode.AvailabilityError,
+                    "Exception while communicate with BPMN engine");
+            msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                    MsoLogger.ResponseCode.CommunicationError,
+                    "Exception while communicate with BPMN engine");
+            msoLogger.debug("End of the transaction, the final response is: "
+                    + (String) resp.getEntity());
+            createOperationStatusRecordForError(action, requestId);
+            return resp;
+        }
+
+        if (response == null) {
+            Response resp = msoRequest.buildServiceErrorResponse(
+                    HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException,
+                    "bpelResponse is null",
+                    ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
+            msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR,
+                    MSO_PROP_APIHANDLER_INFRA, "", "",
+                    MsoLogger.ErrorCode.BusinessProcesssError,
+                    "Null response from BPEL");
+            msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                    MsoLogger.ResponseCode.InternalError,
+                    "Null response from BPMN");
+            msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
+            createOperationStatusRecordForError(action, requestId);
+            return resp;
+        }
+
+        ResponseHandler respHandler = new ResponseHandler(response,
+                requestClient.getType());
+        int bpelStatus = respHandler.getStatus();
+
+        return beplStatusUpdate(requestId, startTime, msoRequest,
+                requestClient, respHandler, bpelStatus, action, instanceIdMap);
+    }
+
 	private void closeCatalogDB(CatalogDatabase db) {
 		if (db != null) {
 			db.close();
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/E2EServiceInstanceScaleRequest.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/E2EServiceInstanceScaleRequest.java
new file mode 100644
index 0000000000..b8bd810f4f
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/E2EServiceInstanceScaleRequest.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 CMCC Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans;
+
+
+public class E2EServiceInstanceScaleRequest {
+
+    private ScaleService service;
+
+    public ScaleService getService() {
+        return service;
+    }
+
+    public void setService(ScaleService service) {
+        this.service = service;
+    }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleNsByStepsData.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleNsByStepsData.java
new file mode 100644
index 0000000000..c64f5fa207
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleNsByStepsData.java
@@ -0,0 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 CMCC Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans;
+
+public class ScaleNsByStepsData {
+
+    private String aspectId;
+
+    private Integer numberOfSteps;
+
+    private String scalingDirection;
+
+    public String getAspectId() {
+        return aspectId;
+    }
+
+    public void setAspectId(String aspectId) {
+        this.aspectId = aspectId;
+    }
+
+    public Integer getNumberOfSteps() {
+        return numberOfSteps;
+    }
+
+    public void setNumberOfSteps(Integer numberOfSteps) {
+        this.numberOfSteps = numberOfSteps;
+    }
+
+    public String getScalingDirection() {
+        return scalingDirection;
+    }
+
+    public void setScalingDirection(String scalingDirection) {
+        this.scalingDirection = scalingDirection;
+    }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleNsData.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleNsData.java
new file mode 100644
index 0000000000..49cfe75a5b
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleNsData.java
@@ -0,0 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 CMCC Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans;
+
+public class ScaleNsData {
+
+    private ScaleNsByStepsData scaleNsByStepsData;
+
+    public ScaleNsByStepsData getScaleNsByStepsData() {
+        return scaleNsByStepsData;
+    }
+
+    public void setScaleNsByStepsData(ScaleNsByStepsData scaleNsByStepsData) {
+        this.scaleNsByStepsData = scaleNsByStepsData;
+    }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleResource.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleResource.java
new file mode 100644
index 0000000000..f19e2bdb80
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleResource.java
@@ -0,0 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 CMCC Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans;
+
+public class ScaleResource {
+
+    private String resourceInstanceId;
+
+    private String scaleType;
+
+    private ScaleNsData scaleNsData;
+
+    public String getResourceInstanceId() {
+        return resourceInstanceId;
+    }
+
+    public void setResourceInstanceId(String resourceInstanceId) {
+        this.resourceInstanceId = resourceInstanceId;
+    }
+
+    public String getScaleType() {
+        return scaleType;
+    }
+
+    public void setScaleType(String scaleType) {
+        this.scaleType = scaleType;
+    }
+
+    public ScaleNsData getScaleNsData() {
+        return scaleNsData;
+    }
+
+    public void setScaleNsData(ScaleNsData scaleNsData) {
+        this.scaleNsData = scaleNsData;
+    }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleService.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleService.java
new file mode 100644
index 0000000000..c694f550f8
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/ScaleService.java
@@ -0,0 +1,66 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 CMCC Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans;
+
+import java.util.List;
+
+public class ScaleService {
+
+    private String serviceInstanceName;
+
+    private String serviceType;
+
+    private String globalSubscriberId;
+
+    private List<ScaleResource> resources;
+
+    public String getServiceInstanceName() {
+        return serviceInstanceName;
+    }
+
+    public void setServiceInstanceName(String serviceInstanceName) {
+        this.serviceInstanceName = serviceInstanceName;
+    }
+
+    public String getServiceType() {
+        return serviceType;
+    }
+
+    public void setServiceType(String serviceType) {
+        this.serviceType = serviceType;
+    }
+
+    public String getGlobalSubscriberId() {
+        return globalSubscriberId;
+    }
+
+    public void setGlobalSubscriberId(String globalSubscriberId) {
+        this.globalSubscriberId = globalSubscriberId;
+    }
+
+    public List<ScaleResource> getResources() {
+        return resources;
+    }
+
+    public void setResources(List<ScaleResource> resources) {
+        this.resources = resources;
+    }
+}
-- 
cgit