Skip to content

Commit

Permalink
feat(titusserviceJobProcesses): Support serviceJobProcesses for creat…
Browse files Browse the repository at this point in the history
…e and clone ops (#3816)
  • Loading branch information
aravindmd committed Jun 25, 2019
1 parent 234a960 commit 2be13aa
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ public class JobDescription {
private DisruptionBudget disruptionBudget;

private SubmitJobRequest.Constraints constraints;
private ServiceJobProcesses serviceJobProcesses;

// Soft/Hard constraints

Expand Down Expand Up @@ -120,6 +121,7 @@ public class JobDescription {

disruptionBudget = request.getDisruptionBudget();
constraints = request.getContainerConstraints();
serviceJobProcesses = request.getServiceJobProcesses();
}

public String getName() {
Expand Down Expand Up @@ -405,6 +407,14 @@ public void setDisruptionBudget(DisruptionBudget disruptionBudget) {
this.disruptionBudget = disruptionBudget;
}

public ServiceJobProcesses getServiceJobProcesses() {
return serviceJobProcesses;
}

public void setServiceJobProcesses(ServiceJobProcesses serviceJobProcesses) {
this.serviceJobProcesses = serviceJobProcesses;
}

@JsonIgnore
public SubmitJobRequest.Constraints getConstraints() {
return constraints;
Expand Down Expand Up @@ -566,12 +576,20 @@ public JobDescriptor getGrpcJobDescriptor() {
.build())
.build();
}

com.netflix.titus.grpc.protogen.ServiceJobSpec.ServiceJobProcesses.Builder
titusServiceJobProcesses = ServiceJobSpec.ServiceJobProcesses.newBuilder();
if (serviceJobProcesses != null) {
titusServiceJobProcesses
.setDisableDecreaseDesired(serviceJobProcesses.isDisableDecreaseDesired())
.setDisableIncreaseDesired(serviceJobProcesses.isDisableIncreaseDesired())
.build();
}
jobDescriptorBuilder.setService(
ServiceJobSpec.newBuilder()
.setEnabled(inService)
.setCapacity(jobCapacity)
.setMigrationPolicy(serviceMigrationPolicy)
.setServiceJobProcesses(titusServiceJobProcesses)
.setRetryPolicy(
RetryPolicy.newBuilder()
.setExponentialBackOff(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ public static class Constraints {
private DisruptionBudget disruptionBudget = null;

private Constraints containerConstraints = null;
private ServiceJobProcesses serviceJobProcesses = null;

public DisruptionBudget getDisruptionBudget() {
return disruptionBudget;
Expand Down Expand Up @@ -285,6 +286,11 @@ public SubmitJobRequest withConstraints(Constraints constraints) {
return this;
}

public SubmitJobRequest withServiceJobProcesses(ServiceJobProcesses serviceJobProcesses) {
this.serviceJobProcesses = serviceJobProcesses;
return this;
}

// Getters

public String getJobType() {
Expand Down Expand Up @@ -426,4 +432,8 @@ public MigrationPolicy getMigrationPolicy() {
public Constraints getContainerConstraints() {
return containerConstraints;
}

public ServiceJobProcesses getServiceJobProcesses() {
return serviceJobProcesses;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import com.netflix.spinnaker.clouddriver.security.resources.ApplicationNameable
import com.netflix.spinnaker.clouddriver.titus.client.model.DisruptionBudget
import com.netflix.spinnaker.clouddriver.titus.client.model.Efs
import com.netflix.spinnaker.clouddriver.titus.client.model.MigrationPolicy
import com.netflix.spinnaker.clouddriver.titus.client.model.ServiceJobProcesses
import com.netflix.spinnaker.clouddriver.titus.client.model.SubmitJobRequest
import groovy.transform.Canonical

Expand Down Expand Up @@ -56,6 +57,7 @@ class TitusDeployDescription extends AbstractTitusCredentialsDescription impleme
Boolean copySourceScalingPoliciesAndActions = true
Integer sequence
DisruptionBudget disruptionBudget
ServiceJobProcesses serviceJobProcesses

// constraints take precedence over list of soft / hard constraints when specified
SubmitJobRequest.Constraints constraints = new SubmitJobRequest.Constraints()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ class TitusDeployHandler implements DeployHandler<TitusDeployDescription> {
[(it.key): it.value?.toString()]
})
.withDisruptionBudget(description.disruptionBudget)
.withServiceJobProcesses(description.serviceJobProcesses)

if (dockerImage.imageDigest != null) {
submitJobRequest = submitJobRequest.withDockerDigest(dockerImage.imageDigest)
Expand Down Expand Up @@ -395,6 +396,11 @@ class TitusDeployHandler implements DeployHandler<TitusDeployDescription> {
description.capacity.desired = sourceJob.instancesDesired
}

if(description.serviceJobProcesses) {
description.serviceJobProcesses.disableDecreaseDesired = sourceJob.serviceJobProcesses.disableDecreaseDesired
description.serviceJobProcesses.disableIncreaseDesired = sourceJob.serviceJobProcesses.disableIncreaseDesired
}

description.resources.cpu = description.resources.cpu ?: sourceJob.cpu
description.resources.memory = description.resources.memory ?: sourceJob.memory
description.resources.disk = description.resources.disk ?: sourceJob.disk
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ class TitusDeployHandlerSpec extends Specification {
'k1': 'value1',
'k2': 123
],
serviceJobProcesses: [
"disableIncreaseDesired": true,
"disableDecreaseDesired": true
],
constraints: [
soft: [
"AvailabilityZone" : "us-east-1d",
Expand Down Expand Up @@ -136,6 +140,7 @@ class TitusDeployHandlerSpec extends Specification {
it.allocateIpAddress == titusDeployDescription.resources.allocateIpAddress &&
it.labels.get("interestingHealthProviderNames") == "Titus,Discovery" &&
it.containerConstraints == constraints
it.serviceJobProcesses == titusDeployDescription.serviceJobProcesses
} as SubmitJobRequest) >> "123456"
}

Expand Down

0 comments on commit 2be13aa

Please sign in to comment.