spinnaker.execution.stages.before.shrinkCluster
A policy targeting this object runs before executing each task in a shrinkCluster stage.
Example Payload
Click to expand
{
"input": {
"pipeline": {
"application": "test",
"authentication": {
"allowedAccounts": [
"spinnaker",
"staging",
"staging-ecs"
],
"user": "myUserName"
},
"buildTime": 1620926703486,
"canceled": false,
"canceledBy": null,
"cancellationReason": null,
"description": null,
"endTime": 1620926705283,
"id": "01F5KC59TRGWKCP31C4N51CDSB",
"initialConfig": {},
"keepWaitingPipelines": false,
"limitConcurrent": true,
"name": "test",
"notifications": [],
"origin": "api",
"partition": null,
"paused": null,
"pipelineConfigId": "6a4cff2e-8265-4584-8993-2da2eb6254f5",
"source": null,
"spelEvaluator": "v4",
"stages": [
{
"context": {
"failPipeline": true,
"user": "myUserName",
"waitForCompletion": true
},
"endTime": null,
"id": "01F5KC59VXM9SH65YQVYSPYQ07",
"lastModified": null,
"name": "Script",
"outputs": {},
"parentStageId": null,
"refId": "37",
"requisiteStageRefIds": [],
"scheduledTime": null,
"startTime": 1620926703903,
"startTimeExpiry": null,
"status": "RUNNING",
"syntheticStageOwner": null,
"tasks": [
{
"endTime": null,
"id": "1",
"implementingClass": "com.netflix.spinnaker.orca.igor.tasks.StartScriptTask",
"loopEnd": false,
"loopStart": false,
"name": "startScript",
"stageEnd": false,
"stageStart": true,
"startTime": 1620926704279,
"status": "RUNNING"
},
{
"endTime": null,
"id": "2",
"implementingClass": "com.netflix.spinnaker.orca.igor.tasks.MonitorQueuedJenkinsJobTask",
"loopEnd": false,
"loopStart": false,
"name": "waitForScriptStart",
"stageEnd": false,
"stageStart": false,
"startTime": null,
"status": "NOT_STARTED"
},
{
"endTime": null,
"id": "3",
"implementingClass": "com.netflix.spinnaker.orca.igor.tasks.MonitorJenkinsJobTask",
"loopEnd": false,
"loopStart": false,
"name": "monitorScript",
"stageEnd": false,
"stageStart": false,
"startTime": null,
"status": "NOT_STARTED"
},
{
"endTime": null,
"id": "4",
"implementingClass": "com.netflix.spinnaker.orca.igor.tasks.GetBuildPropertiesTask",
"loopEnd": false,
"loopStart": false,
"name": "getBuildProperties",
"stageEnd": true,
"stageStart": false,
"startTime": null,
"status": "NOT_STARTED"
}
],
"type": "script"
}
],
"startTime": 1620926703525,
"startTimeExpiry": null,
"status": "TERMINAL",
"systemNotifications": [],
"templateVariables": null,
"trigger": {
"artifacts": [
{
"artifactAccount": "myUserName",
"customKind": false,
"location": null,
"metadata": {
"id": "d14e7e5b-247c-455d-8260-9e9b0a3ae936"
},
"name": "manifests/deploy-spinnaker.yaml",
"provenance": null,
"reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/deploy-spinnaker.yaml",
"type": "github/file",
"uuid": null,
"version": "master"
}
],
"correlationId": null,
"isDryRun": false,
"isRebake": false,
"isStrategy": false,
"notifications": [],
"other": {
"artifacts": [
{
"artifactAccount": "myUserName",
"customKind": false,
"metadata": {
"id": "d14e7e5b-247c-455d-8260-9e9b0a3ae936"
},
"name": "manifests/deploy-spinnaker.yaml",
"reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/deploy-spinnaker.yaml",
"type": "github/file",
"version": "master"
}
],
"dryRun": false,
"enabled": false,
"eventId": "c1090782-f485-490e-a2d7-31763b3bd4d8",
"executionId": "01F5KC59TRGWKCP31C4N51CDSB",
"expectedArtifacts": [
{
"boundArtifact": {
"artifactAccount": "myUserName",
"customKind": false,
"metadata": {
"id": "d14e7e5b-247c-455d-8260-9e9b0a3ae936"
},
"name": "manifests/deploy-spinnaker.yaml",
"reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/deploy-spinnaker.yaml",
"type": "github/file",
"version": "master"
},
"defaultArtifact": {
"artifactAccount": "myUserName",
"customKind": false,
"metadata": {
"id": "d14e7e5b-247c-455d-8260-9e9b0a3ae936"
},
"name": "manifests/deploy-spinnaker.yaml",
"reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/deploy-spinnaker.yaml",
"type": "github/file",
"version": "master"
},
"id": "05ad020e-73a6-49f2-9988-2073831219e9",
"matchArtifact": {
"artifactAccount": "myUserName",
"customKind": true,
"metadata": {
"id": "f7a9b229-0a23-42ab-82de-9990d77084df"
},
"name": "manifests/deploy-spinnaker.yaml",
"type": "github/file"
},
"useDefaultArtifact": true,
"usePriorArtifact": false
}
],
"notifications": [],
"parameters": {},
"preferred": false,
"rebake": false,
"resolvedExpectedArtifacts": [
{
"boundArtifact": {
"artifactAccount": "myUserName",
"customKind": false,
"metadata": {
"id": "d14e7e5b-247c-455d-8260-9e9b0a3ae936"
},
"name": "manifests/deploy-spinnaker.yaml",
"reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/deploy-spinnaker.yaml",
"type": "github/file",
"version": "master"
},
"defaultArtifact": {
"artifactAccount": "myUserName",
"customKind": false,
"metadata": {
"id": "d14e7e5b-247c-455d-8260-9e9b0a3ae936"
},
"name": "manifests/deploy-spinnaker.yaml",
"reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/deploy-spinnaker.yaml",
"type": "github/file",
"version": "master"
},
"id": "05ad020e-73a6-49f2-9988-2073831219e9",
"matchArtifact": {
"artifactAccount": "myUserName",
"customKind": true,
"metadata": {
"id": "f7a9b229-0a23-42ab-82de-9990d77084df"
},
"name": "manifests/deploy-spinnaker.yaml",
"type": "github/file"
},
"useDefaultArtifact": true,
"usePriorArtifact": false
}
],
"strategy": false,
"type": "manual",
"user": "myUserName"
},
"parameters": {},
"resolvedExpectedArtifacts": [
{
"boundArtifact": {
"artifactAccount": "myUserName",
"customKind": false,
"location": null,
"metadata": {
"id": "d14e7e5b-247c-455d-8260-9e9b0a3ae936"
},
"name": "manifests/deploy-spinnaker.yaml",
"provenance": null,
"reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/deploy-spinnaker.yaml",
"type": "github/file",
"uuid": null,
"version": "master"
},
"defaultArtifact": {
"artifactAccount": "myUserName",
"customKind": false,
"location": null,
"metadata": {
"id": "d14e7e5b-247c-455d-8260-9e9b0a3ae936"
},
"name": "manifests/deploy-spinnaker.yaml",
"provenance": null,
"reference": "Https://api.github.com/repos/myUserName/hostname/contents/manifests/deploy-spinnaker.yaml",
"type": "github/file",
"uuid": null,
"version": "master"
},
"id": "05ad020e-73a6-49f2-9988-2073831219e9",
"matchArtifact": {
"artifactAccount": "myUserName",
"customKind": true,
"location": null,
"metadata": {
"id": "f7a9b229-0a23-42ab-82de-9990d77084df"
},
"name": "manifests/deploy-spinnaker.yaml",
"provenance": null,
"reference": null,
"type": "github/file",
"uuid": null,
"version": null
},
"useDefaultArtifact": true,
"usePriorArtifact": false
}
],
"type": "manual",
"user": "myUserName"
},
"type": "PIPELINE"
},
"stage": {
"context": {
"allowDeleteActive": false,
"cloudProvider": "aws",
"cloudProviderType": "aws",
"cluster": "TEST",
"credentials": "staging",
"interestingHealthProviderNames": [
"Amazon"
],
"regions": [
"us-east-2"
],
"retainLargerOverNewer": "false",
"shrinkToSize": 1
},
"endTime": null,
"id": "01F5KC59VX9V47GNGF65Z1TSG3",
"lastModified": null,
"name": "Shrink Cluster",
"outputs": {},
"parentStageId": null,
"refId": "38",
"requisiteStageRefIds": [],
"scheduledTime": null,
"startTime": 1620926704032,
"startTimeExpiry": null,
"status": "RUNNING",
"syntheticStageOwner": null,
"tasks": [
{
"endTime": 1620926706404,
"id": "1",
"implementingClass": "com.netflix.spinnaker.orca.clouddriver.tasks.DetermineHealthProvidersTask",
"loopEnd": false,
"loopStart": false,
"name": "determineHealthProviders",
"stageEnd": false,
"stageStart": true,
"startTime": 1620926704384,
"status": "SUCCEEDED"
},
{
"endTime": null,
"id": "2",
"implementingClass": "com.netflix.spinnaker.orca.clouddriver.tasks.cluster.ShrinkClusterTask",
"loopEnd": false,
"loopStart": false,
"name": "shrinkCluster",
"stageEnd": false,
"stageStart": false,
"startTime": 1620926706682,
"status": "RUNNING"
},
{
"endTime": null,
"id": "3",
"implementingClass": "com.netflix.spinnaker.orca.clouddriver.tasks.MonitorKatoTask",
"loopEnd": false,
"loopStart": false,
"name": "monitorShrinkCluster",
"stageEnd": false,
"stageStart": false,
"startTime": null,
"status": "NOT_STARTED"
},
{
"endTime": null,
"id": "4",
"implementingClass": "com.netflix.spinnaker.orca.clouddriver.tasks.servergroup.ServerGroupCacheForceRefreshTask",
"loopEnd": false,
"loopStart": false,
"name": "forceCacheRefresh",
"stageEnd": false,
"stageStart": false,
"startTime": null,
"status": "NOT_STARTED"
},
{
"endTime": null,
"id": "5",
"implementingClass": "com.netflix.spinnaker.orca.clouddriver.tasks.cluster.WaitForClusterShrinkTask",
"loopEnd": false,
"loopStart": false,
"name": "waitForClusterShrink",
"stageEnd": false,
"stageStart": false,
"startTime": null,
"status": "NOT_STARTED"
},
{
"endTime": null,
"id": "6",
"implementingClass": "com.netflix.spinnaker.orca.clouddriver.tasks.servergroup.ServerGroupCacheForceRefreshTask",
"loopEnd": false,
"loopStart": false,
"name": "forceCacheRefresh",
"stageEnd": true,
"stageStart": false,
"startTime": null,
"status": "NOT_STARTED"
}
],
"type": "shrinkCluster"
},
"user": {
"isAdmin": false,
"roles": [],
"username": "myUserName"
}
}
}
Keys
Parameters related to the stage against which the policy is executing can be found in the input.stage.context object.
input.pipeline
Key | Type | Description |
---|---|---|
input.pipeline.application | string | The name of the Spinnaker application to which this pipeline belongs. |
input.pipeline.authentication.allowedAccounts[] | string | The list of accounts to which the user this stage runs as has access. |
input.pipeline.authentication.user | string | The Spinnaker user initiating the change. |
input.pipeline.buildTime | number | |
input.pipeline.canceledBy | ||
input.pipeline.canceled | boolean | |
input.pipeline.cancellationReason | ||
input.pipeline.description | string | Description of the pipeline defined in the UI. |
input.pipeline.endTime | number | |
input.pipeline.id | string | The unique ID of the pipeline. |
input.pipeline.keepWaitingPipelines | boolean | If false and concurrent pipeline execution is disabled, then the pipelines in the waiting queue gets canceled when the next execution starts. |
input.pipeline.limitConcurrent | boolean | True if only 1 concurrent execution of this pipeline is allowed. |
input.pipeline.name | string | The name of this pipeline. |
input.pipeline.origin | string | |
input.pipeline.partition | ||
input.pipeline.paused | ||
input.pipeline.pipelineConfigId | string | |
input.pipeline.source | ||
input.pipeline.spelEvaluator | string | Which version of spring expression language is being used to evaluate SpEL. |
input.pipeline.stages[] | [array] | An array of the stages in the pipeline. Typically if you are writing a policy that examines multiple pipeline stages, it is better to write that policy against either the opa.pipelines package , or the spinnaker.execution.pipelines.before package. |
input.pipeline.startTimeExpiry | date | Unix epoch date at which the pipeline expires. |
input.pipeline.startTime | number | Timestamp from when the pipeline was started. |
input.pipeline.status | string | |
input.pipeline.templateVariables | ||
input.pipeline.type | string |
input.pipeline.trigger
See input.pipeline.trigger for more information.
input.stage
See input.stage
for more information.
input.stage.context
Key | Type | Description |
---|---|---|
input.stage.context.allowDeleteActive | boolean | Allow deletion of active server groups |
input.stage.context.cloudProviderType | string | The type of the cloud provider that executes the stage. |
input.stage.context.cloudProvider | string | The name of the cloud provider that executes the stage. |
input.stage.context.cluster | string | The cluster to look at when selecting the image to use in this pipeline. |
input.stage.context.credentials | string | The account/credential set that’s used to execute this stage. |
input.stage.context.interestingHealthProviderNames[] | string | |
input.stage.context.regions[] | string | Which regions the cluster is in. |
input.stage.context.retainLargerOverNewer | string | True or false, Will spinnaker attempt to keep the newest instance, or the largest. |
input.stage.context.shrinkToSize | number | The desired number of server groups after shrinking. |
input.user
This object provides information about the user performing the action. This can be used to restrict actions by role. See input.user for more information.
Feedback
Was this page helpful?
Thank you for letting us know!
Sorry to hear that. Please tell us how we can improve.
Last modified March 3, 2023: (2d069084)