summaryrefslogtreecommitdiffstats
path: root/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/com/nokia/vfcadaptor/cbam/impl/CbamMgmrImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/com/nokia/vfcadaptor/cbam/impl/CbamMgmrImpl.java')
-rw-r--r--nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/com/nokia/vfcadaptor/cbam/impl/CbamMgmrImpl.java185
1 files changed, 185 insertions, 0 deletions
diff --git a/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/com/nokia/vfcadaptor/cbam/impl/CbamMgmrImpl.java b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/com/nokia/vfcadaptor/cbam/impl/CbamMgmrImpl.java
new file mode 100644
index 00000000..50e265cd
--- /dev/null
+++ b/nokia/vnfmdriver/vfcadaptorservice/vfcadaptor/src/main/java/com/nokia/vfcadaptor/cbam/impl/CbamMgmrImpl.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright 2016-2017, Nokia Corporation
+ *
+ * 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.
+ */
+
+package com.nokia.vfcadaptor.cbam.impl;
+
+import java.io.IOException;
+
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.log4j.Logger;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import com.google.gson.Gson;
+import com.nokia.vfcadaptor.cbam.bo.CBAMCreateVnfRequest;
+import com.nokia.vfcadaptor.cbam.bo.CBAMCreateVnfResponse;
+import com.nokia.vfcadaptor.cbam.bo.CBAMHealVnfRequest;
+import com.nokia.vfcadaptor.cbam.bo.CBAMHealVnfResponse;
+import com.nokia.vfcadaptor.cbam.bo.CBAMInstantiateVnfRequest;
+import com.nokia.vfcadaptor.cbam.bo.CBAMInstantiateVnfResponse;
+import com.nokia.vfcadaptor.cbam.bo.CBAMQueryVnfResponse;
+import com.nokia.vfcadaptor.cbam.bo.CBAMScaleVnfRequest;
+import com.nokia.vfcadaptor.cbam.bo.CBAMScaleVnfResponse;
+import com.nokia.vfcadaptor.cbam.bo.CBAMTerminateVnfRequest;
+import com.nokia.vfcadaptor.cbam.bo.CBAMTerminateVnfResponse;
+import com.nokia.vfcadaptor.cbam.inf.CbamMgmrInf;
+import com.nokia.vfcadaptor.common.bo.AdaptorEnv;
+import com.nokia.vfcadaptor.constant.CommonConstants;
+import com.nokia.vfcadaptor.http.client.HttpRequestProcessor;
+
+@Component
+public class CbamMgmrImpl implements CbamMgmrInf {
+ private Logger logger = Logger.getLogger(CbamMgmrImpl.class);
+
+ private Gson gson = new Gson();
+
+ @Autowired
+ private AdaptorEnv adaptorEnv;
+
+ @Autowired
+ private HttpClientBuilder httpClientBuilder;
+
+ private String retrieveToken() throws ClientProtocolException, IOException {
+ String result = null;
+ String url="https://" + adaptorEnv.getCbamIp() + CommonConstants.RetrieveCbamTokenPath;
+ HttpRequestProcessor processor = new HttpRequestProcessor(httpClientBuilder, RequestMethod.POST);
+ processor.addHdeader(CommonConstants.ACCEPT, "*/*");
+ processor.addHdeader(CommonConstants.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE);
+
+ String bodyPostStr = String.format(CommonConstants.RetrieveCbamTokenPostStr, adaptorEnv.getGrantType(), adaptorEnv.getClientId(), adaptorEnv.getClientSecret());
+ processor.addPostEntity(bodyPostStr);
+
+ String responseStr = processor.process(url);
+
+ logger.info("CbamMgmrImpl -> retrieveToken, responseStr is " + responseStr);
+
+ JSONObject tokenJsonObject = new JSONObject(responseStr);
+
+ result = tokenJsonObject.getString(CommonConstants.CBAM_TOKEN_KEY);
+
+ return result;
+ }
+
+ public CBAMCreateVnfResponse createVnf(CBAMCreateVnfRequest cbamRequest) throws ClientProtocolException, IOException {
+ String httpPath = CommonConstants.CbamCreateVnfPath;
+ RequestMethod method = RequestMethod.POST;
+
+ String responseStr = operateCbamHttpTask(cbamRequest, httpPath, method);
+
+ logger.info("CbamMgmrImpl -> createVnf, responseStr is " + responseStr);
+
+ CBAMCreateVnfResponse response = gson.fromJson(responseStr, CBAMCreateVnfResponse.class);
+
+ return response;
+ }
+
+ /* (non-Javadoc)
+ * @see com.nokia.vfcadaptor.cbam.impl.CbamMgmrInf#instantiateVnf(com.nokia.vfcadaptor.cbam.bo.CBAMInstantiateVnfRequest, java.lang.String)
+ */
+ public CBAMInstantiateVnfResponse instantiateVnf(CBAMInstantiateVnfRequest cbamRequest, String vnfInstanceId) throws ClientProtocolException, IOException {
+ String httpPath = String.format(CommonConstants.CbamInstantiateVnfPath, vnfInstanceId);
+ RequestMethod method = RequestMethod.POST;
+
+ String responseStr = operateCbamHttpTask(cbamRequest, httpPath, method);
+
+ logger.info("CbamMgmrImpl -> instantiateVnf, responseStr is " + responseStr);
+
+ CBAMInstantiateVnfResponse response = gson.fromJson(responseStr, CBAMInstantiateVnfResponse.class);
+
+ return response;
+ }
+
+ public CBAMTerminateVnfResponse terminateVnf(CBAMTerminateVnfRequest cbamRequest, String vnfInstanceId) throws ClientProtocolException, IOException {
+ String httpPath = String.format(CommonConstants.CbamTerminateVnfPath, vnfInstanceId);
+ RequestMethod method = RequestMethod.POST;
+
+ String responseStr = operateCbamHttpTask(cbamRequest, httpPath, method);
+
+ logger.info("CbamMgmrImpl -> terminateVnf, responseStr is " + responseStr);
+
+ CBAMTerminateVnfResponse response = gson.fromJson(responseStr, CBAMTerminateVnfResponse.class);
+
+ return response;
+ }
+
+ public void deleteVnf(String vnfInstanceId) throws ClientProtocolException, IOException {
+ String httpPath = String.format(CommonConstants.CbamDeleteVnfPath, vnfInstanceId);
+ RequestMethod method = RequestMethod.DELETE;
+
+ operateCbamHttpTask(null, httpPath, method);
+
+ logger.info("CbamMgmrImpl -> deleteVnf.");
+ }
+
+ /* (non-Javadoc)
+ * @see com.nokia.vfcadaptor.cbam.impl.CbamMgmrInf#scaleVnf(com.nokia.vfcadaptor.cbam.bo.CBAMScaleVnfRequest, java.lang.String)
+ */
+ public CBAMScaleVnfResponse scaleVnf(CBAMScaleVnfRequest cbamRequest, String vnfInstanceId) throws ClientProtocolException, IOException {
+ String httpPath = String.format(CommonConstants.CbamScaleVnfPath, vnfInstanceId);
+ RequestMethod method = RequestMethod.POST;
+
+ String responseStr = operateCbamHttpTask(cbamRequest, httpPath, method);
+
+ CBAMScaleVnfResponse response = gson.fromJson(responseStr, CBAMScaleVnfResponse.class);
+
+ return response;
+ }
+
+ public CBAMHealVnfResponse healVnf(CBAMHealVnfRequest cbamRequest, String vnfInstanceId) throws ClientProtocolException, IOException {
+ String httpPath = String.format(CommonConstants.CbamHealVnfPath, vnfInstanceId);
+ RequestMethod method = RequestMethod.POST;
+
+ String responseStr = operateCbamHttpTask(cbamRequest, httpPath, method);
+
+ logger.info("CbamMgmrImpl -> healVnf, responseStr is " + responseStr);
+
+ CBAMHealVnfResponse response = gson.fromJson(responseStr, CBAMHealVnfResponse.class);
+
+ return response;
+ }
+
+ public CBAMQueryVnfResponse queryVnf(String vnfInstanceId) throws ClientProtocolException, IOException {
+ String httpPath = String.format(CommonConstants.CbamQueryVnfPath, vnfInstanceId);
+ RequestMethod method = RequestMethod.GET;
+
+ String responseStr = operateCbamHttpTask(null, httpPath, method);
+
+ logger.info("CbamMgmrImpl -> queryVnf, responseStr is " + responseStr);
+
+ CBAMQueryVnfResponse response = gson.fromJson(responseStr, CBAMQueryVnfResponse.class);
+
+ return response;
+ }
+
+ public String operateCbamHttpTask(Object httpBodyObj, String httpPath, RequestMethod method) throws ClientProtocolException, IOException {
+ String token = retrieveToken();
+ String url="https://" + adaptorEnv.getCbamIp() + httpPath;
+ HttpRequestProcessor processor = new HttpRequestProcessor(httpClientBuilder, method);
+ processor.addHdeader(CommonConstants.AUTHORIZATION, "bearer " + token);
+ processor.addHdeader(CommonConstants.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
+
+ processor.addPostEntity(gson.toJson(httpBodyObj));
+
+ String responseStr = processor.process(url);
+
+ return responseStr;
+ }
+
+}