use of com.sequenceiq.cloudbreak.domain.stack.Component in project cloudbreak by hortonworks.
the class CmSyncResultMergerServiceTest method testMergeWhenNoResultsAtAll.
@Test
void testMergeWhenNoResultsAtAll() {
Stack stack = new Stack();
CmRepoSyncOperationResult cmRepoSyncOperationResult = new CmRepoSyncOperationResult(null, null);
CmParcelSyncOperationResult cmParcelSyncOperationResult = new CmParcelSyncOperationResult(Set.of(), Set.of());
CmSyncOperationResult cmSyncOperationResult = new CmSyncOperationResult(cmRepoSyncOperationResult, cmParcelSyncOperationResult);
Set<Component> mergedComponents = underTest.merge(stack, cmSyncOperationResult);
assertThat(mergedComponents, emptyCollectionOf(Component.class));
verify(componentConverter, never()).fromClouderaManagerRepo(any(), any());
verify(componentConverter).fromClouderaManagerProductList(Set.of(), stack);
}
use of com.sequenceiq.cloudbreak.domain.stack.Component in project cloudbreak by hortonworks.
the class CmSyncResultMergerServiceTest method testMerge.
@Test
void testMerge() {
Stack stack = new Stack();
ClouderaManagerRepo clouderaManagerRepo = new ClouderaManagerRepo();
CmRepoSyncOperationResult cmRepoSyncOperationResult = new CmRepoSyncOperationResult("", clouderaManagerRepo);
when(componentConverter.fromClouderaManagerRepo(clouderaManagerRepo, stack)).thenReturn(componentWithName(CM_REPO_COMPONENT_NAME));
Set<ClouderaManagerProduct> clouderaManagerProducts = Set.of(new ClouderaManagerProduct());
CmParcelSyncOperationResult cmParcelSyncOperationResult = new CmParcelSyncOperationResult(Set.of(), clouderaManagerProducts);
when(componentConverter.fromClouderaManagerProductList(clouderaManagerProducts, stack)).thenReturn(Set.of(componentWithName(CM_PARCEL_COMPONENT_NAME)));
CmSyncOperationResult cmSyncOperationResult = new CmSyncOperationResult(cmRepoSyncOperationResult, cmParcelSyncOperationResult);
Set<Component> mergedComponents = underTest.merge(stack, cmSyncOperationResult);
assertThat(mergedComponents, hasSize(2));
assertThat(mergedComponents, containsInAnyOrder(hasProperty("name", is(CM_REPO_COMPONENT_NAME)), hasProperty("name", is(CM_PARCEL_COMPONENT_NAME))));
verify(componentConverter).fromClouderaManagerRepo(clouderaManagerRepo, stack);
verify(componentConverter).fromClouderaManagerProductList(clouderaManagerProducts, stack);
}
use of com.sequenceiq.cloudbreak.domain.stack.Component in project cloudbreak by hortonworks.
the class ComponentPersistingServiceTest method testPersistComponentsToDb.
@Test
void testPersistComponentsToDb() {
Stack stack = new Stack();
CmSyncOperationResult cmSyncOperationResult = new CmSyncOperationResult(null, null);
Set<Component> foundComponents = Set.of(new Component());
when(cmSyncResultMergerService.merge(stack, cmSyncOperationResult)).thenReturn(foundComponents);
underTest.persistComponentsToDb(stack, cmSyncOperationResult);
verify(stackComponentUpdater).updateComponentsByStackId(stack, foundComponents, false);
verify(clusterComponentUpdater).updateClusterComponentsByStackId(stack, foundComponents, false);
}
use of com.sequenceiq.cloudbreak.domain.stack.Component in project cloudbreak by hortonworks.
the class StackComponentUpdaterTest method testUpdateImageComponents.
@Test
public void testUpdateImageComponents() throws CloudbreakImageCatalogException, CloudbreakImageNotFoundException {
Stack stack = TestUtil.stack();
Cluster cluster = TestUtil.cluster();
stack.setCluster(cluster);
StatedImage targetImage = ImageTestUtil.getImageFromCatalog(true, "targetImageUuid", TARGET_STACK_VERSION);
Image originalImage = ImageTestUtil.getImage(true, "originalImageUuid", STACK_VERSION);
Component originalImageComponent = new Component(ComponentType.IMAGE, ComponentType.IMAGE.name(), new Json(originalImage), stack);
when(componentConfigProviderService.getComponentsByStackId(stack.getId())).thenReturn(Set.of(originalImageComponent));
Set<Component> targetComponents = createComponents(stack, targetImage);
underTest.updateComponentsByStackId(stack, targetComponents, true);
ArgumentCaptor<Set<Component>> componentCatcher = ArgumentCaptor.forClass(Set.class);
verify(componentConfigProviderService, times(1)).store(componentCatcher.capture());
assertEquals(3, componentCatcher.getValue().size());
assertTrue(componentCatcher.getValue().stream().anyMatch(component -> {
Object version = component.getAttributes().getValue("version");
if (Objects.nonNull(version)) {
return ((String) version).contains(TARGET_STACK_VERSION);
} else {
return false;
}
}));
assertTrue(componentCatcher.getValue().stream().anyMatch(component -> {
Object userData = component.getAttributes().getValue("userdata");
if (Objects.nonNull(userData)) {
return ((Map<String, String>) userData).get(InstanceGroupType.GATEWAY.name()).contains("gw user data");
} else {
return false;
}
}));
}
use of com.sequenceiq.cloudbreak.domain.stack.Component in project cloudbreak by hortonworks.
the class StackImageService method findImageComponentByName.
public Optional<Component> findImageComponentByName(Long stackId, String componentName) {
Component targetImageComponent = componentConfigProviderService.getComponent(stackId, ComponentType.IMAGE, componentName);
LOGGER.debug("The following target image found for stack {}, {}", stackId, targetImageComponent);
return Optional.ofNullable(targetImageComponent);
}
Aggregations