Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(runjob): add ability to read props file even if job fails #3855

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import com.fasterxml.jackson.core.type.TypeReference
import com.fasterxml.jackson.databind.ObjectMapper
import com.netflix.frigga.Names
import com.netflix.spinnaker.kork.core.RetrySupport
import com.netflix.spinnaker.kork.exceptions.ConfigurationException
import com.netflix.spinnaker.orca.api.pipeline.models.ExecutionStatus
import com.netflix.spinnaker.orca.api.pipeline.OverridableTimeoutRetryableTask
import com.netflix.spinnaker.orca.api.pipeline.models.StageExecution
Expand Down Expand Up @@ -128,30 +129,31 @@ public class WaitOnJobCompletion extends AbstractCloudProviderAwareTask implemen
Map job = objectMapper.readValue(jobStream, new TypeReference<Map>() {})
outputs.jobStatus = job

outputs.completionDetails = job.completionDetails
switch ((String) job.jobState) {
case "Succeeded":
status = ExecutionStatus.SUCCEEDED
outputs.completionDetails = job.completionDetails

if (stage.context.propertyFile) {
Map<String, Object> properties = [:]
retrySupport.retry({
properties = katoRestService.getFileContents(appName, account, location, name, stage.context.propertyFile)
if (properties.size() == 0) {
throw new IllegalStateException("Expected properties file ${stage.context.propertyFile} but it was either missing, empty or contained invalid syntax")
}
}, 6, 5000, false) // retry for 30 seconds
outputs << properties
outputs.propertyFileContents = properties
}

return
break

case "Failed":
status = ExecutionStatus.TERMINAL
outputs.completionDetails = job.completionDetails
return
break
}

if ((status == ExecutionStatus.SUCCEEDED) || (status == ExecutionStatus.TERMINAL)) {
if (stage.context.propertyFile) {
Map<String, Object> properties = [:]
retrySupport.retry({
properties = katoRestService.getFileContents(appName, account, location, name, stage.context.propertyFile)
if (properties.size() == 0) {
throw new ConfigurationException("Expected properties file ${stage.context.propertyFile} but it was either missing, empty or contained invalid syntax")
}
}, 6, 5000, false) // retry for 30 seconds
outputs << properties
outputs.propertyFileContents = properties
}
}

}

TaskResult.builder(status).context(outputs).outputs(outputs).build()
Expand Down