2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights
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.ccsdk.sli.adaptors.rm.comp;
24 import java.util.HashSet;
25 import java.util.List;
28 import org.onap.ccsdk.sli.adaptors.lock.comp.LockHelper;
29 import org.onap.ccsdk.sli.adaptors.rm.dao.ResourceDao;
30 import org.onap.ccsdk.sli.adaptors.rm.data.AllocationOutcome;
31 import org.onap.ccsdk.sli.adaptors.rm.data.AllocationRequest;
32 import org.onap.ccsdk.sli.adaptors.rm.data.Resource;
33 import org.onap.ccsdk.sli.adaptors.rm.util.ResourceUtil;
34 import org.onap.ccsdk.sli.adaptors.util.str.StrUtil;
35 import org.slf4j.Logger;
36 import org.slf4j.LoggerFactory;
38 public class ResourceManagerImpl implements ResourceManager {
40 private static final Logger log = LoggerFactory.getLogger(ResourceManagerImpl.class);
42 private LockHelper lockHelper;
43 private ResourceDao resourceDao;
45 private String applicationId;
46 private int lockTimeout = 10 * 60; // Default 10 min
48 public ResourceManagerImpl() {
49 log.info("ResourceManager created.");
53 public Resource getResource(String resourceName, String assetId) {
54 Resource r = resourceDao.getResource(assetId, resourceName);
55 ResourceUtil.recalculate(r);
60 public List<Resource> getResourceUnion(String resourceUnionId) {
61 List<Resource> rlist = resourceDao.getResourceUnion(resourceUnionId);
62 for (Resource r : rlist)
63 ResourceUtil.recalculate(r);
68 public AllocationOutcome allocateResources(AllocationRequest allocationRequest) {
69 if (allocationRequest == null)
70 throw new IllegalArgumentException("allocateResources called with null argument");
72 AllocationFunction allocationFunction =
73 new AllocationFunction(lockHelper, resourceDao, applicationId, allocationRequest, lockTimeout);
74 allocationFunction.exec();
75 AllocationOutcome allocationOutcome = allocationFunction.getAllocationOutcome();
77 StrUtil.info(log, allocationOutcome);
79 return allocationOutcome;
83 public void releaseResourceSet(String resourceSetId) {
84 List<Resource> resourceList = resourceDao.getResourceSet(resourceSetId);
85 if (resourceList == null || resourceList.isEmpty())
88 Set<String> lockNames = getLockNames(resourceList);
89 ReleaseFunction releaseFunction =
90 new ReleaseFunction(lockHelper, resourceDao, resourceSetId, null, lockNames, lockTimeout);
91 releaseFunction.exec();
95 public void releaseResourceUnion(String resourceUnionId) {
96 List<Resource> resourceList = resourceDao.getResourceUnion(resourceUnionId);
97 if (resourceList == null || resourceList.isEmpty())
100 Set<String> lockNames = getLockNames(resourceList);
101 ReleaseFunction releaseFunction =
102 new ReleaseFunction(lockHelper, resourceDao, null, resourceUnionId, lockNames, lockTimeout);
103 releaseFunction.exec();
106 private Set<String> getLockNames(List<Resource> resourceList) {
107 Set<String> lockNames = new HashSet<String>();
108 for (Resource r : resourceList)
109 lockNames.add(r.resourceKey.assetId);
113 public void setResourceDao(ResourceDao resourceDao) {
114 this.resourceDao = resourceDao;
117 public void setLockTimeout(int lockTimeout) {
118 this.lockTimeout = lockTimeout;
121 public void setApplicationId(String applicationId) {
122 this.applicationId = applicationId;
125 public void setLockHelper(LockHelper lockHelper) {
126 this.lockHelper = lockHelper;