package com.sequenceiq.cloudbreak.service; import static com.sequenceiq.cloudbreak.common.type.CloudConstants.AWS; import static com.sequenceiq.cloudbreak.common.type.CloudConstants.GCP; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.Set; import com.sequenceiq.cloudbreak.api.model.BlueprintRequest; import com.sequenceiq.cloudbreak.api.model.DetailedStackStatus; import com.sequenceiq.cloudbreak.api.model.Status; import com.sequenceiq.cloudbreak.domain.Blueprint; import com.sequenceiq.cloudbreak.domain.CbUser; import com.sequenceiq.cloudbreak.domain.CloudbreakEvent; import com.sequenceiq.cloudbreak.domain.Cluster; import com.sequenceiq.cloudbreak.domain.Credential; import com.sequenceiq.cloudbreak.domain.InstanceGroup; import com.sequenceiq.cloudbreak.domain.Resource; import com.sequenceiq.cloudbreak.domain.Stack; import com.sequenceiq.cloudbreak.domain.StackStatus; import com.sequenceiq.cloudbreak.domain.Template; public final class ServiceTestUtils { public static final String DUMMY_OWNER = "gipsz@jakab.kom"; public static final String DUMMY_ACCOUNT = "acmecorp"; public static final String PUBLIC_KEY = "mypublickey"; private static final String C3LARGE_INSTANCE = "c3.large"; private static final String N1_STANDARD_1 = "n1-standard-1"; private ServiceTestUtils() { } public static Blueprint createBlueprint(String owner, String account) { Blueprint blueprint = new Blueprint(); blueprint.setId(1L); blueprint.setBlueprintName("test-blueprint"); blueprint.setBlueprintText("dummyText"); blueprint.setHostGroupCount(3); blueprint.setDescription("test blueprint"); blueprint.setName("multi-node-hdfs-yarn"); blueprint.setOwner(owner); blueprint.setAccount(account); blueprint.setPublicInAccount(true); return blueprint; } public static Blueprint createBlueprint(BlueprintRequest blueprintRequest) { Blueprint blueprint = new Blueprint(); blueprint.setName(blueprintRequest.getName()); blueprint.setBlueprintText(blueprintRequest.getAmbariBlueprint()); return blueprint; } public static Stack createStack() { return createStack(DUMMY_OWNER, DUMMY_ACCOUNT); } public static Stack createStack(String owner, String account) { return createStack(owner, account, createTemplate(owner, account, AWS), createCredential(owner, account, AWS), createCluster(owner, account, createBlueprint(owner, account))); } public static Stack createStack(String owner, String account, Template template, Cluster cluster) { return createStack(owner, account, template, createCredential(owner, account, template.cloudPlatform()), cluster); } public static Stack createStack(String owner, String account, Template template, Credential credential, Cluster cluster) { return createStack(owner, account, template, credential, cluster, new HashSet<>()); } public static Stack createStack(Template template, Credential credential) { return createStack(template, credential, new HashSet<>()); } public static Stack createStack(Template template, Credential credential, Set<Resource> resources) { return createStack(DUMMY_OWNER, DUMMY_ACCOUNT, template, credential, createCluster(), resources); } public static Stack createStack(String owner, String account, Template template, Credential credential, Cluster cluster, Set<Resource> resources) { Template template1 = createTemplate(AWS); Template template2 = createTemplate(AWS); Set<InstanceGroup> instanceGroups = new HashSet<>(); InstanceGroup instanceGroup1 = new InstanceGroup(); instanceGroup1.setNodeCount(2); instanceGroup1.setGroupName("master"); instanceGroup1.setTemplate(template1); instanceGroups.add(instanceGroup1); InstanceGroup instanceGroup2 = new InstanceGroup(); instanceGroup2.setNodeCount(2); instanceGroup2.setGroupName("slave_1"); instanceGroup2.setTemplate(template2); instanceGroups.add(instanceGroup2); Stack stack = new Stack(); stack.setCredential(credential); stack.setRegion("EU_WEST_1"); stack.setOwner(owner); stack.setAccount(account); stack.setStackStatus(new StackStatus(stack, Status.REQUESTED, "", DetailedStackStatus.PROVISION_REQUESTED)); stack.setInstanceGroups(instanceGroups); stack.setCluster(cluster); stack.setPublicInAccount(true); stack.setResources(resources); return stack; } public static Cluster createCluster(String owner, String account, Blueprint blueprint) { Cluster cluster = new Cluster(); cluster.setName("test-cluster"); cluster.setDescription("test cluster"); cluster.setEmailNeeded(false); cluster.setAmbariIp("168.192.12.13"); cluster.setStatus(Status.AVAILABLE); cluster.setStatusReason(""); cluster.setCreationStarted(123456789L); cluster.setCreationFinished(223456789L); cluster.setOwner(owner); cluster.setAccount(account); cluster.setBlueprint(blueprint); return cluster; } public static Cluster createCluster() { return createCluster(DUMMY_OWNER, DUMMY_ACCOUNT, createBlueprint(DUMMY_OWNER, DUMMY_ACCOUNT)); } public static Credential createCredential(String owner, String account, String platform) { switch (platform) { case AWS: Credential awsCredential = new Credential(); awsCredential.setId(1L); awsCredential.setOwner(owner); awsCredential.setCloudPlatform(platform); awsCredential.setAccount(account); awsCredential.setPublicInAccount(true); awsCredential.setPublicKey(PUBLIC_KEY); return awsCredential; case GCP: Credential gcpCredential = new Credential(); gcpCredential.setId(1L); gcpCredential.setOwner(owner); gcpCredential.setCloudPlatform(platform); gcpCredential.setAccount(account); gcpCredential.setPublicInAccount(true); gcpCredential.setPublicKey(PUBLIC_KEY); return gcpCredential; default: return null; } } public static Template createTemplate(String platform) { return createTemplate(DUMMY_OWNER, DUMMY_ACCOUNT, platform); } public static Template createTemplate(String owner, String account, String platform) { switch (platform) { case AWS: Template awsTemplate = new Template(); awsTemplate.setId(1L); awsTemplate.setOwner(owner); awsTemplate.setAccount(account); awsTemplate.setInstanceType(C3LARGE_INSTANCE); awsTemplate.setVolumeType("gp2"); awsTemplate.setVolumeCount(1); awsTemplate.setVolumeSize(100); awsTemplate.setDescription("aws test template"); awsTemplate.setPublicInAccount(true); awsTemplate.setCloudPlatform(AWS); return awsTemplate; case GCP: Template gcpTemplate = new Template(); gcpTemplate.setId(1L); gcpTemplate.setInstanceType(N1_STANDARD_1); gcpTemplate.setVolumeType("pd-standard"); gcpTemplate.setDescription("gcp test template"); gcpTemplate.setOwner(owner); gcpTemplate.setAccount(account); gcpTemplate.setVolumeCount(1); gcpTemplate.setVolumeSize(100); gcpTemplate.setPublicInAccount(true); gcpTemplate.setCloudPlatform(GCP); return gcpTemplate; default: return null; } } public static CloudbreakEvent createEvent(Long stackId, int nodeCount, String eventStatus, Date eventTimestamp) { CloudbreakEvent event = new CloudbreakEvent(); event.setStackId(stackId); event.setEventType(eventStatus); event.setEventTimestamp(eventTimestamp); event.setNodeCount(nodeCount); return event; } public static CbUser cbUser() { return new CbUser("userId", "userName", "account", new ArrayList<>(), "givenName", "familyName", new Date()); } }