Add multivimproxy proxy code 61/39461/1
authorvictor.gao <victor.gao@huawei.com>
Wed, 28 Mar 2018 06:55:02 +0000 (14:55 +0800)
committervictor.gao <victor.gao@huawei.com>
Wed, 28 Mar 2018 06:55:02 +0000 (14:55 +0800)
Change-Id: I0c5c0d79721884fe61d4c5d9a678a10324b3844a
Issue-ID: VFC-644
Signed-off-by: victor.gao <victor.gao@huawei.com>
service/src/main/java/org/onap/vfc/nfvo/multivimproxy/service/rest/ProxyRoa.java [new file with mode: 0644]

diff --git a/service/src/main/java/org/onap/vfc/nfvo/multivimproxy/service/rest/ProxyRoa.java b/service/src/main/java/org/onap/vfc/nfvo/multivimproxy/service/rest/ProxyRoa.java
new file mode 100644 (file)
index 0000000..1e15740
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2016-2017 Huawei Technologies Co., Ltd.
+ *
+ * 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 org.onap.vfc.nfvo.multivimproxy.service.rest;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+
+import org.onap.vfc.nfvo.multivimproxy.common.util.RestfulUtil;
+import org.onap.vfc.nfvo.multivimproxy.common.util.restclient.RestfulParametes;
+import org.onap.vfc.nfvo.multivimproxy.common.util.restclient.RestfulResponse;
+import org.onap.vfc.nfvo.multivimproxy.common.constant.Constant;
+import org.onap.vfc.nfvo.multivimproxy.common.constant.ParamConstant;
+import org.onap.vfc.nfvo.multivimproxy.common.constant.UrlConstant;
+import org.onap.vfc.nfvo.multivimproxy.common.conf.Config;
+import org.onap.vfc.nfvo.multivimproxy.common.util.request.RequestUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+
+@Produces(MediaType.APPLICATION_JSON)
+@Consumes(MediaType.APPLICATION_JSON)
+public class ProxyRoa {
+
+       private static final Logger LOGGER = LoggerFactory.getLogger(ProxyRoa.class);
+       private static final String vimId = Config.getCloudRegionId() + "_" + Config.getCloudRegionId();
+
+       @POST
+       @Path("/v3/auth/tokens")
+       public String createTokens(@Context HttpServletRequest context, @Context HttpServletResponse rsp) {
+               JSONObject object = RequestUtil.getJsonRequestBody(context);
+               if (null == object) {
+                       LOGGER.error("function=createTokens; msg=add error, because createTokens is null.");
+                       String resultStr = "Login params insufficient";
+                       rsp.setStatus(Constant.HTTP_BAD_REQUEST);
+
+            return resultStr;
+               }
+
+               LOGGER.info("IdentityRoa::createTokens:{}", object.toString());
+
+               // transfer to MultiVim
+               RestfulParametes restfulParametes = new RestfulParametes();
+               Map<String, String> headerMap = new HashMap<>(3);
+               headerMap.put("Content-Type", "application/json");
+               restfulParametes.setHeaderMap(headerMap);
+               restfulParametes.setRawData(object.toString());
+               String identityUrl = UrlConstant.MULTI_VIM_PREFIX + vimId + "/v3/auth/tokens";
+
+               RestfulResponse rest = RestfulUtil.getResponse(identityUrl, restfulParametes, null, ParamConstant.PARAM_POST);
+
+               String result = rest.getResponseContent();
+               if (null != result) {
+                       JSONObject ret = JSONObject.fromObject(result);
+                       JSONArray catalog = ret.getJSONArray("catalog");
+
+                       for (int i = 0; i < catalog.size(); i++) {
+                               JSONArray endpoints = catalog.getJSONObject(i).getJSONArray("endpoints");
+                               for (int j = 0; j < endpoints.size(); j++) {
+                                       String newUrl = "";
+                                       JSONObject endpoint = endpoints.getJSONObject(j);
+                                       String url = endpoint.getString("url");
+                                       for (int k = 6; k < url.split("/").length; k++) {
+                                               newUrl += "/" + url.split("/")[k];
+                                       }
+                                       newUrl += Config.getOpenstackPrefix();
+                                       endpoint.replace("url", newUrl);
+                               }
+                       }
+                       
+                       rsp.setStatus(rest.getStatus());
+
+               } else {
+                       LOGGER.error("function=createTokens; msg=add error, because multivim return null.");
+               }
+
+               return result;
+       }
+       
+       @POST
+       @Path("{var:.*}")
+       public String proxyPost(@Context HttpServletRequest context, @Context HttpServletResponse rsp) {
+               JSONObject object = RequestUtil.getJsonRequestBody(context);
+               if (null == object) {
+                       LOGGER.error("function=proxyPost; msg=Post error, because proxyPost is null.");
+                       String resultStr = "POST params insufficient";
+                       rsp.setStatus(Constant.HTTP_BAD_REQUEST);
+
+            return resultStr;
+               }
+               // transfer to MultiVim
+               RestfulParametes restfulParametes = new RestfulParametes();
+               Map<String, String> headerMap = new HashMap<>(3);
+               headerMap.put("Content-Type", "application/json");
+               restfulParametes.setHeaderMap(headerMap);
+               restfulParametes.setRawData(object.toString());
+               String Url = UrlConstant.MULTI_VIM_PREFIX + vimId + context.getRequestURI();
+               
+               RestfulResponse rest = RestfulUtil.getResponse(Url, restfulParametes, null, ParamConstant.PARAM_POST);
+               String result = rest.getResponseContent();
+               rsp.setStatus(rest.getStatus());
+               return result;
+       }
+       
+       @GET
+       @Path("{var:.*}")
+       public String porxyGet(@Context HttpServletRequest context, @Context HttpServletResponse rsp) {
+        JSONObject object = RequestUtil.getJsonRequestBody(context);
+                       
+               // transfer to MultiVim
+               RestfulParametes restfulParametes = new RestfulParametes();
+               Map<String, String> headerMap = new HashMap<>(3);
+               headerMap.put("Content-Type", "application/json");
+               restfulParametes.setHeaderMap(headerMap);
+               restfulParametes.setRawData(object.toString());
+               String Url = UrlConstant.MULTI_VIM_PREFIX + vimId + context.getRequestURI();
+               
+               RestfulResponse rest = RestfulUtil.getResponse(Url, restfulParametes, null, ParamConstant.PARAM_GET);
+               String result = rest.getResponseContent();
+               rsp.setStatus(rest.getStatus());
+               return result;
+       }
+       
+       @PUT
+       @Path("{var:.*}")
+       public String porxyPut(@Context HttpServletRequest context, @Context HttpServletResponse rsp) {
+               JSONObject object = RequestUtil.getJsonRequestBody(context);
+               if (null == object) {
+                       LOGGER.error("function=proxyPost; msg=PUT error, because porxyPut is null.");
+                       String resultStr = "update params insufficient";
+                       rsp.setStatus(Constant.HTTP_BAD_REQUEST);
+
+            return resultStr;
+               }
+               // transfer to MultiVim
+               RestfulParametes restfulParametes = new RestfulParametes();
+               Map<String, String> headerMap = new HashMap<>(3);
+               headerMap.put("Content-Type", "application/json");
+               restfulParametes.setHeaderMap(headerMap);
+               restfulParametes.setRawData(object.toString());
+               String Url = UrlConstant.MULTI_VIM_PREFIX + vimId + context.getRequestURI();
+               RestfulResponse rest = RestfulUtil.getResponse(Url, restfulParametes, null, RestfulUtil.TYPE_PUT);
+               String result = rest.getResponseContent();
+               rsp.setStatus(rest.getStatus());
+               return result;
+       }
+       
+       @DELETE
+       @Path("{var:.*}")
+       public String porxyDelete(@Context HttpServletRequest context, @Context HttpServletResponse rsp) {
+               JSONObject object = RequestUtil.getJsonRequestBody(context);
+               
+               // transfer to MultiVim
+               RestfulParametes restfulParametes = new RestfulParametes();
+               Map<String, String> headerMap = new HashMap<>(3);
+               headerMap.put("Content-Type", "application/json");
+               restfulParametes.setHeaderMap(headerMap);
+               restfulParametes.setRawData(object.toString());
+               String Url = UrlConstant.MULTI_VIM_PREFIX + vimId + context.getRequestURI();
+               
+               RestfulResponse rest = RestfulUtil.getResponse(Url, restfulParametes, null, RestfulUtil.TYPE_DEL);
+               String result = rest.getResponseContent();
+               rsp.setStatus(rest.getStatus());
+               return result;
+       }
+
+}