-
Notifications
You must be signed in to change notification settings - Fork 3
/
task_definitions_update.go
87 lines (69 loc) · 2.6 KB
/
task_definitions_update.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package cmd
import (
"strconv"
"strings"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/ecs"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
func taskDefinitionsUpdateRun(cmd *cobra.Command, args []string) {
tdDescription, err := ecsI.DescribeTaskDefinition(&ecs.DescribeTaskDefinitionInput{TaskDefinition: aws.String(args[0])})
t.Must(err)
td := tdDescription.TaskDefinition
var cdToUpdate *ecs.ContainerDefinition
// If no Container Definition's name is informed, it get the first one
if containerName == "" {
cdToUpdate = td.ContainerDefinitions[0]
} else {
for _, cd := range td.ContainerDefinitions {
if aws.StringValue(cd.Name) == containerName {
cdToUpdate = cd
break
}
}
}
if cdToUpdate == nil {
t.Exitf("No container on the Task Family %s\n", aws.StringValue(td.Family))
}
if tag != "" {
image = strings.Split(aws.StringValue(cdToUpdate.Image), ":")[0] + ":" + tag
}
cdToUpdate.Image = aws.String(image)
t.Must(ecsI.RegisterTaskDefinition(&ecs.RegisterTaskDefinitionInput{
ContainerDefinitions: td.ContainerDefinitions,
Cpu: td.Cpu,
ExecutionRoleArn: td.ExecutionRoleArn,
Family: td.Family,
IpcMode: td.IpcMode,
Memory: td.Memory,
NetworkMode: td.NetworkMode,
PidMode: td.PidMode,
PlacementConstraints: td.PlacementConstraints,
ProxyConfiguration: td.ProxyConfiguration,
RequiresCompatibilities: td.RequiresCompatibilities,
TaskRoleArn: td.TaskRoleArn,
Volumes: td.Volumes,
}))
oldFamilyRevision := aws.StringValue(td.Family) + ":" + strconv.FormatInt(aws.Int64Value(td.Revision), 10)
t.Must(ecsI.DeregisterTaskDefinition(&ecs.DeregisterTaskDefinitionInput{
TaskDefinition: aws.String(oldFamilyRevision),
}))
}
var taskDefinitionsUpdateCmd = &cobra.Command{
Use: "update [task-definition]",
Short: "Update a Task Definition",
Args: cobra.ExactArgs(1),
Run: taskDefinitionsUpdateRun,
PersistentPreRun: persistentPreRun,
}
func init() {
taskDefinitionsCmd.AddCommand(taskDefinitionsUpdateCmd)
flags := taskDefinitionsUpdateCmd.Flags()
flags.StringVar(&containerName, "container", "", containerNameSpec)
viper.BindPFlag("container", taskDefinitionsUpdateCmd.Flags().Lookup("container"))
flags.StringVarP(&tag, "tag", "t", "", tagSpec)
viper.BindPFlag("tag", taskDefinitionsUpdateCmd.Flags().Lookup("tag"))
flags.StringVarP(&image, "image", "i", "", imageSpec)
viper.BindPFlag("image", taskDefinitionsUpdateCmd.Flags().Lookup("image"))
}