use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class ClouderaManagerSecurityService method setupMonitoringUser.
@Override
public void setupMonitoringUser() throws CloudbreakException {
Cluster cluster = stack.getCluster();
String user = cluster.getCloudbreakAmbariUser();
String password = cluster.getCloudbreakAmbariPassword();
try {
ApiClient client = getClient(stack.getGatewayPort(), user, password, clientConfig);
UsersResourceApi usersResourceApi = clouderaManagerApiFactory.getUserResourceApi(client);
String monitoringUser = cluster.getCloudbreakClusterManagerMonitoringUser();
String monitoringPassword = cluster.getCloudbreakClusterManagerMonitoringPassword();
ApiUser2List userList = usersResourceApi.readUsers2("SUMMARY");
Optional<ApiUser2> mUser = userList.getItems().stream().filter(apiUser2 -> apiUser2.getName().equals(monitoringUser)).findFirst();
if (mUser.isPresent()) {
LOGGER.info("Monitoring user '{}' already exists. Skipping user generation", monitoringUser);
} else {
List<ApiAuthRoleRef> authRoles = new ArrayList<>();
ApiAuthRoleRef apiAuthRoleRef = new ApiAuthRoleRef();
apiAuthRoleRef.setName("ROLE_ADMIN");
authRoles.add(apiAuthRoleRef);
createNewUser(usersResourceApi, authRoles, monitoringUser, monitoringPassword, userList);
}
} catch (ApiException | ClouderaManagerClientInitException e) {
throw new CloudbreakException("Can't replace admin password due to: " + e.getMessage());
}
}
use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class ClusterHostServiceRunner method addClusterServices.
public NodeReachabilityResult addClusterServices(Long stackId, Map<String, Integer> hostGroupWithAdjustment, boolean repair) {
Stack stack = stackService.getByIdWithListsInTransaction(stackId);
Cluster cluster = stack.getCluster();
Map<String, String> candidates = collectUpscaleCandidates(cluster.getId(), hostGroupWithAdjustment);
Set<String> gatewayHosts = stack.getNotTerminatedAndNotZombieGatewayInstanceMetadata().stream().map(InstanceMetaData::getDiscoveryFQDN).collect(Collectors.toSet());
boolean candidatesContainGatewayNode = candidates.keySet().stream().anyMatch(gatewayHosts::contains);
NodeReachabilityResult nodeReachabilityResult;
if (!repair && !candidatesContainGatewayNode && targetedUpscaleSupportService.targetedUpscaleOperationSupported(stack)) {
nodeReachabilityResult = runTargetedClusterServices(stack, cluster, candidates);
} else {
nodeReachabilityResult = runClusterServices(stack, cluster, candidates);
}
return nodeReachabilityResult;
}
use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class CcmUpgradeFlowIntegrationTest method mockStack.
private Stack mockStack() {
stack = new Stack();
stack.setId(STACK_ID);
stack.setName("stackname");
StackStatus stackStatus = new StackStatus(stack, Status.AVAILABLE, "no reason at all", DetailedStackStatus.AVAILABLE);
stack.setStackStatus(stackStatus);
stack.setCluster(new Cluster());
return stack;
}
use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class ClusterUpscaleServiceTest method testInstallServicesOnNewHostWithRestartButThereIsAnUnhealthyNode.
@Test
public void testInstallServicesOnNewHostWithRestartButThereIsAnUnhealthyNode() throws CloudbreakException {
Stack stack = new Stack();
stack.setId(1L);
Cluster cluster = new Cluster();
cluster.setId(2L);
stack.setCluster(cluster);
when(stackService.getByIdWithClusterInTransaction(eq(1L))).thenReturn(stack);
ClusterApi clusterApi = mock(ClusterApi.class);
when(clusterApiConnectors.getConnector(any(Stack.class))).thenReturn(clusterApi);
HostGroup hostGroup = new HostGroup();
InstanceGroup instanceGroup = new InstanceGroup();
InstanceMetaData im1 = new InstanceMetaData();
im1.setInstanceStatus(InstanceStatus.SERVICES_HEALTHY);
InstanceMetaData im2 = new InstanceMetaData();
im2.setInstanceStatus(InstanceStatus.SERVICES_HEALTHY);
InstanceMetaData im3 = new InstanceMetaData();
im3.setInstanceStatus(InstanceStatus.DELETED_BY_PROVIDER);
stack.setInstanceGroups(Set.of(instanceGroup));
instanceGroup.setInstanceMetaData(Set.of(im1, im2, im3));
hostGroup.setInstanceGroup(instanceGroup);
when(hostGroupService.getByClusterWithRecipes(any())).thenReturn(Set.of(hostGroup));
when(parcelService.removeUnusedParcelComponents(stack)).thenReturn(new ParcelOperationStatus(Collections.emptyMap(), Collections.emptyMap()));
underTest.installServicesOnNewHosts(1L, Set.of("master"), true, true);
verify(clusterApi, times(1)).upscaleCluster(any());
verify(clusterApi, times(0)).restartAll(false);
verify(parcelService).removeUnusedParcelComponents(stack);
}
use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class ClusterDecoratorTest method testAutoTlsSettingByParentEnvironmentCloudPlatform.
@Test
void testAutoTlsSettingByParentEnvironmentCloudPlatform() {
Cluster expectedClusterInstance = new Cluster();
Blueprint blueprint = getBlueprint();
when(sharedServiceConfigProvider.configureCluster(any(Cluster.class), any(User.class), any(Workspace.class))).thenReturn(expectedClusterInstance);
ArgumentCaptor<Platform> platformArgumentCaptor = ArgumentCaptor.forClass(Platform.class);
when(cloudPlatformConnectors.get(platformArgumentCaptor.capture(), any())).thenReturn(connector);
when(embeddedDatabaseService.isEmbeddedDatabaseOnAttachedDiskEnabled(stack, expectedClusterInstance)).thenReturn(false);
String platform = CloudPlatform.YARN.name();
underTest.decorate(expectedClusterInstance, createClusterV4Request(), blueprint, user, new Workspace(), stack, platform);
assertEquals(platform, platformArgumentCaptor.getValue().value());
}
Aggregations