diff --git a/aci/convert/convert.go b/aci/convert/convert.go index 5d39ad5d..f4479bd2 100644 --- a/aci/convert/convert.go +++ b/aci/convert/convert.go @@ -130,7 +130,7 @@ func ToContainerGroup(ctx context.Context, aciContext store.AciContext, p types. } func durationToSeconds(d *types.Duration) *int32 { - if d == nil { + if d == nil || *d == 0 { return nil } v := int32(time.Duration(*d).Seconds()) @@ -262,16 +262,19 @@ func (s serviceConfigAciHelper) getLivenessProbe() *containerinstance.ContainerP if s.HealthCheck.Retries != nil { retries = to.Int32Ptr(int32(*s.HealthCheck.Retries)) } - return &containerinstance.ContainerProbe{ + probe := containerinstance.ContainerProbe{ Exec: &containerinstance.ContainerExec{ Command: to.StringSlicePtr(testArray), }, InitialDelaySeconds: durationToSeconds(s.HealthCheck.StartPeriod), PeriodSeconds: durationToSeconds(s.HealthCheck.Interval), - FailureThreshold: retries, - SuccessThreshold: retries, TimeoutSeconds: durationToSeconds(s.HealthCheck.Timeout), } + if retries != nil && *retries > 0 { + probe.FailureThreshold = retries + probe.SuccessThreshold = retries + } + return &probe } return nil } diff --git a/aci/convert/convert_test.go b/aci/convert/convert_test.go index fb4a0671..8c74a774 100644 --- a/aci/convert/convert_test.go +++ b/aci/convert/convert_test.go @@ -195,6 +195,43 @@ func TestHealthcheckTranslation(t *testing.T) { assert.Assert(t, (*group.Containers)[0].LivenessProbe == nil) } +func TestHealthcheckTranslationZeroValues(t *testing.T) { + test := []string{ + "my", + "command", + "--option", + } + interval := types.Duration(0) + retries := uint64(0) + startPeriod := types.Duration(0) + timeout := types.Duration(0) + + project := types.Project{ + Services: []types.ServiceConfig{ + { + Name: "service1", + Image: "image1", + HealthCheck: &types.HealthCheckConfig{ + Test: test, + Timeout: &timeout, + Interval: &interval, + Retries: &retries, + StartPeriod: &startPeriod, + Disable: false, + }, + }, + }, + } + group, err := ToContainerGroup(context.TODO(), convertCtx, project, mockStorageHelper) + assert.NilError(t, err) + assert.DeepEqual(t, (*group.Containers)[0].LivenessProbe.Exec.Command, to.StringSlicePtr(test)) + assert.Assert(t, (*group.Containers)[0].LivenessProbe.PeriodSeconds == nil) + assert.Assert(t, (*group.Containers)[0].LivenessProbe.SuccessThreshold == nil) + assert.Assert(t, (*group.Containers)[0].LivenessProbe.FailureThreshold == nil) + assert.Assert(t, (*group.Containers)[0].LivenessProbe.InitialDelaySeconds == nil) + assert.Assert(t, (*group.Containers)[0].LivenessProbe.TimeoutSeconds == nil) +} + func TestContainerGroupToServiceStatus(t *testing.T) { myContainerGroup := containerinstance.ContainerGroup{ ContainerGroupProperties: &containerinstance.ContainerGroupProperties{