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

Added reconcilation logic if spec.ApplicationSet is removed #670

Open
wants to merge 57 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 48 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
221c57d
Added reconcilation logic if spec.ApplicationSet is removed
rishabh625 Jun 1, 2022
330517e
Corrected deletion test for appset
rishabh625 Jun 2, 2022
4f7d368
Added routes,ingress,svc code
rishabh625 Jun 7, 2022
625d729
Merge branch 'argoproj-labs:master' into create_routes_svc_ingress_fo…
rishabh625 Jun 14, 2022
7abc8eb
Added svc ingress route logic
rishabh625 Jun 14, 2022
a66efaf
Merge branch 'create_routes_svc_ingress_for_appset' of https://github…
rishabh625 Jun 14, 2022
c2e09c8
Added enable ingress in test
rishabh625 Jun 14, 2022
2205214
Added correct version of operator
rishabh625 Jun 15, 2022
d1f608e
Merge branch 'argoproj-labs:master' into create_routes_svc_ingress_fo…
rishabh625 Jun 15, 2022
fb0e1d0
ran make bundle
rishabh625 Jun 15, 2022
d00d5d7
Applied reviewer suggestions, removed ingress for metrics
rishabh625 Jun 22, 2022
53d8f52
Merge branch 'create_routes_svc_ingress_for_appset' of https://github…
rishabh625 Jun 22, 2022
6ae79e4
Applied reviewer suggestions, removed ingress for metrics
rishabh625 Jun 22, 2022
b5cc4c4
Removed unwanted code
rishabh625 Jun 22, 2022
592e09c
fixed make generate
rishabh625 Jun 22, 2022
ed326a4
Add kuttl test for applicationset
rishabh625 Jun 22, 2022
21ab8a4
Renamed kuttl test file
rishabh625 Jun 22, 2022
7252079
corrected names
rishabh625 Jun 22, 2022
b6e3019
fix kuttl test
rishabh625 Jun 22, 2022
83c5cf8
Merged create svc,route appset webhook branch
rishabh625 Jun 29, 2022
ca76ede
corrected comments for method
rishabh625 Jun 29, 2022
3a4546e
Update api/v1alpha1/argocd_types.go
rishabh625 Jun 30, 2022
4fcc0c2
applied reviewers suggestion
rishabh625 Jun 30, 2022
6409d82
Added Reconcilation for routes and ingress applicationset
rishabh625 Jul 1, 2022
6099217
Added TestCase to verify resource is created
rishabh625 Jul 1, 2022
4584996
ran make bundle
rishabh625 Jul 1, 2022
da84c19
Added test case to disable ingress
rishabh625 Jul 1, 2022
29f27f5
Merge branch 'create_routes_svc_ingress_for_appset' of https://github…
rishabh625 Jul 1, 2022
8e53c5d
Added test case to disable ingress
rishabh625 Jul 1, 2022
5fb08d2
fixed patch command
rishabh625 Jul 1, 2022
d76f9f0
fixed removed TestAssert from errors kuttl file
rishabh625 Jul 1, 2022
0f2e4d2
corrected filename and patch
rishabh625 Jul 1, 2022
55e9965
corrected test
rishabh625 Jul 1, 2022
e095474
corrected text for applicationset webhook
rishabh625 Jul 1, 2022
06f67b7
ran make bundle
rishabh625 Jul 1, 2022
fb084b2
Added e2e test and status for applicationSet
rishabh625 Jul 1, 2022
f522095
ran make bundle
rishabh625 Jul 1, 2022
2cc12aa
add appset in alm-examples
rishabh625 Jul 4, 2022
c4e4795
Merge branch 'bug/reconcile_disabling_appset' of https://github.com/r…
rishabh625 Jul 4, 2022
fe4de2f
Merge branch 'create_routes_svc_ingress_for_appset' into bug/reconcil…
rishabh625 Jul 4, 2022
041d116
add 0.5.0 csv
rishabh625 Jul 4, 2022
ebc6df0
ran make bundle
rishabh625 Jul 4, 2022
ba138fd
Test to check reconcilation of appset
rishabh625 Jul 6, 2022
9b419e9
Merge branch 'bug/reconcile_disabling_appset' of https://github.com/r…
rishabh625 Jul 6, 2022
b725999
corrected argocd cr name in test
rishabh625 Jul 7, 2022
e3b08c3
Test
rishabh625 Jul 22, 2022
0ebde17
Merge branch 'master' into create_routes_svc_ingress_for_appset
rishabh625 Aug 11, 2022
4825291
merged master branch and resolved conflicts
rishabh625 Aug 11, 2022
ebee8a8
Merge branch 'create_routes_svc_ingress_for_appset' of https://github…
rishabh625 Aug 11, 2022
158ae33
Merge branch 'master' of https://github.com/rishabh625/argocd-operator
rishabh625 Aug 17, 2022
57d5f63
merged master branch and resolved conflicts
rishabh625 Aug 17, 2022
515ad71
merged master branch and resolved conflicts
rishabh625 Aug 17, 2022
9ef5191
Merge branch 'bug/reconcile_disabling_appset' of https://github.com/r…
rishabh625 Aug 17, 2022
a6906d7
ran make bundle
rishabh625 Aug 17, 2022
dd0da90
applied reviewers suggestion
rishabh625 Aug 17, 2022
f537a4c
Merge branch 'bug/reconcile_disabling_appset' of https://github.com/r…
rishabh625 Aug 17, 2022
5184508
ran make bundle
rishabh625 Aug 17, 2022
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
12 changes: 12 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: CI
on:
pull_request:
types: [ labeled ]
jobs:
build:
if: ${{ github.event.label.name == 'propogate' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run a one-line script
run: echo Hello, world!
jaideepr97 marked this conversation as resolved.
Show resolved Hide resolved
9 changes: 9 additions & 0 deletions api/v1alpha1/argocd_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -733,6 +733,15 @@ type ArgoCDStatus struct {
//+operator-sdk:csv:customresourcedefinitions:type=status,displayName="ApplicationController",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
ApplicationController string `json:"applicationController,omitempty"`

// ApplicationController is a simple, high-level summary of where the Argo CD application controller component is in its lifecycle.
// There are five possible ApplicationController values:
// Pending: The Argo CD application controller component has been accepted by the Kubernetes system, but one or more of the required resources have not been created.
// Running: All of the required Pods for the Argo CD application controller component are in a Ready state.
// Failed: At least one of the Argo CD application controller component Pods had a failure.
// Unknown: For some reason the state of the Argo CD application controller component could not be obtained.
//+operator-sdk:csv:customresourcedefinitions:type=status,displayName="ApplicationController",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
jaideepr97 marked this conversation as resolved.
Show resolved Hide resolved
ApplicationSetController string `json:"applicationSetController,omitempty"`

// Dex is a simple, high-level summary of where the Argo CD Dex component is in its lifecycle.
// There are five possible dex values:
// Pending: The Argo CD Dex component has been accepted by the Kubernetes system, but one or more of the required resources have not been created.
Expand Down
13 changes: 13 additions & 0 deletions bundle/manifests/argocd-operator.clusterserviceversion.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -747,6 +747,19 @@ spec:
path: applicationController
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:text
- description: 'ApplicationController is a simple, high-level summary of where
the Argo CD application controller component is in its lifecycle. There
are five possible ApplicationController values: Pending: The Argo CD application
controller component has been accepted by the Kubernetes system, but one
or more of the required resources have not been created. Running: All of
the required Pods for the Argo CD application controller component are in
a Ready state. Failed: At least one of the Argo CD application controller
component Pods had a failure. Unknown: For some reason the state of the
Argo CD application controller component could not be obtained.'
displayName: ApplicationController
path: applicationSetController
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:text
- description: 'Dex is a simple, high-level summary of where the Argo CD Dex
component is in its lifecycle. There are five possible dex values: Pending:
The Argo CD Dex component has been accepted by the Kubernetes system, but
Expand Down
12 changes: 12 additions & 0 deletions bundle/manifests/argoproj.io_argocds.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5998,6 +5998,18 @@ spec:
had a failure. Unknown: For some reason the state of the Argo CD
application controller component could not be obtained.'
type: string
applicationSetController:
description: 'ApplicationController is a simple, high-level summary
of where the Argo CD application controller component is in its
lifecycle. There are five possible ApplicationController values:
Pending: The Argo CD application controller component has been accepted
by the Kubernetes system, but one or more of the required resources
have not been created. Running: All of the required Pods for the
Argo CD application controller component are in a Ready state. Failed:
At least one of the Argo CD application controller component Pods
had a failure. Unknown: For some reason the state of the Argo CD
application controller component could not be obtained.'
type: string
dex:
description: 'Dex is a simple, high-level summary of where the Argo
CD Dex component is in its lifecycle. There are five possible dex
Expand Down
2 changes: 2 additions & 0 deletions common/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ const (
// ArgoCDNotificationsControllerComponent is the name of the Notifications controller control plane component
ArgoCDNotificationsControllerComponent = "argocd-notifications-controller"

// ArgoCDApplicationSetControllerComponent is the name of the AppplicationSet controller control plane component
ArgoCDApplicationSetControllerComponent = "argocd-applicationset-controller"
// ArgoCDOperatorGrafanaComponent is the name of the Grafana control plane component
ArgoCDOperatorGrafanaComponent = "argocd-grafana"

Expand Down
12 changes: 12 additions & 0 deletions config/crd/bases/argoproj.io_argocds.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6000,6 +6000,18 @@ spec:
had a failure. Unknown: For some reason the state of the Argo CD
application controller component could not be obtained.'
type: string
applicationSetController:
description: 'ApplicationController is a simple, high-level summary
of where the Argo CD application controller component is in its
lifecycle. There are five possible ApplicationController values:
Pending: The Argo CD application controller component has been accepted
by the Kubernetes system, but one or more of the required resources
have not been created. Running: All of the required Pods for the
Argo CD application controller component are in a Ready state. Failed:
At least one of the Argo CD application controller component Pods
had a failure. Unknown: For some reason the state of the Argo CD
application controller component could not be obtained.'
type: string
dex:
description: 'Dex is a simple, high-level summary of where the Argo
CD Dex component is in its lifecycle. There are five possible dex
Expand Down
13 changes: 13 additions & 0 deletions config/manifests/bases/argocd-operator.clusterserviceversion.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -621,6 +621,19 @@ spec:
path: applicationController
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:text
- description: 'ApplicationController is a simple, high-level summary of where
the Argo CD application controller component is in its lifecycle. There
are five possible ApplicationController values: Pending: The Argo CD application
controller component has been accepted by the Kubernetes system, but one
or more of the required resources have not been created. Running: All of
the required Pods for the Argo CD application controller component are in
a Ready state. Failed: At least one of the Argo CD application controller
component Pods had a failure. Unknown: For some reason the state of the
Argo CD application controller component could not be obtained.'
displayName: ApplicationController
path: applicationSetController
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:text
- description: 'Dex is a simple, high-level summary of where the Argo CD Dex
component is in its lifecycle. There are five possible dex values: Pending:
The Argo CD Dex component has been accepted by the Kubernetes system, but
Expand Down
82 changes: 77 additions & 5 deletions controllers/argocd/applicationset.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"reflect"

corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
v1 "k8s.io/api/rbac/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down Expand Up @@ -73,6 +74,19 @@ func (r *ReconcileArgoCD) reconcileApplicationSetController(cr *argoprojv1a1.Arg
return err
}

<<<<<<< HEAD
jaideepr97 marked this conversation as resolved.
Show resolved Hide resolved
log.Info("reconciling applicationset ingress")
if err := r.reconcileApplicationSetControllerIngress(cr); err != nil {
return err
}

log.Info("reconciling applicationset routes")
if err := r.reconcileApplicationSetControllerWebhookRoute(cr); err != nil {
return err
}

=======
>>>>>>> master
log.Info("reconciling applicationset service")
if err := r.reconcileApplicationSetService(cr); err != nil {
return err
Expand Down Expand Up @@ -136,12 +150,17 @@ func (r *ReconcileArgoCD) reconcileApplicationSetDeployment(cr *argoprojv1a1.Arg
},
}

podSpec.Containers = []corev1.Container{
applicationSetContainer(cr),
}
AddSeccompProfileForOpenShift(r.Client, podSpec)

if cr.Spec.ApplicationSet != nil {
podSpec.Containers = []corev1.Container{
applicationSetContainer(cr),
}
}
if existing := newDeploymentWithSuffix("applicationset-controller", "controller", cr); argoutil.IsObjectFound(r.Client, cr.Namespace, existing.Name, existing) {
if cr.Spec.ApplicationSet == nil {
log.Info(fmt.Sprintf("Deleting Deployment %s as applicationset is disabled", existing.Name))
return r.Client.Delete(context.TODO(), existing)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I removed the applicationSet entry from Argo CD CR, controller crashed with the below error. I edited the Argo CD CR to remove the .spec.applicationSet entry.

1.6542400631086211e+09	INFO	controller_argocd	reconciling ApplicationSet deployment
E0603 12:37:43.108966   18003 runtime.go:78] Observed a panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)
goroutine 506 [running]:
k8s.io/apimachinery/pkg/util/runtime.logPanic({0x237e8a0?, 0x3477f10})
	/Users/aveerama/go/src/github.com/iam-veeramalla/argocd-operator/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:74 +0x86
k8s.io/apimachinery/pkg/util/runtime.HandleCrash({0x0, 0x0, 0x8?})
	/Users/aveerama/go/src/github.com/iam-veeramalla/argocd-operator/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:48 +0x75
panic({0x237e8a0, 0x3477f10})
	/usr/local/go/src/runtime/panic.go:838 +0x207
github.com/argoproj-labs/argocd-operator/controllers/argocd.getArgoApplicationSetCommand(0xc000b80000)
	/Users/aveerama/go/src/github.com/iam-veeramalla/argocd-operator/controllers/argocd/applicationset.go:47 +0x285
github.com/argoproj-labs/argocd-operator/controllers/argocd.applicationSetContainer(_)
	/Users/aveerama/go/src/github.com/iam-veeramalla/argocd-operator/controllers/argocd/applicationset.go:190 +0x152

}

existingSpec := existing.Spec.Template.Spec

Expand Down Expand Up @@ -255,6 +274,10 @@ func (r *ReconcileArgoCD) reconcileApplicationSetServiceAccount(cr *argoprojv1a1
}

if exists {
if cr.Spec.ApplicationSet == nil {
log.Info(fmt.Sprintf("Deleting service account %s as applicationset is disabled", sa.Name))
return nil, r.Client.Delete(context.TODO(), sa)
}
return sa, nil
}

Expand Down Expand Up @@ -359,6 +382,10 @@ func (r *ReconcileArgoCD) reconcileApplicationSetRole(cr *argoprojv1a1.ArgoCD) (
if !errors.IsNotFound(err) {
return nil, fmt.Errorf("failed to reconcile the role for the service account associated with %s : %s", role.Name, err)
}
if cr.Spec.ApplicationSet == nil {
log.Info(fmt.Sprintf("Deleting role %s as applicationset is disabled", role.Name))
return nil, r.Client.Delete(context.TODO(), role)
}
if err = controllerutil.SetControllerReference(cr, role, r.Scheme); err != nil {
return nil, err
}
Expand Down Expand Up @@ -409,6 +436,10 @@ func (r *ReconcileArgoCD) reconcileApplicationSetRoleBinding(cr *argoprojv1a1.Ar
}

if roleBindingExists {
if cr.Spec.ApplicationSet == nil {
log.Info(fmt.Sprintf("Deleting rolebinding %s as applicationset is disabled", roleBinding.Name))
return r.Client.Delete(context.TODO(), roleBinding)
}
return r.Client.Update(context.TODO(), roleBinding)
}

Expand Down Expand Up @@ -462,13 +493,54 @@ func setAppSetLabels(obj *metav1.ObjectMeta) {
obj.Labels["app.kubernetes.io/component"] = "controller"
}

//deleteApplicationSetResources Triggers reconciliation of application set resources,logic for deletion of applicationset is in reconcile methods this method triggers the cleanup of resources using the reconcilation logic as CR changes
func (r *ReconcileArgoCD) deleteApplicationSetResources(cr *argoprojv1a1.ArgoCD) error {

sa := &corev1.ServiceAccount{}
role := &rbacv1.Role{}

if err := argoutil.FetchObject(r.Client, cr.Namespace, fmt.Sprintf("%s-%s", cr.Name, common.ArgoCDApplicationSetControllerComponent), sa); err != nil {
if !errors.IsNotFound(err) {
return err
}
}
if err := argoutil.FetchObject(r.Client, cr.Namespace, fmt.Sprintf("%s-%s", cr.Name, common.ArgoCDApplicationSetControllerComponent), role); err != nil {
if !errors.IsNotFound(err) {
return err
}
}

log.Info("reconciling ApplicationSet deployment")
if err := r.reconcileApplicationSetDeployment(cr, sa); err != nil {
return err
}

log.Info("reconciling ApplicationSet role binding")
if err := r.reconcileApplicationSetRoleBinding(cr, role, sa); err != nil {
return err
}

log.Info("reconciling ApplicationSet role")
_, err := r.reconcileApplicationSetRole(cr)
if err != nil {
return err
}

log.Info("reconciling ApplicationSet serviceaccount")
_, err = r.reconcileApplicationSetServiceAccount(cr)
if err != nil {
return err
}

return nil
}

// reconcileApplicationSetService will ensure that the Service is present for the ApplicationSet webhook and metrics component.
func (r *ReconcileArgoCD) reconcileApplicationSetService(cr *argoprojv1a1.ArgoCD) error {
log.Info("reconciling applicationset service")

svc := newServiceWithSuffix(common.ApplicationSetServiceNameSuffix, common.ApplicationSetServiceNameSuffix, cr)
if cr.Spec.ApplicationSet == nil {

if argoutil.IsObjectFound(r.Client, cr.Namespace, svc.Name, svc) {
err := argoutil.FetchObject(r.Client, cr.Namespace, svc.Name, svc)
if err != nil {
Expand Down
75 changes: 72 additions & 3 deletions controllers/argocd/applicationset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
v1 "k8s.io/api/rbac/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
Expand Down Expand Up @@ -262,7 +263,6 @@ func TestReconcileApplicationSet_UpdateExistingDeployments(t *testing.T) {

// Ensure the updated Deployment has the expected properties
checkExpectedDeploymentValues(t, deployment, &sa, a)

}

func TestReconcileApplicationSet_Deployments_resourceRequirements(t *testing.T) {
Expand Down Expand Up @@ -405,8 +405,8 @@ func TestReconcileApplicationSet_ServiceAccount(t *testing.T) {
func TestReconcileApplicationSet_Role(t *testing.T) {
logf.SetLogger(ZapLogger(true))
a := makeTestArgoCD()
a.Spec.ApplicationSet = &v1alpha1.ArgoCDApplicationSet{}
r := makeTestReconciler(t, a)

roleRet, err := r.reconcileApplicationSetRole(a)
assert.NoError(t, err)

Expand Down Expand Up @@ -451,6 +451,7 @@ func TestReconcileApplicationSet_Role(t *testing.T) {
func TestReconcileApplicationSet_RoleBinding(t *testing.T) {
logf.SetLogger(ZapLogger(true))
a := makeTestArgoCD()
a.Spec.ApplicationSet = &v1alpha1.ArgoCDApplicationSet{}
r := makeTestReconciler(t, a)

role := &rbacv1.Role{ObjectMeta: metav1.ObjectMeta{Name: "role-name"}}
Expand All @@ -472,7 +473,6 @@ func TestReconcileApplicationSet_RoleBinding(t *testing.T) {

assert.Equal(t, roleBinding.RoleRef.Name, role.Name)
assert.Equal(t, roleBinding.Subjects[0].Name, sa.Name)

}

func appsetAssertExpectedLabels(t *testing.T, meta *metav1.ObjectMeta) {
Expand All @@ -497,3 +497,72 @@ func TestReconcileApplicationSet_Service(t *testing.T) {
assert.NoError(t, r.reconcileApplicationSetService(a))
assert.NoError(t, r.Client.Get(context.TODO(), types.NamespacedName{Namespace: s.Namespace, Name: s.Name}, s))
}
func TestReconcileApplicationSet_DeleteDeployment(t *testing.T) {
logf.SetLogger(ZapLogger(true))
a := makeTestArgoCD()
a.Spec.ApplicationSet = &v1alpha1.ArgoCDApplicationSet{}
r := makeTestReconciler(t, a)
sa := corev1.ServiceAccount{}

assert.NoError(t, r.reconcileApplicationSetDeployment(a, &sa))

deployment := &appsv1.Deployment{}
assert.NoError(t, r.Client.Get(
context.TODO(),
types.NamespacedName{
Name: "argocd-applicationset-controller",
Namespace: a.Namespace,
},
deployment))

a.Spec.ApplicationSet = nil
r = makeTestReconciler(t, a)
checkdeployment := &appsv1.Deployment{}
assert.Error(t, r.Client.Get(
context.TODO(),
types.NamespacedName{
Name: "argocd-applicationset-controller",
Namespace: a.Namespace,
},
checkdeployment))
assert.Equal(t, checkdeployment.Name, "")
checkrole := &v1.Role{}
assert.Error(t, r.Client.Get(
context.TODO(),
types.NamespacedName{
Name: "argocd-applicationset-controller",
Namespace: a.Namespace,
},
checkrole))
assert.Equal(t, checkrole.Name, "")

checksa := &corev1.ServiceAccount{}
assert.Error(t, r.Client.Get(
context.TODO(),
types.NamespacedName{
Name: "argocd-applicationset-controller",
Namespace: a.Namespace,
},
checksa))
assert.Equal(t, checksa.Name, "")
checkroleBinding := &v1.RoleBinding{}
assert.Error(t, r.Client.Get(
context.TODO(),
types.NamespacedName{
Name: "argocd-applicationset-controller",
Namespace: a.Namespace,
},
checkroleBinding))
assert.Equal(t, checkroleBinding.Name, "")
}

func TestReconcileApplicationSet_Service(t *testing.T) {
logf.SetLogger(ZapLogger(true))
a := makeTestArgoCD()
r := makeTestReconciler(t, a)

s := newServiceWithSuffix(common.ApplicationSetServiceNameSuffix, common.ApplicationSetServiceNameSuffix, a)

assert.NoError(t, r.reconcileApplicationSetService(a))
assert.NoError(t, r.Client.Get(context.TODO(), types.NamespacedName{Namespace: s.Namespace, Name: s.Name}, s))
}
Loading