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: make docker machine bootstrap timeout configurable #9952

Merged
Show file tree
Hide file tree
Changes from all commits
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
31 changes: 29 additions & 2 deletions test/infrastructure/docker/api/v1alpha4/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,35 @@ func (dst *DockerClusterTemplateList) ConvertFrom(srcRaw conversion.Hub) error {
func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*infrav1.DockerMachine)

return Convert_v1alpha4_DockerMachine_To_v1beta1_DockerMachine(src, dst, nil)
if err := Convert_v1alpha4_DockerMachine_To_v1beta1_DockerMachine(src, dst, nil); err != nil {
return err
}

// Manually restore data.
restored := &infrav1.DockerMachine{}
if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
return err
}

if restored.Spec.BootstrapTimeout != nil {
dst.Spec.BootstrapTimeout = restored.Spec.BootstrapTimeout
}

return nil
}

func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error {
src := srcRaw.(*infrav1.DockerMachine)

return Convert_v1beta1_DockerMachine_To_v1alpha4_DockerMachine(src, dst, nil)
if err := Convert_v1beta1_DockerMachine_To_v1alpha4_DockerMachine(src, dst, nil); err != nil {
return err
}

if err := utilconversion.MarshalData(src, dst); err != nil {
return err
}

return nil
}

func (src *DockerMachineList) ConvertTo(dstRaw conversion.Hub) error {
Expand Down Expand Up @@ -157,6 +179,7 @@ func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
}

dst.Spec.Template.ObjectMeta = restored.Spec.Template.ObjectMeta
dst.Spec.Template.Spec.BootstrapTimeout = restored.Spec.Template.Spec.BootstrapTimeout

return nil
}
Expand Down Expand Up @@ -201,3 +224,7 @@ func Convert_v1beta1_DockerMachineTemplateResource_To_v1alpha4_DockerMachineTemp
func Convert_v1beta1_DockerLoadBalancer_To_v1alpha4_DockerLoadBalancer(in *infrav1.DockerLoadBalancer, out *DockerLoadBalancer, s apiconversion.Scope) error {
return autoConvert_v1beta1_DockerLoadBalancer_To_v1alpha4_DockerLoadBalancer(in, out, s)
}

func Convert_v1beta1_DockerMachineSpec_To_v1alpha4_DockerMachineSpec(in *infrav1.DockerMachineSpec, out *DockerMachineSpec, s apiconversion.Scope) error {
return autoConvert_v1beta1_DockerMachineSpec_To_v1alpha4_DockerMachineSpec(in, out, s)
}
16 changes: 6 additions & 10 deletions test/infrastructure/docker/api/v1alpha4/zz_generated.conversion.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions test/infrastructure/docker/api/v1beta1/dockermachine_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ type DockerMachineSpec struct {
// When removing also remove from staticcheck exclude-rules for SA1019 in golangci.yml.
// +optional
Bootstrapped bool `json:"bootstrapped,omitempty"`

// BootstrapTimeout is the total amount of time to wait for the machine to bootstrap before timing out.
// The default value is 3m.
// +optional
BootstrapTimeout *metav1.Duration `json:"bootstrapTimeout,omitempty"`
}

// Mount specifies a host volume to mount into a container.
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"github.com/pkg/errors"
corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/klog/v2"
ctrl "sigs.k8s.io/controller-runtime"
Expand Down Expand Up @@ -342,7 +343,13 @@ func (r *DockerMachineReconciler) reconcileNormal(ctx context.Context, cluster *

// if the machine isn't bootstrapped, only then run bootstrap scripts
if !dockerMachine.Spec.Bootstrapped {
timeoutCtx, cancel := context.WithTimeout(ctx, 3*time.Minute)
var bootstrapTimeout metav1.Duration
if dockerMachine.Spec.BootstrapTimeout != nil {
bootstrapTimeout = *dockerMachine.Spec.BootstrapTimeout
} else {
bootstrapTimeout = metav1.Duration{Duration: 3 * time.Minute}
}
timeoutCtx, cancel := context.WithTimeout(ctx, bootstrapTimeout.Duration)
defer cancel()

// Check for bootstrap success
Expand Down
Loading