2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * Copyright (C) 2017 Amdocs
 
   7  * ================================================================================
 
   8  * Licensed under the Apache License, Version 2.0 (the "License");
 
   9  * you may not use this file except in compliance with the License.
 
  10  * You may obtain a copy of the License at
 
  12  *      http://www.apache.org/licenses/LICENSE-2.0
 
  14  * Unless required by applicable law or agreed to in writing, software
 
  15  * distributed under the License is distributed on an "AS IS" BASIS,
 
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  17  * See the License for the specific language governing permissions and
 
  18  * limitations under the License.
 
  19  * ============LICENSE_END=========================================================
 
  20  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
 
  23 package org.openecomp.appc.executor.objects;
 
  26 import org.apache.commons.lang3.StringUtils;
 
  27 import org.openecomp.appc.domainmodel.lcm.Status;
 
  28 import org.openecomp.appc.util.MessageFormatter;
 
  32 public enum LCMCommandStatus {
 
  34     ACCEPTED(100,"ACCEPTED - request accepted"),
 
  36     //ERROR(2xx) – request can’t be handled due to some technical error
 
  37     UNEXPECTED_ERROR(200,"UNEXPECTED ERROR - ${errorMsg}"),
 
  39     //REJECT(3xx) – request has been rejected due to some business reason (e.g. no such service-instance-id, command is not supported, etc)
 
  40     REJECTED(300,"REJECTED - ${errorMsg}"),
 
  41     INVALID_INPUT_PARAMETER(301,"INVALID INPUT PARAMETER - ${errorMsg}"),// TODO 77777777 to support "${paramName} with invalid value ${paramValue}"
 
  42     MISSING_MANDATORY_PARAMETER(302,"MISSING MANDATORY PARAMETER - Parameter/s ${paramName} is/are missing" ),
 
  43     REQUEST_PARSING_FAILED(303,"REQUEST PARSING FAILED - ${errorMsg}"),
 
  44     NO_TRANSITION_DEFINE(304,"ACTION IS NOT ALLOWED - Action ${actionName} is not allowed for VNF in state ${currentState}"),
 
  45     INVALID_VNF_STATE(305,"Request rejected because VNF status in A&AI is - ${currentState}" ),
 
  46     VNF_NOT_FOUND(306,"VNF NOT FOUND - VNF with ID ${vnfId} was not found" ),
 
  47     DG_WORKFLOW_NOT_FOUND(307,"DG WORKFLOW NOT FOUND - No DG workflow found for the combination of ${dgModule} module ${dgName} name and ${dgVersion} version"),//TODO need to support it
 
  48     WORKFLOW_NOT_FOUND(308,"WORKFLOW NOT FOUND - No workflow found for VNF type ${vnfTypeVersion} and ${actionName} action"),
 
  49         UNSTABLE_VNF(309,"UNSTABLE VNF - VNF ${vnfId} is not stable to accept the command"),
 
  50     LOCKING_FAILURE(310,"LOCKING FAILURE - ${errorMsg}" ),
 
  51         EXPIRED_REQUEST(311,"EXPIRED REQUEST"),
 
  52     DUPLICATE_REQUEST(312,"DUPLICATE REQUEST"),
 
  53     MISSING_VNF_DATA_IN_AAI(313,"MISSING VNF DATA IN A&AI - ${attributeName} not found for VNF ID = ${vnfId}"),
 
  55     SUCCESS(400,"SUCCESS - request has been processed successfully"),
 
  58     //        FAILURE(5xx) – request processing results with failure. The FAILURE response is always transmitted asynchronously, via DMaaP.
 
  59     DG_FAILURE(401,"DG FAILURE - ${errorMsg}"),
 
  60     NO_TRANSITION_DEFINE_FAILURE(402,"NO TRANSITION DEFINE - No Transition Defined for ${actionName} action and ${currentState} state"),
 
  61     UPDATE_AAI_FAILURE(403,"UPDATE_AAI_FAILURE - failed to update AAI. ${errorMsg}"),
 
  62     EXPIRED_REQUEST_FAILURE(404,"EXPIRED REQUEST FAILURE - failed after accepted because TTL expired"),
 
  63     UNEXPECTED_FAILURE(405,"UNEXPECTED FAILURE - ${errorMsg}"),
 
  64     UNSTABLE_VNF_FAILURE(406,"UNSTABLE VNF FAILURE - VNF ${vnfId} is not stable to accept the command"),
 
  69     public static final String errorDgMessageParamName = "errorDgMessage";
 
  71         private int responseCode;
 
  72         private String responseMessage;
 
  77     LCMCommandStatus(int responseCode, String responseMessage) {
 
  78         this.responseCode = responseCode;
 
  79         this.responseMessage = responseMessage;
 
  82     public String getResponseMessage() {
 
  83                 return responseMessage;
 
  86         public int getResponseCode() {
 
  93      * @return  messageTemplate
 
  97     public String getFormattedMessage(Params params){
 
  98             Map<String,Object> paramsMap = params != null ? params.getParams() : null;
 
  99             return MessageFormatter.format(getResponseMessage(),paramsMap);
 
 103     public String getFormattedMessageWithCode(Params params){
 
 104         return getResponseCode()+"-" + getFormattedMessage(params);
 
 108     public String toString() {
 
 109         return "LCMCommandStatus{" +
 
 110                 "responseCode=" + responseCode +
 
 111                 ", responseMessage='" + responseMessage + '\'' +
 
 115     public Status toStatus(Params params) {
 
 116         return new Status(responseCode, getFormattedMessage(params));