Skip to content

Instantly share code, notes, and snippets.

@ncdc
Created January 2, 2020 21:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ncdc/8bb821b34c58a5a5bb7c4411bf44e10e to your computer and use it in GitHub Desktop.
Save ncdc/8bb821b34c58a5a5bb7c4411bf44e10e to your computer and use it in GitHub Desktop.
diff --git a/controlplane/kubeadm/controllers/kubeadm_control_plane_controller.go b/controlplane/kubeadm/controllers/kubeadm_control_plane_controller.go
index 8961c49e9..186eb87b7 100644
--- a/controlplane/kubeadm/controllers/kubeadm_control_plane_controller.go
+++ b/controlplane/kubeadm/controllers/kubeadm_control_plane_controller.go
@@ -29,6 +29,7 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/types"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
+ "k8s.io/apiserver/pkg/storage/names"
"k8s.io/client-go/tools/record"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -57,10 +58,6 @@ type KubeadmConfigGenerator interface {
GenerateKubeadmConfig(ctx context.Context, c client.Client, namespace, namePrefix, clusterName string, spec *bootstrapv1.KubeadmConfigSpec, owner *metav1.OwnerReference) (*corev1.ObjectReference, error)
}
-type MachineGenerator interface {
- GenerateMachine(ctx context.Context, c client.Client, namespace, namePrefix, clusterName, version string, infraRef, bootstrapRef *corev1.ObjectReference, labels map[string]string, owner *metav1.OwnerReference) error
-}
-
// +kubebuilder:rbac:groups=core,resources=events,verbs=get;list;watch;create;patch
// +kubebuilder:rbac:groups=core,resources=secrets,verbs=get;list;watch;create;patch
// +kubebuilder:rbac:groups=controlplane.cluster.x-k8s.io,resources=kubeadmcontrolplanes;kubeadmcontrolplanes/status,verbs=get;list;watch;create;update;patch;delete
@@ -72,7 +69,6 @@ type KubeadmControlPlaneReconciler struct {
TemplateCloner TemplateCloner
KubeadmConfigGenerator KubeadmConfigGenerator
- MachineGenerator MachineGenerator
controller controller.Controller
recorder record.EventRecorder
@@ -337,9 +333,8 @@ func (r *KubeadmControlPlaneReconciler) cloneConfigsAndGenerateMachine(ctx conte
// Only proceed to generating the Machine if we haven't encountered an error
if len(errs) == 0 {
- err := r.MachineGenerator.GenerateMachine(
+ err := r.generateMachine(
ctx,
- r.Client,
kcp.Namespace,
kcp.Name,
cluster.Name,
@@ -366,6 +361,35 @@ func (r *KubeadmControlPlaneReconciler) cloneConfigsAndGenerateMachine(ctx conte
return nil
}
+func (r *KubeadmControlPlaneReconciler) generateMachine(ctx context.Context, namespace, namePrefix, clusterName, version string, infraRef, bootstrapRef *corev1.ObjectReference, labels map[string]string, owner *metav1.OwnerReference) error {
+ machine := &clusterv1.Machine{
+ ObjectMeta: metav1.ObjectMeta{
+ // GenerateName: fmt.Sprintf("%s-", namePrefix),
+ Labels: labels,
+ Namespace: namespace,
+ Name: names.SimpleNameGenerator.GenerateName(namePrefix + "-"),
+ },
+ Spec: clusterv1.MachineSpec{
+ ClusterName: clusterName,
+ Version: &version,
+ InfrastructureRef: *infraRef,
+ Bootstrap: clusterv1.Bootstrap{
+ ConfigRef: bootstrapRef,
+ },
+ },
+ }
+
+ if owner != nil {
+ machine.SetOwnerReferences([]metav1.OwnerReference{*owner})
+ }
+
+ if err := r.Client.Create(ctx, machine); err != nil {
+ return errors.Wrap(err, "Failed to create machine")
+ }
+
+ return nil
+}
+
func (r *KubeadmControlPlaneReconciler) cleanupFromGeneration(ctx context.Context, infraRef, bootstrapRef *corev1.ObjectReference) error {
var errs []error
diff --git a/controlplane/kubeadm/controllers/kubeadm_control_plane_controller_test.go b/controlplane/kubeadm/controllers/kubeadm_control_plane_controller_test.go
index c8c7f36dd..37159b1d7 100644
--- a/controlplane/kubeadm/controllers/kubeadm_control_plane_controller_test.go
+++ b/controlplane/kubeadm/controllers/kubeadm_control_plane_controller_test.go
@@ -18,7 +18,6 @@ package controllers
import (
"context"
- "fmt"
"testing"
"github.com/onsi/gomega"
@@ -39,7 +38,6 @@ import (
bootstrapv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1alpha3"
kubeadmv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/types/v1beta1"
controlplanev1 "sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1alpha3"
- "sigs.k8s.io/cluster-api/util"
"sigs.k8s.io/cluster-api/util/kubeconfig"
"sigs.k8s.io/cluster-api/util/secret"
)
@@ -75,33 +73,6 @@ func (kcg *kubeadmConfigGenerator) GenerateKubeadmConfig(_ context.Context, _ cl
return result, nil
}
-type machineGenerator struct{}
-
-func (mg *machineGenerator) GenerateMachine(ctx context.Context, c client.Client, namespace, namePrefix, _, _ string, infraRef, bootstrapRef *corev1.ObjectReference, _ map[string]string, _ *metav1.OwnerReference) error {
- name := fmt.Sprintf("%s-%s", namePrefix, util.RandomString(6))
- machine := &clusterv1.Machine{
- TypeMeta: metav1.TypeMeta{
- APIVersion: clusterv1.GroupVersion.Version,
- Kind: "Machine",
- },
- ObjectMeta: metav1.ObjectMeta{
- Name: name,
- Namespace: namespace,
- },
- Spec: clusterv1.MachineSpec{
- InfrastructureRef: *infraRef,
- Bootstrap: clusterv1.Bootstrap{
- ConfigRef: bootstrapRef,
- },
- },
- }
-
- if err := c.Create(ctx, machine); err != nil {
- return err
- }
- return nil
-}
-
func TestClusterToKubeadmControlPlane(t *testing.T) {
g := gomega.NewWithT(t)
g.Expect(clusterv1.AddToScheme(scheme.Scheme)).To(gomega.Succeed())
@@ -391,7 +362,6 @@ func TestReconcileNoClusterOwnerRef(t *testing.T) {
Log: log.Log,
TemplateCloner: &templateCloner{},
KubeadmConfigGenerator: &kubeadmConfigGenerator{},
- MachineGenerator: &machineGenerator{},
}
result := r.reconcile(context.Background(), kcp, r.Log)
@@ -435,7 +405,6 @@ func TestReconcileNoCluster(t *testing.T) {
Log: log.Log,
TemplateCloner: &templateCloner{},
KubeadmConfigGenerator: &kubeadmConfigGenerator{},
- MachineGenerator: &machineGenerator{},
}
result := r.reconcile(context.Background(), kcp, r.Log)
@@ -486,7 +455,6 @@ func TestReconcileClusterNoEndpoints(t *testing.T) {
Log: log.Log,
TemplateCloner: &templateCloner{},
KubeadmConfigGenerator: &kubeadmConfigGenerator{},
- MachineGenerator: &machineGenerator{},
}
result := r.reconcile(context.Background(), kcp, r.Log)
@@ -548,7 +516,6 @@ func TestReconcileInitializeControlPlane(t *testing.T) {
Log: log.Log,
TemplateCloner: &templateCloner{},
KubeadmConfigGenerator: &kubeadmConfigGenerator{},
- MachineGenerator: &machineGenerator{},
}
result := r.reconcile(context.Background(), kcp, r.Log)
@@ -649,7 +616,7 @@ func TestReconcileControlPlaneScaleUp(t *testing.T) {
Log: log.Log,
TemplateCloner: &templateCloner{},
KubeadmConfigGenerator: &kubeadmConfigGenerator{},
- MachineGenerator: &machineGenerator{},
+ recorder: record.NewFakeRecorder(32),
}
result := r.reconcile(context.Background(), kcp, r.Log)
@@ -701,7 +668,6 @@ func TestScaleUpControlPlaneAddsANewMachine(t *testing.T) {
Log: log.Log,
TemplateCloner: &templateCloner{},
KubeadmConfigGenerator: &kubeadmConfigGenerator{},
- MachineGenerator: &machineGenerator{},
recorder: record.NewFakeRecorder(32),
}
@@ -756,7 +722,6 @@ func TestKubeadmControlPlaneReconciler_initializeControlPlane(t *testing.T) {
Log: log.Log,
TemplateCloner: &templateCloner{},
KubeadmConfigGenerator: &kubeadmConfigGenerator{},
- MachineGenerator: &machineGenerator{},
}
g.Expect(r.initializeControlPlane(context.Background(), cluster, kcp)).To(gomega.Succeed())
@@ -803,7 +768,6 @@ func TestCloneConfigsAndGenerateMachine(t *testing.T) {
Log: log.Log,
TemplateCloner: &templateCloner{},
KubeadmConfigGenerator: &kubeadmConfigGenerator{},
- MachineGenerator: &machineGenerator{},
recorder: record.NewFakeRecorder(32),
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment