Skip to content

Commit 1157a47

Browse files
committed
Added support for resource requirements in GitOpsService
Signed-off-by: Anand Francis Joseph <[email protected]>
1 parent 2df7e8e commit 1157a47

File tree

4 files changed

+58
-0
lines changed

4 files changed

+58
-0
lines changed

api/v1alpha1/gitopsservice_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ type GitopsServiceSpec struct {
3232
Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
3333
// NodeSelector is a map of key value pairs used for node selection in the default workloads
3434
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
35+
36+
// Resources defines the Compute Resources required by the console-plugin and gitops-backend pods.
37+
Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
3538
}
3639

3740
// GitopsServiceStatus defines the observed state of GitopsService

controllers/consoleplugin.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,10 @@ func (r *ReconcileGitopsService) reconcileDeployment(cr *pipelinesv1alpha1.Gitop
286286
newPluginDeployment.Spec.Template.Spec.Tolerations = cr.Spec.Tolerations
287287
}
288288

289+
if cr.Spec.Resources != nil {
290+
newPluginDeployment.Spec.Template.Spec.Resources = cr.Spec.Resources
291+
}
292+
289293
// Check if this Deployment already exists
290294
existingPluginDeployment := &appsv1.Deployment{}
291295

controllers/gitopsservice_controller.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,11 @@ func (r *ReconcileGitopsService) reconcileBackend(gitopsserviceNamespacedName ty
622622
if len(instance.Spec.Tolerations) > 0 {
623623
deploymentObj.Spec.Template.Spec.Tolerations = instance.Spec.Tolerations
624624
}
625+
626+
if instance.Spec.Resources != nil {
627+
deploymentObj.Spec.Template.Spec.Resources = instance.Spec.Resources
628+
}
629+
625630
// Check if this Deployment already exists
626631
found := &appsv1.Deployment{}
627632
if err := r.Client.Get(context.TODO(), types.NamespacedName{Name: deploymentObj.Name, Namespace: deploymentObj.Namespace},

controllers/gitopsservice_controller_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,52 @@ func TestReconcile_PSSLabels(t *testing.T) {
741741
}
742742
}
743743

744+
func TestReconcile_Resources(t *testing.T) {
745+
logf.SetLogger(argocd.ZapLogger(true))
746+
s := scheme.Scheme
747+
addKnownTypesToScheme(s)
748+
gitopsService := &pipelinesv1alpha1.GitopsService{
749+
ObjectMeta: v1.ObjectMeta{
750+
Name: serviceName,
751+
},
752+
Spec: pipelinesv1alpha1.GitopsServiceSpec{
753+
RunOnInfra: true,
754+
Tolerations: deploymentDefaultTolerations(),
755+
Resources: &corev1.ResourceRequirements{
756+
Requests: corev1.ResourceList{
757+
corev1.ResourceCPU: resourcev1.MustParse("100m"),
758+
corev1.ResourceMemory: resourcev1.MustParse("64Mi"),
759+
},
760+
Limits: corev1.ResourceList{
761+
corev1.ResourceCPU: resourcev1.MustParse("200m"),
762+
corev1.ResourceMemory: resourcev1.MustParse("128Mi"),
763+
},
764+
},
765+
},
766+
}
767+
fakeClient := fake.NewFakeClient(gitopsService)
768+
reconciler := newReconcileGitOpsService(fakeClient, s)
769+
770+
_, err := reconciler.Reconcile(context.TODO(), newRequest("test", "test"))
771+
assertNoError(t, err)
772+
773+
deployment := appsv1.Deployment{}
774+
err = fakeClient.Get(context.TODO(), types.NamespacedName{Name: serviceName, Namespace: serviceNamespace}, &deployment)
775+
assertNoError(t, err)
776+
nSelector := common.InfraNodeSelector()
777+
argoutil.AppendStringMap(nSelector, argocommon.DefaultNodeSelector())
778+
assert.DeepEqual(t, deployment.Spec.Template.Spec.NodeSelector, nSelector)
779+
assert.DeepEqual(t, deployment.Spec.Template.Spec.Tolerations, deploymentDefaultTolerations())
780+
assert.DeepEqual(t, deployment.Spec.Template.Spec.Resources.Requests, corev1.ResourceList{
781+
corev1.ResourceCPU: resourcev1.MustParse("100m"),
782+
corev1.ResourceMemory: resourcev1.MustParse("64Mi"),
783+
})
784+
assert.DeepEqual(t, deployment.Spec.Template.Spec.Resources.Limits, corev1.ResourceList{
785+
corev1.ResourceCPU: resourcev1.MustParse("200m"),
786+
corev1.ResourceMemory: resourcev1.MustParse("128Mi"),
787+
})
788+
}
789+
744790
func addKnownTypesToScheme(scheme *runtime.Scheme) {
745791
scheme.AddKnownTypes(configv1.GroupVersion, &configv1.ClusterVersion{})
746792
scheme.AddKnownTypes(pipelinesv1alpha1.GroupVersion, &pipelinesv1alpha1.GitopsService{})

0 commit comments

Comments
 (0)