summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluxin <luxin7@huawei.com>2017-08-31 19:07:08 +0800
committerluxin <luxin7@huawei.com>2017-08-31 19:18:53 +0800
commitc255daf224674d785c40d7e442cec558f3693475 (patch)
tree2c4de584b42733f3e2e3149199e7be64154731e7
parent51493c18d4bc89d0117d5a5b17ce906996bb6b32 (diff)
Add request interface
Add request interface and param to huawei vnfmdriver Change-Id: Id0c30c5d195fe64b59b0dfbfb1350fe19967e39e Issue-Id:VFC-204 Signed-off-by: luxin <luxin7@huawei.com>
-rw-r--r--huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/ResultRequestUtil.java100
-rw-r--r--huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/constant/ParamConstants.java14
-rw-r--r--huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/connect/ConnectMgrVnfm.java63
3 files changed, 161 insertions, 16 deletions
diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/ResultRequestUtil.java b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/ResultRequestUtil.java
index fa3d0aea..ab947cba 100644
--- a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/ResultRequestUtil.java
+++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/common/ResultRequestUtil.java
@@ -167,7 +167,8 @@ public final class ResultRequestUtil {
String token = mgrVcmm.getAccessSession();
String roaRand = mgrVcmm.getRoaRand();
String vnfmUrl = vnfmObject.getString("url");
- removeTokens(vnfmUrl, token, roaRand);
+ String user = vnfmObject.getString("userName");
+ removeTokens(vnfmUrl, token, roaRand, user);
} catch(IOException e) {
LOG.info("function=call, msg=IOException, e is {}", e);
} catch(ReflectiveOperationException e) {
@@ -193,9 +194,102 @@ public final class ResultRequestUtil {
*
* @since NFVO 0.5
*/
- private static void removeTokens(String vnfmUrl, String token, String roaRand) {
+ private static void removeTokens(String vnfmUrl, String token, String roaRand, String user) {
HttpMethod httpMethodToken = null;
- String tokenUrl = String.format(ParamConstants.CSM_AUTH_DISCONNECT, "manoadmin", roaRand);
+ String tokenUrl = String.format(ParamConstants.CSM_AUTH_DISCONNECT, user, roaRand);
+ LOG.info("removeTokens tokenUrl=" + tokenUrl);
+ try {
+ httpMethodToken = new HttpRequests.Builder(Constant.CERTIFICATE).setUrl(vnfmUrl.trim(), tokenUrl)
+ .setParams("").addHeader("X-Auth-Token", token).delete().execute();
+ int statusCode = httpMethodToken.getStatusCode();
+ String result = httpMethodToken.getResponseBodyAsString();
+ LOG.info("removeTokens int=" + statusCode + ", result=" + result);
+ } catch(IOException e) {
+ LOG.info("function=call, msg=IOException, e is {}", e);
+ } catch(Throwable e) {
+ LOG.info("function=call, msg=Throwable, e is {}", e);
+ } finally {
+ if(httpMethodToken != null) {
+ httpMethodToken.releaseConnection();
+ }
+ }
+ }
+
+ /**
+ * <br>
+ *
+ * @param vnfmObject
+ * @param path
+ * @param methodName
+ * @param paramsJson
+ * @param authModel
+ * @return
+ * @since NFVO 0.5
+ */
+ public static JSONObject callSouth(JSONObject vnfmObject, String path, String methodName, String paramsJson,
+ String authModel) {
+ LOG.info("request-param=" + paramsJson + ",authModel=" + authModel + ",path=" + path + ",vnfmInfo="
+ + vnfmObject);
+ JSONObject resultJson = new JSONObject();
+
+ ConnectMgrVnfm mgrVcmm = new ConnectMgrVnfm();
+
+ if(Constant.HTTP_OK != mgrVcmm.connectSouth(vnfmObject, authModel)) {
+ resultJson.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
+ resultJson.put("data", "connect fail.");
+ return resultJson;
+ }
+
+ HttpMethod httpMethod = null;
+ try {
+
+ String result = null;
+ String vnfPath = path.contains("%s") ? String.format(path, mgrVcmm.getRoaRand()) : path;
+ LOG.info("function=call, msg=url is {}, session is {}", vnfmObject.getString("url") + vnfPath,
+ mgrVcmm.getAccessSession());
+ HttpRequests.Builder builder =
+ new HttpRequests.Builder(authModel).addHeader(Constant.ACCESSSESSION, mgrVcmm.getAccessSession())
+ .setUrl(vnfmObject.getString("url"), vnfPath).setParams(paramsJson);
+ MethodType methodType = MethodType.methodType(HttpRequests.Builder.class, new Class[0]);
+ MethodHandle mt =
+ MethodHandles.lookup().findVirtual(builder.getClass(), methodName, methodType).bindTo(builder);
+
+ builder = (HttpRequests.Builder)mt.invoke();
+ httpMethod = builder.execute();
+ result = httpMethod.getResponseBodyAsString();
+ LOG.warn("function=call, msg=response status is {}. result is {}", httpMethod.getStatusCode(), result);
+ resultJson.put(Constant.RETCODE, httpMethod.getStatusCode());
+ resultJson.put("data", result);
+
+ // logout delete tokens
+ String token = mgrVcmm.getAccessSession();
+ String oldUrl = vnfmObject.getString("url").trim();
+ String newUrl = oldUrl.replaceAll("30001", "30000");
+ String user = vnfmObject.getString("userName");
+ removeV3Tokens(newUrl, token, user);
+ } catch(IOException e) {
+ LOG.info("function=call, msg=IOException, e is {}", e);
+ } catch(ReflectiveOperationException e) {
+ LOG.info("function=call, msg=ReflectiveOperationException, e is {}", e);
+ } catch(Throwable e) {
+ LOG.info("function=call, msg=Throwable, e is {}", e);
+ } finally {
+ if(httpMethod != null) {
+ httpMethod.releaseConnection();
+ }
+ }
+
+ if(httpMethod == null) {
+ resultJson.put(Constant.RETCODE, Constant.HTTP_INNERERROR);
+ resultJson.put("data", "get connection error");
+ }
+
+ return resultJson;
+ }
+
+ private static void removeV3Tokens(String vnfmUrl, String token, String user) {
+ HttpMethod httpMethodToken = null;
+ String tokenUrl = String.format(ParamConstants.CSM_AUTH_CONNECT_SOUTH_DISCONNECT, user);
LOG.info("removeTokens tokenUrl=" + tokenUrl);
try {
httpMethodToken = new HttpRequests.Builder(Constant.CERTIFICATE).setUrl(vnfmUrl.trim(), tokenUrl)
diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/constant/ParamConstants.java b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/constant/ParamConstants.java
index 1f932d7b..af486093 100644
--- a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/constant/ParamConstants.java
+++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/constant/ParamConstants.java
@@ -17,9 +17,7 @@
package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant;
/**
- *
* @author
- *
* @version NFVO 0.5 Sep 6, 2016
*/
public class ParamConstants {
@@ -29,9 +27,9 @@ public class ParamConstants {
public static final String GET_TOKENS_V2 =
"{\"auth\":{\"identity\": {\"methods\": [\"password\"],\"password\": {\"user\": {\"name\": \"%s\",\"password\": \"%s\"}}}}}";
- public static final String GET_IAM_TOKENS =
+ public static final String GET_TOKENS_V3 =
"{\"auth\": {\"identity\": {\"methods\": [\"password\"],\"password\": {\"user\": {\"name\": "
- + "\"%s\",\"password\": \"%s\",\"domain\": {\"name\": \"%s\"}}}},\"scope\": {\"domain\": {\"name\": \"%s\"}}}}";
+ + "\"%s\",\"password\": \"%s\",\"domain\": {\"name\": \"%s\"}}}}}}";
public static final String GET_TOKEN_SUC_RESP =
"{\"token\": {\"methods\": [\"password\"],\"expires_at\": \"\",\"user\": {\"id\": \"%s\","
@@ -45,7 +43,9 @@ public class ParamConstants {
public static final String REST_3RD_HANDSHAKE = "/rest/plat/ssm/v1/sessions/verify";
- public static final String IAM_AUTH = "/v3/auth/tokens";
+ public static final String CSM_AUTH_CONNECT_SOUTH = "/v3/auth/tokens";
+
+ public static final String CSM_AUTH_CONNECT_SOUTH_DISCONNECT = "/v3/auth/tokens/%s";
public static final String CSM_AUTH_CONNECT = "/v2/auth/tokens";
@@ -65,7 +65,6 @@ public class ParamConstants {
public static final String VNFMGR_INSTANCE = "/vnfmgr/v1/instances";
-
public static final String VNFD_FLAVOR = "/vnfdmgr/v1/flavor";
public static final String UPDATE_RESOURCE = "/rest/v1/resmanage/resuse/updateres";
@@ -106,7 +105,6 @@ public class ParamConstants {
public static final String VNF_GET_VMINFO = "/v2/vapps/instances/%s/vm";
-
public static final String MSB_REGISTER_URL = "/openoapi/microservices/v1/services";
public static final String MSB_UNREGISTER_URL = "/openoapi/microservices/v1/services/hw-vnfm";
@@ -117,6 +115,8 @@ public class ParamConstants {
public static final String GRANT_RES_URL = "/openoapi/resmgr/v1/resource/grant";
+ public static final String HEAL_VNF = "/v2/vapps/instances/vm/%s/action";
+
private ParamConstants() {
// private contstructor
}
diff --git a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/connect/ConnectMgrVnfm.java b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/connect/ConnectMgrVnfm.java
index 26430799..8be8b7dc 100644
--- a/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/connect/ConnectMgrVnfm.java
+++ b/huawei/vnfmadapter/VnfmadapterService/service/src/main/java/org/onap/vfc/nfvo/vnfm/svnfm/vnfmadapter/service/csm/connect/ConnectMgrVnfm.java
@@ -36,7 +36,7 @@ import net.sf.json.JSONObject;
* .</br>
*
* @author
- * @version NFVO 0.5 Sep 14, 2016
+ * @version NFVO 0.5 Sep 14, 2016
*/
public class ConnectMgrVnfm {
@@ -62,16 +62,15 @@ public class ConnectMgrVnfm {
this.roaRand = roaRand;
}
-
/**
* Make connection
* <br>
*
* @param vnfmObj
* @return
- * @since NFVO 0.5
+ * @since NFVO 0.5
*/
- public int connect(JSONObject vnfmObj,String authModel) {
+ public int connect(JSONObject vnfmObj, String authModel) {
LOG.info("function=connect, msg=enter connect function.");
ConnectInfo info = new ConnectInfo(vnfmObj.getString("url"), vnfmObj.getString("userName"),
@@ -87,7 +86,7 @@ public class ConnectMgrVnfm {
statusCode = httpMethod.getStatusCode();
String result = httpMethod.getResponseBodyAsString();
- LOG.info("connect result:"+result);
+ LOG.info("connect result:" + result);
if(statusCode == HttpStatus.SC_CREATED) {
JSONObject accessObj = JSONObject.fromObject(result);
JSONObject tokenObj = accessObj.getJSONObject("token");
@@ -114,13 +113,65 @@ public class ConnectMgrVnfm {
return statusCode;
}
+
+ /**
+ * <br>
+ *
+ * @param vnfmObj
+ * @param authModel
+ * @return
+ * @since NFVO 0.5
+ */
+ public int connectSouth(JSONObject vnfmObj, String authModel) {
+ LOG.info("function=connectSouth, msg=enter connect function.");
+ String oldUrl = vnfmObj.getString("url").trim();
+ String newUrl = oldUrl.replaceAll("30001", "30000");
+ LOG.info("function=connectSouth, url={}.", newUrl);
+ ConnectInfo info =
+ new ConnectInfo(newUrl, vnfmObj.getString("userName"), vnfmObj.getString("password"), authModel);
+ HttpMethod httpMethod = null;
+ int statusCode = Constant.INTERNAL_EXCEPTION;
+
+ try {
+ httpMethod = new HttpRequests.Builder(info.getAuthenticateMode())
+ .setUrl(info.getUrl(), ParamConstants.CSM_AUTH_CONNECT_SOUTH)
+ .setParams(String.format(ParamConstants.GET_TOKENS_V3, info.getUserName(), info.getUserPwd()))
+ .post().execute();
+ statusCode = httpMethod.getStatusCode();
+
+ String result = httpMethod.getResponseBodyAsString();
+ LOG.info("connect result:" + result);
+ if(statusCode == HttpStatus.SC_CREATED) {
+ Header header = httpMethod.getResponseHeader("accessSession");
+ setAccessSession(header.getValue());
+ statusCode = HttpStatus.SC_OK;
+ } else {
+ LOG.error("connect fail, code:" + statusCode + " re:" + result);
+ }
+
+ } catch(JSONException e) {
+ LOG.error("function=connect, msg=connect JSONException e={}.", e);
+ } catch(VnfmException e) {
+ LOG.error("function=connect, msg=connect VnfmException e={}.", e);
+ } catch(IOException e) {
+ LOG.error("function=connect, msg=connect IOException e={}.", e);
+ } finally {
+ clearCSMPwd(info);
+ if(httpMethod != null) {
+ httpMethod.releaseConnection();
+ }
+ }
+ return statusCode;
+
+ }
+
/**
* Make connection
* <br>
*
* @param vnfmObj
* @return
- * @since NFVO 0.5
+ * @since NFVO 0.5
*/
public int connect(JSONObject vnfmObj) {
LOG.info("function=connect, msg=enter connect function.");