2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights
7 * ================================================================================
8 * Modifications Copyright (c) 2019 Samsung
9 * ================================================================================
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
14 * http://www.apache.org/licenses/LICENSE-2.0
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 * ============LICENSE_END============================================
22 * Modifications copyright (c) 2018 Nokia
23 * ===================================================================
27 package org.onap.clamp.clds.service;
29 import com.att.eelf.configuration.EELFLogger;
30 import com.att.eelf.configuration.EELFManager;
31 import com.google.gson.reflect.TypeToken;
33 import java.lang.reflect.Type;
34 import java.util.Date;
35 import java.util.List;
37 import javax.servlet.http.HttpServletRequest;
39 import org.apache.camel.Produce;
40 import org.onap.clamp.clds.camel.CamelProxy;
41 import org.onap.clamp.clds.model.CldsInfo;
42 import org.onap.clamp.clds.model.sdc.SdcServiceInfo;
43 import org.onap.clamp.clds.util.LoggingUtils;
44 import org.onap.clamp.clds.util.ONAPLogConstants;
45 import org.slf4j.event.Level;
46 import org.springframework.beans.factory.annotation.Autowired;
47 import org.springframework.beans.factory.annotation.Value;
48 import org.springframework.stereotype.Component;
51 * Service to save and retrieve the CLDS model attributes.
54 public class CldsService extends SecureServiceBase {
57 * The constant LIST_OF_SDC_SERVICE_INFO_TYPE.
59 public static final Type LIST_OF_SDC_SERVICE_INFO_TYPE = new TypeToken<List<SdcServiceInfo>>() {
61 @Produce(uri = "direct:processSubmit")
62 private CamelProxy camelProxy;
64 * The constant securityLogger.
66 protected static final EELFLogger securityLogger = EELFManager.getInstance().getSecurityLogger();
68 * The constant logger.
70 protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsService.class);
72 private final String cldsPermissionTypeFilterVf;
73 private final String cldsPermissionInstance;
75 * The Permission read cl.
77 final SecureServicePermission permissionReadCl;
79 * The Permission update cl.
81 final SecureServicePermission permissionUpdateCl;
83 * The Permission read template.
85 final SecureServicePermission permissionReadTemplate;
87 * The Permission update template.
89 final SecureServicePermission permissionUpdateTemplate;
91 * The Permission read tosca.
93 final SecureServicePermission permissionReadTosca;
95 * The Permission update tosca.
97 final SecureServicePermission permissionUpdateTosca;
99 private LoggingUtils util = new LoggingUtils(logger);
102 private HttpServletRequest request;
105 * Instantiates a new Clds service.
107 * @param cldsPersmissionTypeCl the clds persmission type cl
108 * @param cldsPermissionTypeClManage the clds permission type cl manage
109 * @param cldsPermissionTypeClEvent the clds permission type cl event
110 * @param cldsPermissionTypeFilterVf the clds permission type filter vf
111 * @param cldsPermissionTypeTemplate the clds permission type template
112 * @param cldsPermissionTypeTosca the clds permission type tosca
113 * @param cldsPermissionInstance the clds permission instance
117 @Value("${clamp.config.security.permission.type.cl:permission-type-cl}") String cldsPersmissionTypeCl,
118 @Value("${clamp.config.security.permission.type.cl.manage:permission-type-cl-manage}") String cldsPermissionTypeClManage,
119 @Value("${clamp.config.security.permission.type.cl.event:permission-type-cl-event}") String cldsPermissionTypeClEvent,
120 @Value("${clamp.config.security.permission.type.filter.vf:permission-type-filter-vf}") String cldsPermissionTypeFilterVf,
121 @Value("${clamp.config.security.permission.type.template:permission-type-template}") String cldsPermissionTypeTemplate,
122 @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}") String cldsPermissionTypeTosca,
123 @Value("${clamp.config.security.permission.instance:dev}") String cldsPermissionInstance) {
124 this.cldsPermissionTypeFilterVf = cldsPermissionTypeFilterVf;
125 this.cldsPermissionInstance = cldsPermissionInstance;
126 permissionReadCl = SecureServicePermission.create(cldsPersmissionTypeCl, cldsPermissionInstance, "read");
127 permissionUpdateCl = SecureServicePermission.create(cldsPersmissionTypeCl, cldsPermissionInstance, "update");
128 permissionReadTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance,
130 permissionUpdateTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance,
132 permissionReadTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "read");
133 permissionUpdateTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance,
138 * Gets clds info. CLDS IFO service will return 3 things 1. User Name 2. CLDS
139 * code version that is currently installed from pom.xml file 3. User
142 * @return the clds info
144 public CldsInfo getCldsInfo() {
145 util.entering(request, "CldsService: GET cldsInfo");
146 final Date startTime = new Date();
147 LoggingUtils.setTimeContext(startTime, new Date());
149 CldsInfoProvider cldsInfoProvider = new CldsInfoProvider(this);
150 final CldsInfo cldsInfo = cldsInfoProvider.getCldsInfo();
153 LoggingUtils.setTimeContext(startTime, new Date());
154 securityLogger.info("GET cldsInfo completed");
155 util.exiting("200", "Get cldsInfo success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
160 * Determine if the user is authorized for a particular VF by its invariant
163 * @param vfInvariantUuid the vf invariant uuid
164 * @return boolean or throws NotAuthorizedException
166 public boolean isAuthorizedForVf(String vfInvariantUuid) {
167 if (cldsPermissionTypeFilterVf != null && !cldsPermissionTypeFilterVf.isEmpty()) {
168 SecureServicePermission permission = SecureServicePermission.create(cldsPermissionTypeFilterVf,
169 cldsPermissionInstance, vfInvariantUuid);
170 return isAuthorized(permission);
172 // if CLDS_PERMISSION_TYPE_FILTER_VF property is not provided, then
173 // VF filtering is turned off
174 logger.warn("VF filtering turned off");
182 * @param utilP the util p
184 // Created for the integration test
185 public void setLoggingUtil(LoggingUtils utilP) {