2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.be.components.impl;
19 import fj.data.Either;
20 import org.junit.Assert;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.mockito.InjectMocks;
24 import org.mockito.Mockito;
25 import org.mockito.MockitoAnnotations;
26 import org.openecomp.sdc.be.auditing.impl.AuditingManager;
27 import org.openecomp.sdc.be.components.validation.CapabilitiesValidation;
28 import org.openecomp.sdc.be.components.validation.UserValidations;
29 import org.openecomp.sdc.be.config.ConfigurationManager;
30 import org.openecomp.sdc.be.dao.api.ActionStatus;
31 import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus;
32 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
33 import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition;
34 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
35 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
36 import org.openecomp.sdc.be.impl.ComponentsUtils;
37 import org.openecomp.sdc.be.model.CapabilityDefinition;
38 import org.openecomp.sdc.be.model.CapabilityRequirementRelationship;
39 import org.openecomp.sdc.be.model.Component;
40 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
41 import org.openecomp.sdc.be.model.ComponentParametersView;
42 import org.openecomp.sdc.be.model.LifecycleStateEnum;
43 import org.openecomp.sdc.be.model.RelationshipInfo;
44 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
45 import org.openecomp.sdc.be.model.Resource;
46 import org.openecomp.sdc.be.model.Service;
47 import org.openecomp.sdc.be.model.User;
48 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.CapabilitiesOperation;
49 import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
50 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
51 import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
52 import org.openecomp.sdc.be.user.Role;
53 import org.openecomp.sdc.be.user.UserBusinessLogic;
54 import org.openecomp.sdc.common.api.ConfigurationSource;
55 import org.openecomp.sdc.common.impl.ExternalConfiguration;
56 import org.openecomp.sdc.common.impl.FSConfigurationSource;
57 import org.openecomp.sdc.exception.ResponseFormat;
59 import java.util.ArrayList;
60 import java.util.Collections;
61 import java.util.HashMap;
62 import java.util.List;
64 import java.util.stream.Collectors;
65 import java.util.stream.Stream;
67 import static org.mockito.ArgumentMatchers.any;
68 import static org.mockito.ArgumentMatchers.anyBoolean;
69 import static org.mockito.ArgumentMatchers.anyCollection;
70 import static org.mockito.ArgumentMatchers.anyObject;
71 import static org.mockito.ArgumentMatchers.anyString;
72 import static org.mockito.ArgumentMatchers.eq;
73 import static org.mockito.Mockito.when;
75 public class CapabilitiesBusinessLogicTest {
76 private final String componentId = "resourceId1";
77 private final String capabilityId = "uniqueId1";
79 private final JanusGraphDao mockJanusGraphDao = Mockito.mock(JanusGraphDao.class);
80 private final UserBusinessLogic mockUserAdmin = Mockito.mock(UserBusinessLogic.class);
81 private final ToscaOperationFacade toscaOperationFacade = Mockito.mock(ToscaOperationFacade.class);
82 private final UserValidations userValidations = Mockito.mock(UserValidations.class);
83 private final CapabilitiesOperation capabilitiesOperation = Mockito.mock(CapabilitiesOperation.class);
84 private final CapabilitiesValidation capabilitiesValidation = Mockito.mock(CapabilitiesValidation.class);
86 private final GraphLockOperation graphLockOperation = Mockito.mock(GraphLockOperation.class);
87 private User user = null;
90 private CapabilitiesBusinessLogic capabilitiesBusinessLogicMock = new CapabilitiesBusinessLogic();
94 MockitoAnnotations.initMocks(this);
95 ExternalConfiguration.setAppName("catalog-be");
98 String appConfigDir = "src/test/resources/config/catalog-be";
99 ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
100 ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
102 ComponentsUtils componentsUtils = new ComponentsUtils(Mockito.mock(AuditingManager.class));
104 // User data and management
106 user.setUserId("jh0003");
107 user.setFirstName("Jimmi");
108 user.setLastName("Hendrix");
109 user.setRole(Role.ADMIN.name());
111 Either<User, ActionStatus> eitherGetUser = Either.left(user);
112 when(mockUserAdmin.getUser("jh0003", false)).thenReturn(eitherGetUser);
113 when(graphLockOperation.lockComponent(Mockito.anyString(), eq(NodeTypeEnum.Resource)))
114 .thenReturn(StorageOperationStatus.OK);
116 //CapabilityOperation
117 when(capabilitiesValidation.validateCapabilities(anyCollection(), anyObject(), anyBoolean()))
118 .thenReturn(Either.left(true));
119 when(capabilitiesOperation.addCapabilities(anyString(), anyObject()))
120 .thenReturn(Either.left(createMockCapabilityListToReturn(
121 createCapability("capName", "capDesc", "capType", "source1",
124 when(capabilitiesOperation.updateCapabilities(anyString(), anyObject()))
125 .thenReturn(Either.left(createMockCapabilityListToReturn(
126 createCapability("capName", "capDesc", "capType", "source1",
128 when(capabilitiesOperation.deleteCapabilities( anyObject(), anyString()))
129 .thenReturn(StorageOperationStatus.OK);
130 when(mockJanusGraphDao.commit()).thenReturn(JanusGraphOperationStatus.OK);
132 capabilitiesBusinessLogicMock = new CapabilitiesBusinessLogic();
133 capabilitiesBusinessLogicMock.setComponentsUtils(componentsUtils);
134 capabilitiesBusinessLogicMock.setUserAdmin(mockUserAdmin);
135 capabilitiesBusinessLogicMock.setGraphLockOperation(graphLockOperation);
136 capabilitiesBusinessLogicMock.setJanusGraphGenericDao(mockJanusGraphDao);
137 capabilitiesBusinessLogicMock.setToscaOperationFacade(toscaOperationFacade);
138 capabilitiesBusinessLogicMock.setUserValidations(userValidations);
139 capabilitiesBusinessLogicMock.setCapabilitiesOperation(capabilitiesOperation);
140 capabilitiesBusinessLogicMock.setCapabilitiesValidation(capabilitiesValidation);
144 public void shouldPassCreateCapabilitiesFirstTimeInComponentForHappyScenario(){
145 List<CapabilityDefinition> capabilityDefinitions = createMockCapabilityListToReturn(
146 createCapability("capName", "capDesc", "capType", "source1",
148 Resource resource = createComponent(false);
149 resource.setComponentType(ComponentTypeEnum.RESOURCE);
150 validateUserRoles(Role.ADMIN, Role.DESIGNER);
151 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
152 .thenReturn(Either.left(resource));
153 Either<List<CapabilityDefinition>, ResponseFormat> capabilities = capabilitiesBusinessLogicMock
154 .createCapabilities(componentId, capabilityDefinitions, user,
155 "createCapabilities", true);
156 Assert.assertTrue(capabilities.isLeft());
157 Assert.assertTrue(capabilities.left().value().stream().anyMatch(capabilityDefinition ->
158 capabilityDefinition.getName().equals("capName")));
162 public void shouldPassCreateCapabilitiesForHappyScenario(){
163 List<CapabilityDefinition> capabilityDefinitions = createMockCapabilityListToReturn(
164 createCapability("capName2", "capDesc", "capType", "source1",
166 Resource resource = createComponent(true);
167 resource.setComponentType(ComponentTypeEnum.RESOURCE);
168 validateUserRoles(Role.ADMIN, Role.DESIGNER);
169 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
170 .thenReturn(Either.left(resource));
171 Either<List<CapabilityDefinition>, ResponseFormat> capabilities = capabilitiesBusinessLogicMock
172 .createCapabilities(componentId, capabilityDefinitions, user,
173 "createCapabilities", false);
175 Assert.assertTrue(capabilities.isLeft());
176 Assert.assertTrue(capabilities.left().value().stream().anyMatch(capabilityDefinition ->
177 capabilityDefinition.getName().equals("capName2")));
181 public void shouldFailCreateCapabilitiesWhenOperationFailedInJanusGraph(){
182 List<CapabilityDefinition> capabilityDefinitions = createMockCapabilityListToReturn(
183 createCapability("capName2", "capDesc", "capType", "source1",
185 Resource resource = createComponent(true);
186 resource.setComponentType(ComponentTypeEnum.RESOURCE);
187 validateUserRoles(Role.ADMIN, Role.DESIGNER);
188 when(capabilitiesOperation.addCapabilities(anyString(), anyObject()))
189 .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
190 when(capabilitiesOperation.updateCapabilities(anyString(), anyObject()))
191 .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
192 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
193 .thenReturn(Either.left(resource));
194 Either<List<CapabilityDefinition>, ResponseFormat> capabilities = capabilitiesBusinessLogicMock
195 .createCapabilities(componentId, capabilityDefinitions, user,
196 "createCapabilities", true);
198 Assert.assertTrue(capabilities.isRight());
201 public void shouldPassUpdateCapabilitiesForHappyScenario(){
203 List<CapabilityDefinition> capabilityDefinitions = createMockCapabilityListToReturn(
204 createCapability("capName", "capDesc updated", "capType", "source1",
206 Resource resource = createComponent(true);
207 resource.setComponentType(ComponentTypeEnum.RESOURCE);
208 validateUserRoles(Role.ADMIN, Role.DESIGNER);
209 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
210 .thenReturn(Either.left(resource));
211 when(toscaOperationFacade.getParentComponents(anyString()))
212 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
213 Either<List<CapabilityDefinition>, ResponseFormat> capabilities = capabilitiesBusinessLogicMock
214 .updateCapabilities(componentId, capabilityDefinitions, user
215 , "updateCapabilities", true);
216 Assert.assertTrue(capabilities.isLeft());
217 Assert.assertTrue(capabilities.left().value().stream().anyMatch(capabilityDefinition ->
218 capabilityDefinition.getMaxOccurrences().equals("11")));
222 public void shouldPassUpdateCapabilityTypeUpdateWhenTypeIsNotAvailable(){
224 List<CapabilityDefinition> capabilityDefinitions = createMockCapabilityListToReturn(
225 createCapability("capName", "capDesc updated", "capTypeUpdate", "source1",
227 Resource resource = createComponent(true);
228 resource.setComponentType(ComponentTypeEnum.RESOURCE);
229 validateUserRoles(Role.ADMIN, Role.DESIGNER);
230 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
231 .thenReturn(Either.left(resource));
232 when(toscaOperationFacade.getParentComponents(anyString()))
233 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
234 when((capabilitiesOperation.deleteCapabilityProperties(any(Component.class), anyString())))
235 .thenReturn(StorageOperationStatus.OK);
236 Either<List<CapabilityDefinition>, ResponseFormat> capabilities = capabilitiesBusinessLogicMock
237 .updateCapabilities(componentId, capabilityDefinitions, user,
238 "updateCapabilities",true);
239 Assert.assertTrue(capabilities.isLeft());
240 Assert.assertTrue(capabilities.left().value().stream().anyMatch(capabilityDefinition ->
241 capabilityDefinition.getMaxOccurrences().equals("11")));
245 public void shouldPassUpdateCapabilityTypeUpdateWhenTypeIsAvailable(){
247 List<CapabilityDefinition> capabilityDefinitions = createMockCapabilityListToReturn(
248 createCapability("capName", "capDesc updated", "capTypeUpdate1", "source1",
250 Resource resource = createComponent(true);
251 resource.setComponentType(ComponentTypeEnum.RESOURCE);
253 CapabilityDefinition capability = createCapability("capName", "capDesc", "capTypeUpdate1",
254 "source1", "0", "10");
255 capability.setUniqueId("unique2");
256 List<CapabilityDefinition> capabilityDefinitions1 = createMockCapabilityListToReturn(capability);
257 Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
258 capabilityMap.put("capTypeUpdate1", capabilityDefinitions1);
259 resource.getCapabilities().putAll(capabilityMap);
261 validateUserRoles(Role.ADMIN, Role.DESIGNER);
262 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
263 .thenReturn(Either.left(resource));
264 when(toscaOperationFacade.getParentComponents(anyString()))
265 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
266 when((capabilitiesOperation.deleteCapabilityProperties(any(Component.class), anyString())))
267 .thenReturn(StorageOperationStatus.OK);
268 Either<List<CapabilityDefinition>, ResponseFormat> capabilities = capabilitiesBusinessLogicMock
269 .updateCapabilities(componentId, capabilityDefinitions, user,
270 "updateCapabilities",true);
271 Assert.assertTrue(capabilities.isLeft());
272 Assert.assertTrue(capabilities.left().value().stream().anyMatch(capabilityDefinition ->
273 capabilityDefinition.getMaxOccurrences().equals("11")));
277 public void shouldFailUpdateCapabilitiesWhenOperationFailedInJanusGraph(){
278 List<CapabilityDefinition> capabilityDefinitions = createMockCapabilityListToReturn(
279 createCapability("capName2", "capDesc", "capType", "source1",
281 Resource resource = createComponent(true);
282 resource.setComponentType(ComponentTypeEnum.RESOURCE);
283 validateUserRoles(Role.ADMIN, Role.DESIGNER);
284 when(capabilitiesOperation.addCapabilities(anyString(), anyObject()))
285 .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
286 when(capabilitiesOperation.updateCapabilities(anyString(), anyObject()))
287 .thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
288 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
289 .thenReturn(Either.left(resource));
290 Either<List<CapabilityDefinition>, ResponseFormat> capabilities = capabilitiesBusinessLogicMock
291 .updateCapabilities(componentId, capabilityDefinitions, user,
292 "updateCapabilities", true);
294 Assert.assertTrue(capabilities.isRight());
298 public void shouldPassDeleteCapabilitiesForHappyScenario(){
299 Resource resource = createComponent(true);
300 resource.setComponentType(ComponentTypeEnum.RESOURCE);
301 validateUserRoles(Role.ADMIN, Role.DESIGNER);
302 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
303 .thenReturn(Either.left(resource));
304 when(toscaOperationFacade.getParentComponents(anyString()))
305 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
306 when((capabilitiesOperation.deleteCapabilityProperties(any(Component.class), anyString())))
307 .thenReturn(StorageOperationStatus.OK);
308 Either<CapabilityDefinition, ResponseFormat> deleteCapabilityEither =
309 capabilitiesBusinessLogicMock.deleteCapability(componentId, capabilityId, user, true);
310 Assert.assertTrue(deleteCapabilityEither.isLeft());
315 public void shouldFailDeleteCapabilitiesWhenOperationFailedInJanusGraph(){
316 Resource resource = createComponent(true);
317 resource.setComponentType(ComponentTypeEnum.RESOURCE);
318 validateUserRoles(Role.ADMIN, Role.DESIGNER);
319 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
320 .thenReturn(Either.left(resource));
321 when(toscaOperationFacade.getParentComponents(anyString()))
322 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
323 when(capabilitiesOperation.deleteCapabilities(anyObject(), anyString()))
324 .thenReturn(StorageOperationStatus.GENERAL_ERROR);
325 Either<CapabilityDefinition, ResponseFormat> deleteCapabilityEither
326 = capabilitiesBusinessLogicMock.deleteCapability(componentId, capabilityId, user, true);
327 Assert.assertTrue(deleteCapabilityEither.isRight());
331 public void shouldFailDeleteCapabilitiesWhenCapabilityUsedInServiceComposition(){
332 Resource resource = createComponent(true);
333 resource.setComponentType(ComponentTypeEnum.RESOURCE);
334 validateUserRoles(Role.ADMIN, Role.DESIGNER);
335 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
336 .thenReturn(Either.left(resource));
337 when(toscaOperationFacade.getParentComponents(anyString()))
338 .thenReturn(Either.left(Collections.singletonList(createParentService())));
339 Either<CapabilityDefinition, ResponseFormat> deleteCapabilityEither
340 = capabilitiesBusinessLogicMock.deleteCapability(componentId, capabilityId, user, true);
341 Assert.assertTrue(deleteCapabilityEither.isRight());
345 public void shouldPassGetCapabilitiesForHappyScenario(){
346 Resource resource = createComponent(true);
347 resource.setComponentType(ComponentTypeEnum.RESOURCE);
348 validateUserRoles(Role.ADMIN, Role.DESIGNER);
349 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
350 .thenReturn(Either.left(resource));
351 when(toscaOperationFacade.getParentComponents(anyString()))
352 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
353 Either<CapabilityDefinition, ResponseFormat> getCapabilityEither
354 = capabilitiesBusinessLogicMock.getCapability(componentId, capabilityId, user, true);
355 Assert.assertTrue(getCapabilityEither.isLeft());
360 public void shouldFailGetCapabilitiesWhenCapabilityNotExist(){
361 Resource resource = createComponent(true);
362 resource.setComponentType(ComponentTypeEnum.RESOURCE);
363 validateUserRoles(Role.ADMIN, Role.DESIGNER);
364 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
365 .thenReturn(Either.left(resource));
366 when(toscaOperationFacade.getParentComponents(anyString()))
367 .thenReturn(Either.right(StorageOperationStatus.NOT_FOUND));
368 Either<CapabilityDefinition, ResponseFormat> getCapabilityEither
369 = capabilitiesBusinessLogicMock.getCapability(componentId, "capId1", user, true);
370 Assert.assertTrue(getCapabilityEither.isRight());
374 private ComponentInstanceProperty createCIP(String type, String name) {
375 ComponentInstanceProperty instanceProperty = new ComponentInstanceProperty();
376 instanceProperty.setType(type);
377 instanceProperty.setName(name);
378 instanceProperty.setDescription("prop_description");
379 instanceProperty.setParentUniqueId(capabilityId);
380 instanceProperty.setSchema(new SchemaDefinition());
381 return instanceProperty;
385 public void shouldPassCreateCapabilitiesWithPropertiesForHappyScenario(){
386 CapabilityDefinition capability = createCapability("capName", "capDesc", "capType", "source1",
388 capability.setProperties(Collections.singletonList(createCIP("name", "type")));
389 List<CapabilityDefinition> capabilityDefinitions = createMockCapabilityListToReturn(capability);
390 Resource resource = createComponent(false);
391 resource.setComponentType(ComponentTypeEnum.RESOURCE);
392 validateUserRoles(Role.ADMIN, Role.DESIGNER);
393 when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
394 .thenReturn(Either.left(resource));
395 when(capabilitiesOperation.createOrUpdateCapabilityProperties(anyString(), any())).thenReturn(StorageOperationStatus.OK);
396 Either<List<CapabilityDefinition>, ResponseFormat> capabilities = capabilitiesBusinessLogicMock
397 .createCapabilities(componentId, capabilityDefinitions, user,
398 "createCapabilities", true);
399 Assert.assertTrue(capabilities.isLeft());
400 Assert.assertTrue(capabilities.left().value().stream().anyMatch(capabilityDefinition ->
401 capabilityDefinition.getName().equals("capName")));
402 Assert.assertTrue(capabilities.left().value().stream().anyMatch(capabilityDefinition ->
403 capabilityDefinition.getProperties().size() == 1));
406 private Resource createComponent(boolean needCapability) {
407 Resource resource = new Resource();
408 resource.setName("Resource1");
409 resource.addCategory("Network Layer 2-3", "Router");
410 resource.setDescription("My short description");
411 List<String> tgs = new ArrayList<>();
413 tgs.add(resource.getName());
414 resource.setTags(tgs);
417 List<CapabilityDefinition> capabilityDefinitions = createMockCapabilityListToReturn(
418 createCapability("capName", "capDesc", "capType", "source1",
420 Map<String, List<CapabilityDefinition>> capabilityMap = new HashMap<>();
421 capabilityMap.put("capType", capabilityDefinitions);
422 resource.setCapabilities(capabilityMap);
424 resource.setName(resource.getName());
425 resource.setVersion("0.1");
426 resource.setUniqueId(resource.getName().toLowerCase() + ":" + resource.getVersion());
427 resource.setCreatorUserId(user.getUserId());
428 resource.setCreatorFullName(user.getFirstName() + " " + user.getLastName());
429 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
433 private List<CapabilityDefinition> createMockCapabilityListToReturn(CapabilityDefinition capabilityDefinition) {
434 List<CapabilityDefinition> capabilityDefinitions = new ArrayList<>();
435 capabilityDefinitions.add(capabilityDefinition);
436 return capabilityDefinitions;
439 private void validateUserRoles(Role... roles) {
440 List<Role> listOfRoles = Stream.of(roles).collect(Collectors.toList());
443 private CapabilityDefinition createCapability(String name, String description, String type,
444 String validSourceTypes, String minOccurrences,
445 String maxOccurrences) {
446 CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
447 capabilityDefinition.setName(name);
448 capabilityDefinition.setDescription(description);
449 capabilityDefinition.setType(type);
450 capabilityDefinition.setValidSourceTypes(Collections.singletonList(validSourceTypes));
451 capabilityDefinition.setMaxOccurrences(maxOccurrences);
452 capabilityDefinition.setMinOccurrences(minOccurrences);
453 capabilityDefinition.setUniqueId(capabilityId);
454 return capabilityDefinition;
457 private Service createParentService() {
458 Service service = new Service();
459 service.setUniqueId("serviceUniqueId");
461 List<RequirementCapabilityRelDef> resourceInstancesRelations = new ArrayList<>();
462 RequirementCapabilityRelDef relationDef = new RequirementCapabilityRelDef();
463 relationDef.setFromNode("fromNode");
464 relationDef.setToNode("toNode");
466 List<CapabilityRequirementRelationship> relationships = new ArrayList<>();
467 CapabilityRequirementRelationship capabilityRequirementRelationship = new CapabilityRequirementRelationship();
469 RelationshipInfo relation = new RelationshipInfo();
470 relation.setCapabilityUid(capabilityId);
471 relation.setRequirementUid("reqUniqueId1");
472 capabilityRequirementRelationship.setRelation(relation);
474 relationships.add(capabilityRequirementRelationship);
475 relationDef.setRelationships(relationships);
476 resourceInstancesRelations.add(relationDef);
478 service.setComponentInstancesRelations(resourceInstancesRelations);