From 1477e76f14bcfae5f4ba88b516b15f0e303c833c Mon Sep 17 00:00:00 2001 From: t-kikuc <tkikuchi07f@gmail.com> Date: Fri, 27 Sep 2024 12:57:56 +0900 Subject: [PATCH] fix: avoid panic when live taskdef does not exist Signed-off-by: t-kikuc <tkikuchi07f@gmail.com> --- pkg/app/piped/driftdetector/ecs/detector.go | 27 ++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/pkg/app/piped/driftdetector/ecs/detector.go b/pkg/app/piped/driftdetector/ecs/detector.go index 4ea1f4fa06..3852ae79de 100644 --- a/pkg/app/piped/driftdetector/ecs/detector.go +++ b/pkg/app/piped/driftdetector/ecs/detector.go @@ -252,15 +252,18 @@ func ignoreParameters(liveManifests provider.ECSManifests, headManifests provide liveService.TaskSets = nil liveTask := liveManifests.TaskDefinition - liveTask.RegisteredAt = nil - liveTask.RegisteredBy = nil - liveTask.RequiresAttributes = nil - liveTask.Revision = 0 // TODO: Find a way to compare the revision if possible. - liveTask.TaskDefinitionArn = nil - for i := range liveTask.ContainerDefinitions { - for j := range liveTask.ContainerDefinitions[i].PortMappings { - // We ignore diff of HostPort because it has several default values. See https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html#ECS-Type-ContainerDefinition-portMappings. - liveTask.ContainerDefinitions[i].PortMappings[j].HostPort = nil + // When liveTask does not exist, e.g. right after the service is created. + if liveTask != nil { + liveTask.RegisteredAt = nil + liveTask.RegisteredBy = nil + liveTask.RequiresAttributes = nil + liveTask.Revision = 0 // TODO: Find a way to compare the revision if possible. + liveTask.TaskDefinitionArn = nil + for i := range liveTask.ContainerDefinitions { + for j := range liveTask.ContainerDefinitions[i].PortMappings { + // We ignore diff of HostPort because it has several default values. See https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html#ECS-Type-ContainerDefinition-portMappings. + liveTask.ContainerDefinitions[i].PortMappings[j].HostPort = nil + } } } @@ -290,8 +293,10 @@ func ignoreParameters(liveManifests provider.ECSManifests, headManifests provide headService.Tags = nil headTask := headManifests.TaskDefinition - headTask.Status = types.TaskDefinitionStatusActive // If livestate's status is not ACTIVE, we should re-deploy a new task definition. - headTask.Compatibilities = liveTask.Compatibilities // Users can specify Compatibilities in a task definition file, but it is not used when registering a task definition. + headTask.Status = types.TaskDefinitionStatusActive // If livestate's status is not ACTIVE, we should re-deploy a new task definition. + if liveTask != nil { + headTask.Compatibilities = liveTask.Compatibilities // Users can specify Compatibilities in a task definition file, but it is not used when registering a task definition. + } for i := range headTask.ContainerDefinitions { cd := &headTask.ContainerDefinitions[i]