Skip to content

Commit 0b7a3e2

Browse files
Bobbins228openshift-ci[bot]
authored andcommitted
Review changes, removed useMachineSets and added reuse to config
1 parent 13cee6a commit 0b7a3e2

File tree

4 files changed

+115
-100
lines changed

4 files changed

+115
-100
lines changed

controllers/appwrapper_controller.go

Lines changed: 46 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,16 @@ type AppWrapperReconciler struct {
4747
}
4848

4949
var (
50-
reuse = true
50+
deletionMessage string
5151
ocmClusterID string
5252
ocmToken string
53-
useMachineSets bool
5453
maxScaleNodesAllowed int
5554
)
5655

5756
const (
58-
namespaceToList = "openshift-machine-api"
59-
minResyncPeriod = 10 * time.Minute
60-
pullSecretKey = ".dockerconfigjson"
61-
pullSecretAuthKey = "cloud.openshift.com"
62-
finalizerName = "instascale.codeflare.dev/finalizer"
57+
namespaceToList = "openshift-machine-api"
58+
minResyncPeriod = 10 * time.Minute
59+
finalizerName = "instascale.codeflare.dev/finalizer"
6360
)
6461

6562
// +kubebuilder:rbac:groups=workload.codeflare.dev,resources=appwrappers,verbs=get;list;watch;create;update;patch;delete
@@ -88,8 +85,10 @@ func (r *AppWrapperReconciler) Reconcile(ctx context.Context, req ctrl.Request)
8885
// todo: Move the getOCMClusterID call out of reconcile loop.
8986
// Only reason we are calling it here is that the client is not able to make
9087
// calls until it is started, so SetupWithManager is not working.
91-
if !useMachineSets && ocmClusterID == "" {
92-
r.getOCMClusterID(ctx)
88+
if ocmSecretRef := r.Config.OCMSecretRef; ocmSecretRef != nil && ocmClusterID == "" {
89+
if err := r.getOCMClusterID(ctx); err != nil {
90+
return ctrl.Result{}, err
91+
}
9392
}
9493
var appwrapper arbv1.AppWrapper
9594

@@ -98,19 +97,20 @@ func (r *AppWrapperReconciler) Reconcile(ctx context.Context, req ctrl.Request)
9897
// ignore not-found errors, since we can get them on delete requests.
9998
return ctrl.Result{}, nil
10099
}
101-
klog.Error(err, "unable to fetch appwrapper")
100+
// Error reading the object - requeue the request.
101+
return ctrl.Result{}, err
102102
}
103103

