2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.impl;
23 import com.fasterxml.jackson.databind.DeserializationFeature;
24 import com.fasterxml.jackson.databind.ObjectMapper;
25 import com.fasterxml.jackson.databind.module.SimpleModule;
26 import com.google.gson.Gson;
27 import com.google.gson.GsonBuilder;
28 import com.google.gson.reflect.TypeToken;
29 import fj.data.Either;
30 import org.apache.commons.lang3.StringUtils;
31 import org.openecomp.sdc.be.auditing.api.AuditEventFactory;
32 import org.openecomp.sdc.be.auditing.impl.AuditAuthRequestEventFactory;
33 import org.openecomp.sdc.be.auditing.impl.AuditBaseEventFactory;
34 import org.openecomp.sdc.be.auditing.impl.AuditConsumerEventFactory;
35 import org.openecomp.sdc.be.auditing.impl.AuditEcompOpEnvEventFactory;
36 import org.openecomp.sdc.be.auditing.impl.AuditResourceEventFactoryMananger;
37 import org.openecomp.sdc.be.auditing.impl.AuditingManager;
38 import org.openecomp.sdc.be.auditing.impl.distribution.AuditDistribDownloadEventFactory;
39 import org.openecomp.sdc.be.auditing.impl.usersadmin.AuditUserAccessEventFactory;
40 import org.openecomp.sdc.be.auditing.impl.usersadmin.AuditUserAdminEventFactory;
41 import org.openecomp.sdc.be.components.impl.ImportUtils.ResultStatusEnum;
42 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
43 import org.openecomp.sdc.be.config.BeEcompErrorManager;
44 import org.openecomp.sdc.be.dao.api.ActionStatus;
45 import org.openecomp.sdc.be.dao.graph.datatype.AdditionalInformationEnum;
46 import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterInfo;
47 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
48 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
49 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
50 import org.openecomp.sdc.be.model.CapabilityTypeDefinition;
51 import org.openecomp.sdc.be.model.Component;
52 import org.openecomp.sdc.be.model.ConsumerDefinition;
53 import org.openecomp.sdc.be.model.DataTypeDefinition;
54 import org.openecomp.sdc.be.model.GroupTypeDefinition;
55 import org.openecomp.sdc.be.model.PolicyTypeDefinition;
56 import org.openecomp.sdc.be.model.PropertyConstraint;
57 import org.openecomp.sdc.be.model.RequirementDefinition;
58 import org.openecomp.sdc.be.model.Resource;
59 import org.openecomp.sdc.be.model.User;
60 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
61 import org.openecomp.sdc.be.model.operations.impl.PropertyOperation.PropertyConstraintDeserialiser;
62 import org.openecomp.sdc.be.model.operations.impl.PropertyOperation.PropertyConstraintJacksonDeserializer;
63 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
64 import org.openecomp.sdc.be.resources.data.auditing.model.CommonAuditData;
65 import org.openecomp.sdc.be.resources.data.auditing.model.DistributionData;
66 import org.openecomp.sdc.be.resources.data.auditing.model.ResourceAuditData;
67 import org.openecomp.sdc.be.tosca.ToscaError;
68 import org.openecomp.sdc.common.api.Constants;
69 import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum;
70 import org.openecomp.sdc.common.util.ThreadLocalsHolder;
71 import org.openecomp.sdc.common.util.ValidationUtils;
72 import org.openecomp.sdc.exception.ResponseFormat;
73 import org.slf4j.Logger;
74 import org.slf4j.LoggerFactory;
76 import javax.servlet.http.HttpServletRequest;
77 import java.lang.reflect.Type;
78 import java.util.Collections;
79 import java.util.EnumMap;
80 import java.util.List;
83 @org.springframework.stereotype.Component("componentUtils")
84 public class ComponentsUtils {
86 private static final Logger log = LoggerFactory.getLogger(ComponentsUtils.class);
87 private final AuditingManager auditingManager;
88 private final ResponseFormatManager responseFormatManager;
90 public ComponentsUtils(AuditingManager auditingManager) {
91 this.auditingManager = auditingManager;
92 this.responseFormatManager = ResponseFormatManager.getInstance();
95 public AuditingManager getAuditingManager() {
96 return auditingManager;
99 public <T> Either<T, ResponseFormat> convertJsonToObject(String data, User user, Class<T> clazz, AuditingActionEnum actionEnum) {
101 BeEcompErrorManager.getInstance().logBeInvalidJsonInput("convertJsonToObject");
102 log.debug("object is null after converting from json");
103 ResponseFormat responseFormat = getInvalidContentErrorAndAudit(user, actionEnum);
104 return Either.right(responseFormat);
107 T obj = parseJsonToObject(data, clazz);
108 return Either.left(obj);
109 } catch (Exception e) {
111 BeEcompErrorManager.getInstance().logBeInvalidJsonInput("convertJsonToObject");
112 log.debug("failed to convert from json {}", data, e);
113 ResponseFormat responseFormat = getInvalidContentErrorAndAudit(user, actionEnum);
114 return Either.right(responseFormat);
118 public static <T> T parseJsonToObject(String data, Class<T> clazz) {
119 Type constraintType = new TypeToken<PropertyConstraint>() {}.getType();
120 Gson gson = new GsonBuilder().registerTypeAdapter(constraintType, new PropertyConstraintDeserialiser()).create();
121 log.trace("convert json to object. json=\n{}", data);
122 return gson.fromJson(data, clazz);
125 public <T> Either<T, ResponseFormat> convertJsonToObjectUsingObjectMapper(String data, User user, Class<T> clazz, AuditingActionEnum actionEnum, ComponentTypeEnum typeEnum) {
127 ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
128 mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
130 log.trace("convert json to object. json=\n{}", data);
132 SimpleModule module = new SimpleModule("customDeserializationModule");
133 module.addDeserializer(PropertyConstraint.class, new PropertyConstraintJacksonDeserializer());
134 mapper.registerModule(module);
136 component = mapper.readValue(data, clazz);
137 if (component == null) {
138 BeEcompErrorManager.getInstance().logBeInvalidJsonInput("convertJsonToObject");
139 log.debug("object is null after converting from json");
140 ResponseFormat responseFormat = getInvalidContentErrorAndAuditComponent(user, actionEnum, typeEnum);
141 return Either.right(responseFormat);
143 } catch (Exception e) {
144 BeEcompErrorManager.getInstance().logBeInvalidJsonInput("convertJsonToObject");
145 log.debug("failed to convert from json {}", data, e);
146 ResponseFormat responseFormat = getInvalidContentErrorAndAuditComponent(user, actionEnum, typeEnum);
147 return Either.right(responseFormat);
149 return Either.left(component);
152 public ResponseFormat getResponseFormat(ActionStatus actionStatus, String... params) {
153 return responseFormatManager.getResponseFormat(actionStatus, params);
156 public ResponseFormat getResponseFormat(StorageOperationStatus storageStatus, String... params) {
157 return responseFormatManager.getResponseFormat(this.convertFromStorageResponse(storageStatus), params);
160 public <T> Either<List<T>, ResponseFormat> convertToResponseFormatOrNotFoundErrorToEmptyList(StorageOperationStatus storageOperationStatus) {
161 return storageOperationStatus.equals(StorageOperationStatus.NOT_FOUND) ? Either.left(Collections.emptyList()) :
162 Either.right(getResponseFormat(storageOperationStatus));
166 * Returns the response format of resource error with respective variables according to actionStatus. This is needed for cases where actionStatus is anonymously converted from storage operation, and the caller doesn't know what actionStatus he
167 * received. It's caller's Responsibility to fill the resource object passed to this function with needed fields.
169 * Note that RESOURCE_IN_USE case passes hardcoded "resource" string to the error parameter. This means that if Resource object will also be used for Service, this code needs to be refactored and we should tell Resource from Service.
171 * @param actionStatus
175 public ResponseFormat getResponseFormatByResource(ActionStatus actionStatus, Resource resource) {
176 if (resource == null) {
177 return getResponseFormat(actionStatus);
179 ResponseFormat responseFormat;
181 switch (actionStatus) {
182 case COMPONENT_VERSION_ALREADY_EXIST:
183 responseFormat = getResponseFormat(ActionStatus.COMPONENT_VERSION_ALREADY_EXIST, ComponentTypeEnum.RESOURCE.getValue(), resource.getVersion());
185 case RESOURCE_NOT_FOUND:
186 responseFormat = getResponseFormat(ActionStatus.RESOURCE_NOT_FOUND, resource.getName());
188 case COMPONENT_NAME_ALREADY_EXIST:
189 responseFormat = getResponseFormat(ActionStatus.COMPONENT_NAME_ALREADY_EXIST, ComponentTypeEnum.RESOURCE.getValue(), resource.getName());
191 case COMPONENT_IN_USE:
192 responseFormat = getResponseFormat(ActionStatus.COMPONENT_IN_USE, ComponentTypeEnum.RESOURCE.name().toLowerCase(), resource.getUniqueId());
195 responseFormat = getResponseFormat(actionStatus);
198 return responseFormat;
201 public ResponseFormat getResponseFormatByResource(ActionStatus actionStatus, String resourceName) {
202 if (resourceName == null) {
203 return getResponseFormat(actionStatus);
205 ResponseFormat responseFormat;
207 switch (actionStatus) {
208 case RESOURCE_NOT_FOUND:
209 responseFormat = getResponseFormat(ActionStatus.RESOURCE_NOT_FOUND, resourceName);
212 responseFormat = getResponseFormat(actionStatus);
215 return responseFormat;
218 public ResponseFormat getResponseFormatByCapabilityType(ActionStatus actionStatus, CapabilityTypeDefinition capabilityType) {
219 if (capabilityType == null) {
220 return getResponseFormat(actionStatus);
222 ResponseFormat responseFormat;
224 switch (actionStatus) {
225 case CAPABILITY_TYPE_ALREADY_EXIST:
226 responseFormat = getResponseFormat(ActionStatus.CAPABILITY_TYPE_ALREADY_EXIST, capabilityType.getType());
229 responseFormat = getResponseFormat(actionStatus);
232 return responseFormat;
235 public <T> ResponseFormat getResponseFormatByElement(ActionStatus actionStatus, T obj) {
237 return getResponseFormat(actionStatus);
239 ResponseFormat responseFormat = null;
241 switch (actionStatus) {
242 case MISSING_CAPABILITY_TYPE:
243 if (obj instanceof List && org.apache.commons.collections.CollectionUtils.isNotEmpty((List) obj)) {
244 List list = (List) obj;
245 if (list.get(0) instanceof RequirementDefinition) {
246 responseFormat = getResponseFormat(ActionStatus.MISSING_CAPABILITY_TYPE, ((RequirementDefinition) list.get(0)).getName()); //Arbitray index, all we need is single object
247 return responseFormat;
250 log.debug("UNKNOWN TYPE : expecting obj as a non empty List<RequirmentsDefinitions>");
253 responseFormat = getResponseFormat(actionStatus);
256 return responseFormat;
260 * Returns the response format of resource error with respective variables according to actionStatus. This is needed for cases where actionStatus is anynomously converted from storage operation, and the caller doesn't know what actionStatus he
261 * received. It's caller's responisibility to fill the passed resource object with needed fields.
263 * @param actionStatus
267 public ResponseFormat getResponseFormatByUser(ActionStatus actionStatus, User user) {
269 return getResponseFormat(actionStatus);
271 ResponseFormat requestErrorWrapper;
272 switch (actionStatus) {
273 case INVALID_USER_ID:
274 requestErrorWrapper = getResponseFormat(actionStatus, user.getUserId());
276 case INVALID_EMAIL_ADDRESS:
277 requestErrorWrapper = getResponseFormat(actionStatus, user.getEmail());
280 requestErrorWrapper = getResponseFormat(actionStatus, user.getRole());
283 case USER_ALREADY_EXIST:
285 case USER_HAS_ACTIVE_ELEMENTS:
286 requestErrorWrapper = getResponseFormat(actionStatus, user.getUserId());
289 requestErrorWrapper = getResponseFormat(actionStatus);
292 return requestErrorWrapper;
295 public ResponseFormat getResponseFormatByUserId(ActionStatus actionStatus, String userId) {
296 User user = new User();
297 user.setUserId(userId);
298 return getResponseFormatByUser(actionStatus, user);
301 public ResponseFormat getResponseFormatByDE(ActionStatus actionStatus, String serviceId, String envName) {
302 ResponseFormat responseFormat;
304 switch (actionStatus) {
305 case DISTRIBUTION_ENVIRONMENT_NOT_AVAILABLE:
306 responseFormat = getResponseFormat(ActionStatus.DISTRIBUTION_ENVIRONMENT_NOT_AVAILABLE, envName);
308 case DISTRIBUTION_ENVIRONMENT_NOT_FOUND:
309 responseFormat = getResponseFormat(ActionStatus.DISTRIBUTION_ENVIRONMENT_NOT_FOUND, envName);
311 case DISTRIBUTION_ARTIFACT_NOT_FOUND:
312 responseFormat = getResponseFormat(ActionStatus.DISTRIBUTION_ARTIFACT_NOT_FOUND, serviceId);
315 responseFormat = getResponseFormat(actionStatus);
318 return responseFormat;
321 public ResponseFormat getResponseFormatByArtifactId(ActionStatus actionStatus, String artifactId) {
322 ResponseFormat responseFormat;
324 switch (actionStatus) {
325 case RESOURCE_NOT_FOUND:
326 case ARTIFACT_NOT_FOUND:
327 responseFormat = getResponseFormat(ActionStatus.ARTIFACT_NOT_FOUND, artifactId);
330 responseFormat = getResponseFormat(actionStatus);
333 return responseFormat;
336 public ResponseFormat getInvalidContentErrorAndAudit(User user, String resourceName, AuditingActionEnum actionEnum) {
337 ResponseFormat responseFormat = responseFormatManager.getResponseFormat(ActionStatus.INVALID_CONTENT);
338 log.debug("audit before sending response");
339 auditResource(responseFormat, user, resourceName, actionEnum);
340 return responseFormat;
343 public ResponseFormat getInvalidContentErrorAndAudit(User user, AuditingActionEnum actionEnum) {
344 ResponseFormat responseFormat = responseFormatManager.getResponseFormat(ActionStatus.INVALID_CONTENT);
345 log.debug("audit before sending response");
346 auditAdminUserAction(actionEnum, user, null, null, responseFormat);
347 return responseFormat;
350 public ResponseFormat getInvalidContentErrorAndAuditComponent(User user, AuditingActionEnum actionEnum, ComponentTypeEnum typeEnum) {
351 ResponseFormat responseFormat = responseFormatManager.getResponseFormat(ActionStatus.INVALID_CONTENT);
352 log.debug("audit before sending response");
353 auditComponentAdmin(responseFormat, user, null, actionEnum, typeEnum);
354 return responseFormat;
357 public void auditResource(ResponseFormat responseFormat, User modifier, Resource resource, AuditingActionEnum actionEnum, ResourceAuditData prevResFields) {
358 auditResource(responseFormat, modifier, resource, resource.getName(), actionEnum, prevResFields, null, null);
361 public void auditResource(ResponseFormat responseFormat, User modifier, String resourceName, AuditingActionEnum actionEnum) {
362 auditResource(responseFormat, modifier, null, resourceName, actionEnum);
365 public void auditResource(ResponseFormat responseFormat, User modifier, Resource resource, AuditingActionEnum actionEnum) {
366 auditResource(responseFormat, modifier, resource, resource.getName(), actionEnum);
369 public void auditResource(ResponseFormat responseFormat, User modifier, Resource resource, String resourceName, AuditingActionEnum actionEnum) {
370 auditResource(responseFormat, modifier, resource, resourceName, actionEnum, ResourceAuditData.newBuilder().build(), null, null);
373 public void auditResource(ResponseFormat responseFormat, User modifier, Resource resource, String resourceName, AuditingActionEnum actionEnum,
374 ResourceAuditData prevResFields, String currentArtifactUuid, String artifactData) {
375 if (actionEnum != null) {
376 int status = responseFormat.getStatus();
379 String resourceCurrVersion = null;
380 String resourceCurrState = null;
381 String invariantUUID = null;
382 String resourceType = ComponentTypeEnum.RESOURCE.getValue();
383 String toscaNodeType = null;
385 log.trace("Inside auditing for audit action {}", actionEnum);
387 if (responseFormat.getMessageId() != null) {
388 message = responseFormat.getMessageId() + ": ";
390 message += responseFormat.getFormattedMessage();
392 if (resource != null) {
393 resourceName = resource.getName();
394 resourceCurrVersion = resource.getVersion();
395 if (resource.getLifecycleState() != null) {
396 resourceCurrState = resource.getLifecycleState().name();
398 if (resource.getResourceType() != null) {
399 resourceType = resource.getResourceType().name();
401 invariantUUID = resource.getInvariantUUID();
402 uuid = resource.getUUID();
403 toscaNodeType = resource.getToscaResourceName();
406 AuditBaseEventFactory factory = AuditResourceEventFactoryMananger.createResourceEventFactory(
408 CommonAuditData.newBuilder()
410 .description(message)
411 .requestId(ThreadLocalsHolder.getUuid())
412 .serviceInstanceId(uuid)
415 ResourceAuditData.newBuilder()
416 .artifactUuid(currentArtifactUuid)
417 .state(resourceCurrState)
418 .version(resourceCurrVersion)
420 resourceType, resourceName, invariantUUID,
421 modifier, artifactData, null, null, toscaNodeType);
423 getAuditingManager().auditEvent(factory);
427 private void updateUserFields(User modifier, EnumMap<AuditingFieldsKeysEnum, Object> auditingFields) {
428 if (modifier != null) {
429 String firstName = modifier.getFirstName();
430 String lastName = modifier.getLastName();
431 if (firstName != null || lastName != null) {// to prevent "null
433 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME, firstName + " " + lastName);
435 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifier.getUserId());
439 public void auditDistributionDownload(ResponseFormat responseFormat, DistributionData distributionData) {
440 log.trace("Inside auditing");
441 int status = responseFormat.getStatus();
443 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
444 if (responseFormat.getMessageId() != null) {
445 message = responseFormat.getMessageId() + ": ";
447 message += responseFormat.getFormattedMessage();
449 getAuditingManager().auditEvent(auditingFields);
450 AuditDistribDownloadEventFactory factory = new AuditDistribDownloadEventFactory(
451 CommonAuditData.newBuilder()
453 .description(message)
454 .requestId(ThreadLocalsHolder.getUuid())
457 getAuditingManager().auditEvent(factory);
460 public void auditExternalGetAsset(ResponseFormat responseFormat, AuditingActionEnum actionEnum, EnumMap<AuditingFieldsKeysEnum, Object> additionalParams) {
461 log.trace("Inside auditing for audit action {}", actionEnum);
462 int status = responseFormat.getStatus();
464 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
465 if (responseFormat.getMessageId() != null) {
466 message = responseFormat.getMessageId() + ": ";
468 message += responseFormat.getFormattedMessage();
469 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
470 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
471 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, message);
473 if (additionalParams != null) {
474 auditingFields.putAll(additionalParams);
477 getAuditingManager().auditEvent(auditingFields);
480 public void auditExternalCrudApi(ResponseFormat responseFormat, String componentType, String actionEnum, HttpServletRequest request, EnumMap<AuditingFieldsKeysEnum, Object> additionalParams) {
481 log.trace("Inside auditing for audit action {}", actionEnum);
482 String instanceIdHeader = request.getHeader(Constants.X_ECOMP_INSTANCE_ID_HEADER);
483 String requestURI = request.getRequestURI();
484 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
487 if (responseFormat != null) {
488 status = responseFormat.getStatus();
489 if (responseFormat.getMessageId() != null) {
490 message = responseFormat.getMessageId() + ": ";
492 message += responseFormat.getFormattedMessage();
494 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum);
495 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, instanceIdHeader);
496 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_RESOURCE_URL, requestURI);
497 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType);
498 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
499 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, message);
501 if (additionalParams != null) {
502 auditingFields.putAll(additionalParams);
503 if (!additionalParams.containsKey(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME)) {
504 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, "");
508 getAuditingManager().auditEvent(auditingFields);
511 public void auditExternalActivateService(ResponseFormat responseFormat, String componentType, HttpServletRequest request, EnumMap<AuditingFieldsKeysEnum, Object> additionalParams) {
512 auditExternalCrudApi(responseFormat, componentType, AuditingActionEnum.ACTIVATE_SERVICE_BY_API.getName(), request, additionalParams);
513 }public void auditExternalDownloadArtifact(ResponseFormat responseFormat, String componentType, HttpServletRequest request, EnumMap<AuditingFieldsKeysEnum, Object> additionalParams) {
514 auditExternalCrudApi(responseFormat, componentType, AuditingActionEnum.DOWNLOAD_ARTIFACT.getName(), request, additionalParams);
517 public void auditExternalUploadArtifact(ResponseFormat responseFormat, String componentType, HttpServletRequest request, EnumMap<AuditingFieldsKeysEnum, Object> additionalParams) {
518 additionalParams.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, request.getHeader(Constants.USER_ID_HEADER));
519 additionalParams.put(AuditingFieldsKeysEnum.AUDIT_PREV_ARTIFACT_UUID, "");
520 auditExternalCrudApi(responseFormat, componentType, AuditingActionEnum.ARTIFACT_UPLOAD_BY_API.getName(), request, additionalParams);
523 public void auditExternalUpdateArtifact(ResponseFormat responseFormat, String componentType, HttpServletRequest request, EnumMap<AuditingFieldsKeysEnum, Object> additionalParams) {
524 additionalParams.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, request.getHeader(Constants.USER_ID_HEADER));
525 additionalParams.put(AuditingFieldsKeysEnum.AUDIT_PREV_ARTIFACT_UUID, "");
526 auditExternalCrudApi(responseFormat, componentType, AuditingActionEnum.ARTIFACT_UPDATE_BY_API.getName(), request, additionalParams);
529 public void auditExternalDeleteArtifact(ResponseFormat responseFormat, String componentType, HttpServletRequest request, EnumMap<AuditingFieldsKeysEnum, Object> additionalParams) {
530 additionalParams.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, request.getHeader(Constants.USER_ID_HEADER));
531 additionalParams.put(AuditingFieldsKeysEnum.AUDIT_PREV_ARTIFACT_UUID, "");
532 auditExternalCrudApi(responseFormat, componentType, AuditingActionEnum.ARTIFACT_DELETE_BY_API.getName(), request, additionalParams);
535 public void auditCategory(ResponseFormat responseFormat, User modifier, String categoryName, String subCategoryName, String groupingName, AuditingActionEnum actionEnum, String componentType) {
536 log.trace("Inside auditing for audit action {}", actionEnum);
537 int status = responseFormat.getStatus();
540 if (responseFormat.getMessageId() != null) {
541 message = responseFormat.getMessageId() + ": ";
543 message += responseFormat.getFormattedMessage();
545 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
546 updateUserFields(modifier, auditingFields);
547 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType);
549 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
550 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
551 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, message);
553 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_CATEGORY_NAME, categoryName);
554 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SUB_CATEGORY_NAME, subCategoryName);
555 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_GROUPING_NAME, groupingName);
556 getAuditingManager().auditEvent(auditingFields);
559 public ActionStatus convertFromStorageResponse(StorageOperationStatus storageResponse) {
561 return convertFromStorageResponse(storageResponse, ComponentTypeEnum.RESOURCE);
564 public ActionStatus convertFromStorageResponse(StorageOperationStatus storageResponse, ComponentTypeEnum type) {
566 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
567 if (storageResponse == null) {
570 switch (storageResponse) {
572 responseEnum = ActionStatus.OK;
574 case CONNECTION_FAILURE:
576 responseEnum = ActionStatus.GENERAL_ERROR;
579 responseEnum = ActionStatus.INVALID_CONTENT;
581 case ENTITY_ALREADY_EXISTS:
582 responseEnum = ActionStatus.COMPONENT_NAME_ALREADY_EXIST;
584 case PARENT_RESOURCE_NOT_FOUND:
585 responseEnum = ActionStatus.PARENT_RESOURCE_NOT_FOUND;
587 case MULTIPLE_PARENT_RESOURCE_FOUND:
588 responseEnum = ActionStatus.MULTIPLE_PARENT_RESOURCE_FOUND;
591 if (ComponentTypeEnum.RESOURCE == type) {
592 responseEnum = ActionStatus.RESOURCE_NOT_FOUND;
593 } else if (ComponentTypeEnum.PRODUCT == type) {
594 responseEnum = ActionStatus.PRODUCT_NOT_FOUND;
596 responseEnum = ActionStatus.SERVICE_NOT_FOUND;
599 case FAILED_TO_LOCK_ELEMENT:
600 responseEnum = ActionStatus.COMPONENT_IN_USE;
602 case ARTIFACT_NOT_FOUND:
603 responseEnum = ActionStatus.ARTIFACT_NOT_FOUND;
605 case DISTR_ENVIRONMENT_NOT_AVAILABLE:
606 responseEnum = ActionStatus.DISTRIBUTION_ENVIRONMENT_NOT_AVAILABLE;
608 case DISTR_ENVIRONMENT_NOT_FOUND:
609 responseEnum = ActionStatus.DISTRIBUTION_ENVIRONMENT_NOT_FOUND;
611 case DISTR_ENVIRONMENT_SENT_IS_INVALID:
612 responseEnum = ActionStatus.DISTRIBUTION_ENVIRONMENT_INVALID;
614 case DISTR_ARTIFACT_NOT_FOUND:
615 responseEnum = ActionStatus.DISTRIBUTION_ARTIFACT_NOT_FOUND;
618 responseEnum = ActionStatus.INVALID_CONTENT;
621 responseEnum = ActionStatus.INVALID_CONTENT;
624 responseEnum = ActionStatus.CSAR_NOT_FOUND;
626 case PROPERTY_NAME_ALREADY_EXISTS:
627 responseEnum = ActionStatus.PROPERTY_NAME_ALREADY_EXISTS;
629 case MATCH_NOT_FOUND:
630 responseEnum = ActionStatus.COMPONENT_SUB_CATEGORY_NOT_FOUND_FOR_CATEGORY;
632 case CATEGORY_NOT_FOUND:
633 responseEnum = ActionStatus.COMPONENT_CATEGORY_NOT_FOUND;
635 case INVALID_PROPERTY:
636 responseEnum = ActionStatus.INVALID_PROPERTY;
639 responseEnum = ActionStatus.GENERAL_ERROR;
642 log.debug("convert storage response {} to action response {}", storageResponse, responseEnum);
646 public ActionStatus convertFromToscaError(ToscaError toscaError) {
647 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
648 if (toscaError == null) {
651 switch (toscaError) {// TODO match errors
652 case NODE_TYPE_CAPABILITY_ERROR:
653 case NOT_SUPPORTED_TOSCA_TYPE:
654 case NODE_TYPE_REQUIREMENT_ERROR:
655 responseEnum = ActionStatus.INVALID_CONTENT;
658 responseEnum = ActionStatus.GENERAL_ERROR;
664 public ActionStatus convertFromStorageResponseForCapabilityType(StorageOperationStatus storageResponse) {
665 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
667 switch (storageResponse) {
669 responseEnum = ActionStatus.OK;
671 case CONNECTION_FAILURE:
673 responseEnum = ActionStatus.GENERAL_ERROR;
676 responseEnum = ActionStatus.INVALID_CONTENT;
678 case ENTITY_ALREADY_EXISTS:
679 responseEnum = ActionStatus.CAPABILITY_TYPE_ALREADY_EXIST;
681 case SCHEMA_VIOLATION:
682 responseEnum = ActionStatus.CAPABILITY_TYPE_ALREADY_EXIST;
685 responseEnum = ActionStatus.GENERAL_ERROR;
688 log.debug("convert storage response {} to action response {}", storageResponse, responseEnum);
692 public ActionStatus convertFromStorageResponseForLifecycleType(StorageOperationStatus storageResponse) {
693 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
695 switch (storageResponse) {
697 responseEnum = ActionStatus.OK;
699 case CONNECTION_FAILURE:
701 responseEnum = ActionStatus.GENERAL_ERROR;
704 responseEnum = ActionStatus.INVALID_CONTENT;
706 case ENTITY_ALREADY_EXISTS:
707 responseEnum = ActionStatus.LIFECYCLE_TYPE_ALREADY_EXIST;
709 case SCHEMA_VIOLATION:
710 responseEnum = ActionStatus.LIFECYCLE_TYPE_ALREADY_EXIST;
713 responseEnum = ActionStatus.GENERAL_ERROR;
716 log.debug("convert storage response {} to action response {}", storageResponse, responseEnum);
720 public ActionStatus convertFromStorageResponseForResourceInstance(StorageOperationStatus storageResponse, boolean isRelation) {
721 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
723 switch (storageResponse) {
725 responseEnum = ActionStatus.OK;
728 responseEnum = ActionStatus.RESOURCE_INSTANCE_BAD_REQUEST;
730 case INVALID_PROPERTY:
731 responseEnum = ActionStatus.INVALID_PROPERTY;
734 responseEnum = ActionStatus.GENERAL_ERROR;
737 responseEnum = ActionStatus.INVALID_CONTENT;
739 case MATCH_NOT_FOUND:
740 responseEnum = ActionStatus.RESOURCE_INSTANCE_MATCH_NOT_FOUND;
742 case SCHEMA_VIOLATION:
743 responseEnum = ActionStatus.RESOURCE_INSTANCE_ALREADY_EXIST;
747 responseEnum = ActionStatus.RESOURCE_INSTANCE_RELATION_NOT_FOUND;
749 responseEnum = ActionStatus.RESOURCE_INSTANCE_NOT_FOUND;
753 responseEnum = ActionStatus.GENERAL_ERROR;
756 log.debug("convert storage response {} to action response {}", storageResponse, responseEnum);
760 public ResponseFormat getResponseFormatForResourceInstance(ActionStatus actionStatus, String serviceName, String resourceInstanceName) {
761 ResponseFormat responseFormat;
763 if (actionStatus == ActionStatus.RESOURCE_INSTANCE_NOT_FOUND) {
764 responseFormat = getResponseFormat(actionStatus, resourceInstanceName);
767 responseFormat = getResponseFormat(actionStatus, serviceName);
769 return responseFormat;
772 public ResponseFormat getResponseFormatForResourceInstanceProperty(ActionStatus actionStatus, String resourceInstanceName) {
773 ResponseFormat responseFormat;
774 if (actionStatus == ActionStatus.RESOURCE_INSTANCE_NOT_FOUND) {
775 responseFormat = getResponseFormat(actionStatus, resourceInstanceName);
778 responseFormat = getResponseFormat(actionStatus);
780 return responseFormat;
783 public ActionStatus convertFromStorageResponseForResourceInstanceProperty(StorageOperationStatus storageResponse) {
784 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
786 switch (storageResponse) {
788 responseEnum = ActionStatus.OK;
791 responseEnum = ActionStatus.RESOURCE_INSTANCE_BAD_REQUEST;
794 responseEnum = ActionStatus.GENERAL_ERROR;
797 responseEnum = ActionStatus.INVALID_CONTENT;
799 case MATCH_NOT_FOUND:
800 responseEnum = ActionStatus.RESOURCE_INSTANCE_MATCH_NOT_FOUND;
802 case SCHEMA_VIOLATION:
803 responseEnum = ActionStatus.RESOURCE_INSTANCE_ALREADY_EXIST;
806 responseEnum = ActionStatus.RESOURCE_INSTANCE_NOT_FOUND;
809 responseEnum = ActionStatus.GENERAL_ERROR;
812 log.debug("convert storage response {} to action response {}", storageResponse, responseEnum);
816 public void auditComponent(ResponseFormat responseFormat, User modifier, Component component, AuditingActionEnum actionEnum, ComponentTypeEnum type, ResourceAuditData prevComponent, String comment) {
817 auditComponent(responseFormat, modifier, component, actionEnum, type, prevComponent, null, null, comment, null, null);
820 public void auditComponentAdmin(ResponseFormat responseFormat, User modifier, Component component, AuditingActionEnum actionEnum, ComponentTypeEnum type) {
821 auditComponent(responseFormat, modifier, component, actionEnum, type, ResourceAuditData.newBuilder().build());
824 public void auditComponentAdmin(ResponseFormat responseFormat, User modifier, Component component, AuditingActionEnum actionEnum, ComponentTypeEnum type, ResourceAuditData prevComponent) {
825 auditComponent(responseFormat, modifier, component, actionEnum, type, prevComponent);
828 public void auditComponent(ResponseFormat responseFormat, User modifier, Component component, AuditingActionEnum actionEnum, ComponentTypeEnum type, ResourceAuditData prevComponent) {
829 auditComponent(responseFormat, modifier, component, actionEnum, type, prevComponent, null, null, null, null, null);
833 public void auditComponent(ResponseFormat responseFormat, User modifier, AuditingActionEnum actionEnum, String compName, ComponentTypeEnum type, String comment) {
834 auditComponent(responseFormat, modifier, null, actionEnum, type, ResourceAuditData.newBuilder().build(), null, compName, comment, null, null);
837 public void auditComponent(ResponseFormat responseFormat, User modifier, Component component, AuditingActionEnum actionEnum, ComponentTypeEnum type, ResourceAuditData prevComponent, ResourceAuditData currComponent) {
838 auditComponent(responseFormat, modifier, component, actionEnum, type, prevComponent, currComponent, null, null, null, null);
841 public void auditComponent(ResponseFormat responseFormat, User modifier, Component component, AuditingActionEnum actionEnum, ComponentTypeEnum type, ResourceAuditData prevComponent, ResourceAuditData currComponent, String compName, String comment, String artifactData, String did) {
842 if (actionEnum != null) {
844 String currState = null;
845 String invariantUUID = null;
846 String currArtifactUid = null;
847 String currVersion = null;
848 String dcurrStatus = null;
851 int status = responseFormat.getStatus();
853 log.trace("Inside auditing for audit action {}", actionEnum);
855 if (responseFormat.getMessageId() != null) {
856 message = responseFormat.getMessageId() + ": ";
858 message += responseFormat.getFormattedMessage();
861 if (component != null) {
862 // fields that are filled during creation and might still be empty
863 if (component.getLifecycleState() != null) {
864 currState = component.getLifecycleState().name();
866 uuid = component.getUUID();
867 invariantUUID = component.getInvariantUUID();
868 currVersion = component.getVersion();
869 if (StringUtils.isEmpty(compName)) {
870 compName = component.getComponentMetadataDefinition().getMetadataDataDefinition().getName();
873 if (currComponent != null) {
874 currArtifactUid = currComponent.getArtifactUuid();
875 dcurrStatus = currComponent.getDistributionStatus();
876 if (currState == null) { //probably it was not set
877 currState = currComponent.getState();
879 if (currVersion == null) { //probably it was not set
880 currVersion = currComponent.getVersion();
883 AuditBaseEventFactory factory = AuditResourceEventFactoryMananger.createResourceEventFactory(
885 CommonAuditData.newBuilder()
887 .description(message)
888 .requestId(ThreadLocalsHolder.getUuid())
889 .serviceInstanceId(uuid)
892 ResourceAuditData.newBuilder()
893 .artifactUuid(currArtifactUid)
895 .version(currVersion)
896 .distributionStatus(dcurrStatus)
898 type.getValue().replace(" ", ""), compName, invariantUUID,
899 modifier, artifactData, comment, did, null);
901 getAuditingManager().auditEvent(factory);
905 public void auditDistributionEngine(AuditingActionEnum actionEnum, String environmentName, String topicName, String role, String apiKey, String status) {
907 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<>(AuditingFieldsKeysEnum.class);
908 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
910 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ENVRIONMENT_NAME, environmentName);
911 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_TOPIC_NAME, topicName);
912 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ROLE, role);
913 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_API_KEY, apiKey);
914 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
916 getAuditingManager().auditEvent(auditingFields);
920 public void auditEnvironmentEngine(AuditingActionEnum actionEnum, String environmentID,
921 String environmentType, String action, String environmentName, String tenantContext) {
922 getAuditingManager().auditEvent(new AuditEcompOpEnvEventFactory(actionEnum, environmentID, environmentName,
923 environmentType, action, tenantContext));
926 public void auditDistributionNotification(AuditingActionEnum actionEnum, String serviceUUID, String resourceName, String resourceType, String currVersion, String modifierUid, String modifierName, String environmentName, String currState,
927 String topicName, String distributionId, String description, String status, String workloadContext, String tenant) {
929 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
930 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
931 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, serviceUUID);
934 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_TOPIC_NAME, topicName);
935 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ID, distributionId);
936 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
937 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_VERSION, currVersion);
938 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_STATE, currState);
939 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, resourceType);
940 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, description);
941 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifierUid);
942 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME, modifierName);
943 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, resourceName);
944 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_TENANT, tenant);
945 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_VNF_WORKLOAD_CONTEXT, workloadContext);
946 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ENVIRONMENT_ID, environmentName);
948 getAuditingManager().auditEvent(auditingFields);
951 public void auditAuthEvent(String url, String user, String authStatus, String realm) {
952 getAuditingManager().auditEvent(new AuditAuthRequestEventFactory(
953 CommonAuditData.newBuilder()
954 .requestId(ThreadLocalsHolder.getUuid())
956 user, url, realm, authStatus));
959 public void auditDistributionStatusNotification(AuditingActionEnum actionEnum, String distributionId, String consumerId, String topicName, String resourceUrl, String statusTime, String status, String errorReason) {
961 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
962 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
963 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, distributionId);
964 ThreadLocalsHolder.setUuid(distributionId);
966 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ID, distributionId);
967 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, consumerId);
968 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_TOPIC_NAME, topicName);
969 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_RESOURCE_URL, resourceUrl);
970 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_STATUS_TIME, statusTime);
971 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
972 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, errorReason);
974 getAuditingManager().auditEvent(auditingFields);
977 public void auditGetUebCluster(AuditingActionEnum actionEnum, String consumerId, String statusTime, String status, String description) {
979 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
980 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
981 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, consumerId);
982 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_STATUS_TIME, statusTime);
983 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
984 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_STATUS_DESC, description);
986 getAuditingManager().auditEvent(auditingFields);
989 public void auditMissingInstanceId(AuditingActionEnum actionEnum, String status, String description) {
991 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
992 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
993 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, null);
994 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, null);
995 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
996 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, description);
998 getAuditingManager().auditEvent(auditingFields);
1001 public void auditTopicACLKeys(AuditingActionEnum actionEnum, String envName, String topicName, String role, String apiPublicKey, String status) {
1003 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
1004 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
1005 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ENVRIONMENT_NAME, envName);
1006 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_TOPIC_NAME, topicName);
1007 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ROLE, role);
1008 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_API_KEY, apiPublicKey);
1009 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
1011 getAuditingManager().auditEvent(auditingFields);
1014 public void auditRegisterOrUnRegisterEvent(AuditingActionEnum actionEnum, String consumerId, String apiPublicKey, String envName, String status, String statusDesc, String notifTopicName, String statusTopicName) {
1015 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
1016 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
1017 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, consumerId);
1018 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_API_KEY, apiPublicKey);
1019 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ENVRIONMENT_NAME, envName);
1020 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
1021 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_STATUS_DESC, statusDesc);
1022 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_NOTIFICATION_TOPIC_NAME, notifTopicName);
1023 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_STATUS_TOPIC_NAME, statusTopicName);
1024 getAuditingManager().auditEvent(auditingFields);
1027 public void auditServiceDistributionDeployed(AuditingActionEnum actionEnum, String serviceName, String serviceVersion, String serviceUUID, String distributionId, String status, String desc, User modifier) {
1029 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
1030 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
1031 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, serviceUUID);
1033 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME, modifier.getFirstName() + " " + modifier.getLastName());
1034 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifier.getUserId());
1035 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, "Service");
1036 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, serviceName);
1037 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_VERSION, serviceVersion);
1039 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ID, distributionId);
1040 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
1041 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, desc);
1043 getAuditingManager().auditEvent(auditingFields);
1046 public void auditConsumerCredentialsEvent(AuditingActionEnum actionEnum, ConsumerDefinition consumer, ResponseFormat responseFormat, User modifier) {
1047 int status = responseFormat.getStatus();
1048 String message = "";
1050 if (responseFormat.getMessageId() != null) {
1051 message = responseFormat.getMessageId() + ": ";
1053 message += responseFormat.getFormattedMessage();
1055 AuditEventFactory factory = new AuditConsumerEventFactory(actionEnum,
1056 CommonAuditData.newBuilder()
1057 .description(message)
1059 .requestId(ThreadLocalsHolder.getUuid())
1061 modifier, consumer);
1063 getAuditingManager().auditEvent(factory);
1066 public void auditGetUsersList(AuditingActionEnum actionEnum, User modifier, String details, ResponseFormat responseFormat) {
1068 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
1069 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
1070 if (modifier != null) {
1071 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME, modifier.getFirstName() + " " + modifier.getLastName());
1072 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifier.getUserId());
1075 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_USER_DETAILS, details);
1076 int status = responseFormat.getStatus();
1077 String message = "";
1079 if (responseFormat.getMessageId() != null) {
1080 message = responseFormat.getMessageId() + ": ";
1082 message += responseFormat.getFormattedMessage();
1083 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
1084 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, message);
1085 getAuditingManager().auditEvent(auditingFields);
1088 public void auditAdminUserAction(AuditingActionEnum actionEnum, User modifier, User userBefore, User userAfter, ResponseFormat responseFormat) {
1089 int status = responseFormat.getStatus();
1090 String message = "";
1092 if (responseFormat.getMessageId() != null) {
1093 message = responseFormat.getMessageId() + ": ";
1095 message += responseFormat.getFormattedMessage();
1097 AuditEventFactory factory = new AuditUserAdminEventFactory(actionEnum,
1098 CommonAuditData.newBuilder()
1099 .description(message)
1101 .requestId(ThreadLocalsHolder.getUuid())
1103 modifier, userBefore, userAfter);
1105 getAuditingManager().auditEvent(factory);
1108 public void auditUserAccess(AuditingActionEnum actionEnum, User user, ResponseFormat responseFormat) {
1110 int status = responseFormat.getStatus();
1111 String message = "";
1113 if (responseFormat.getMessageId() != null) {
1114 message = responseFormat.getMessageId() + ": ";
1116 message += responseFormat.getFormattedMessage();
1118 AuditEventFactory factory = new AuditUserAccessEventFactory(CommonAuditData.newBuilder()
1119 .description(message)
1121 .requestId(ThreadLocalsHolder.getUuid())
1125 getAuditingManager().auditEvent(factory);
1128 public void auditGetCategoryHierarchy(AuditingActionEnum actionEnum, User modifier, String details, ResponseFormat responseFormat) {
1130 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
1131 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, actionEnum.getName());
1132 if (modifier != null) {
1133 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME, modifier.getFirstName() + " " + modifier.getLastName());
1134 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifier.getUserId());
1136 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DETAILS, details);
1137 int status = responseFormat.getStatus();
1138 String message = "";
1140 if (responseFormat.getMessageId() != null) {
1141 message = responseFormat.getMessageId() + ": ";
1143 message += responseFormat.getFormattedMessage();
1144 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, status);
1145 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, message);
1146 getAuditingManager().auditEvent(auditingFields);
1149 public ResponseFormat getResponseFormatByComponent(ActionStatus actionStatus, Component component, ComponentTypeEnum type) {
1150 if (component == null) {
1151 return getResponseFormat(actionStatus);
1153 ResponseFormat responseFormat;
1155 switch (actionStatus) {
1156 case COMPONENT_VERSION_ALREADY_EXIST:
1157 responseFormat = getResponseFormat(ActionStatus.COMPONENT_VERSION_ALREADY_EXIST, type.getValue(), component.getVersion());
1159 case RESOURCE_NOT_FOUND:
1160 responseFormat = getResponseFormat(ActionStatus.RESOURCE_NOT_FOUND, component.getComponentMetadataDefinition().getMetadataDataDefinition().getName());
1162 case COMPONENT_NAME_ALREADY_EXIST:
1163 responseFormat = getResponseFormat(ActionStatus.COMPONENT_NAME_ALREADY_EXIST, type.getValue(), component.getComponentMetadataDefinition().getMetadataDataDefinition().getName());
1165 case COMPONENT_IN_USE:
1166 responseFormat = getResponseFormat(ActionStatus.COMPONENT_IN_USE, type.name().toLowerCase(), component.getUniqueId());
1168 case SERVICE_DEPLOYMENT_ARTIFACT_NOT_FOUND:
1169 responseFormat = getResponseFormat(ActionStatus.SERVICE_DEPLOYMENT_ARTIFACT_NOT_FOUND, component.getComponentMetadataDefinition().getMetadataDataDefinition().getName());
1172 responseFormat = getResponseFormat(actionStatus);
1175 return responseFormat;
1178 public boolean validateStringNotEmpty(String value) {
1179 return value != null && !value.trim().isEmpty();
1182 public ActionStatus convertFromStorageResponseForAdditionalInformation(StorageOperationStatus storageResponse) {
1183 ActionStatus responseEnum;
1185 switch (storageResponse) {
1187 responseEnum = ActionStatus.OK;
1189 case ENTITY_ALREADY_EXISTS:
1190 responseEnum = ActionStatus.COMPONENT_NAME_ALREADY_EXIST;
1193 responseEnum = ActionStatus.ADDITIONAL_INFORMATION_NOT_FOUND;
1196 responseEnum = ActionStatus.GENERAL_ERROR;
1199 log.debug("convert storage response {} to action response {}", storageResponse, responseEnum);
1200 return responseEnum;
1203 public ActionStatus convertFromResultStatusEnum(ResultStatusEnum resultStatus, JsonPresentationFields elementType) {
1204 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
1205 switch (resultStatus) {
1207 responseEnum = ActionStatus.OK;
1209 case ELEMENT_NOT_FOUND:
1210 if(elementType!= null && elementType == JsonPresentationFields.PROPERTY){
1211 responseEnum = ActionStatus.PROPERTY_NOT_FOUND;
1214 case INVALID_PROPERTY_DEFAULT_VALUE:
1215 case INVALID_PROPERTY_TYPE:
1216 case INVALID_PROPERTY_VALUE:
1217 case INVALID_PROPERTY_NAME:
1218 case MISSING_ENTRY_SCHEMA_TYPE:
1219 responseEnum = ActionStatus.INVALID_PROPERTY;
1222 responseEnum = ActionStatus.GENERAL_ERROR;
1225 return responseEnum;
1228 public ResponseFormat getResponseFormatAdditionalProperty(ActionStatus actionStatus, AdditionalInfoParameterInfo additionalInfoParameterInfo, NodeTypeEnum nodeType, AdditionalInformationEnum labelOrValue) {
1230 if (additionalInfoParameterInfo == null) {
1231 additionalInfoParameterInfo = new AdditionalInfoParameterInfo();
1233 if (labelOrValue == null) {
1234 labelOrValue = AdditionalInformationEnum.None;
1237 ResponseFormat responseFormat = null;
1238 switch (actionStatus) {
1239 case COMPONENT_NAME_ALREADY_EXIST:
1240 responseFormat = getResponseFormat(actionStatus, "Additional parameter", additionalInfoParameterInfo.getKey());
1242 case ADDITIONAL_INFORMATION_EXCEEDS_LIMIT:
1243 responseFormat = getResponseFormat(actionStatus, labelOrValue.name().toLowerCase(), ValidationUtils.ADDITIONAL_INFORMATION_KEY_MAX_LENGTH.toString());
1245 case ADDITIONAL_INFORMATION_MAX_NUMBER_REACHED:
1246 responseFormat = getResponseFormat(actionStatus, nodeType.name().toLowerCase());
1248 case ADDITIONAL_INFORMATION_EMPTY_STRING_NOT_ALLOWED:
1249 responseFormat = getResponseFormat(actionStatus);
1251 case ADDITIONAL_INFORMATION_KEY_NOT_ALLOWED_CHARACTERS:
1252 responseFormat = getResponseFormat(actionStatus);
1254 case ADDITIONAL_INFORMATION_VALUE_NOT_ALLOWED_CHARACTERS:
1255 responseFormat = getResponseFormat(actionStatus);
1257 case ADDITIONAL_INFORMATION_NOT_FOUND:
1258 responseFormat = getResponseFormat(actionStatus);
1261 responseFormat = getResponseFormat(actionStatus);
1265 return responseFormat;
1268 public ResponseFormat getResponseFormatAdditionalProperty(ActionStatus actionStatus) {
1269 return getResponseFormatAdditionalProperty(actionStatus, null, null, null);
1272 public ActionStatus convertFromStorageResponseForConsumer(StorageOperationStatus storageResponse) {
1273 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
1275 switch (storageResponse) {
1277 responseEnum = ActionStatus.OK;
1279 case CONNECTION_FAILURE:
1281 responseEnum = ActionStatus.GENERAL_ERROR;
1284 responseEnum = ActionStatus.INVALID_CONTENT;
1286 case ENTITY_ALREADY_EXISTS:
1287 responseEnum = ActionStatus.CONSUMER_ALREADY_EXISTS;
1289 case SCHEMA_VIOLATION:
1290 responseEnum = ActionStatus.CONSUMER_ALREADY_EXISTS;
1293 responseEnum = ActionStatus.ECOMP_USER_NOT_FOUND;
1296 responseEnum = ActionStatus.GENERAL_ERROR;
1299 log.debug("convert storage response {} to action response {}", storageResponse, responseEnum);
1300 return responseEnum;
1303 public ActionStatus convertFromStorageResponseForGroupType(StorageOperationStatus storageResponse) {
1304 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
1306 switch (storageResponse) {
1308 responseEnum = ActionStatus.OK;
1310 case CONNECTION_FAILURE:
1312 responseEnum = ActionStatus.GENERAL_ERROR;
1315 responseEnum = ActionStatus.INVALID_CONTENT;
1317 case ENTITY_ALREADY_EXISTS:
1318 responseEnum = ActionStatus.GROUP_TYPE_ALREADY_EXIST;
1320 case SCHEMA_VIOLATION:
1321 responseEnum = ActionStatus.GROUP_TYPE_ALREADY_EXIST;
1324 responseEnum = ActionStatus.GENERAL_ERROR;
1327 log.debug("convert storage response {} to action response {}", storageResponse, responseEnum);
1328 return responseEnum;
1331 public ActionStatus convertFromStorageResponseForDataType(StorageOperationStatus storageResponse) {
1332 ActionStatus responseEnum = ActionStatus.GENERAL_ERROR;
1334 switch (storageResponse) {
1336 responseEnum = ActionStatus.OK;
1338 case CONNECTION_FAILURE:
1340 responseEnum = ActionStatus.GENERAL_ERROR;
1343 responseEnum = ActionStatus.INVALID_CONTENT;
1345 case ENTITY_ALREADY_EXISTS:
1346 responseEnum = ActionStatus.DATA_TYPE_ALREADY_EXIST;
1348 case SCHEMA_VIOLATION:
1349 responseEnum = ActionStatus.DATA_TYPE_ALREADY_EXIST;
1351 case CANNOT_UPDATE_EXISTING_ENTITY:
1352 responseEnum = ActionStatus.DATA_TYPE_CANNOT_BE_UPDATED_BAD_REQUEST;
1355 responseEnum = ActionStatus.GENERAL_ERROR;
1358 log.debug("convert storage response {} to action response {}", storageResponse, responseEnum);
1359 return responseEnum;
1362 public ResponseFormat getResponseFormatByGroupType(ActionStatus actionStatus, GroupTypeDefinition groupType) {
1363 if (groupType == null) {
1364 return getResponseFormat(actionStatus);
1366 ResponseFormat responseFormat;
1368 switch (actionStatus) {
1369 case GROUP_MEMBER_EMPTY:
1370 case GROUP_TYPE_ALREADY_EXIST:
1371 responseFormat = getResponseFormat(actionStatus, groupType.getType());
1374 responseFormat = getResponseFormat(actionStatus);
1377 return responseFormat;
1381 public ResponseFormat getResponseFormatByPolicyType(ActionStatus actionStatus, PolicyTypeDefinition policyType) {
1382 if (policyType == null) {
1383 return getResponseFormat(actionStatus);
1386 ResponseFormat responseFormat;
1387 if (actionStatus == ActionStatus.POLICY_TYPE_ALREADY_EXIST) {
1388 responseFormat = getResponseFormat(actionStatus, policyType.getType());
1391 responseFormat = getResponseFormat(actionStatus);
1393 return responseFormat;
1397 public ResponseFormat getResponseFormatByDataType(ActionStatus actionStatus, DataTypeDefinition dataType, List<String> properties) {
1398 if (dataType == null) {
1399 return getResponseFormat(actionStatus);
1401 ResponseFormat responseFormat;
1403 switch (actionStatus) {
1404 case DATA_TYPE_ALREADY_EXIST:
1405 responseFormat = getResponseFormat(actionStatus, dataType.getName());
1407 case DATA_TYPE_NOR_PROPERTIES_NEITHER_DERIVED_FROM:
1408 responseFormat = getResponseFormat(actionStatus, dataType.getName());
1410 case DATA_TYPE_PROPERTIES_CANNOT_BE_EMPTY:
1411 responseFormat = getResponseFormat(actionStatus, dataType.getName());
1413 case DATA_TYPE_PROPERTY_ALREADY_DEFINED_IN_ANCESTOR:
1414 responseFormat = getResponseFormat(actionStatus, dataType.getName(), properties == null ? "" : String.valueOf(properties));
1416 case DATA_TYPE_DERIVED_IS_MISSING:
1417 responseFormat = getResponseFormat(actionStatus, dataType.getDerivedFromName());
1419 case DATA_TYPE_DUPLICATE_PROPERTY:
1420 responseFormat = getResponseFormat(actionStatus, dataType.getName());
1422 case DATA_TYPE_PROEPRTY_CANNOT_HAVE_SAME_TYPE_OF_DATA_TYPE:
1423 responseFormat = getResponseFormat(actionStatus, dataType.getName(), properties == null ? "" : String.valueOf(properties));
1425 case DATA_TYPE_CANNOT_HAVE_PROPERTIES:
1426 responseFormat = getResponseFormat(actionStatus, dataType.getName());
1428 case DATA_TYPE_CANNOT_BE_UPDATED_BAD_REQUEST:
1429 responseFormat = getResponseFormat(actionStatus, dataType.getName());
1433 responseFormat = getResponseFormat(actionStatus);
1436 return responseFormat;