diff --git a/controller/cache/info.go b/controller/cache/info.go index 0734e2d118678..ba221432008a4 100644 --- a/controller/cache/info.go +++ b/controller/cache/info.go @@ -54,6 +54,8 @@ func populateNodeInfo(un *unstructured.Unstructured, res *ResourceInfo, customLa populatePodInfo(un, res) case kube.ServiceKind: populateServiceInfo(un, res) + case kube.ReplicaSetKind: + populateReplicaSetInfo(un, res) case "Node": populateHostNodeInfo(un, res) } @@ -103,6 +105,14 @@ func populateServiceInfo(un *unstructured.Unstructured, res *ResourceInfo) { res.NetworkingInfo = &v1alpha1.ResourceNetworkingInfo{TargetLabels: targetLabels, Ingress: ingress, ExternalURLs: urls} } +func populateReplicaSetInfo(un *unstructured.Unstructured, res *ResourceInfo) { + // due to https://github.com/kubernetes-sigs/yaml/issues/45, replicas is parsed as a float + replicas, ok, err := unstructured.NestedFloat64(un.Object, "spec", "replicas") + if err == nil && ok { + res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Replicas", Value: fmt.Sprintf("Replicas:%d", int(replicas))}) + } +} + func getServiceName(backend map[string]interface{}, gvk schema.GroupVersionKind) (string, error) { switch gvk.Group { case "extensions": diff --git a/controller/cache/info_test.go b/controller/cache/info_test.go index d0d67244ca4f9..6eff62057a1f1 100644 --- a/controller/cache/info_test.go +++ b/controller/cache/info_test.go @@ -754,3 +754,19 @@ func TestManifestHash(t *testing.T) { assert.Equal(t, expected, hash) assert.Nil(t, err) } + +func TestReplicaSet(t *testing.T) { + replicaSet := strToUnstructured(` + apiVersion: v1 + kind: ReplicaSet + metadata: + name: helm-guestbook + spec: + replicas: 10 +`) + + info := &ResourceInfo{} + populateNodeInfo(replicaSet, info, []string{}) + + assert.Contains(t, info.Info, v1alpha1.InfoItem{Name: "Replicas", Value: "Replicas:10"}) +} diff --git a/controller/state.go b/controller/state.go index 80678b74790e7..0e24e7ee4467d 100644 --- a/controller/state.go +++ b/controller/state.go @@ -658,7 +658,7 @@ func (m *appStateManager) CompareAppState(app *v1alpha1.Application, project *v1 conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionUnknownError, Message: err.Error(), LastTransitionTime: &now}) } diffConfigBuilder.WithGVKParser(gvkParser) - diffConfigBuilder.WithManager(common.ArgoCDSSAManager) + diffConfigBuilder.WithManager(app.GetName() + "-" + app.GetNamespace()) diffConfigBuilder.WithServerSideDiff(serverSideDiff) diff --git a/controller/sync.go b/controller/sync.go index 458b744c8a8ad..d425d0cb16b84 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -9,7 +9,6 @@ import ( "sync/atomic" "time" - cdcommon "github.com/argoproj/argo-cd/v2/common" "k8s.io/apimachinery/pkg/util/strategicpatch" "github.com/argoproj/gitops-engine/pkg/sync" @@ -322,7 +321,7 @@ func (m *appStateManager) SyncAppState(app *v1alpha1.Application, state *v1alpha sync.WithPrunePropagationPolicy(&prunePropagationPolicy), sync.WithReplace(syncOp.SyncOptions.HasOption(common.SyncOptionReplace)), sync.WithServerSideApply(syncOp.SyncOptions.HasOption(common.SyncOptionServerSideApply)), - sync.WithServerSideApplyManager(cdcommon.ArgoCDSSAManager), + sync.WithServerSideApplyManager(app.GetName() + "-" + app.GetNamespace()), } if syncOp.SyncOptions.HasOption("CreateNamespace=true") { diff --git a/server/application/application.go b/server/application/application.go index 77c74783018c2..eeb9e7a4aaddb 100644 --- a/server/application/application.go +++ b/server/application/application.go @@ -1939,7 +1939,7 @@ func (s *Server) Rollback(ctx context.Context, rollbackReq *application.Applicat DryRun: rollbackReq.GetDryRun(), Prune: rollbackReq.GetPrune(), SyncOptions: syncOptions, - SyncStrategy: &appv1.SyncStrategy{Apply: &appv1.SyncStrategyApply{}}, + SyncStrategy: &appv1.SyncStrategy{}, Source: &deploymentInfo.Source, }, InitiatedBy: appv1.OperationInitiator{Username: session.Username(ctx)},