104104
// Adds finalizer to the appwrapper if it doesn't exist
105-
if !controllerutil.ContainsFinalizer(&appwrapper, finalizerName) && appwrapper.Status.State != "Completed" {
105+
if !controllerutil.ContainsFinalizer(&appwrapper, finalizerName) {
106106
controllerutil.AddFinalizer(&appwrapper, finalizerName)
107107
if err := r.Update(ctx, &appwrapper); err != nil {
108108
return ctrl.Result{}, err
109109
}
110110
return ctrl.Result{}, nil
111111
}
112112

113-
if !appwrapper.ObjectMeta.DeletionTimestamp.IsZero() || appwrapper.Status.State == "Completed" {
113+
if !appwrapper.ObjectMeta.DeletionTimestamp.IsZero() || appwrapper.Status.State == arbv1.AppWrapperStateCompleted {
114114
if err := r.finalizeScalingDownMachines(ctx, &appwrapper); err != nil {
115115
return ctrl.Result{}, err
116116
}
@@ -123,38 +123,48 @@ func (r *AppWrapperReconciler) Reconcile(ctx context.Context, req ctrl.Request)
123123

124124
demandPerInstanceType := r.discoverInstanceTypes(&appwrapper)
125125
//for userRequestedInstanceType := range demandPerInstanceType {
126-
if useMachineSets {
127-
if reuse {
128-
res, err := r.reconcileReuseMachineSet(ctx, &appwrapper, demandPerInstanceType)
129-
return res, err
126+
if ocmSecretRef := r.Config.OCMSecretRef; ocmSecretRef != nil {
127+
return r.scaleMachinePool(ctx, &appwrapper, demandPerInstanceType)
128+
} else {
129+
if r.Config.Reuse {
130+
return r.reconcileReuseMachineSet(ctx, &appwrapper, demandPerInstanceType)
130131
} else {
131-
res, err := r.reconcileCreateMachineSet(ctx, &appwrapper, demandPerInstanceType)
132-
return res, err
132+
return r.reconcileCreateMachineSet(ctx, &appwrapper, demandPerInstanceType)
133133
}
134-
} else {
135-
res, err := r.scaleMachinePool(ctx, &appwrapper, demandPerInstanceType)
136-
return res, err
137134
}
138135
}
139136

140137
func (r *AppWrapperReconciler) finalizeScalingDownMachines(ctx context.Context, appwrapper *arbv1.AppWrapper) error {
141-
if useMachineSets {
142-
if reuse {
138+
if appwrapper.Status.State == "Completed" {
139+
deletionMessage = "completed"
140+
} else {
141+
deletionMessage = "deleted"
142+
}
143+
if ocmSecretRef := r.Config.OCMSecretRef; ocmSecretRef != nil {
144+
klog.Infof("Appwrapper %s scale-down machine pool: %s ", deletionMessage, appwrapper.Name)
145+
if _, err := r.deleteMachinePool(ctx, appwrapper); err != nil {
146+
return err
147+
}
148+
} else {
149+
if r.Config.Reuse {
143150
matchedAw := r.findExactMatch(ctx, appwrapper)
144151
if matchedAw != nil {
145-
klog.Infof("Appwrapper %s deleted, swapping machines to %s", appwrapper.Name, matchedAw.Name)
146-
r.swapNodeLabels(ctx, appwrapper, matchedAw)
152+
klog.Infof("Appwrapper %s %s, swapping machines to %s", appwrapper.Name, deletionMessage, matchedAw.Name)
153+
if err := r.swapNodeLabels(ctx, appwrapper, matchedAw); err != nil {
154+
return err
155+
}
147156
} else {
148-
klog.Infof("Appwrapper %s deleted, scaling down machines", appwrapper.Name)
149-
150-
r.annotateToDeleteMachine(ctx, appwrapper)
157+
klog.Infof("Appwrapper %s %s, scaling down machines", appwrapper.Name, deletionMessage)
158+
if err := r.annotateToDeleteMachine(ctx, appwrapper); err != nil {
159+
return err
160+
}
151161
}
152162
} else {
153-
klog.Infof("Appwrapper deleted scale-down machineset: %s ", appwrapper.Name)
154-
r.deleteMachineSet(ctx, appwrapper)
163+
klog.Infof("Appwrapper %s scale-down machineset: %s ", deletionMessage, appwrapper.Name)
164+
if err := r.deleteMachineSet(ctx, appwrapper); err != nil {
165+
return err
166+
}
155167
}
156-
} else {
157-
r.deleteMachinePool(ctx, appwrapper)
158168
}
159169
return nil
160170
}
@@ -172,9 +182,8 @@ func (r *AppWrapperReconciler) SetupWithManager(mgr ctrl.Manager) error {
172182

173183
maxScaleNodesAllowed = int(r.Config.MaxScaleoutAllowed)
174184

175-
useMachineSets = true
176185
if ocmSecretRef := r.Config.OCMSecretRef; ocmSecretRef != nil {
177-
if ocmSecret, err := r.getOCMSecret(ocmSecretRef); err != nil {
186+
if ocmSecret, err := r.getOCMSecret(context.Background(), ocmSecretRef); err != nil {
178187
return fmt.Errorf("error reading OCM Secret from ref %q: %w", ocmSecretRef, err)
179188
} else if token := ocmSecret.Data["token"]; len(token) > 0 {
180189
ocmToken = string(token)
@@ -184,7 +193,6 @@ func (r *AppWrapperReconciler) SetupWithManager(mgr ctrl.Manager) error {
184193
if ok, err := machinePoolExists(); err != nil {
185194
return err
186195
} else if ok {
187-
useMachineSets = false
188196
klog.Info("Using machine pools for cluster auto-scaling")
189197
}
190198
}
@@ -194,21 +202,8 @@ func (r *AppWrapperReconciler) SetupWithManager(mgr ctrl.Manager) error {
194202
Complete(r)
195203
}
196204

197-
func (r *AppWrapperReconciler) getOCMSecret(secretRef *corev1.SecretReference) (*corev1.Secret, error) {
198-
return r.kubeClient.CoreV1().Secrets(secretRef.Namespace).Get(context.Background(), secretRef.Name, metav1.GetOptions{})
199-
}
200-
201-
func (r *AppWrapperReconciler) ocmSecretExists(namespace string) bool {
202-
instascaleOCMSecret, err := r.kubeClient.CoreV1().Secrets(namespace).Get(context.Background(), "instascale-ocm-secret", metav1.GetOptions{})
203-
if err != nil {
204-
klog.Errorf("Error getting instascale-ocm-secret from namespace %v: %v", namespace, err)
205-
klog.Infof("If you are looking to use OCM, ensure that the 'instascale-ocm-secret' secret is available on the cluster within namespace %v", namespace)
206-
klog.Infof("Setting useMachineSets to %v.", useMachineSets)
207-
return false
208-
}
209-
210-
ocmToken = string(instascaleOCMSecret.Data["token"])
211-
return true
205+
func (r *AppWrapperReconciler) getOCMSecret(ctx context.Context, secretRef *corev1.SecretReference) (*corev1.Secret, error) {
206+
return r.kubeClient.CoreV1().Secrets(secretRef.Namespace).Get(ctx, secretRef.Name, metav1.GetOptions{})
212207
}
213208

214209
func (r *AppWrapperReconciler) discoverInstanceTypes(aw *arbv1.AppWrapper) map[string]int {
@@ -237,10 +232,6 @@ func (r *AppWrapperReconciler) discoverInstanceTypes(aw *arbv1.AppWrapper) map[s
237232
return demandMapPerInstanceType
238233
}
239234

240-
func canScaleMachinepool(demandPerInstanceType map[string]int) bool {
241-
return true
242-
}
243-
244235
func (r *AppWrapperReconciler) findExactMatch(ctx context.Context, aw *arbv1.AppWrapper) *arbv1.AppWrapper {
245236
var match *arbv1.AppWrapper = nil
246237
appwrappers := arbv1.AppWrapperList{}
@@ -261,7 +252,7 @@ func (r *AppWrapperReconciler) findExactMatch(ctx context.Context, aw *arbv1.App
261252
var existingAcquiredMachineTypes = ""
262253

263254
for _, eachAw := range appwrappers.Items {
264-
if eachAw.Status.State != "Pending" {
255+
if eachAw.Status.State != arbv1.AppWrapperStateEnqueued {
265256
continue
266257
}
267258
match = &eachAw
@@ -270,11 +261,3 @@ func (r *AppWrapperReconciler) findExactMatch(ctx context.Context, aw *arbv1.App
270261
return match
271262

272263
}
273-
274-
func (r *AppWrapperReconciler) scaleDown(ctx context.Context, aw *arbv1.AppWrapper) {
275-
if reuse {
276-
r.annotateToDeleteMachine(ctx, aw)
277-
} else {
278-
r.deleteMachineSet(ctx, aw)
279-
}
280-
}

controllers/machinepools.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,9 @@ func createOCMConnection() (*ocmsdk.Connection, error) {
3636
}
3737

3838
func hasAwLabel(machinePool *cmv1.MachinePool, aw *arbv1.AppWrapper) bool {
39-
labels := machinePool.Labels()
40-
for key, value := range labels {
41-
if key == aw.Name && value == aw.Name {
42-
return true
43-
}
39+
value, ok := machinePool.Labels()[aw.Name]
40+
if ok && value == aw.Name {
41+
return true
4442
}
4543
return false
4644
}

0 commit comments

Comments
 (0)