2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
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=========================================================
22 package org.onap.so.apihandlerinfra.validation;
24 import org.onap.so.apihandlerinfra.Action;
25 import org.onap.so.apihandlerinfra.Actions;
26 import org.onap.so.exceptions.ValidationException;
27 import org.onap.so.serviceinstancebeans.CloudConfiguration;
28 import org.onap.so.serviceinstancebeans.ModelType;
30 public class CloudConfigurationValidation implements ValidationRule {
31 public boolean empty(String s) {
32 return (s == null || s.trim().isEmpty());
36 public ValidationInformation validate(ValidationInformation info) throws ValidationException {
37 CloudConfiguration cloudConfiguration = info.getSir().getRequestDetails().getCloudConfiguration();
38 String requestScope = info.getRequestScope();
39 int reqVersion = info.getReqVersion();
40 Actions action = info.getAction();
41 Boolean aLaCarteFlag = info.getALaCarteFlag();
43 if (!requestScope.equals(ModelType.instanceGroup.toString())) {
44 if (cloudConfiguration == null && reqVersion >= 5 && (aLaCarteFlag != null && aLaCarteFlag)) {
45 if ((!requestScope.equalsIgnoreCase(ModelType.service.name())
46 && !requestScope.equalsIgnoreCase(ModelType.configuration.name()))
47 && (action == Action.createInstance || action == Action.deleteInstance
48 || action == Action.updateInstance)) {
49 throw new ValidationException("cloudConfiguration");
51 if ((requestScope.equalsIgnoreCase(ModelType.vnf.name())
52 || requestScope.equalsIgnoreCase(ModelType.vfModule.name()))
53 && action == Action.replaceInstance) {
54 throw new ValidationException("cloudConfiguration");
56 if (requestScope.equalsIgnoreCase(ModelType.configuration.name())
57 && (action == Action.enablePort || action == Action.disablePort
58 || action == Action.activateInstance || action == Action.deactivateInstance)) {
59 throw new ValidationException("cloudConfiguration");
61 if (requestScope.equalsIgnoreCase(ModelType.vfModule.name())
62 && (action == Action.deactivateAndCloudDelete || action == Action.scaleOut)) {
63 throw new ValidationException("cloudConfiguration");
65 if (requestScope.equals(ModelType.vnf.name()) && action == Action.recreateInstance) {
66 throw new ValidationException("cloudConfiguration", true);
71 if (cloudConfiguration == null && ((aLaCarteFlag != null && !aLaCarteFlag)
72 && requestScope.equalsIgnoreCase(ModelType.service.name()) && reqVersion < 5)) {
73 throw new ValidationException("cloudConfiguration");
76 if (cloudConfiguration != null) {
77 if (empty(cloudConfiguration.getLcpCloudRegionId())) {
78 throw new ValidationException("lcpCloudRegionId");
80 if (empty(cloudConfiguration.getTenantId())
81 && !(requestScope.equalsIgnoreCase(ModelType.configuration.name()))) {
82 throw new ValidationException("tenantId");