Skip to content

Commit 6382720

Browse files
Karthik-K-Nk8s-infra-cherrypick-robot
authored andcommitted
Add scale from 0 support for CAPD
1 parent efed92c commit 6382720

16 files changed

+234
-23
lines changed

test/e2e/autoscaler_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ var _ = Describe("When using the autoscaler with Cluster API using ClusterClass
3636
InfrastructureMachinePoolTemplateKind: "dockermachinepooltemplates",
3737
InfrastructureMachinePoolKind: "dockermachinepools",
3838
Flavor: ptr.To("topology-autoscaler"),
39-
AutoscalerVersion: "v1.33.0",
39+
AutoscalerVersion: "v1.32.1",
40+
ScaleToAndFromZero: true,
4041
}
4142
})
4243
})

test/infrastructure/container/docker.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ func NewDockerClient() (Runtime, error) {
6464
if err != nil {
6565
return nil, errors.Wrapf(err, "failed to created docker runtime client")
6666
}
67+
6768
return &dockerRuntime{
6869
dockerClient: dockerClient,
6970
}, nil
@@ -544,6 +545,11 @@ func (d *dockerRuntime) RunContainer(ctx context.Context, runConfig *RunContaine
544545
return nil
545546
}
546547

548+
// GetSystemInfo will return the docker system info.
549+
func (d *dockerRuntime) GetSystemInfo(ctx context.Context) (dockersystem.Info, error) {
550+
return d.dockerClient.Info(ctx)
551+
}
552+
547553
// needsDevMapper checks whether we need to mount /dev/mapper.
548554
// This is required when the docker storage driver is Btrfs or ZFS.
549555
// https://github.com/kubernetes-sigs/kind/pull/1464

test/infrastructure/container/fake.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ package container
1919
import (
2020
"context"
2121
"io"
22+
23+
dockersystem "github.com/docker/docker/api/types/system"
2224
)
2325

2426
var runContainerCallLog []RunContainerArgs
@@ -170,3 +172,8 @@ func (f *FakeRuntime) RunContainerCalls() []RunContainerArgs {
170172
func (f *FakeRuntime) ResetRunContainerCallLogs() {
171173
runContainerCallLog = []RunContainerArgs{}
172174
}
175+
176+
// GetSystemInfo returns empty docker system info.
177+
func (f *FakeRuntime) GetSystemInfo(_ context.Context) (dockersystem.Info, error) {
178+
return dockersystem.Info{}, nil
179+
}

test/infrastructure/container/interface.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"net"
2424

2525
dockercontainer "github.com/docker/docker/api/types/container"
26+
dockersystem "github.com/docker/docker/api/types/system"
2627
"github.com/pkg/errors"
2728

2829
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
@@ -46,6 +47,7 @@ type Runtime interface {
4647
ContainerDebugInfo(ctx context.Context, containerName string, w io.Writer) error
4748
DeleteContainer(ctx context.Context, containerName string) error
4849
KillContainer(ctx context.Context, containerName, signal string) error
50+
GetSystemInfo(ctx context.Context) (dockersystem.Info, error)
4951
}
5052

5153
// Mount contains mount details.

test/infrastructure/docker/api/v1alpha3/conversion.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,3 +350,7 @@ func Convert_v1alpha3_DockerClusterSpec_To_v1beta2_DockerClusterSpec(in *DockerC
350350

351351
return nil
352352
}
353+
354+
func Convert_v1beta2_DockerMachineTemplate_To_v1alpha3_DockerMachineTemplate(in *infrav1.DockerMachineTemplate, out *DockerMachineTemplate, s apiconversion.Scope) error {
355+
return autoConvert_v1beta2_DockerMachineTemplate_To_v1alpha3_DockerMachineTemplate(in, out, s)
356+
}

test/infrastructure/docker/api/v1alpha3/zz_generated.conversion.go

Lines changed: 6 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/infrastructure/docker/api/v1alpha4/zz_generated.conversion.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/infrastructure/docker/api/v1beta1/conversion.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,3 +620,7 @@ func Convert_v1beta1_DockerClusterBackendSpec_To_v1beta2_DockerClusterBackendSpe
620620

621621
return nil
622622
}
623+
624+
func Convert_v1beta2_DockerMachineTemplate_To_v1beta1_DockerMachineTemplate(in *infrav1.DockerMachineTemplate, out *DockerMachineTemplate, s apiconversion.Scope) error {
625+
return autoConvert_v1beta2_DockerMachineTemplate_To_v1beta1_DockerMachineTemplate(in, out, s)
626+
}

test/infrastructure/docker/api/v1beta1/zz_generated.conversion.go

Lines changed: 6 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/infrastructure/docker/api/v1beta2/dockermachinetemplate_types.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package v1beta2
1818

1919
import (
20+
corev1 "k8s.io/api/core/v1"
2021
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2122

2223
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
@@ -27,7 +28,13 @@ type DockerMachineTemplateSpec struct {
2728
Template DockerMachineTemplateResource `json:"template"`
2829
}
2930

31+
// DockerMachineTemplateStatus defines the observed state of a DockerMachineTemplate.
32+
type DockerMachineTemplateStatus struct {
33+
Capacity corev1.ResourceList `json:"capacity,omitempty"`
34+
}
35+
3036
// +kubebuilder:object:root=true
37+
// +kubebuilder:subresource:status
3138
// +kubebuilder:resource:path=dockermachinetemplates,scope=Namespaced,categories=cluster-api
3239
// +kubebuilder:storageversion
3340
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Time duration since creation of DockerMachineTemplate"
@@ -37,7 +44,8 @@ type DockerMachineTemplate struct {
3744
metav1.TypeMeta `json:",inline"`
3845
metav1.ObjectMeta `json:"metadata,omitempty"`
3946

40-
Spec DockerMachineTemplateSpec `json:"spec,omitempty"`
47+
Spec DockerMachineTemplateSpec `json:"spec,omitempty"`
48+
Status DockerMachineTemplateStatus `json:"status,omitempty"`
4149
}
4250

4351
// +kubebuilder:object:root=true

0 commit comments

Comments
 (0)