Compare commits

...

17 Commits

Author SHA1 Message Date
github-actions[bot]
e7891b899a Bump version to 2.7.3 (#13719)
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: crenshaw-dev <crenshaw-dev@users.noreply.github.com>
2023-05-24 09:36:32 -04:00
gcp-cherry-pick-bot[bot]
ecbb7aa074 fix: prevent concurrent processing if kustomize commonAnnotations exist (#13697) (#13702)
Signed-off-by: yilmazo <onuryilmaz93@yandex.com>
Co-authored-by: Onur Yilmaz <onuryilmaz93@yandex.com>
2023-05-23 11:34:52 -07:00
gcp-cherry-pick-bot[bot]
6d85d6f85f fix: deeplinks API checking wrong permissions (#13664) (#13670)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-05-19 16:10:47 -07:00
gcp-cherry-pick-bot[bot]
3778173c05 Revert "fix: interpolate gen fix (#12716) (#13061)" (#13666) (#13668)
This reverts commit 1a4a878703.

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-05-19 16:16:59 -04:00
gcp-cherry-pick-bot[bot]
b0df91d209 fix(appset): handle templating of raw JSON fields (#12947) (#12949) (#13654)
* fix(appset): handle templating of raw JSON fields (#12947)



* revert unnecessary changes



---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-05-18 19:58:17 -04:00
gcp-cherry-pick-bot[bot]
a565d7d3a4 fix: avoid acquiring lock on two mutexes at the same time to prevent deadlock (#13636) (#13648)
Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2023-05-18 13:07:06 -07:00
gcp-cherry-pick-bot[bot]
0794a14400 fix: Reduce of empty array with no initial value for LogsView (#13620) (#13651)
* if not log lines are received (yet) the reduce raises an error and crashes the complete ArgoCDUI

Refs: #13447

Signed-off-by: patst <patrick.steinig@googlemail.com>
Co-authored-by: patst <patrick.steinig@googlemail.com>
2023-05-18 13:05:47 -07:00
Michael Crenshaw
fb2ae1198d fix: append elementsYaml in order to keep fields order (#13335) (#13508)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Laurentiu Soica <laurentiu@soica.ro>
2023-05-18 09:42:06 -04:00
gcp-cherry-pick-bot[bot]
ba17262c96 docs: Update kustomize resource to correct path (#13196) (#13632)
This commit updates the kustomize section to include the correct path.  Without the `\base` at the end of the path kustomize errors out trying to find a `kustomization.yaml` since there isn't one in the `ha` directory.

Signed-off-by: Chris Wiggins <5607419+cwiggs@users.noreply.github.com>
Co-authored-by: Chris Wiggins <5607419+cwiggs@users.noreply.github.com>
2023-05-18 09:13:22 -04:00
gcp-cherry-pick-bot[bot]
9599930611 fix: set containerName value for log view selector (#13587) (#13638)
Signed-off-by: Shawn Toffel <shawn.toffel@gmail.com>
Co-authored-by: Shawn Toffel <shawn.toffel@gmail.com>
2023-05-18 09:12:06 -04:00
Jaideep Rao
3f8bd11786 fix: consume cluster cache deadlock fix from gitops-engine (#13612)
Signed-off-by: Jaideep Rao <jaideep.r97@gmail.com>
2023-05-18 09:11:40 -04:00
gcp-cherry-pick-bot[bot]
d80a5d1a27 fix: deeplinks fails when app uses cluster name (#13564) (#13569)
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2023-05-12 10:09:54 -07:00
github-actions[bot]
cbee7e6011 Bump version to 2.7.2 (#13562)
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: leoluz <leoluz@users.noreply.github.com>
2023-05-12 09:26:59 -04:00
gcp-cherry-pick-bot[bot]
8e61f64cc9 fix: update log view on container select (#13474) (#13546)
Signed-off-by: ashutosh16 <11219262+ashutosh16@users.noreply.github.com>
Co-authored-by: asingh <11219262+ashutosh16@users.noreply.github.com>
2023-05-11 09:15:34 -04:00
gcp-cherry-pick-bot[bot]
e413db45b1 fix: surface errors when compressing files (#13491) (#13494)
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-05-09 12:37:32 -04:00
gcp-cherry-pick-bot[bot]
26cf7d95b7 fix: interpolate gen fix (#12716) (#13061) (#13485)
* Finalizing Appset Interpolation Changes



* Pushing up changes for matrix_test.go



* A now incredibly simple solution



* Updating matrix_test.go to master



* One more fix



* Changes up to now



* Currently working test (Rough)



* Cleanly working across 2 test cases!



* Merged into single test case



---------

Signed-off-by: jkulkarn <jay.p.kulkarni@blackrock.com>
Co-authored-by: Jay P Kulkarni <jkulkarni@ucla.edu>
Co-authored-by: jkulkarn <jay.p.kulkarni@blackrock.com>
2023-05-09 12:36:30 -04:00
gcp-cherry-pick-bot[bot]
24bd4aee70 docs: fix typo (#12960) (#13436)
Signed-off-by: mikutas <23391543+mikutas@users.noreply.github.com>
Co-authored-by: Takumi Sue <23391543+mikutas@users.noreply.github.com>
2023-05-04 18:21:33 -04:00
27 changed files with 778 additions and 743 deletions

View File

@@ -1 +1 @@
2.7.1
2.7.3

View File

@@ -30,7 +30,7 @@ func TestMatrixGenerate(t *testing.T) {
}
listGenerator := &argoprojiov1alpha1.ListGenerator{
Elements: []apiextensionsv1.JSON{{Raw: []byte(`{"cluster": "Cluster","url": "Url"}`)}},
Elements: []apiextensionsv1.JSON{{Raw: []byte(`{"cluster": "Cluster","url": "Url", "templated": "test-{{path.basenameNormalized}}"}`)}},
}
testCases := []struct {
@@ -50,8 +50,8 @@ func TestMatrixGenerate(t *testing.T) {
},
},
expected: []map[string]interface{}{
{"path": "app1", "path.basename": "app1", "path.basenameNormalized": "app1", "cluster": "Cluster", "url": "Url"},
{"path": "app2", "path.basename": "app2", "path.basenameNormalized": "app2", "cluster": "Cluster", "url": "Url"},
{"path": "app1", "path.basename": "app1", "path.basenameNormalized": "app1", "cluster": "Cluster", "url": "Url", "templated": "test-app1"},
{"path": "app2", "path.basename": "app2", "path.basenameNormalized": "app2", "cluster": "Cluster", "url": "Url", "templated": "test-app2"},
},
},
{

View File

@@ -96,6 +96,25 @@ func (r *Render) deeplyReplace(copy, original reflect.Value, replaceMap map[stri
// specific case time
if currentType == "time.Time" {
copy.Field(i).Set(original.Field(i))
} else if currentType == "Raw.k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" {
var unmarshaled interface{}
originalBytes := original.Field(i).Bytes()
err := json.Unmarshal(originalBytes, &unmarshaled)
if err != nil {
return fmt.Errorf("failed to unmarshal JSON field: %w", err)
}
jsonOriginal := reflect.ValueOf(&unmarshaled)
jsonCopy := reflect.New(jsonOriginal.Type()).Elem()
err = r.deeplyReplace(jsonCopy, jsonOriginal, replaceMap, useGoTemplate)
if err != nil {
return fmt.Errorf("failed to deeply replace JSON field contents: %w", err)
}
jsonCopyInterface := jsonCopy.Interface().(*interface{})
data, err := json.Marshal(jsonCopyInterface)
if err != nil {
return fmt.Errorf("failed to marshal templated JSON field: %w", err)
}
copy.Field(i).Set(reflect.ValueOf(data))
} else if err := r.deeplyReplace(copy.Field(i), original.Field(i), replaceMap, useGoTemplate); err != nil {
return err
}

View File

@@ -488,10 +488,11 @@ func (c *liveStateCache) getSyncedCluster(server string) (clustercache.ClusterCa
func (c *liveStateCache) invalidate(cacheSettings cacheSettings) {
log.Info("invalidating live state cache")
c.lock.Lock()
defer c.lock.Unlock()
c.cacheSettings = cacheSettings
for _, clust := range c.clusters {
clusters := c.clusters
c.lock.Unlock()
for _, clust := range clusters {
clust.Invalidate(clustercache.SetSettings(cacheSettings.clusterSettings))
}
log.Info("live state cache invalidated")

View File

@@ -74,7 +74,7 @@ kind: Kustomization
namespace: argocd
resources:
- github.com/argoproj/argo-cd/manifests/ha?ref=v2.6.2
- github.com/argoproj/argo-cd/manifests/ha/base?ref=v2.6.2
```
## Helm

View File

@@ -321,7 +321,7 @@ stringData:
All the examples above talk about Git repositories, but the same principles apply to clusters as well.
With cluster-scoped clusters we can also restrict projects to only allow applications whose destinations belong to the
With project-scoped clusters we can also restrict projects to only allow applications whose destinations belong to the
same project. The default behavior allows for applications to be installed onto clusters which are not a part of the same
project, as the example below demonstrates:

4
go.mod
View File

@@ -8,7 +8,8 @@ require (
github.com/Masterminds/semver/v3 v3.2.0
github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d
github.com/alicebob/miniredis/v2 v2.23.1
github.com/argoproj/gitops-engine v0.7.1-0.20230214165351-ed70eac8b7bd
github.com/antonmedv/expr v1.9.0
github.com/argoproj/gitops-engine v0.7.1-0.20230512020822-b4dd8b8c3976
github.com/argoproj/notifications-engine v0.4.1-0.20230228182525-f754726f03da
github.com/argoproj/pkg v0.13.7-0.20221221191914-44694015343d
github.com/aws/aws-sdk-go v1.44.164
@@ -113,7 +114,6 @@ require (
require (
github.com/Masterminds/sprig/v3 v3.2.3
github.com/antonmedv/expr v1.9.0
github.com/coreos/go-oidc/v3 v3.4.0
github.com/go-redis/cache/v9 v9.0.0
github.com/robfig/cron/v3 v3.0.1

4
go.sum
View File

@@ -135,8 +135,8 @@ github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.m
github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU=
github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8=
github.com/appscode/go v0.0.0-20191119085241-0887d8ec2ecc/go.mod h1:OawnOmAL4ZX3YaPdN+8HTNwBveT1jMsqP74moa9XUbE=
github.com/argoproj/gitops-engine v0.7.1-0.20230214165351-ed70eac8b7bd h1:4Y76oXOZ2b7px7ppRSNpdxFPhUEw5e3BYEWpxn8pO2I=
github.com/argoproj/gitops-engine v0.7.1-0.20230214165351-ed70eac8b7bd/go.mod h1:WpA/B7tgwfz+sdNE3LqrTrb7ArEY1FOPI2pAGI0hfPc=
github.com/argoproj/gitops-engine v0.7.1-0.20230512020822-b4dd8b8c3976 h1:8i12dOcimhwrJxUznzZR/NW4JpIL5DXZjkI3Bl3yh38=
github.com/argoproj/gitops-engine v0.7.1-0.20230512020822-b4dd8b8c3976/go.mod h1:WpA/B7tgwfz+sdNE3LqrTrb7ArEY1FOPI2pAGI0hfPc=
github.com/argoproj/notifications-engine v0.4.1-0.20230228182525-f754726f03da h1:Vf9xvHcXn4TP/nLIfWn+TaC521V9fpz/DwRP6uEeVR8=
github.com/argoproj/notifications-engine v0.4.1-0.20230228182525-f754726f03da/go.mod h1:05koR0gE/O0i5YDbidg1dpr76XitK4DJveh+dIAq6e8=
github.com/argoproj/pkg v0.13.7-0.20221221191914-44694015343d h1:7fXEKF3OQ9i1PrgieA6FLrXOL3UAKyiotomn0RHevds=

View File

@@ -5,7 +5,7 @@ kind: Kustomization
images:
- name: quay.io/argoproj/argocd
newName: quay.io/argoproj/argocd
newTag: v2.7.1
newTag: v2.7.3
resources:
- ./application-controller
- ./dex

View File

@@ -16700,7 +16700,7 @@ spec:
key: applicationsetcontroller.enable.progressive.syncs
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-applicationset-controller
ports:
@@ -16962,7 +16962,7 @@ spec:
value: /helm-working-dir
- name: HELM_DATA_HOME
value: /helm-working-dir
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
@@ -17014,7 +17014,7 @@ spec:
- -n
- /usr/local/bin/argocd
- /var/run/argocd/argocd-cmp-server
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
name: copyutil
securityContext:
allowPrivilegeEscalation: false
@@ -17227,7 +17227,7 @@ spec:
key: controller.kubectl.parallelism.limit
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-application-controller
ports:

View File

@@ -12,4 +12,4 @@ resources:
images:
- name: quay.io/argoproj/argocd
newName: quay.io/argoproj/argocd
newTag: v2.7.1
newTag: v2.7.3

View File

@@ -12,7 +12,7 @@ patches:
images:
- name: quay.io/argoproj/argocd
newName: quay.io/argoproj/argocd
newTag: v2.7.1
newTag: v2.7.3
resources:
- ../../base/application-controller
- ../../base/applicationset-controller

View File

@@ -17921,7 +17921,7 @@ spec:
key: applicationsetcontroller.enable.progressive.syncs
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-applicationset-controller
ports:
@@ -18031,7 +18031,7 @@ spec:
- -n
- /usr/local/bin/argocd
- /shared/argocd-dex
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: copyutil
securityContext:
@@ -18088,7 +18088,7 @@ spec:
containers:
- args:
- /usr/local/bin/argocd-notifications
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
tcpSocket:
@@ -18393,7 +18393,7 @@ spec:
value: /helm-working-dir
- name: HELM_DATA_HOME
value: /helm-working-dir
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
@@ -18445,7 +18445,7 @@ spec:
- -n
- /usr/local/bin/argocd
- /var/run/argocd/argocd-cmp-server
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
name: copyutil
securityContext:
allowPrivilegeEscalation: false
@@ -18727,7 +18727,7 @@ spec:
key: server.enable.proxy.extension
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -18972,7 +18972,7 @@ spec:
key: controller.kubectl.parallelism.limit
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-application-controller
ports:

View File

@@ -1581,7 +1581,7 @@ spec:
key: applicationsetcontroller.enable.progressive.syncs
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-applicationset-controller
ports:
@@ -1691,7 +1691,7 @@ spec:
- -n
- /usr/local/bin/argocd
- /shared/argocd-dex
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: copyutil
securityContext:
@@ -1748,7 +1748,7 @@ spec:
containers:
- args:
- /usr/local/bin/argocd-notifications
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
tcpSocket:
@@ -2053,7 +2053,7 @@ spec:
value: /helm-working-dir
- name: HELM_DATA_HOME
value: /helm-working-dir
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
@@ -2105,7 +2105,7 @@ spec:
- -n
- /usr/local/bin/argocd
- /var/run/argocd/argocd-cmp-server
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
name: copyutil
securityContext:
allowPrivilegeEscalation: false
@@ -2387,7 +2387,7 @@ spec:
key: server.enable.proxy.extension
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -2632,7 +2632,7 @@ spec:
key: controller.kubectl.parallelism.limit
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-application-controller
ports:

View File

@@ -17038,7 +17038,7 @@ spec:
key: applicationsetcontroller.enable.progressive.syncs
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-applicationset-controller
ports:
@@ -17148,7 +17148,7 @@ spec:
- -n
- /usr/local/bin/argocd
- /shared/argocd-dex
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: copyutil
securityContext:
@@ -17205,7 +17205,7 @@ spec:
containers:
- args:
- /usr/local/bin/argocd-notifications
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
tcpSocket:
@@ -17462,7 +17462,7 @@ spec:
value: /helm-working-dir
- name: HELM_DATA_HOME
value: /helm-working-dir
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
@@ -17514,7 +17514,7 @@ spec:
- -n
- /usr/local/bin/argocd
- /var/run/argocd/argocd-cmp-server
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
name: copyutil
securityContext:
allowPrivilegeEscalation: false
@@ -17789,7 +17789,7 @@ spec:
key: server.enable.proxy.extension
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -18029,7 +18029,7 @@ spec:
key: controller.kubectl.parallelism.limit
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-application-controller
ports:

View File

@@ -698,7 +698,7 @@ spec:
key: applicationsetcontroller.enable.progressive.syncs
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-applicationset-controller
ports:
@@ -808,7 +808,7 @@ spec:
- -n
- /usr/local/bin/argocd
- /shared/argocd-dex
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: copyutil
securityContext:
@@ -865,7 +865,7 @@ spec:
containers:
- args:
- /usr/local/bin/argocd-notifications
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
tcpSocket:
@@ -1122,7 +1122,7 @@ spec:
value: /helm-working-dir
- name: HELM_DATA_HOME
value: /helm-working-dir
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
@@ -1174,7 +1174,7 @@ spec:
- -n
- /usr/local/bin/argocd
- /var/run/argocd/argocd-cmp-server
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
name: copyutil
securityContext:
allowPrivilegeEscalation: false
@@ -1449,7 +1449,7 @@ spec:
key: server.enable.proxy.extension
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
livenessProbe:
httpGet:
@@ -1689,7 +1689,7 @@ spec:
key: controller.kubectl.parallelism.limit
name: argocd-cmd-params-cm
optional: true
image: quay.io/argoproj/argocd:v2.7.1
image: quay.io/argoproj/argocd:v2.7.3
imagePullPolicy: Always
name: argocd-application-controller
ports:

View File

@@ -183,8 +183,8 @@ func (g ApplicationSetTerminalGenerators) toApplicationSetNestedGenerators() []A
// ListGenerator include items info
type ListGenerator struct {
Elements []apiextensionsv1.JSON `json:"elements" protobuf:"bytes,1,name=elements"`
ElementsYaml string `json:"elementsYaml,omitempty" protobuf:"bytes,2,opt,name=elementsYaml"`
Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,3,name=template"`
Template ApplicationSetTemplate `json:"template,omitempty" protobuf:"bytes,2,name=template"`
ElementsYaml string `json:"elementsYaml,omitempty" protobuf:"bytes,3,opt,name=elementsYaml"`
}
// MatrixGenerator generates the cartesian product of two sets of parameters. The parameters are defined by two nested

File diff suppressed because it is too large Load Diff

View File

@@ -1024,9 +1024,9 @@ message KustomizeReplica {
message ListGenerator {
repeated k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON elements = 1;
optional string elementsYaml = 2;
optional ApplicationSetTemplate template = 2;
optional ApplicationSetTemplate template = 3;
optional string elementsYaml = 3;
}
message ManagedNamespaceMetadata {

View File

@@ -3659,18 +3659,18 @@ func schema_pkg_apis_application_v1alpha1_ListGenerator(ref common.ReferenceCall
},
},
},
"elementsYaml": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
Format: "",
},
},
"template": {
SchemaProps: spec.SchemaProps{
Default: map[string]interface{}{},
Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSetTemplate"),
},
},
"elementsYaml": {
SchemaProps: spec.SchemaProps{
Type: []string{"string"},
Format: "",
},
},
},
Required: []string{"elements"},
},

View File

@@ -500,6 +500,7 @@ func NewKustomizeReplica(text string) (*KustomizeReplica, error) {
func (k *ApplicationSourceKustomize) AllowsConcurrentProcessing() bool {
return len(k.Images) == 0 &&
len(k.CommonLabels) == 0 &&
len(k.CommonAnnotations) == 0 &&
k.NamePrefix == "" &&
k.Namespace == "" &&
k.NameSuffix == ""

View File

@@ -2973,11 +2973,21 @@ func TestRetryStrategy_NextRetryAtCustomBackoff(t *testing.T) {
}
func TestSourceAllowsConcurrentProcessing_KustomizeParams(t *testing.T) {
src := ApplicationSource{Path: ".", Kustomize: &ApplicationSourceKustomize{
NameSuffix: "test",
}}
t.Run("Has NameSuffix", func(t *testing.T) {
src := ApplicationSource{Path: ".", Kustomize: &ApplicationSourceKustomize{
NameSuffix: "test",
}}
assert.False(t, src.AllowsConcurrentProcessing())
assert.False(t, src.AllowsConcurrentProcessing())
})
t.Run("Has CommonAnnotations", func(t *testing.T) {
src := ApplicationSource{Path: ".", Kustomize: &ApplicationSourceKustomize{
CommonAnnotations: map[string]string{"foo": "bar"},
}}
assert.False(t, src.AllowsConcurrentProcessing())
})
}
func TestUnSetCascadedDeletion(t *testing.T) {

View File

@@ -1791,7 +1791,7 @@ func (s *Server) Rollback(ctx context.Context, rollbackReq *application.Applicat
}
func (s *Server) ListLinks(ctx context.Context, req *application.ListAppLinksRequest) (*application.LinksResponse, error) {
a, err := s.getApplicationEnforceRBACClient(ctx, rbacpolicy.ActionSync, req.GetNamespace(), req.GetName(), "")
a, err := s.getApplicationEnforceRBACClient(ctx, rbacpolicy.ActionGet, req.GetNamespace(), req.GetName(), "")
if err != nil {
return nil, err
}
@@ -1839,14 +1839,6 @@ func (s *Server) getObjectsForDeepLinks(ctx context.Context, app *appv1.Applicat
return s.db.GetProjectClusters(ctx, project)
}
permitted, err := proj.IsDestinationPermitted(app.Spec.Destination, getProjectClusters)
if err != nil {
return nil, nil, err
}
if !permitted {
return nil, nil, fmt.Errorf("error getting destination cluster")
}
if err := argo.ValidateDestination(ctx, &app.Spec.Destination, s.db); err != nil {
log.WithFields(map[string]interface{}{
"application": app.GetName(),
@@ -1855,6 +1847,14 @@ func (s *Server) getObjectsForDeepLinks(ctx context.Context, app *appv1.Applicat
}).Warnf("cannot validate cluster, error=%v", err.Error())
return nil, nil, nil
}
permitted, err := proj.IsDestinationPermitted(app.Spec.Destination, getProjectClusters)
if err != nil {
return nil, nil, err
}
if !permitted {
return nil, nil, fmt.Errorf("error getting destination cluster")
}
clst, err := s.db.GetCluster(ctx, app.Spec.Destination.Server)
if err != nil {
log.WithFields(map[string]interface{}{

View File

@@ -1,7 +1,7 @@
import * as React from 'react';
import {Tooltip} from 'argo-ui';
export type ContainerGroup = {offset: number; containers: string[]};
export type ContainerGroup = {offset: number; containers: {name: string}[]};
// ContainerSelector is a component that renders a dropdown menu of containers
export const ContainerSelector = ({
@@ -16,18 +16,19 @@ export const ContainerSelector = ({
if (!containerGroups) {
return <></>;
}
const containers = containerGroups?.reduce((acc, group) => acc.concat(group.containers), []);
const containerNames = containers?.map(container => container.name);
const containerGroup = (n: string) => {
return containerGroups.find(group => group.containers.find(container => container === n));
return containerGroups?.find(group => group.containers?.find(container => container.name === n));
};
const containerIndex = (n: string) => {
return containerGroup(n).containers.findIndex(container => container === n);
return containerGroup(n)?.containers.findIndex(container => container.name === n);
};
if (containerNames.length <= 1) return <></>;
return (
<Tooltip content='Select a container to view logs'>
<select className='argo-field' onChange={e => onClickContainer(containerGroup(e.target.value), containerIndex(e.target.value), 'logs')}>
<select className='argo-field' value={containerName} onChange={e => onClickContainer(containerGroup(e.target.value), containerIndex(e.target.value), 'logs')}>
{containerNames.map(n => (
<option key={n} value={n}>
{n}

View File

@@ -213,12 +213,15 @@ export const PodsLogsViewer = (props: PodLogsProps) => {
log.content?.replace(highlight, (substring: string) => whiteOnYellow + substring + reset);
// logs are in 14px wide fixed width font
const width =
14 *
logs
.map(renderLog)
.map(v => v.length)
.reduce((a, b) => Math.max(a, b));
let width = 0;
if (logs.length > 0) {
width =
14 *
logs
.map(renderLog)
.map(v => v.length)
.reduce((a, b) => Math.max(a, b));
}
const rowRenderer = ({index, key, style}: {index: number; key: string; style: React.CSSProperties}) => {
return (

View File

@@ -109,12 +109,12 @@ func SendRepoStream(ctx context.Context, appPath, repoPath string, sender Stream
func GetCompressedRepoAndMetadata(repoPath string, appPath string, env []string, excludedGlobs []string, opt *senderOption) (*os.File, *pluginclient.AppStreamRequest, error) {
// compress all files in appPath in tgz
tgz, filesWritten, checksum, err := tgzstream.CompressFiles(repoPath, nil, excludedGlobs)
if filesWritten == 0 {
return nil, nil, fmt.Errorf("no files to send")
}
if err != nil {
return nil, nil, fmt.Errorf("error compressing repo files: %w", err)
}
if filesWritten == 0 {
return nil, nil, fmt.Errorf("no files to send")
}
if opt != nil && opt.tarDoneChan != nil {
opt.tarDoneChan <- true
close(opt.tarDoneChan)

View File

@@ -40,12 +40,12 @@ type RepoStreamReceiver interface {
// SendApplicationManifestQueryWithFiles compresses a folder and sends it over the stream
func SendApplicationManifestQueryWithFiles(ctx context.Context, stream ApplicationStreamSender, appName string, appNs string, dir string, inclusions []string) error {
f, filesWritten, checksum, err := tgzstream.CompressFiles(dir, inclusions, nil)
if filesWritten == 0 {
return fmt.Errorf("no files to send")
}
if err != nil {
return fmt.Errorf("failed to compress files: %w", err)
}
if filesWritten == 0 {
return fmt.Errorf("no files to send")
}
err = stream.Send(&applicationpkg.ApplicationManifestQueryWithFilesWrapper{
Part: &applicationpkg.ApplicationManifestQueryWithFilesWrapper_Query{