Skip to content

Commit

Permalink
Merge branches 'master' and 'titus-v3' of ssh://stash.corp.netflix.co…
Browse files Browse the repository at this point in the history
…m:7999/spkr/clouddriver-nflx into titus-v3
  • Loading branch information
tomaslin committed Mar 26, 2018
1 parent 6879472 commit 9a0b640
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,24 @@
package com.netflix.spinnaker.clouddriver.titus.client.model;

import com.netflix.spinnaker.clouddriver.titus.model.TitusSecurityGroup;
import com.netflix.titus.grpc.protogen.BatchJobSpec;
import com.netflix.titus.grpc.protogen.JobDescriptor;
import com.netflix.titus.grpc.protogen.ServiceJobSpec;

import java.util.*;
import java.util.stream.Collectors;

public class Job {

public static class TaskSummary {

public TaskSummary() {}

public TaskSummary(com.netflix.titus.grpc.protogen.Task grpcTask){
id = grpcTask.getId();
state = TaskState.from( grpcTask.getState().getState().name() );
}

private String id;
private String instanceId;
private TaskState state;
Expand Down Expand Up @@ -204,18 +216,30 @@ public Job() {}
public Job(com.netflix.titus.grpc.protogen.Job grpcJob){
id = grpcJob.getId();

if(grpcJob.getJobDescriptor().getBatch() != null){
if(grpcJob.getJobDescriptor().getJobSpecCase().getNumber() == JobDescriptor.BATCH_FIELD_NUMBER){
type = "batch";
} else if(grpcJob.getJobDescriptor().getService() != null){
BatchJobSpec batchJobSpec = grpcJob.getJobDescriptor().getBatch();
instancesMin = batchJobSpec.getInstances().getMin();
instancesMax = batchJobSpec.getInstances().getMax();
instancesDesired = batchJobSpec.getInstances().getDesired();
}

if(grpcJob.getJobDescriptor().getJobSpecCase().getNumber() == JobDescriptor.SERVICE_FIELD_NUMBER){
type = "service";
ServiceJobSpec serviceSpec = grpcJob.getJobDescriptor().getService();
inService = serviceSpec.getEnabled();
instancesMin = serviceSpec.getInstances().getMin();
instancesMax = serviceSpec.getInstances().getMax();
instancesDesired = serviceSpec.getInstances().getDesired();
}

labels = grpcJob.getJobDescriptor().getLabelsMap();
user = grpcJob.getJobDescriptor().getOwner().getTeamEmail();
tasks = grpcJob.getTasksList().stream().map( grpcTask -> new TaskSummary(grpcTask)).collect(Collectors.toList());

/*
private String name;
private String type;
private List<String> tags;
private String applicationName;
private String appName;
private String user;
private String version;
private String entryPoint;
private String iamProfile;
Expand All @@ -237,9 +261,7 @@ public Job(com.netflix.titus.grpc.protogen.Job grpcJob){
private boolean allocateIpAddress;
private Date submittedAt;
private List<TaskSummary> tasks;
private Map<String, String> labels;
private List<String> securityGroups;
private Set<TitusSecurityGroup> securityGroupDetails;
private String jobGroupStack;
private String jobGroupDetail;
private String jobGroupSequence;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -90,12 +91,15 @@ public Job getJob(String jobId) {

@Override
public Job findJobByName(String jobName) {
return new Job(grpcBlockingStub.findJobs(JobQuery.newBuilder().putFiterlingCriteria("labels.name", jobName).build()).getItems(0));
JobQuery.Builder jobQuery = JobQuery.newBuilder()
.putFiterlingCriteria("labels", "name=" + jobName + ",source=spinnaker");
return getJobs(jobQuery).get(0);
}

@Override
public List<Job> findJobsByApplication(String application) {
return grpcBlockingStub.findJobs(JobQuery.newBuilder().putFiterlingCriteria("appName", application).build()).getItemsList().stream().map(grpcJob -> new Job(grpcJob)).collect(Collectors.toList());
JobQuery.Builder jobQuery = JobQuery.newBuilder().putFiterlingCriteria("appName", application);
return getJobs(jobQuery);
}

@Override
Expand Down Expand Up @@ -170,7 +174,28 @@ public TitusHealth getHealth() {

@Override
public List<Job> getAllJobs() {
return grpcBlockingStub.findJobs(JobQuery.newBuilder().putFiterlingCriteria("jobType", "service").build()).getItemsList().stream().map(grpcJob -> new Job(grpcJob)).collect(Collectors.toList());
JobQuery.Builder jobQuery = JobQuery.newBuilder()
.putFiterlingCriteria("jobType", "SERVICE")
.putFiterlingCriteria("labels", "source=spinnaker");
return getJobs(jobQuery);
}

private List<Job> getJobs(JobQuery.Builder jobQuery) {
int currentPage = 0;
int allPages;
List<Job> jobs = new ArrayList<>();
do {
jobQuery.setPage(Page.newBuilder().setPageNumber(currentPage).setPageSize(100));
JobQuery criteria = jobQuery.build();
JobQueryResult resultPage = grpcBlockingStub.findJobs(criteria);
jobs.addAll(resultPage.getItemsList().stream().map(grpcJob -> {
return new Job(grpcJob);
}).collect(Collectors.toList()));
allPages = resultPage.getPagination().getAllPages();
currentPage++;
} while (allPages > currentPage);
return jobs;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package com.netflix.spinnaker.clouddriver.titus.v3client

import com.netflix.spectator.api.NoopRegistry
import com.netflix.spinnaker.clouddriver.titus.client.RegionScopedTitusClient
import com.netflix.spinnaker.clouddriver.titus.client.TitusClient
import com.netflix.spinnaker.clouddriver.titus.client.TitusRegion
import com.netflix.spinnaker.clouddriver.titus.client.model.*
Expand All @@ -29,6 +28,7 @@ import spock.lang.Specification
class RegionScopedV3TitusClientSpec extends Specification {

// this isn't really a unit test..
@Ignore
void 'job creation lifecycle'() {
setup:
Logger logger = LoggerFactory.getLogger(TitusClient)
Expand All @@ -39,9 +39,6 @@ class RegionScopedV3TitusClientSpec extends Specification {

// ******************************************************************************************************************

titusClient.getAllJobs()


Map<String, String> env = new HashMap<>();
env.put("debug", "true");

Expand All @@ -68,9 +65,9 @@ class RegionScopedV3TitusClientSpec extends Specification {
.withEntryPoint("ls -la")
.withIamProfile("TitusContainerRole")
.withSecurityGroups([
'sg-f0f19494',
'sg-6321d91b'
])
'sg-f0f19494',
'sg-6321d91b'
])
.withPorts([7001] as int[])
.withEnv(env)
.withLabels(labels)
Expand All @@ -81,14 +78,6 @@ class RegionScopedV3TitusClientSpec extends Specification {
when:
String jobId = titusClient.submitJob(submitJobRequest);

titusClient.findJobsByApplication("helix_hello_world_server");



job = titusClient.findJobByName("helix_hello_world_server-main-test-v001");



then:
jobId != null

Expand All @@ -109,18 +98,6 @@ class RegionScopedV3TitusClientSpec extends Specification {
logger.info("job by name {}", job);
job != null

titusClient.terminateJob(new TerminateJobRequest().withJobId(jobId));
/*
// ******************************************************************************************************************
logger.info("Tasks request at {}", new Date());
List<Job.TaskSummary> tasks = titusClient.getAllTasks();
logger.info("Tasks response at {}", new Date());
logger.info("Tasks");
logger.info("-----------------------------------------------------------------------------------------------");
logger.info("Task count: {}", tasks.size());
logger.info("Jobs request: {}", new Date());
List<Job> jobs = titusClient.getAllJobs();
logger.info("Jobs response: {}", new Date());
Expand Down Expand Up @@ -188,6 +165,7 @@ class RegionScopedV3TitusClientSpec extends Specification {
Job.TaskSummary task = terminatedJob.getTasks().get(0);
if (task.getState() == TaskState.DEAD ||
task.getState() == TaskState.STOPPED ||
task.getState() == TaskState.FAILED ||
task.getState() == TaskState.FINISHED) {
terminated = true;
break;
Expand Down Expand Up @@ -220,6 +198,6 @@ class RegionScopedV3TitusClientSpec extends Specification {

then:
!foundAfterTermination
*/

}
}

0 comments on commit 9a0b640

Please sign in to comment.