2  * Copyright 2016-2017 Huawei Technologies Co., Ltd.
 
   4  * Licensed under the Apache License, Version 2.0 (the "License");
 
   5  * you may not use this file except in compliance with the License.
 
   6  * You may obtain a copy of the License at
 
   8  *     http://www.apache.org/licenses/LICENSE-2.0
 
  10  * Unless required by applicable law or agreed to in writing, software
 
  11  * distributed under the License is distributed on an "AS IS" BASIS,
 
  12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  13  * See the License for the specific language governing permissions and
 
  14  * limitations under the License.
 
  17 package org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.rest;
 
  19 import javax.servlet.http.HttpServletRequest;
 
  20 import javax.servlet.http.HttpServletResponse;
 
  21 import javax.ws.rs.Consumes;
 
  22 import javax.ws.rs.DELETE;
 
  23 import javax.ws.rs.GET;
 
  24 import javax.ws.rs.PUT;
 
  25 import javax.ws.rs.Path;
 
  26 import javax.ws.rs.PathParam;
 
  27 import javax.ws.rs.Produces;
 
  28 import javax.ws.rs.QueryParam;
 
  29 import javax.ws.rs.core.Context;
 
  30 import javax.ws.rs.core.MediaType;
 
  31 import javax.ws.rs.core.Response;
 
  33 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.common.VnfmJsonUtil;
 
  34 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.Constant;
 
  35 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.constant.ParamConstants;
 
  36 import org.onap.vfc.nfvo.vnfm.svnfm.vnfmadapter.service.process.AuthMgr;
 
  37 import org.slf4j.Logger;
 
  38 import org.slf4j.LoggerFactory;
 
  40 import net.sf.json.JSONObject;
 
  43  * Provide interfaces for authInfo
 
  46  * auth tokens interface is provided by platform
 
  47  * not in nfvo for vnfm
 
  48  * differences from other interface
 
  52  * @version VFC 1.0 Aug 24, 2016
 
  54 @Path("/rest/plat/smapp/v1")
 
  55 @Consumes(MediaType.APPLICATION_JSON)
 
  56 @Produces(MediaType.APPLICATION_JSON)
 
  57 public class AuthRoa {
 
  59     private static final Logger LOG = LoggerFactory.getLogger(AuthRoa.class);
 
  61     private AuthMgr authMgr;
 
  63     public void setAuthMgr(AuthMgr authMgr) {
 
  64         this.authMgr = authMgr;
 
  68      * Provide interface for add authInfo
 
  77     public String authToken(@Context HttpServletRequest context, @Context HttpServletResponse resp) {
 
  78         LOG.warn("function=login, msg=enter to get token.");
 
  79         JSONObject subJsonObject = VnfmJsonUtil.getJsonFromContexts(context);
 
  80         LOG.warn("subJsonObject: {}", subJsonObject);
 
  82         if(null == subJsonObject) {
 
  83             LOG.error("function=login, msg=params are insufficient");
 
  84             String resultStr = "Login params insufficient";
 
  85             resp.setStatus(Constant.HTTP_BAD_REQUEST);
 
  90         JSONObject authResult = authMgr.authToken(subJsonObject);
 
  91         LOG.warn("authResult: {}", authResult);
 
  92         if(authResult.getInt(Constant.RETCODE) == Constant.REST_SUCCESS) {
 
  93             JSONObject data = authResult.getJSONObject("data");
 
  94             resp.setStatus(Constant.HTTP_OK);
 
  95             return data.toString();
 
  96         } else if(authResult.getInt(Constant.RETCODE) == Constant.HTTP_INNERERROR) {
 
  97             Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(authResult.getString("data")).build();
 
  98             return String.format(ParamConstants.GET_TOKEN_FAIL_RESP, authResult.getString("data"));
 
 100             Response.status(Response.Status.UNAUTHORIZED).entity(authResult.getString("data")).build();
 
 101             return String.format(ParamConstants.GET_TOKEN_FAIL_RESP, authResult.getString("data"));
 
 106      * Provide interface for delete authInfo
 
 115     @Path("/auth/tokens/{userName}/{roarand}")
 
 116     public String delAuthToken(@PathParam(Constant.USERNAME) String userName, @PathParam("roarand") String roarand,
 
 117             @Context HttpServletResponse resp) {
 
 118         LOG.warn("function=logout, msg=enter to logout");
 
 119         JSONObject resultJson = new JSONObject();
 
 121         resultJson.put("Information", "Operation success");
 
 122         resp.setStatus(Constant.HTTP_NOCONTENT);
 
 123         LOG.warn("function=logout, msg=end to logout");
 
 124         return resultJson.toString();
 
 128      * Provide interface for handshake authInfo
 
 136     @Path("/nfvo/shakehand")
 
 137     public String shakehand(@QueryParam("roattr") String roattr, @Context HttpServletResponse resp) {
 
 138         JSONObject resultJson = new JSONObject();
 
 139         resultJson.put("status", "running");
 
 140         resultJson.put("description", "Operation success");
 
 141         resp.setStatus(Constant.HTTP_OK);
 
 143         return resultJson.toString();