diff --git a/changelog/CHANGELOG.md b/changelog/CHANGELOG.md new file mode 100644 index 0000000000000..da8ac297613e6 --- /dev/null +++ b/changelog/CHANGELOG.md @@ -0,0 +1,2 @@ +### Features +- feat(event_reporter): report chart version as part of manifest for environment feature \ No newline at end of file diff --git a/cmd/argocd-repo-server/commands/argocd_repo_server.go b/cmd/argocd-repo-server/commands/argocd_repo_server.go index 69358d2a91efd..132bf576eebc4 100644 --- a/cmd/argocd-repo-server/commands/argocd_repo_server.go +++ b/cmd/argocd-repo-server/commands/argocd_repo_server.go @@ -16,6 +16,7 @@ import ( cmdutil "github.com/argoproj/argo-cd/v2/cmd/util" "github.com/argoproj/argo-cd/v2/common" + "github.com/argoproj/argo-cd/v2/pkg/codefresh" "github.com/argoproj/argo-cd/v2/reposerver" "github.com/argoproj/argo-cd/v2/reposerver/apiclient" "github.com/argoproj/argo-cd/v2/reposerver/askpass" @@ -48,25 +49,29 @@ var ( func NewCommand() *cobra.Command { var ( - parallelismLimit int64 - listenPort int - listenHost string - metricsPort int - metricsHost string - otlpAddress string - otlpAttrs []string - cacheSrc func() (*reposervercache.Cache, error) - tlsConfigCustomizer tls.ConfigCustomizer - tlsConfigCustomizerSrc func() (tls.ConfigCustomizer, error) - redisClient *redis.Client - disableTLS bool - maxCombinedDirectoryManifestsSize string - cmpTarExcludedGlobs []string - allowOutOfBoundsSymlinks bool - streamedManifestMaxTarSize string - streamedManifestMaxExtractedSize string - helmManifestMaxExtractedSize string - disableManifestMaxExtractedSize bool + parallelismLimit int64 + listenPort int + listenHost string + metricsPort int + metricsHost string + otlpAddress string + otlpAttrs []string + cacheSrc func() (*reposervercache.Cache, error) + tlsConfigCustomizer tls.ConfigCustomizer + tlsConfigCustomizerSrc func() (tls.ConfigCustomizer, error) + redisClient *redis.Client + disableTLS bool + maxCombinedDirectoryManifestsSize string + cmpTarExcludedGlobs []string + allowOutOfBoundsSymlinks bool + streamedManifestMaxTarSize string + streamedManifestMaxExtractedSize string + helmManifestMaxExtractedSize string + disableManifestMaxExtractedSize bool + codefreshUrl string + codefreshToken string + codefreshApplicationVersioningEnabled bool + codefreshUseApplicationConfiguration bool ) var command = cobra.Command{ Use: cliName, @@ -123,6 +128,12 @@ func NewCommand() *cobra.Command { StreamedManifestMaxExtractedSize: streamedManifestMaxExtractedSizeQuantity.ToDec().Value(), StreamedManifestMaxTarSize: streamedManifestMaxTarSizeQuantity.ToDec().Value(), HelmManifestMaxExtractedSize: helmManifestMaxExtractedSizeQuantity.ToDec().Value(), + CodefreshApplicationVersioningEnabled: codefreshApplicationVersioningEnabled, + CodefreshUseApplicationConfiguration: codefreshUseApplicationConfiguration, + CodefreshConfig: codefresh.CodefreshConfig{ + BaseURL: codefreshUrl, + AuthToken: codefreshToken, + }, }, askPassServer) errors.CheckError(err) @@ -188,6 +199,12 @@ func NewCommand() *cobra.Command { return nil }, } + // *** CF specific variables *** + command.Flags().StringVar(&codefreshUrl, "codefresh-url", env.StringFromEnv("CODEFRESH_URL", "https://g.codefresh.io"), "Codefresh API URL") + command.Flags().StringVar(&codefreshToken, "codefresh-token", env.StringFromEnv("CODEFRESH_TOKEN", ""), "Codefresh token") + command.Flags().BoolVar(&codefreshApplicationVersioningEnabled, "codefresh-application-version-enabled", env.ParseBoolFromEnv("CODEFRESH_APPVERSION_ENABLED", true), "Allow Codefresh application versioning") + command.Flags().BoolVar(&codefreshUseApplicationConfiguration, "codefresh-application-version-use-appconfig", env.ParseBoolFromEnv("CODEFRESH_APPVERSION_USE_APPCONFIG", true), "Allow getting application configuration from the Codefresh API") + command.Flags().StringVar(&cmdutil.LogFormat, "logformat", env.StringFromEnv("ARGOCD_REPO_SERVER_LOGFORMAT", "text"), "Set the logging format. One of: text|json") command.Flags().StringVar(&cmdutil.LogLevel, "loglevel", env.StringFromEnv("ARGOCD_REPO_SERVER_LOGLEVEL", "info"), "Set the logging level. One of: debug|info|warn|error") command.Flags().Int64Var(¶llelismLimit, "parallelismlimit", int64(env.ParseNumFromEnv("ARGOCD_REPO_SERVER_PARALLELISM_LIMIT", 0, 0, math.MaxInt32)), "Limit on number of concurrent manifests generate requests. Any value less the 1 means no limit.") diff --git a/cmd/event-reporter-server/commands/event_reporter_server.go b/cmd/event-reporter-server/commands/event_reporter_server.go index bbaebc50df899..93e2154ce08e4 100644 --- a/cmd/event-reporter-server/commands/event_reporter_server.go +++ b/cmd/event-reporter-server/commands/event_reporter_server.go @@ -8,8 +8,8 @@ import ( "github.com/argoproj/argo-cd/v2/event_reporter" appclient "github.com/argoproj/argo-cd/v2/event_reporter/application" - "github.com/argoproj/argo-cd/v2/event_reporter/codefresh" "github.com/argoproj/argo-cd/v2/pkg/apiclient" + "github.com/argoproj/argo-cd/v2/pkg/codefresh" "github.com/argoproj/pkg/stats" "github.com/redis/go-redis/v9" diff --git a/controller/state.go b/controller/state.go index d0c798141dad6..82d0971307e4e 100644 --- a/controller/state.go +++ b/controller/state.go @@ -210,28 +210,28 @@ func (m *appStateManager) getRepoObjs(app *v1alpha1.Application, sources []v1alp ts.AddCheckpoint("version_ms") log.Debugf("Generating Manifest for source %s revision %s, cache %t, revisionCache %t", source, revisions[i], !noCache, noRevisionCache) manifestInfo, err := repoClient.GenerateManifest(context.Background(), &apiclient.ManifestRequest{ - Repo: repo, - Repos: permittedHelmRepos, - Revision: revisions[i], - NoCache: noCache, - NoRevisionCache: noRevisionCache, - AppLabelKey: appLabelKey, - AppName: app.InstanceName(m.namespace), - Namespace: app.Spec.Destination.Namespace, - ApplicationSource: &source, - KustomizeOptions: kustomizeOptions, - KubeVersion: serverVersion, - ApiVersions: argo.APIResourcesToStrings(apiResources, true), - VerifySignature: verifySignature, - HelmRepoCreds: permittedHelmCredentials, - TrackingMethod: string(argo.GetTrackingMethod(m.settingsMgr)), - EnabledSourceTypes: enabledSourceTypes, - HelmOptions: helmOptions, - HasMultipleSources: app.Spec.HasMultipleSources(), - RefSources: refSources, - ProjectName: proj.Name, - ProjectSourceRepos: proj.Spec.SourceRepos, - VersionConfig: apiclient.GetVersionConfig(), + Repo: repo, + Repos: permittedHelmRepos, + Revision: revisions[i], + NoCache: noCache, + NoRevisionCache: noRevisionCache, + AppLabelKey: appLabelKey, + AppName: app.InstanceName(m.namespace), + Namespace: app.Spec.Destination.Namespace, + ApplicationSource: &source, + KustomizeOptions: kustomizeOptions, + KubeVersion: serverVersion, + ApiVersions: argo.APIResourcesToStrings(apiResources, true), + VerifySignature: verifySignature, + HelmRepoCreds: permittedHelmCredentials, + TrackingMethod: string(argo.GetTrackingMethod(m.settingsMgr)), + EnabledSourceTypes: enabledSourceTypes, + HelmOptions: helmOptions, + HasMultipleSources: app.Spec.HasMultipleSources(), + RefSources: refSources, + ProjectName: proj.Name, + ProjectSourceRepos: proj.Spec.SourceRepos, + ApplicationMetadata: &app.ObjectMeta, }) if err != nil { return nil, nil, fmt.Errorf("failed to generate manifest for source %d of %d: %w", i+1, len(sources), err) diff --git a/event_reporter/codefresh/client.go b/event_reporter/codefresh/client.go deleted file mode 100644 index f6c7001a18e24..0000000000000 --- a/event_reporter/codefresh/client.go +++ /dev/null @@ -1,78 +0,0 @@ -package codefresh - -import ( - "bytes" - "context" - "encoding/json" - "fmt" - "io" - "net/http" - "time" - - "github.com/argoproj/argo-cd/v2/pkg/apiclient/events" - "github.com/pkg/errors" - log "github.com/sirupsen/logrus" -) - -type CodefreshConfig struct { - BaseURL string - AuthToken string -} - -type codefreshClient struct { - cfConfig *CodefreshConfig - httpClient *http.Client -} - -type CodefreshClient interface { - Send(ctx context.Context, appName string, event *events.Event) error -} - -func NewCodefreshClient(cfConfig *CodefreshConfig) CodefreshClient { - return &codefreshClient{ - cfConfig: cfConfig, - httpClient: &http.Client{ - Timeout: 30 * time.Second, - }, - } -} - -func (cc *codefreshClient) Send(ctx context.Context, appName string, event *events.Event) error { - return WithRetry(&DefaultBackoff, func() error { - url := cc.cfConfig.BaseURL + "/2.0/api/events" - log.Infof("Sending application event for %s", appName) - - wrappedPayload := map[string]json.RawMessage{ - "data": event.Payload, - } - - newPayloadBytes, err := json.Marshal(wrappedPayload) - if err != nil { - return err - } - - req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(newPayloadBytes)) - if err != nil { - return err - } - - req.Header.Set("Content-Type", "application/json") - req.Header.Set("Authorization", cc.cfConfig.AuthToken) - - res, err := cc.httpClient.Do(req) - if err != nil { - return errors.Wrap(err, fmt.Sprintf("failed reporting to Codefresh, event: %s", string(event.Payload))) - } - defer res.Body.Close() - - isStatusOK := res.StatusCode >= 200 && res.StatusCode < 300 - if !isStatusOK { - b, _ := io.ReadAll(res.Body) - return errors.Errorf("failed reporting to Codefresh, got response: status code %d and body %s, original request body: %s", - res.StatusCode, string(b), string(event.Payload)) - } - - log.Infof("Application event for %s successfully sent", appName) - return nil - }) -} diff --git a/event_reporter/controller/controller.go b/event_reporter/controller/controller.go index 7f47f6f1f77af..e16137ac360a8 100644 --- a/event_reporter/controller/controller.go +++ b/event_reporter/controller/controller.go @@ -8,11 +8,11 @@ import ( "time" argocommon "github.com/argoproj/argo-cd/v2/common" - "github.com/argoproj/argo-cd/v2/event_reporter/codefresh" "github.com/argoproj/argo-cd/v2/event_reporter/metrics" "github.com/argoproj/argo-cd/v2/event_reporter/reporter" appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" applisters "github.com/argoproj/argo-cd/v2/pkg/client/listers/application/v1alpha1" + "github.com/argoproj/argo-cd/v2/pkg/codefresh" servercache "github.com/argoproj/argo-cd/v2/server/cache" argoutil "github.com/argoproj/argo-cd/v2/util/argo" "github.com/argoproj/argo-cd/v2/util/env" diff --git a/event_reporter/reporter/application_event_reporter.go b/event_reporter/reporter/application_event_reporter.go index 96a5a38a9faeb..29189d8a483d2 100644 --- a/event_reporter/reporter/application_event_reporter.go +++ b/event_reporter/reporter/application_event_reporter.go @@ -4,16 +4,17 @@ import ( "context" "encoding/json" "fmt" - "github.com/argoproj/argo-cd/v2/reposerver/apiclient" "math" "reflect" "strings" "time" + "github.com/argoproj/argo-cd/v2/reposerver/apiclient" + argocommon "github.com/argoproj/argo-cd/v2/common" - "github.com/argoproj/argo-cd/v2/event_reporter/codefresh" "github.com/argoproj/argo-cd/v2/event_reporter/metrics" applisters "github.com/argoproj/argo-cd/v2/pkg/client/listers/application/v1alpha1" + "github.com/argoproj/argo-cd/v2/pkg/codefresh" servercache "github.com/argoproj/argo-cd/v2/server/cache" "github.com/argoproj/argo-cd/v2/util/env" @@ -46,7 +47,7 @@ type AppIdentity struct { type applicationEventReporter struct { cache *servercache.Cache - codefreshClient codefresh.CodefreshClient + codefreshClient codefresh.CodefreshClientInterface appLister applisters.ApplicationLister applicationServiceClient appclient.ApplicationClient metricsServer *metrics.MetricsServer @@ -258,7 +259,7 @@ func (s *applicationEventReporter) StreamApplicationEvents( } logWithAppStatus(a, logCtx, ts).Info("sending root application event") - if err := s.codefreshClient.Send(ctx, a.Name, appEvent); err != nil { + if err := s.codefreshClient.SendEvent(ctx, a.Name, appEvent); err != nil { s.metricsServer.IncErroredEventsCounter(metrics.MetricParentAppEventType, metrics.MetricEventDeliveryErrorType, a.Name) return fmt.Errorf("failed to send event for root application %s/%s: %w", a.Namespace, a.Name, err) } @@ -407,7 +408,7 @@ func (s *applicationEventReporter) processResource( appName = rs.Name } - if err := s.codefreshClient.Send(ctx, appName, ev); err != nil { + if err := s.codefreshClient.SendEvent(ctx, appName, ev); err != nil { if strings.Contains(err.Error(), "context deadline exceeded") { return fmt.Errorf("failed to send resource event: %w", err) } diff --git a/event_reporter/reporter/application_event_reporter_test.go b/event_reporter/reporter/application_event_reporter_test.go index 976ef1ae77ea4..31568b9056f7d 100644 --- a/event_reporter/reporter/application_event_reporter_test.go +++ b/event_reporter/reporter/application_event_reporter_test.go @@ -3,13 +3,14 @@ package reporter import ( "context" "encoding/json" - "github.com/argoproj/argo-cd/v2/event_reporter/metrics" - "github.com/argoproj/argo-cd/v2/util/io" - "github.com/argoproj/gitops-engine/pkg/health" "net/http" "testing" "time" + "github.com/argoproj/argo-cd/v2/event_reporter/metrics" + "github.com/argoproj/argo-cd/v2/util/io" + "github.com/argoproj/gitops-engine/pkg/health" + "github.com/ghodss/yaml" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -33,6 +34,7 @@ import ( "github.com/argoproj/argo-cd/v2/pkg/apiclient/application" "github.com/argoproj/argo-cd/v2/pkg/apiclient/events" "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/argoproj/argo-cd/v2/pkg/codefresh" repoApiclient "github.com/argoproj/argo-cd/v2/reposerver/apiclient" "github.com/argoproj/argo-cd/v2/util/argo" ) @@ -229,10 +231,14 @@ type MockCodefreshClient struct { httpClient *http.Client } -func (cc *MockCodefreshClient) Send(ctx context.Context, appName string, event *events.Event) error { +func (cc *MockCodefreshClient) SendEvent(ctx context.Context, appName string, event *events.Event) error { return nil } +func (cc *MockCodefreshClient) SendGraphQL(query codefresh.GraphQLQuery) (*json.RawMessage, error) { + return nil, nil +} + func fakeReporter() *applicationEventReporter { guestbookApp := &appsv1.Application{ TypeMeta: metav1.TypeMeta{ diff --git a/event_reporter/server.go b/event_reporter/server.go index 628c7ad6afa71..a90f1b6f41784 100644 --- a/event_reporter/server.go +++ b/event_reporter/server.go @@ -13,13 +13,13 @@ import ( "time" "github.com/argoproj/argo-cd/v2/common" - codefresh "github.com/argoproj/argo-cd/v2/event_reporter/codefresh" event_reporter "github.com/argoproj/argo-cd/v2/event_reporter/controller" "github.com/argoproj/argo-cd/v2/event_reporter/handlers" "github.com/argoproj/argo-cd/v2/event_reporter/metrics" appclientset "github.com/argoproj/argo-cd/v2/pkg/client/clientset/versioned" appinformer "github.com/argoproj/argo-cd/v2/pkg/client/informers/externalversions" applisters "github.com/argoproj/argo-cd/v2/pkg/client/listers/application/v1alpha1" + codefresh "github.com/argoproj/argo-cd/v2/pkg/codefresh" repoapiclient "github.com/argoproj/argo-cd/v2/reposerver/apiclient" servercache "github.com/argoproj/argo-cd/v2/server/cache" "github.com/argoproj/argo-cd/v2/server/rbacpolicy" diff --git a/manifests/base/kustomization.yaml b/manifests/base/kustomization.yaml index 4e378e1a70a16..50254c28bc233 100644 --- a/manifests/base/kustomization.yaml +++ b/manifests/base/kustomization.yaml @@ -4,7 +4,7 @@ kind: Kustomization images: - name: quay.io/argoproj/argocd newName: quay.io/codefresh/argocd - newTag: v2.8.1-cap-CR-rollout-skip-step-fix + newTag: latest resources: - ./application-controller - ./dex diff --git a/manifests/core-install.yaml b/manifests/core-install.yaml index 5bb1a6e7068cf..ee351cade18d2 100644 --- a/manifests/core-install.yaml +++ b/manifests/core-install.yaml @@ -21451,7 +21451,7 @@ spec: value: /helm-working-dir - name: HELM_DATA_HOME value: /helm-working-dir - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: failureThreshold: 3 @@ -21503,7 +21503,7 @@ spec: - -n - /usr/local/bin/argocd - /var/run/argocd/argocd-cmp-server - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest name: copyutil securityContext: allowPrivilegeEscalation: false @@ -21721,7 +21721,7 @@ spec: key: controller.kubectl.parallelism.limit name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always name: argocd-application-controller ports: diff --git a/manifests/core-install/kustomization.yaml b/manifests/core-install/kustomization.yaml index ce4164115a964..66dd4c93f4989 100644 --- a/manifests/core-install/kustomization.yaml +++ b/manifests/core-install/kustomization.yaml @@ -12,4 +12,4 @@ resources: images: - name: quay.io/argoproj/argocd newName: quay.io/codefresh/argocd - newTag: v2.8.1-cap-CR-rollout-skip-step-fix + newTag: latest diff --git a/manifests/ha/base/kustomization.yaml b/manifests/ha/base/kustomization.yaml index e7ed8cf75f530..c963eaa45dc22 100644 --- a/manifests/ha/base/kustomization.yaml +++ b/manifests/ha/base/kustomization.yaml @@ -12,7 +12,7 @@ patches: images: - name: quay.io/argoproj/argocd newName: quay.io/codefresh/argocd - newTag: v2.8.1-cap-CR-rollout-skip-step-fix + newTag: latest resources: - ../../base/application-controller - ../../base/applicationset-controller diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml index 0261be8b07d5c..8fce67e95f33b 100644 --- a/manifests/ha/install.yaml +++ b/manifests/ha/install.yaml @@ -22425,7 +22425,7 @@ spec: - -n - /usr/local/bin/argocd - /shared/argocd-dex - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always name: copyutil securityContext: @@ -22754,7 +22754,7 @@ spec: value: /helm-working-dir - name: HELM_DATA_HOME value: /helm-working-dir - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: failureThreshold: 3 @@ -22806,7 +22806,7 @@ spec: - -n - /usr/local/bin/argocd - /var/run/argocd/argocd-cmp-server - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest name: copyutil securityContext: allowPrivilegeEscalation: false @@ -23101,7 +23101,7 @@ spec: key: server.enable.proxy.extension name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: httpGet: @@ -23347,7 +23347,7 @@ spec: key: controller.kubectl.parallelism.limit name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always name: argocd-application-controller ports: diff --git a/manifests/ha/namespace-install.yaml b/manifests/ha/namespace-install.yaml index 9c1dcb76c92e4..e5de159ccc6a8 100644 --- a/manifests/ha/namespace-install.yaml +++ b/manifests/ha/namespace-install.yaml @@ -1663,7 +1663,7 @@ spec: - -n - /usr/local/bin/argocd - /shared/argocd-dex - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always name: copyutil securityContext: @@ -1992,7 +1992,7 @@ spec: value: /helm-working-dir - name: HELM_DATA_HOME value: /helm-working-dir - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: failureThreshold: 3 @@ -2044,7 +2044,7 @@ spec: - -n - /usr/local/bin/argocd - /var/run/argocd/argocd-cmp-server - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest name: copyutil securityContext: allowPrivilegeEscalation: false @@ -2339,7 +2339,7 @@ spec: key: server.enable.proxy.extension name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: httpGet: @@ -2585,7 +2585,7 @@ spec: key: controller.kubectl.parallelism.limit name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always name: argocd-application-controller ports: diff --git a/manifests/install.yaml b/manifests/install.yaml index 7a00b6eef637e..c15529ad56aec 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -21627,7 +21627,7 @@ spec: - -n - /usr/local/bin/argocd - /shared/argocd-dex - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always name: copyutil securityContext: @@ -21905,7 +21905,7 @@ spec: value: /helm-working-dir - name: HELM_DATA_HOME value: /helm-working-dir - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: failureThreshold: 3 @@ -21957,7 +21957,7 @@ spec: - -n - /usr/local/bin/argocd - /var/run/argocd/argocd-cmp-server - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest name: copyutil securityContext: allowPrivilegeEscalation: false @@ -22243,7 +22243,7 @@ spec: key: server.enable.proxy.extension name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: httpGet: @@ -22489,7 +22489,7 @@ spec: key: controller.kubectl.parallelism.limit name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always name: argocd-application-controller ports: @@ -22576,6 +22576,12 @@ spec: secretKeyRef: key: token name: argocd-token + - name: ARGOCD_APPLICATION_NAMESPACES + valueFrom: + configMapKeyRef: + key: application.namespaces + name: argocd-cmd-params-cm + optional: true - name: CODEFRESH_URL valueFrom: configMapKeyRef: @@ -22647,7 +22653,7 @@ spec: key: event-reporter.metrics.listen.address name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: httpGet: diff --git a/manifests/namespace-install.yaml b/manifests/namespace-install.yaml index 088a3bd5658f5..1c346699f5b22 100644 --- a/manifests/namespace-install.yaml +++ b/manifests/namespace-install.yaml @@ -865,7 +865,7 @@ spec: - -n - /usr/local/bin/argocd - /shared/argocd-dex - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always name: copyutil securityContext: @@ -1143,7 +1143,7 @@ spec: value: /helm-working-dir - name: HELM_DATA_HOME value: /helm-working-dir - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: failureThreshold: 3 @@ -1195,7 +1195,7 @@ spec: - -n - /usr/local/bin/argocd - /var/run/argocd/argocd-cmp-server - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest name: copyutil securityContext: allowPrivilegeEscalation: false @@ -1481,7 +1481,7 @@ spec: key: server.enable.proxy.extension name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: httpGet: @@ -1727,7 +1727,7 @@ spec: key: controller.kubectl.parallelism.limit name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always name: argocd-application-controller ports: @@ -1814,6 +1814,12 @@ spec: secretKeyRef: key: token name: argocd-token + - name: ARGOCD_APPLICATION_NAMESPACES + valueFrom: + configMapKeyRef: + key: application.namespaces + name: argocd-cmd-params-cm + optional: true - name: CODEFRESH_URL valueFrom: configMapKeyRef: @@ -1885,7 +1891,7 @@ spec: key: event-reporter.metrics.listen.address name: argocd-cmd-params-cm optional: true - image: quay.io/codefresh/argocd:v2.8.1-cap-CR-rollout-skip-step-fix + image: quay.io/codefresh/argocd:latest imagePullPolicy: Always livenessProbe: httpGet: diff --git a/pkg/codefresh/api_graphql_requests.go b/pkg/codefresh/api_graphql_requests.go new file mode 100644 index 0000000000000..33850e13b7dc7 --- /dev/null +++ b/pkg/codefresh/api_graphql_requests.go @@ -0,0 +1,54 @@ +package codefresh + +import ( + "encoding/json" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +type CodefreshGraphQLRequests struct { + client CodefreshClientInterface +} + +type CodefreshGraphQLInterface interface { + GetApplicationConfiguration(app *metav1.ObjectMeta) (*ApplicationConfiguration, error) +} + +// GetApplicationConfiguration method to get application configuration +func (r *CodefreshGraphQLRequests) GetApplicationConfiguration(app *metav1.ObjectMeta) (*ApplicationConfiguration, error) { + type ResponseData struct { + ApplicationConfigurationByRuntime ApplicationConfiguration `json:"applicationConfigurationByRuntime"` + } + + query := GraphQLQuery{ + Query: ` + query ($applicationMetadata: Object!) { + applicationConfigurationByRuntime(applicationMetadata: $applicationMetadata) { + versionSource { + file + jsonPath + } + } + } + `, + Variables: map[string]interface{}{ + "applicationMetadata": app, + }, + } + + responseJSON, err := r.client.SendGraphQL(query) + if err != nil { + return nil, err + } + + var responseData ResponseData + if err := json.Unmarshal(*responseJSON, &responseData); err != nil { + return nil, err + } + + return &responseData.ApplicationConfigurationByRuntime, nil +} + +func NewCodefreshGraphQLRequests(client CodefreshClientInterface) CodefreshGraphQLInterface { + return &CodefreshGraphQLRequests{client} +} diff --git a/pkg/codefresh/client.go b/pkg/codefresh/client.go new file mode 100644 index 0000000000000..21d37e31c92c7 --- /dev/null +++ b/pkg/codefresh/client.go @@ -0,0 +1,119 @@ +package codefresh + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "time" + + "github.com/argoproj/argo-cd/v2/pkg/apiclient/events" + "github.com/pkg/errors" + log "github.com/sirupsen/logrus" +) + +type CodefreshConfig struct { + BaseURL string + AuthToken string +} + +type CodefreshClient struct { + cfConfig *CodefreshConfig + httpClient *http.Client +} + +type CodefreshClientInterface interface { + SendEvent(ctx context.Context, appName string, event *events.Event) error + SendGraphQL(query GraphQLQuery) (*json.RawMessage, error) +} + +// GraphQLQuery structure to form a GraphQL query +type GraphQLQuery struct { + Query string `json:"query"` + Variables map[string]interface{} `json:"variables"` +} + +func (c *CodefreshClient) SendEvent(ctx context.Context, appName string, event *events.Event) error { + return WithRetry(&DefaultBackoff, func() error { + url := c.cfConfig.BaseURL + "/2.0/api/events" + log.Infof("Sending application event for %s", appName) + + wrappedPayload := map[string]json.RawMessage{ + "data": event.Payload, + } + + newPayloadBytes, err := json.Marshal(wrappedPayload) + if err != nil { + return err + } + + req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(newPayloadBytes)) + if err != nil { + return err + } + + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Authorization", c.cfConfig.AuthToken) + + res, err := c.httpClient.Do(req) + if err != nil { + return errors.Wrap(err, fmt.Sprintf("failed reporting to Codefresh, event: %s", string(event.Payload))) + } + defer res.Body.Close() + + isStatusOK := res.StatusCode >= 200 && res.StatusCode < 300 + if !isStatusOK { + b, _ := io.ReadAll(res.Body) + return errors.Errorf("failed reporting to Codefresh, got response: status code %d and body %s, original request body: %s", + res.StatusCode, string(b), string(event.Payload)) + } + + log.Infof("Application event for %s successfully sent", appName) + return nil + }) +} + +// sendGraphQLRequest function to send the GraphQL request and handle the response +func (c *CodefreshClient) SendGraphQL(query GraphQLQuery) (*json.RawMessage, error) { + queryJSON, err := json.Marshal(query) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", c.cfConfig.BaseURL+"/2.0/api/graphql", bytes.NewBuffer(queryJSON)) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Authorization", c.cfConfig.AuthToken) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + if resp.StatusCode >= 400 { + return nil, errors.New(resp.Status) + } + defer resp.Body.Close() + + var responseStruct struct { + Data json.RawMessage `json:"data"` + } + if err := json.NewDecoder(resp.Body).Decode(&responseStruct); err != nil { + return nil, err + } + + return &responseStruct.Data, nil +} + +func NewCodefreshClient(cfConfig *CodefreshConfig) CodefreshClientInterface { + return &CodefreshClient{ + cfConfig: cfConfig, + httpClient: &http.Client{ + Timeout: 30 * time.Second, + }, + } +} diff --git a/pkg/codefresh/types.go b/pkg/codefresh/types.go new file mode 100644 index 0000000000000..513a45f012e3d --- /dev/null +++ b/pkg/codefresh/types.go @@ -0,0 +1,11 @@ +package codefresh + +// VersionSource structure for the versionSource field +type VersionSource struct { + File string `json:"file"` + JsonPath string `json:"jsonPath"` +} + +type ApplicationConfiguration struct { + VersionSource VersionSource `json:"versionSource"` +} diff --git a/event_reporter/codefresh/utils.go b/pkg/codefresh/utils.go similarity index 100% rename from event_reporter/codefresh/utils.go rename to pkg/codefresh/utils.go diff --git a/pkg/version_config_manager/version_config_manager.go b/pkg/version_config_manager/version_config_manager.go index 46ba14d83a0fe..4a4730d8b07e5 100644 --- a/pkg/version_config_manager/version_config_manager.go +++ b/pkg/version_config_manager/version_config_manager.go @@ -1,87 +1,74 @@ package version_config_manager import ( - "errors" - + "github.com/argoproj/argo-cd/v2/pkg/codefresh" + "github.com/argoproj/argo-cd/v2/reposerver/cache" log "github.com/sirupsen/logrus" -) - -const ( - CodefreshAPIProviderType = "CodereshAPI" - ConfigMapProviderType = "ConfigMap" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) type VersionConfig struct { - ProductLabel string `json:"productLabel"` JsonPath string `json:"jsonPath"` ResourceName string `json:"resourceName"` } -type ConfigProvider interface { - GetConfig() (*VersionConfig, error) -} +func (v *VersionConfigManager) GetVersionConfig(app *metav1.ObjectMeta) (*VersionConfig, error) { + var appConfig *codefresh.ApplicationConfiguration -type CodereshAPIConfigProvider struct { - CodereshAPIEndpoint string -} + // Get from cache + appConfig, err := v.cache.GetCfAppConfig(app.Namespace, app.Name) + if err == nil { + log.Infof("CfAppConfig cache hit: '%s'", cache.CfAppConfigCacheKey(app.Namespace, app.Name)) + log.Infof("CfAppConfig. Use config from cache. File: %s, jsonPath: %s", appConfig.VersionSource.File, appConfig.VersionSource.JsonPath) + return &VersionConfig{ + JsonPath: appConfig.VersionSource.JsonPath, + ResourceName: appConfig.VersionSource.File, + }, nil + } -type ConfigMapProvider struct { - ConfigMapPath string -} + if err != nil { + log.Errorf("CfAppConfig cache get error for '%s': %v", cache.CfAppConfigCacheKey(app.Namespace, app.Name), err) + } -func (codereshAPI *CodereshAPIConfigProvider) GetConfig() (*VersionConfig, error) { - // Implement logic to fetch config from the CodereshAPI here. - // For this example, we'll just return a mock config. - return &VersionConfig{ - ProductLabel: "ProductLabelName=ProductName", - JsonPath: "{.appVersion}", - ResourceName: "Chart.yaml", - }, nil -} + // Get from Codefresh API + appConfig, err = v.requests.GetApplicationConfiguration(app) + if err != nil { + log.Infof("Failed to get application config from API: %v", err) + return nil, err + } + + if appConfig != nil { + log.Infof("CfAppConfig. Use config from API. File: %s, jsonPath: %s", appConfig.VersionSource.File, appConfig.VersionSource.JsonPath) + // Set to cache + err = v.cache.SetCfAppConfig(app.Namespace, app.Name, appConfig) + if err == nil { + log.Infof("CfAppConfig saved to cache hit: '%s'", cache.CfAppConfigCacheKey(app.Namespace, app.Name)) + } else { + log.Errorf("CfAppConfig cache set error for '%s': %v", cache.CfAppConfigCacheKey(app.Namespace, app.Name), err) + } + + return &VersionConfig{ + JsonPath: appConfig.VersionSource.JsonPath, + ResourceName: appConfig.VersionSource.File, + }, nil + } -func (cm *ConfigMapProvider) GetConfig() (*VersionConfig, error) { - // Implement logic to fetch config from the config map here. - // For this example, we'll just return a mock config. + // Default value + log.Infof("Used default CfAppConfig for: '%s'", cache.CfAppConfigCacheKey(app.Namespace, app.Name)) return &VersionConfig{ - ProductLabel: "ProductLabelName=ProductName", JsonPath: "{.appVersion}", ResourceName: "Chart.yaml", }, nil } type VersionConfigManager struct { - provider ConfigProvider -} - -func NewVersionConfigManager(providerType string, source string) (*VersionConfigManager, error) { - var provider ConfigProvider - switch providerType { - case CodefreshAPIProviderType: - provider = &CodereshAPIConfigProvider{CodereshAPIEndpoint: source} - case ConfigMapProviderType: - provider = &ConfigMapProvider{ConfigMapPath: source} - default: - return nil, errors.New("Invalid provider type") - } - return &VersionConfigManager{provider: provider}, nil + requests codefresh.CodefreshGraphQLInterface + cache *cache.Cache } -func (v *VersionConfigManager) ObtainConfig() (*VersionConfig, error) { - return v.provider.GetConfig() -} - -func GetVersionConfig() *VersionConfig { - versionConfigManager, err := NewVersionConfigManager("ConfigMap", "some-product-cm") - if err != nil { - log.Errorf("ERROR: Failed to create VersionConfigManager: %v", err) - return nil +func NewVersionConfigManager(requests codefresh.CodefreshGraphQLInterface, cache *cache.Cache) *VersionConfigManager { + return &VersionConfigManager{ + requests, + cache, } - - versionConfig, err := versionConfigManager.ObtainConfig() - if err != nil { - log.Printf("Failed to obtain config: %v", err) - return nil - } - - return versionConfig } diff --git a/reposerver/apiclient/mocks/RepoServerService_GenerateManifestWithFilesClient.go b/reposerver/apiclient/mocks/RepoServerService_GenerateManifestWithFilesClient.go index 79151a7ca1f58..c71b785cb2ee0 100644 --- a/reposerver/apiclient/mocks/RepoServerService_GenerateManifestWithFilesClient.go +++ b/reposerver/apiclient/mocks/RepoServerService_GenerateManifestWithFilesClient.go @@ -107,8 +107,8 @@ func (_m *RepoServerService_GenerateManifestWithFilesClient) RecvMsg(m interface return r0 } -// Send provides a mock function with given fields: _a0 -func (_m *RepoServerService_GenerateManifestWithFilesClient) Send(_a0 *apiclient.ManifestRequestWithFiles) error { +// SendEvent provides a mock function with given fields: _a0 +func (_m *RepoServerService_GenerateManifestWithFilesClient) SendEvent(_a0 *apiclient.ManifestRequestWithFiles) error { ret := _m.Called(_a0) var r0 error diff --git a/reposerver/apiclient/repository.pb.go b/reposerver/apiclient/repository.pb.go index 0cbfefb5339bd..5e5ed0c66edd6 100644 --- a/reposerver/apiclient/repository.pb.go +++ b/reposerver/apiclient/repository.pb.go @@ -30,69 +30,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type VersionConfig struct { - ProductLabel string `protobuf:"bytes,1,opt,name=productLabel,proto3" json:"productLabel,omitempty"` - JsonPath string `protobuf:"bytes,2,opt,name=jsonPath,proto3" json:"jsonPath,omitempty"` - ResourceName string `protobuf:"bytes,3,opt,name=resourceName,proto3" json:"resourceName,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *VersionConfig) Reset() { *m = VersionConfig{} } -func (m *VersionConfig) String() string { return proto.CompactTextString(m) } -func (*VersionConfig) ProtoMessage() {} -func (*VersionConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{0} -} -func (m *VersionConfig) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *VersionConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_VersionConfig.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *VersionConfig) XXX_Merge(src proto.Message) { - xxx_messageInfo_VersionConfig.Merge(m, src) -} -func (m *VersionConfig) XXX_Size() int { - return m.Size() -} -func (m *VersionConfig) XXX_DiscardUnknown() { - xxx_messageInfo_VersionConfig.DiscardUnknown(m) -} - -var xxx_messageInfo_VersionConfig proto.InternalMessageInfo - -func (m *VersionConfig) GetProductLabel() string { - if m != nil { - return m.ProductLabel - } - return "" -} - -func (m *VersionConfig) GetJsonPath() string { - if m != nil { - return m.JsonPath - } - return "" -} - -func (m *VersionConfig) GetResourceName() string { - if m != nil { - return m.ResourceName - } - return "" -} - // ManifestRequest is a query for manifest generation. type ManifestRequest struct { Repo *v1alpha1.Repository `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` @@ -111,15 +48,15 @@ type ManifestRequest struct { KubeVersion string `protobuf:"bytes,14,opt,name=kubeVersion,proto3" json:"kubeVersion,omitempty"` ApiVersions []string `protobuf:"bytes,15,rep,name=apiVersions,proto3" json:"apiVersions,omitempty"` // Request to verify the signature when generating the manifests (only for Git repositories) - VerifySignature bool `protobuf:"varint,16,opt,name=verifySignature,proto3" json:"verifySignature,omitempty"` - HelmRepoCreds []*v1alpha1.RepoCreds `protobuf:"bytes,17,rep,name=helmRepoCreds,proto3" json:"helmRepoCreds,omitempty"` - NoRevisionCache bool `protobuf:"varint,18,opt,name=noRevisionCache,proto3" json:"noRevisionCache,omitempty"` - TrackingMethod string `protobuf:"bytes,19,opt,name=trackingMethod,proto3" json:"trackingMethod,omitempty"` - EnabledSourceTypes map[string]bool `protobuf:"bytes,20,rep,name=enabledSourceTypes,proto3" json:"enabledSourceTypes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - HelmOptions *v1alpha1.HelmOptions `protobuf:"bytes,21,opt,name=helmOptions,proto3" json:"helmOptions,omitempty"` - HasMultipleSources bool `protobuf:"varint,22,opt,name=hasMultipleSources,proto3" json:"hasMultipleSources,omitempty"` - RefSources map[string]*v1alpha1.RefTarget `protobuf:"bytes,23,rep,name=refSources,proto3" json:"refSources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - VersionConfig *VersionConfig `protobuf:"bytes,24,opt,name=versionConfig,proto3" json:"versionConfig,omitempty"` + VerifySignature bool `protobuf:"varint,16,opt,name=verifySignature,proto3" json:"verifySignature,omitempty"` + HelmRepoCreds []*v1alpha1.RepoCreds `protobuf:"bytes,17,rep,name=helmRepoCreds,proto3" json:"helmRepoCreds,omitempty"` + NoRevisionCache bool `protobuf:"varint,18,opt,name=noRevisionCache,proto3" json:"noRevisionCache,omitempty"` + TrackingMethod string `protobuf:"bytes,19,opt,name=trackingMethod,proto3" json:"trackingMethod,omitempty"` + EnabledSourceTypes map[string]bool `protobuf:"bytes,20,rep,name=enabledSourceTypes,proto3" json:"enabledSourceTypes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + HelmOptions *v1alpha1.HelmOptions `protobuf:"bytes,21,opt,name=helmOptions,proto3" json:"helmOptions,omitempty"` + HasMultipleSources bool `protobuf:"varint,22,opt,name=hasMultipleSources,proto3" json:"hasMultipleSources,omitempty"` + RefSources map[string]*v1alpha1.RefTarget `protobuf:"bytes,23,rep,name=refSources,proto3" json:"refSources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ApplicationMetadata *v1.ObjectMeta `protobuf:"bytes,24,opt,name=applicationMetadata,proto3" json:"applicationMetadata,omitempty"` // This is used to surface "source not permitted" errors for Helm repositories ProjectSourceRepos []string `protobuf:"bytes,25,rep,name=projectSourceRepos,proto3" json:"projectSourceRepos,omitempty"` // This is used to surface "source not permitted" errors for Helm repositories @@ -133,7 +70,7 @@ func (m *ManifestRequest) Reset() { *m = ManifestRequest{} } func (m *ManifestRequest) String() string { return proto.CompactTextString(m) } func (*ManifestRequest) ProtoMessage() {} func (*ManifestRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{1} + return fileDescriptor_dd8723cfcc820480, []int{0} } func (m *ManifestRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -302,9 +239,9 @@ func (m *ManifestRequest) GetRefSources() map[string]*v1alpha1.RefTarget { return nil } -func (m *ManifestRequest) GetVersionConfig() *VersionConfig { +func (m *ManifestRequest) GetApplicationMetadata() *v1.ObjectMeta { if m != nil { - return m.VersionConfig + return m.ApplicationMetadata } return nil } @@ -338,7 +275,7 @@ func (m *ManifestRequestWithFiles) Reset() { *m = ManifestRequestWithFil func (m *ManifestRequestWithFiles) String() string { return proto.CompactTextString(m) } func (*ManifestRequestWithFiles) ProtoMessage() {} func (*ManifestRequestWithFiles) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{2} + return fileDescriptor_dd8723cfcc820480, []int{1} } func (m *ManifestRequestWithFiles) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -438,7 +375,7 @@ func (m *ManifestFileMetadata) Reset() { *m = ManifestFileMetadata{} } func (m *ManifestFileMetadata) String() string { return proto.CompactTextString(m) } func (*ManifestFileMetadata) ProtoMessage() {} func (*ManifestFileMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{3} + return fileDescriptor_dd8723cfcc820480, []int{2} } func (m *ManifestFileMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -492,7 +429,7 @@ func (m *ManifestFileChunk) Reset() { *m = ManifestFileChunk{} } func (m *ManifestFileChunk) String() string { return proto.CompactTextString(m) } func (*ManifestFileChunk) ProtoMessage() {} func (*ManifestFileChunk) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{4} + return fileDescriptor_dd8723cfcc820480, []int{3} } func (m *ManifestFileChunk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -540,7 +477,7 @@ func (m *TestRepositoryRequest) Reset() { *m = TestRepositoryRequest{} } func (m *TestRepositoryRequest) String() string { return proto.CompactTextString(m) } func (*TestRepositoryRequest) ProtoMessage() {} func (*TestRepositoryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{5} + return fileDescriptor_dd8723cfcc820480, []int{4} } func (m *TestRepositoryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -589,7 +526,7 @@ func (m *TestRepositoryResponse) Reset() { *m = TestRepositoryResponse{} func (m *TestRepositoryResponse) String() string { return proto.CompactTextString(m) } func (*TestRepositoryResponse) ProtoMessage() {} func (*TestRepositoryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{6} + return fileDescriptor_dd8723cfcc820480, []int{5} } func (m *TestRepositoryResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -639,7 +576,7 @@ func (m *ResolveRevisionRequest) Reset() { *m = ResolveRevisionRequest{} func (m *ResolveRevisionRequest) String() string { return proto.CompactTextString(m) } func (*ResolveRevisionRequest) ProtoMessage() {} func (*ResolveRevisionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{7} + return fileDescriptor_dd8723cfcc820480, []int{6} } func (m *ResolveRevisionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -703,7 +640,7 @@ func (m *ResolveRevisionResponse) Reset() { *m = ResolveRevisionResponse func (m *ResolveRevisionResponse) String() string { return proto.CompactTextString(m) } func (*ResolveRevisionResponse) ProtoMessage() {} func (*ResolveRevisionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{8} + return fileDescriptor_dd8723cfcc820480, []int{7} } func (m *ResolveRevisionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -765,7 +702,7 @@ func (m *Manifest) Reset() { *m = Manifest{} } func (m *Manifest) String() string { return proto.CompactTextString(m) } func (*Manifest) ProtoMessage() {} func (*Manifest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{9} + return fileDescriptor_dd8723cfcc820480, []int{8} } func (m *Manifest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -838,7 +775,7 @@ func (m *Dependencies) Reset() { *m = Dependencies{} } func (m *Dependencies) String() string { return proto.CompactTextString(m) } func (*Dependencies) ProtoMessage() {} func (*Dependencies) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{10} + return fileDescriptor_dd8723cfcc820480, []int{9} } func (m *Dependencies) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -902,7 +839,7 @@ func (m *ApplicationVersions) Reset() { *m = ApplicationVersions{} } func (m *ApplicationVersions) String() string { return proto.CompactTextString(m) } func (*ApplicationVersions) ProtoMessage() {} func (*ApplicationVersions) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{11} + return fileDescriptor_dd8723cfcc820480, []int{10} } func (m *ApplicationVersions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -968,7 +905,7 @@ func (m *ManifestResponse) Reset() { *m = ManifestResponse{} } func (m *ManifestResponse) String() string { return proto.CompactTextString(m) } func (*ManifestResponse) ProtoMessage() {} func (*ManifestResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{12} + return fileDescriptor_dd8723cfcc820480, []int{11} } func (m *ManifestResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1078,7 +1015,7 @@ func (m *ListRefsRequest) Reset() { *m = ListRefsRequest{} } func (m *ListRefsRequest) String() string { return proto.CompactTextString(m) } func (*ListRefsRequest) ProtoMessage() {} func (*ListRefsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{13} + return fileDescriptor_dd8723cfcc820480, []int{12} } func (m *ListRefsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1127,7 +1064,7 @@ func (m *Refs) Reset() { *m = Refs{} } func (m *Refs) String() string { return proto.CompactTextString(m) } func (*Refs) ProtoMessage() {} func (*Refs) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{14} + return fileDescriptor_dd8723cfcc820480, []int{13} } func (m *Refs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1184,7 +1121,7 @@ func (m *ListAppsRequest) Reset() { *m = ListAppsRequest{} } func (m *ListAppsRequest) String() string { return proto.CompactTextString(m) } func (*ListAppsRequest) ProtoMessage() {} func (*ListAppsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{15} + return fileDescriptor_dd8723cfcc820480, []int{14} } func (m *ListAppsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1246,7 +1183,7 @@ func (m *AppList) Reset() { *m = AppList{} } func (m *AppList) String() string { return proto.CompactTextString(m) } func (*AppList) ProtoMessage() {} func (*AppList) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{16} + return fileDescriptor_dd8723cfcc820480, []int{15} } func (m *AppList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1293,7 +1230,7 @@ func (m *PluginInfo) Reset() { *m = PluginInfo{} } func (m *PluginInfo) String() string { return proto.CompactTextString(m) } func (*PluginInfo) ProtoMessage() {} func (*PluginInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{17} + return fileDescriptor_dd8723cfcc820480, []int{16} } func (m *PluginInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1341,7 +1278,7 @@ func (m *PluginList) Reset() { *m = PluginList{} } func (m *PluginList) String() string { return proto.CompactTextString(m) } func (*PluginList) ProtoMessage() {} func (*PluginList) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{18} + return fileDescriptor_dd8723cfcc820480, []int{17} } func (m *PluginList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1399,7 +1336,7 @@ func (m *RepoServerAppDetailsQuery) Reset() { *m = RepoServerAppDetailsQ func (m *RepoServerAppDetailsQuery) String() string { return proto.CompactTextString(m) } func (*RepoServerAppDetailsQuery) ProtoMessage() {} func (*RepoServerAppDetailsQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{19} + return fileDescriptor_dd8723cfcc820480, []int{18} } func (m *RepoServerAppDetailsQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1521,7 +1458,7 @@ func (m *RepoAppDetailsResponse) Reset() { *m = RepoAppDetailsResponse{} func (m *RepoAppDetailsResponse) String() string { return proto.CompactTextString(m) } func (*RepoAppDetailsResponse) ProtoMessage() {} func (*RepoAppDetailsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{20} + return fileDescriptor_dd8723cfcc820480, []int{19} } func (m *RepoAppDetailsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1601,7 +1538,7 @@ func (m *RepoServerRevisionMetadataRequest) Reset() { *m = RepoServerRev func (m *RepoServerRevisionMetadataRequest) String() string { return proto.CompactTextString(m) } func (*RepoServerRevisionMetadataRequest) ProtoMessage() {} func (*RepoServerRevisionMetadataRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{21} + return fileDescriptor_dd8723cfcc820480, []int{20} } func (m *RepoServerRevisionMetadataRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1667,7 +1604,7 @@ func (m *RepoServerRevisionChartDetailsRequest) Reset() { *m = RepoServe func (m *RepoServerRevisionChartDetailsRequest) String() string { return proto.CompactTextString(m) } func (*RepoServerRevisionChartDetailsRequest) ProtoMessage() {} func (*RepoServerRevisionChartDetailsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{22} + return fileDescriptor_dd8723cfcc820480, []int{21} } func (m *RepoServerRevisionChartDetailsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1736,7 +1673,7 @@ func (m *HelmAppSpec) Reset() { *m = HelmAppSpec{} } func (m *HelmAppSpec) String() string { return proto.CompactTextString(m) } func (*HelmAppSpec) ProtoMessage() {} func (*HelmAppSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{23} + return fileDescriptor_dd8723cfcc820480, []int{22} } func (m *HelmAppSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1813,7 +1750,7 @@ func (m *KustomizeAppSpec) Reset() { *m = KustomizeAppSpec{} } func (m *KustomizeAppSpec) String() string { return proto.CompactTextString(m) } func (*KustomizeAppSpec) ProtoMessage() {} func (*KustomizeAppSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{24} + return fileDescriptor_dd8723cfcc820480, []int{23} } func (m *KustomizeAppSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1860,7 +1797,7 @@ func (m *DirectoryAppSpec) Reset() { *m = DirectoryAppSpec{} } func (m *DirectoryAppSpec) String() string { return proto.CompactTextString(m) } func (*DirectoryAppSpec) ProtoMessage() {} func (*DirectoryAppSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{25} + return fileDescriptor_dd8723cfcc820480, []int{24} } func (m *DirectoryAppSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1920,7 +1857,7 @@ func (m *ParameterAnnouncement) Reset() { *m = ParameterAnnouncement{} } func (m *ParameterAnnouncement) String() string { return proto.CompactTextString(m) } func (*ParameterAnnouncement) ProtoMessage() {} func (*ParameterAnnouncement) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{26} + return fileDescriptor_dd8723cfcc820480, []int{25} } func (m *ParameterAnnouncement) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2024,7 +1961,7 @@ func (m *PluginAppSpec) Reset() { *m = PluginAppSpec{} } func (m *PluginAppSpec) String() string { return proto.CompactTextString(m) } func (*PluginAppSpec) ProtoMessage() {} func (*PluginAppSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{27} + return fileDescriptor_dd8723cfcc820480, []int{26} } func (m *PluginAppSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2071,7 +2008,7 @@ func (m *HelmChartsRequest) Reset() { *m = HelmChartsRequest{} } func (m *HelmChartsRequest) String() string { return proto.CompactTextString(m) } func (*HelmChartsRequest) ProtoMessage() {} func (*HelmChartsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{28} + return fileDescriptor_dd8723cfcc820480, []int{27} } func (m *HelmChartsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2119,7 +2056,7 @@ func (m *HelmChart) Reset() { *m = HelmChart{} } func (m *HelmChart) String() string { return proto.CompactTextString(m) } func (*HelmChart) ProtoMessage() {} func (*HelmChart) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{29} + return fileDescriptor_dd8723cfcc820480, []int{28} } func (m *HelmChart) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2173,7 +2110,7 @@ func (m *HelmChartsResponse) Reset() { *m = HelmChartsResponse{} } func (m *HelmChartsResponse) String() string { return proto.CompactTextString(m) } func (*HelmChartsResponse) ProtoMessage() {} func (*HelmChartsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{30} + return fileDescriptor_dd8723cfcc820480, []int{29} } func (m *HelmChartsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2224,7 +2161,7 @@ func (m *GitFilesRequest) Reset() { *m = GitFilesRequest{} } func (m *GitFilesRequest) String() string { return proto.CompactTextString(m) } func (*GitFilesRequest) ProtoMessage() {} func (*GitFilesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{31} + return fileDescriptor_dd8723cfcc820480, []int{30} } func (m *GitFilesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2300,7 +2237,7 @@ func (m *GitFilesResponse) Reset() { *m = GitFilesResponse{} } func (m *GitFilesResponse) String() string { return proto.CompactTextString(m) } func (*GitFilesResponse) ProtoMessage() {} func (*GitFilesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{32} + return fileDescriptor_dd8723cfcc820480, []int{31} } func (m *GitFilesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2349,7 +2286,7 @@ func (m *GitDirectoriesRequest) Reset() { *m = GitDirectoriesRequest{} } func (m *GitDirectoriesRequest) String() string { return proto.CompactTextString(m) } func (*GitDirectoriesRequest) ProtoMessage() {} func (*GitDirectoriesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{33} + return fileDescriptor_dd8723cfcc820480, []int{32} } func (m *GitDirectoriesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2411,7 +2348,7 @@ func (m *GitDirectoriesResponse) Reset() { *m = GitDirectoriesResponse{} func (m *GitDirectoriesResponse) String() string { return proto.CompactTextString(m) } func (*GitDirectoriesResponse) ProtoMessage() {} func (*GitDirectoriesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{34} + return fileDescriptor_dd8723cfcc820480, []int{33} } func (m *GitDirectoriesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2470,7 +2407,7 @@ func (m *UpdateRevisionForPathsRequest) Reset() { *m = UpdateRevisionFor func (m *UpdateRevisionForPathsRequest) String() string { return proto.CompactTextString(m) } func (*UpdateRevisionForPathsRequest) ProtoMessage() {} func (*UpdateRevisionForPathsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{35} + return fileDescriptor_dd8723cfcc820480, []int{34} } func (m *UpdateRevisionForPathsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2601,7 +2538,7 @@ func (m *UpdateRevisionForPathsResponse) Reset() { *m = UpdateRevisionFo func (m *UpdateRevisionForPathsResponse) String() string { return proto.CompactTextString(m) } func (*UpdateRevisionForPathsResponse) ProtoMessage() {} func (*UpdateRevisionForPathsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_dd8723cfcc820480, []int{36} + return fileDescriptor_dd8723cfcc820480, []int{35} } func (m *UpdateRevisionForPathsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2638,7 +2575,6 @@ func (m *UpdateRevisionForPathsResponse) GetChanges() bool { } func init() { - proto.RegisterType((*VersionConfig)(nil), "repository.VersionConfig") proto.RegisterType((*ManifestRequest)(nil), "repository.ManifestRequest") proto.RegisterMapType((map[string]bool)(nil), "repository.ManifestRequest.EnabledSourceTypesEntry") proto.RegisterMapType((map[string]*v1alpha1.RefTarget)(nil), "repository.ManifestRequest.RefSourcesEntry") @@ -2691,168 +2627,166 @@ func init() { } var fileDescriptor_dd8723cfcc820480 = []byte{ - // 2562 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x1a, 0xdb, 0x72, 0x1c, 0x47, - 0x55, 0xab, 0xd5, 0x65, 0xf7, 0xe8, 0xde, 0x96, 0xe5, 0xf1, 0x26, 0x16, 0xca, 0x90, 0xb8, 0x12, - 0x25, 0x99, 0x2d, 0x29, 0xe4, 0x82, 0x63, 0x92, 0x52, 0x7c, 0x91, 0x7c, 0x91, 0xad, 0x8c, 0x1d, - 0x28, 0x07, 0x03, 0xd5, 0x9a, 0x6d, 0xed, 0xb6, 0x77, 0x2e, 0xed, 0xb9, 0xac, 0x4b, 0xae, 0xa2, - 0x0a, 0x0a, 0x8a, 0x2a, 0x7e, 0x80, 0x07, 0x7e, 0x81, 0x17, 0x5e, 0x28, 0x9e, 0x28, 0x1e, 0xa8, - 0x14, 0x3c, 0x52, 0xfc, 0x00, 0x94, 0xbf, 0x84, 0xea, 0xcb, 0xcc, 0xf4, 0xcc, 0x8e, 0xd6, 0x0a, - 0xb2, 0x15, 0xe0, 0x45, 0xea, 0x3e, 0x73, 0xfa, 0xdc, 0xfb, 0xf4, 0x39, 0xdd, 0x0b, 0x17, 0x43, - 0xc2, 0x82, 0x88, 0x84, 0x03, 0x12, 0xb6, 0xc5, 0x90, 0xc6, 0x41, 0x78, 0xa8, 0x0d, 0x2d, 0x16, - 0x06, 0x71, 0x80, 0x20, 0x87, 0xb4, 0xcc, 0xfe, 0x47, 0x91, 0x45, 0x83, 0x36, 0x66, 0xb4, 0xed, - 0x04, 0x21, 0x69, 0x0f, 0x36, 0xda, 0x5d, 0xe2, 0x93, 0x10, 0xc7, 0xa4, 0x23, 0xf1, 0x5b, 0xdf, - 0xc9, 0x71, 0x3c, 0xec, 0xf4, 0xa8, 0x4f, 0xc2, 0xc3, 0x36, 0xeb, 0x77, 0x39, 0x20, 0x6a, 0x7b, - 0x24, 0xc6, 0x55, 0xab, 0x6e, 0x77, 0x69, 0xdc, 0x4b, 0xf6, 0x2d, 0x27, 0xf0, 0xda, 0x38, 0xec, - 0x06, 0x2c, 0x0c, 0x1e, 0x89, 0xc1, 0xbb, 0x4e, 0xa7, 0x3d, 0xd8, 0xcc, 0x09, 0x60, 0xc6, 0x5c, - 0xea, 0xe0, 0x98, 0x06, 0x7e, 0x7b, 0xb0, 0x81, 0x5d, 0xd6, 0xc3, 0xc3, 0xd4, 0x5e, 0xe9, 0x06, - 0x41, 0xd7, 0x25, 0x6d, 0x31, 0xdb, 0x4f, 0x0e, 0xda, 0xc4, 0x63, 0xb1, 0x52, 0xc8, 0x8c, 0x60, - 0xee, 0xfb, 0x24, 0x8c, 0x68, 0xe0, 0x5f, 0x09, 0xfc, 0x03, 0xda, 0x45, 0x26, 0xcc, 0xb2, 0x30, - 0xe8, 0x24, 0x4e, 0x7c, 0x1b, 0xef, 0x13, 0xd7, 0xa8, 0xad, 0xd5, 0xde, 0x6c, 0xda, 0x05, 0x18, - 0x6a, 0x41, 0xe3, 0x51, 0x14, 0xf8, 0x7b, 0x38, 0xee, 0x19, 0xe3, 0xe2, 0x7b, 0x36, 0xe7, 0xeb, - 0x43, 0x12, 0x05, 0x49, 0xe8, 0x90, 0x3b, 0xd8, 0x23, 0x46, 0x5d, 0xae, 0xd7, 0x61, 0xe6, 0xef, - 0xe6, 0x60, 0x61, 0x17, 0xfb, 0xf4, 0x80, 0x44, 0xb1, 0x4d, 0x1e, 0x27, 0x24, 0x8a, 0xd1, 0x43, - 0x98, 0xe0, 0xb6, 0x15, 0xfc, 0x66, 0x36, 0x77, 0xac, 0xdc, 0x04, 0x56, 0x6a, 0x02, 0x31, 0xf8, - 0x89, 0xd3, 0xb1, 0x06, 0x9b, 0x16, 0xeb, 0x77, 0x2d, 0x6e, 0x02, 0x4b, 0x33, 0x81, 0x95, 0x9a, - 0xc0, 0xb2, 0x33, 0x2f, 0xd9, 0x82, 0x2a, 0x97, 0x38, 0x24, 0x03, 0xca, 0xf5, 0x4c, 0x25, 0x4e, - 0xe7, 0xc8, 0x80, 0x69, 0x3f, 0xb8, 0x82, 0x9d, 0x9e, 0x14, 0xb6, 0x61, 0xa7, 0x53, 0xb4, 0x06, - 0x33, 0x98, 0x31, 0xa1, 0xf3, 0x2d, 0x72, 0x68, 0x4c, 0x88, 0x85, 0x3a, 0x88, 0xaf, 0xc5, 0x8c, - 0x09, 0x45, 0x27, 0xc5, 0xd7, 0x74, 0x8a, 0x5e, 0x85, 0xa6, 0x8f, 0x3d, 0x12, 0x31, 0xec, 0x10, - 0xa3, 0x21, 0xbe, 0xe5, 0x00, 0xf4, 0x53, 0x58, 0xd2, 0x04, 0xbf, 0x27, 0x4c, 0x63, 0x80, 0x50, - 0xfd, 0xee, 0xc9, 0x54, 0xdf, 0x2a, 0x93, 0xb5, 0x87, 0x39, 0xa1, 0x1f, 0xc3, 0xa4, 0x08, 0x64, - 0x63, 0x66, 0xad, 0xfe, 0x42, 0xad, 0x2d, 0xc9, 0x22, 0x1f, 0xa6, 0x99, 0x9b, 0x74, 0xa9, 0x1f, - 0x19, 0xb3, 0x82, 0xc3, 0xfd, 0x93, 0x71, 0x90, 0xb1, 0xb9, 0x8b, 0x7d, 0xdc, 0x25, 0x1e, 0xf1, - 0xe3, 0x3d, 0x41, 0xdc, 0x4e, 0x99, 0xa0, 0xa7, 0xb0, 0xd8, 0x4f, 0xa2, 0x38, 0xf0, 0xe8, 0x53, - 0x72, 0x97, 0xf1, 0xb5, 0x91, 0x31, 0x27, 0xac, 0x79, 0xe7, 0x64, 0x8c, 0x6f, 0x95, 0xa8, 0xda, - 0x43, 0x7c, 0x78, 0x90, 0xf4, 0x93, 0x7d, 0xa2, 0x76, 0x91, 0x31, 0x2f, 0x83, 0x44, 0x03, 0xc9, - 0x30, 0xa2, 0x6a, 0x16, 0x19, 0x0b, 0x6b, 0x75, 0x19, 0x46, 0x19, 0x08, 0xbd, 0x09, 0x0b, 0x03, - 0x12, 0xd2, 0x83, 0xc3, 0x7b, 0xb4, 0xeb, 0xe3, 0x38, 0x09, 0x89, 0xb1, 0x28, 0x42, 0xb1, 0x0c, - 0x46, 0x1e, 0xcc, 0xf5, 0x88, 0xeb, 0x71, 0x93, 0x5f, 0x09, 0x49, 0x27, 0x32, 0x96, 0x84, 0x7d, - 0xb7, 0x4f, 0xee, 0x41, 0x41, 0xce, 0x2e, 0x52, 0xe7, 0x82, 0xf9, 0x81, 0xad, 0x76, 0x8a, 0xdc, - 0x23, 0x48, 0x0a, 0x56, 0x02, 0xa3, 0x8b, 0x30, 0x1f, 0x87, 0xd8, 0xe9, 0x53, 0xbf, 0xbb, 0x4b, - 0xe2, 0x5e, 0xd0, 0x31, 0xce, 0x08, 0x4b, 0x94, 0xa0, 0xc8, 0x01, 0x44, 0x7c, 0xbc, 0xef, 0x92, - 0x8e, 0x8c, 0xc5, 0xfb, 0x87, 0x8c, 0x44, 0xc6, 0xb2, 0xd0, 0xe2, 0x3d, 0x4b, 0x4b, 0xb8, 0xa5, - 0x04, 0x61, 0x5d, 0x1b, 0x5a, 0x75, 0xcd, 0x8f, 0xc3, 0x43, 0xbb, 0x82, 0x1c, 0xea, 0xc3, 0x0c, - 0xd7, 0x23, 0x0d, 0x85, 0xb3, 0x22, 0x14, 0x6e, 0x9c, 0xcc, 0x46, 0x3b, 0x39, 0x41, 0x5b, 0xa7, - 0x8e, 0x2c, 0x40, 0x3d, 0x1c, 0xed, 0x26, 0x6e, 0x4c, 0x99, 0x4b, 0xa4, 0x18, 0x91, 0xb1, 0x22, - 0xcc, 0x54, 0xf1, 0x05, 0xdd, 0x02, 0x08, 0xc9, 0x41, 0x8a, 0x77, 0x4e, 0x68, 0xfe, 0xf6, 0x28, - 0xcd, 0xed, 0x0c, 0x5b, 0x6a, 0xac, 0x2d, 0x47, 0x9f, 0xc2, 0xdc, 0x40, 0xcf, 0xdf, 0x86, 0x21, - 0x74, 0x3d, 0xaf, 0xd3, 0x2b, 0x24, 0x78, 0xbb, 0x88, 0xcf, 0xa5, 0xe7, 0x76, 0x20, 0x4e, 0xac, - 0xd2, 0x85, 0xc8, 0x0b, 0xe7, 0x45, 0x8c, 0x56, 0x7c, 0xe1, 0xc1, 0xac, 0xa0, 0x22, 0xeb, 0xb5, - 0x64, 0xb8, 0x6b, 0xa0, 0xd6, 0x35, 0x38, 0x77, 0x84, 0xaf, 0xd0, 0x22, 0xd4, 0xfb, 0xe4, 0x50, - 0x9d, 0x29, 0x7c, 0x88, 0x96, 0x61, 0x72, 0x80, 0xdd, 0x84, 0x88, 0xac, 0xdc, 0xb0, 0xe5, 0xe4, - 0xd2, 0xf8, 0x47, 0xb5, 0xd6, 0xaf, 0x6a, 0xb0, 0x50, 0xd2, 0xbc, 0x62, 0xfd, 0x8f, 0xf4, 0xf5, - 0x2f, 0x60, 0x1f, 0x1c, 0xdc, 0xc7, 0x61, 0x97, 0xc4, 0x9a, 0x20, 0xe6, 0x3f, 0x6a, 0x60, 0x94, - 0x5c, 0xf2, 0x03, 0x1a, 0xf7, 0xae, 0x53, 0x97, 0x44, 0xe8, 0x43, 0x98, 0x0e, 0x25, 0x4c, 0x9d, - 0x5c, 0xaf, 0x8c, 0xf0, 0xe4, 0xce, 0x98, 0x9d, 0x62, 0xa3, 0x4f, 0xa0, 0xc1, 0x8f, 0xff, 0x0e, - 0x8e, 0xb1, 0x92, 0x7d, 0xad, 0x6a, 0x25, 0xe7, 0xb2, 0xab, 0xf0, 0x76, 0xc6, 0xec, 0x6c, 0x0d, - 0x7a, 0x1f, 0x26, 0x9d, 0x5e, 0xe2, 0xf7, 0xc5, 0x99, 0x35, 0xb3, 0x79, 0xe1, 0xa8, 0xc5, 0x57, - 0x38, 0xd2, 0xce, 0x98, 0x2d, 0xb1, 0x3f, 0x9b, 0x82, 0x09, 0x86, 0xc3, 0xd8, 0xbc, 0x0e, 0xcb, - 0x55, 0x2c, 0xf8, 0x41, 0xe9, 0xf4, 0x88, 0xd3, 0x8f, 0x12, 0x4f, 0x99, 0x39, 0x9b, 0x23, 0x04, - 0x13, 0x11, 0x7d, 0x2a, 0x4d, 0x5d, 0xb7, 0xc5, 0xd8, 0x7c, 0x0b, 0x96, 0x86, 0xb8, 0x71, 0xa7, - 0x4a, 0xd9, 0x38, 0x85, 0x59, 0xc5, 0xda, 0x4c, 0xe0, 0xec, 0x7d, 0x61, 0x8b, 0xec, 0xb4, 0x38, - 0x8d, 0xa3, 0xdf, 0xdc, 0x81, 0x95, 0x32, 0xdb, 0x88, 0x05, 0x7e, 0x44, 0x78, 0xe8, 0x8b, 0xf4, - 0x4a, 0x49, 0x27, 0xff, 0x2a, 0xa4, 0x68, 0xd8, 0x15, 0x5f, 0xcc, 0x9f, 0x8f, 0xc3, 0x8a, 0x4d, - 0xa2, 0xc0, 0x1d, 0x90, 0x34, 0xf7, 0x9d, 0x4e, 0xf5, 0xf2, 0x43, 0xa8, 0x63, 0xc6, 0x54, 0x98, - 0xdc, 0x78, 0x61, 0xf5, 0x81, 0xcd, 0xa9, 0xa2, 0x77, 0x60, 0x09, 0x7b, 0xfb, 0xb4, 0x9b, 0x04, - 0x49, 0x94, 0xaa, 0xa5, 0xaa, 0xb6, 0xe1, 0x0f, 0xa6, 0x03, 0xe7, 0x86, 0x4c, 0xa0, 0xcc, 0xa9, - 0xd7, 0x58, 0xb5, 0x52, 0x8d, 0x55, 0xc9, 0x64, 0xfc, 0x28, 0x26, 0x3f, 0xab, 0x41, 0x23, 0x8d, - 0x2a, 0xb4, 0x0e, 0x8b, 0x4e, 0xe0, 0x31, 0xea, 0x92, 0x4e, 0x0a, 0x53, 0xe4, 0x87, 0xe0, 0x3c, - 0x39, 0x85, 0xf8, 0x49, 0x86, 0x26, 0x19, 0xe8, 0x20, 0x1e, 0xc3, 0x8c, 0x97, 0xad, 0x52, 0x41, - 0x31, 0xe6, 0x30, 0x97, 0xfa, 0x44, 0xd4, 0x77, 0x93, 0xb6, 0x18, 0x9b, 0x5f, 0xc2, 0xec, 0x55, - 0xc2, 0x88, 0xdf, 0x21, 0xbe, 0x43, 0x49, 0x24, 0x70, 0x02, 0xa7, 0xaf, 0x38, 0x8b, 0x31, 0x87, - 0x75, 0x08, 0x8b, 0x14, 0x1b, 0x31, 0x96, 0xe5, 0xef, 0xe3, 0x84, 0x86, 0xa2, 0x4e, 0x89, 0xf2, - 0xf2, 0x37, 0x87, 0x99, 0x11, 0x9c, 0xd1, 0xbc, 0x90, 0x15, 0x01, 0xab, 0x00, 0x98, 0xb1, 0xb4, - 0x8e, 0x90, 0x8c, 0x34, 0x08, 0xba, 0x0c, 0xb3, 0x1d, 0x4d, 0x24, 0x15, 0x0e, 0x86, 0xbe, 0xf1, - 0x75, 0x91, 0xed, 0x02, 0xb6, 0xf9, 0x55, 0x1d, 0x16, 0xf3, 0x74, 0xa4, 0x5c, 0xb6, 0x09, 0x4d, - 0x4f, 0xc1, 0x22, 0xa3, 0x26, 0x4e, 0xa2, 0xe5, 0xca, 0xfc, 0x95, 0xa3, 0x15, 0x0b, 0xdb, 0xf1, - 0x72, 0x61, 0xbb, 0x02, 0x53, 0xb2, 0x8d, 0x52, 0x9a, 0xab, 0x59, 0x21, 0x38, 0x26, 0x4a, 0xc1, - 0xb1, 0x0a, 0x10, 0x65, 0x27, 0x85, 0x31, 0x25, 0x15, 0xcf, 0x21, 0xdc, 0xa6, 0xb2, 0x0c, 0xb2, - 0x49, 0x94, 0xb8, 0xb1, 0x31, 0x2d, 0x6d, 0xaa, 0xc3, 0xd0, 0xeb, 0x30, 0xe7, 0x04, 0x9e, 0x47, - 0xe3, 0x5d, 0x12, 0x45, 0xb8, 0x9b, 0x96, 0xdc, 0x45, 0x20, 0xa7, 0x24, 0x01, 0x5b, 0x49, 0xdc, - 0x0b, 0x42, 0xa3, 0x29, 0x29, 0xe9, 0x30, 0x74, 0x13, 0x40, 0xce, 0xaf, 0xe2, 0x38, 0xad, 0xc9, - 0xd7, 0x2d, 0xd9, 0xc7, 0x59, 0x7a, 0x1f, 0x97, 0x6f, 0x34, 0x9e, 0x94, 0xad, 0xc1, 0x86, 0x75, - 0x9f, 0x7a, 0xc4, 0xd6, 0x56, 0xa3, 0xcf, 0xe1, 0x0c, 0x1e, 0xf6, 0xb4, 0x31, 0x23, 0x88, 0x7e, - 0x4b, 0xb7, 0x74, 0x45, 0x40, 0xd8, 0x55, 0x6b, 0xcd, 0x00, 0x16, 0x6e, 0x53, 0xee, 0xc2, 0x83, - 0xe8, 0x74, 0xf2, 0xe7, 0x07, 0x30, 0xc1, 0x99, 0x71, 0x0f, 0xee, 0x87, 0xd8, 0x77, 0x7a, 0x44, - 0x86, 0x4a, 0xd3, 0xce, 0xe6, 0x7c, 0x27, 0xc4, 0xb8, 0xcb, 0x43, 0x92, 0xc3, 0xc5, 0xd8, 0xfc, - 0xe3, 0xb8, 0x94, 0x74, 0x8b, 0xb1, 0xe8, 0x9b, 0x6f, 0xf2, 0xaa, 0xcb, 0xce, 0xfa, 0x70, 0xd9, - 0x59, 0x12, 0xf9, 0xeb, 0x94, 0x9d, 0x2f, 0xa8, 0xf2, 0x31, 0x13, 0x98, 0xde, 0x62, 0x8c, 0x0b, - 0x82, 0x36, 0x60, 0x02, 0x33, 0x96, 0xee, 0xcd, 0x0b, 0xa5, 0x88, 0xe1, 0x28, 0xfc, 0xbf, 0x12, - 0x49, 0xa0, 0xb6, 0x3e, 0x84, 0x66, 0x06, 0x7a, 0x1e, 0xdb, 0xa6, 0xce, 0x76, 0x0d, 0x40, 0xf6, - 0x55, 0x37, 0xfc, 0x83, 0x80, 0xbb, 0x94, 0xef, 0xea, 0x34, 0xe1, 0xf1, 0xb1, 0x79, 0x29, 0xc5, - 0x10, 0xb2, 0xbd, 0x03, 0x93, 0x34, 0x26, 0x5e, 0x2a, 0xdc, 0x8a, 0x2e, 0x5c, 0x4e, 0xc8, 0x96, - 0x48, 0xe6, 0x5f, 0x1b, 0x70, 0x9e, 0x7b, 0xec, 0x9e, 0xc8, 0x07, 0x5b, 0x8c, 0x5d, 0x25, 0x31, - 0xa6, 0x6e, 0xf4, 0x79, 0x42, 0xc2, 0xc3, 0x97, 0x1c, 0x18, 0x5d, 0x98, 0x92, 0xe9, 0x44, 0xe5, - 0xcc, 0x17, 0xde, 0x62, 0x2b, 0xf2, 0x79, 0x5f, 0x5d, 0x7f, 0x39, 0x7d, 0x75, 0x55, 0x9f, 0x3b, - 0x71, 0x4a, 0x7d, 0xee, 0xd1, 0x57, 0x1d, 0xda, 0x05, 0xca, 0x54, 0xf1, 0x02, 0xa5, 0xa2, 0x7d, - 0x9c, 0x3e, 0x6e, 0xfb, 0xd8, 0xa8, 0x6c, 0x1f, 0xbd, 0xca, 0x7d, 0xdc, 0x14, 0xe6, 0xfe, 0x9e, - 0x1e, 0x81, 0x47, 0xc6, 0xda, 0x49, 0x1a, 0x49, 0x78, 0xa9, 0x8d, 0xe4, 0x17, 0x85, 0xc6, 0x50, - 0x5e, 0xcd, 0xbc, 0x7f, 0x3c, 0x9d, 0x46, 0xb4, 0x88, 0xff, 0x77, 0xfd, 0xd8, 0x2f, 0x45, 0x19, - 0xce, 0x82, 0xdc, 0x06, 0x59, 0x3d, 0xc3, 0xcf, 0x21, 0x5e, 0x43, 0xa8, 0xa4, 0xc5, 0xc7, 0xe8, - 0x6d, 0x98, 0xe0, 0x46, 0x56, 0x7d, 0xd2, 0x39, 0xdd, 0x9e, 0xdc, 0x13, 0x5b, 0x8c, 0xdd, 0x63, - 0xc4, 0xb1, 0x05, 0x12, 0xba, 0x04, 0xcd, 0x2c, 0xf0, 0xd5, 0xce, 0x7a, 0x55, 0x5f, 0x91, 0xed, - 0x93, 0x74, 0x59, 0x8e, 0xce, 0xd7, 0x76, 0x68, 0x48, 0x1c, 0xd1, 0x45, 0x4c, 0x0e, 0xaf, 0xbd, - 0x9a, 0x7e, 0xcc, 0xd6, 0x66, 0xe8, 0x68, 0x03, 0xa6, 0xe4, 0x5d, 0x96, 0xd8, 0x41, 0xa5, 0xfe, - 0x5d, 0x26, 0xd3, 0x74, 0x95, 0x42, 0x34, 0xbf, 0xaa, 0xc1, 0x6b, 0x79, 0x40, 0xa4, 0xbb, 0x29, - 0x6d, 0xe4, 0xbe, 0xf9, 0x13, 0xf7, 0x22, 0xcc, 0x8b, 0xce, 0x31, 0xbf, 0xd2, 0x92, 0xb7, 0xab, - 0x25, 0xa8, 0xf9, 0x87, 0x1a, 0xbc, 0x31, 0xac, 0xc7, 0x95, 0x1e, 0x0e, 0xe3, 0xcc, 0xbd, 0xa7, - 0xa1, 0x4b, 0x7a, 0xe0, 0x8d, 0xe7, 0x07, 0x5e, 0x41, 0xbf, 0x7a, 0x51, 0x3f, 0xf3, 0xcf, 0xe3, - 0x30, 0xa3, 0x05, 0x50, 0xd5, 0x81, 0xc9, 0x2b, 0x5b, 0x11, 0xb7, 0xe2, 0xae, 0x40, 0x1c, 0x0a, - 0x4d, 0x5b, 0x83, 0xa0, 0x3e, 0x00, 0xc3, 0x21, 0xf6, 0x48, 0x4c, 0x42, 0x9e, 0xc9, 0xf9, 0x8e, - 0xbf, 0x75, 0xf2, 0xec, 0xb2, 0x97, 0xd2, 0xb4, 0x35, 0xf2, 0xbc, 0x34, 0x17, 0xac, 0x23, 0x95, - 0xbf, 0xd5, 0x0c, 0x3d, 0x81, 0xf9, 0x03, 0xea, 0x92, 0xbd, 0x5c, 0x90, 0x29, 0x21, 0xc8, 0xdd, - 0x93, 0x0b, 0x72, 0x5d, 0xa7, 0x6b, 0x97, 0xd8, 0x98, 0xeb, 0xb0, 0x58, 0xde, 0x4f, 0x5c, 0x48, - 0xea, 0xe1, 0x6e, 0x66, 0x2d, 0x35, 0x33, 0x11, 0x2c, 0x96, 0xf7, 0x8f, 0xf9, 0xcf, 0x71, 0x38, - 0x9b, 0x91, 0xdb, 0xf2, 0xfd, 0x20, 0xf1, 0x1d, 0xd1, 0x62, 0x55, 0xfa, 0x62, 0x19, 0x26, 0x63, - 0x1a, 0xbb, 0x59, 0xe1, 0x23, 0x26, 0xfc, 0xec, 0x8a, 0x83, 0xc0, 0x8d, 0x29, 0x53, 0x0e, 0x4e, - 0xa7, 0xd2, 0xf7, 0xa2, 0x6b, 0xeb, 0x88, 0x4c, 0xd0, 0xb0, 0xb3, 0x39, 0xff, 0xc6, 0xab, 0x1a, - 0xd1, 0xaf, 0x48, 0x63, 0x66, 0x73, 0x11, 0xf7, 0x81, 0xeb, 0x12, 0x87, 0x9b, 0x43, 0xeb, 0x68, - 0x4a, 0x50, 0xd1, 0x29, 0xc5, 0x21, 0xf5, 0xbb, 0xaa, 0x9f, 0x51, 0x33, 0x2e, 0x27, 0x0e, 0x43, - 0x7c, 0x68, 0x34, 0x84, 0x01, 0xe4, 0x04, 0x5d, 0x86, 0xba, 0x87, 0x99, 0x3a, 0xe8, 0xd6, 0x0b, - 0xd9, 0xa1, 0xca, 0x02, 0xd6, 0x2e, 0x66, 0xf2, 0x24, 0xe0, 0xcb, 0x5a, 0x1f, 0xf0, 0x7e, 0x9a, - 0x7d, 0xfd, 0x92, 0xf0, 0x11, 0xcc, 0x15, 0x92, 0x0f, 0x7a, 0x00, 0x2b, 0x79, 0x44, 0xe9, 0x0c, - 0x55, 0x11, 0xf8, 0xda, 0x73, 0x25, 0xb3, 0x8f, 0x20, 0x60, 0x3e, 0x86, 0x25, 0x1e, 0x32, 0x62, - 0xe3, 0x9f, 0x52, 0x6b, 0xf3, 0x31, 0x34, 0x33, 0x96, 0x95, 0x31, 0xd3, 0x82, 0xc6, 0x20, 0x6d, - 0xda, 0x64, 0x6f, 0x93, 0xcd, 0xcd, 0x2d, 0x40, 0xba, 0xbc, 0xea, 0x04, 0x7a, 0xbb, 0x58, 0x14, - 0x9f, 0x2d, 0x1f, 0x37, 0x02, 0x3d, 0xad, 0x89, 0x7f, 0x3d, 0x0e, 0x0b, 0xdb, 0x54, 0x5c, 0x9c, - 0x9d, 0x52, 0x92, 0x5b, 0x87, 0xc5, 0x28, 0xd9, 0xf7, 0x82, 0x4e, 0xe2, 0x12, 0x55, 0x14, 0xa8, - 0x93, 0x7e, 0x08, 0x3e, 0x2a, 0xf9, 0x65, 0xd7, 0x28, 0x13, 0xda, 0x35, 0xca, 0x65, 0x38, 0x7f, - 0x87, 0x3c, 0x51, 0xfa, 0x6c, 0xbb, 0xc1, 0xfe, 0x3e, 0xf5, 0xbb, 0x29, 0x93, 0x49, 0xc1, 0xe4, - 0x68, 0x04, 0xf3, 0x17, 0x35, 0x58, 0xcc, 0x6d, 0xa1, 0xac, 0xf9, 0xa1, 0x8c, 0x7a, 0x69, 0xcb, - 0x37, 0x74, 0x5b, 0x96, 0x51, 0xff, 0xf3, 0x80, 0x9f, 0xd5, 0x03, 0xfe, 0x4f, 0x35, 0x38, 0xbb, - 0x4d, 0xe3, 0x34, 0xd5, 0xd0, 0xff, 0x31, 0xbf, 0x98, 0x16, 0xac, 0x94, 0xc5, 0x57, 0xa6, 0x5c, - 0x86, 0x49, 0xee, 0xa5, 0xb4, 0x77, 0x97, 0x13, 0xf3, 0xf7, 0x53, 0x70, 0xe1, 0x0b, 0xd6, 0xc1, - 0x71, 0x76, 0x9d, 0x77, 0x3d, 0x08, 0xf7, 0xf8, 0xa7, 0xd3, 0xd1, 0xbb, 0xf4, 0xc2, 0x3a, 0x3e, - 0xf2, 0x85, 0xb5, 0x3e, 0xe2, 0x85, 0x75, 0xe2, 0x58, 0x2f, 0xac, 0x93, 0xa7, 0xf6, 0xc2, 0x3a, - 0xdc, 0xcf, 0x4c, 0x55, 0xf6, 0x33, 0x0f, 0x0a, 0x35, 0xff, 0xb4, 0x08, 0xf4, 0xef, 0xea, 0x81, - 0x3e, 0xd2, 0x3b, 0x23, 0x9f, 0x86, 0x4a, 0x0f, 0x93, 0x8d, 0xe7, 0x3e, 0x4c, 0x36, 0x87, 0x1f, - 0x26, 0xab, 0xdf, 0xb6, 0xe0, 0xc8, 0xb7, 0xad, 0x8b, 0x30, 0x1f, 0x1d, 0xfa, 0x0e, 0xe9, 0x64, - 0x97, 0xbc, 0x33, 0x52, 0xed, 0x22, 0xb4, 0x10, 0xc3, 0xb3, 0xa5, 0xdc, 0x92, 0x45, 0xea, 0x9c, - 0x16, 0xa9, 0xff, 0x3d, 0xed, 0xc7, 0x25, 0x58, 0x3d, 0xca, 0x27, 0x6a, 0xab, 0x19, 0x30, 0xed, - 0xf4, 0xb0, 0xdf, 0x15, 0x17, 0x65, 0xa2, 0x1f, 0x56, 0xd3, 0xcd, 0xbf, 0x00, 0x2c, 0xe5, 0xb5, - 0x2e, 0xff, 0x4b, 0x1d, 0x82, 0xee, 0xc2, 0xe2, 0xb6, 0xfa, 0xcd, 0x46, 0x76, 0x4f, 0x3d, 0xea, - 0x19, 0xa9, 0xf5, 0x6a, 0xf5, 0x47, 0xc9, 0xde, 0x1c, 0x43, 0x0e, 0x9c, 0x2f, 0x13, 0xcc, 0x5f, - 0xac, 0x5e, 0x1f, 0x41, 0x39, 0xc3, 0x7a, 0x1e, 0x8b, 0x37, 0x6b, 0xe8, 0x01, 0xcc, 0x17, 0xdf, - 0x55, 0x50, 0xe1, 0xf0, 0xaf, 0x7c, 0xea, 0x69, 0x99, 0xa3, 0x50, 0x32, 0xf9, 0x1f, 0x72, 0x57, - 0x17, 0x1e, 0x19, 0x90, 0x59, 0xec, 0x83, 0xab, 0x1e, 0x61, 0x5a, 0xdf, 0x1e, 0x89, 0x93, 0x51, - 0xff, 0x18, 0x1a, 0xe9, 0x0d, 0x6a, 0xd1, 0xcc, 0xa5, 0x7b, 0xd5, 0xd6, 0x62, 0x91, 0xde, 0x41, - 0x64, 0x8e, 0xa1, 0x4f, 0xe4, 0xe2, 0x2d, 0xc6, 0x2a, 0x16, 0x6b, 0xf7, 0x86, 0xad, 0x33, 0x15, - 0x77, 0x75, 0xe6, 0x18, 0xfa, 0x14, 0x66, 0xf8, 0x68, 0x4f, 0xfd, 0x70, 0x61, 0xc5, 0x92, 0x3f, - 0xce, 0xb1, 0xd2, 0x1f, 0xe7, 0x58, 0xd7, 0x3c, 0x16, 0x1f, 0xb6, 0x2a, 0x2e, 0xd3, 0x14, 0x81, - 0x87, 0x30, 0xb7, 0x4d, 0xe2, 0xbc, 0xf7, 0x45, 0x6f, 0x1c, 0xeb, 0x86, 0xa0, 0x65, 0x96, 0xd1, - 0x86, 0xdb, 0x67, 0x73, 0x0c, 0xfd, 0xa6, 0x06, 0x67, 0xb6, 0x49, 0x5c, 0xee, 0x26, 0xd1, 0xbb, - 0xd5, 0x4c, 0x8e, 0xe8, 0x3a, 0x5b, 0x77, 0x4e, 0xba, 0xef, 0x8a, 0x64, 0xcd, 0x31, 0xf4, 0xdb, - 0x1a, 0x9c, 0xd3, 0x04, 0xd3, 0xdb, 0x43, 0xb4, 0x31, 0x5a, 0xb8, 0x8a, 0x56, 0xb2, 0x75, 0xf3, - 0x84, 0xbf, 0x47, 0xd1, 0x48, 0x9a, 0x63, 0x68, 0x4f, 0xf8, 0x24, 0xaf, 0x06, 0xd1, 0x85, 0xca, - 0xb2, 0x2f, 0xe3, 0xbe, 0x7a, 0xd4, 0xe7, 0xcc, 0x0f, 0x37, 0x61, 0x66, 0x9b, 0xc4, 0x69, 0x91, - 0x53, 0x8c, 0xb4, 0x52, 0xc5, 0x58, 0xdc, 0xaa, 0xe5, 0xba, 0x48, 0x44, 0xcc, 0x92, 0xa4, 0xa5, - 0x95, 0x05, 0xc5, 0xbd, 0x5a, 0x59, 0xf1, 0x14, 0x23, 0xa6, 0xba, 0xaa, 0x30, 0xc7, 0xd0, 0x63, - 0x58, 0xa9, 0x4e, 0x87, 0xe8, 0xad, 0x63, 0x1f, 0x63, 0xad, 0xf5, 0xe3, 0xa0, 0xa6, 0x2c, 0x3f, - 0xdb, 0xfa, 0xdb, 0xb3, 0xd5, 0xda, 0xdf, 0x9f, 0xad, 0xd6, 0xfe, 0xf5, 0x6c, 0xb5, 0xf6, 0xe5, - 0x7b, 0xcf, 0xf9, 0xb1, 0x9c, 0xf6, 0xcb, 0x3e, 0xcc, 0xa8, 0xe3, 0x52, 0xe2, 0xc7, 0xfb, 0x53, - 0x62, 0xbf, 0xbd, 0xf7, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa0, 0x31, 0xd1, 0x06, 0xf8, 0x27, - 0x00, 0x00, + // 2533 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x1a, 0x6b, 0x6f, 0x1c, 0x49, + 0xd1, 0xeb, 0xf5, 0x63, 0xb7, 0xfc, 0xee, 0x38, 0xce, 0x64, 0xef, 0x62, 0x7c, 0xc3, 0x5d, 0x94, + 0x73, 0xee, 0x66, 0xb1, 0xc3, 0x5d, 0x8e, 0x5c, 0x38, 0xe4, 0xcb, 0xc3, 0xce, 0xc3, 0x89, 0x6f, + 0x92, 0x03, 0xe5, 0x08, 0xa0, 0xde, 0xd9, 0xf6, 0xee, 0x64, 0xe7, 0xd1, 0x99, 0xe9, 0x75, 0xe4, + 0x48, 0x48, 0x20, 0x10, 0x12, 0x7f, 0x80, 0x0f, 0xfc, 0x0a, 0xbe, 0x20, 0x3e, 0x21, 0x3e, 0xa0, + 0x13, 0x7c, 0x42, 0x88, 0x3f, 0x00, 0xca, 0x2f, 0x41, 0xfd, 0x98, 0x99, 0x9e, 0xd9, 0xd9, 0x8d, + 0x0f, 0x27, 0x3e, 0xe0, 0x8b, 0xdd, 0x5d, 0x53, 0x5d, 0x55, 0x5d, 0x55, 0x5d, 0x8f, 0xee, 0x85, + 0xf3, 0x11, 0xa1, 0x61, 0x4c, 0xa2, 0x03, 0x12, 0x35, 0xc5, 0xd0, 0x65, 0x61, 0x74, 0xa8, 0x0d, + 0x2d, 0x1a, 0x85, 0x2c, 0x44, 0x90, 0x41, 0x1a, 0x66, 0xef, 0xa3, 0xd8, 0x72, 0xc3, 0x26, 0xa6, + 0x6e, 0xd3, 0x09, 0x23, 0xd2, 0x3c, 0xd8, 0x68, 0x76, 0x48, 0x40, 0x22, 0xcc, 0x48, 0x5b, 0xe2, + 0x37, 0xbe, 0x9d, 0xe1, 0xf8, 0xd8, 0xe9, 0xba, 0x01, 0x89, 0x0e, 0x9b, 0xb4, 0xd7, 0xe1, 0x80, + 0xb8, 0xe9, 0x13, 0x86, 0xcb, 0x56, 0xdd, 0xed, 0xb8, 0xac, 0xdb, 0x6f, 0x59, 0x4e, 0xe8, 0x37, + 0x71, 0xd4, 0x09, 0x69, 0x14, 0x3e, 0x11, 0x83, 0xf7, 0x9d, 0x76, 0xf3, 0x60, 0x33, 0x23, 0x80, + 0x29, 0xf5, 0x5c, 0x07, 0x33, 0x37, 0x0c, 0x9a, 0x07, 0x1b, 0xd8, 0xa3, 0x5d, 0x3c, 0x48, 0xed, + 0x8d, 0x4e, 0x18, 0x76, 0x3c, 0xd2, 0x14, 0xb3, 0x56, 0x7f, 0xbf, 0x49, 0x7c, 0xca, 0xd4, 0x86, + 0xcc, 0xbf, 0xcd, 0xc1, 0xc2, 0x2e, 0x0e, 0xdc, 0x7d, 0x12, 0x33, 0x9b, 0x3c, 0xed, 0x93, 0x98, + 0xa1, 0xc7, 0x30, 0xc1, 0xb7, 0x69, 0x54, 0xd6, 0x2a, 0x17, 0x66, 0x36, 0x77, 0xac, 0x4c, 0x1a, + 0x2b, 0x91, 0x46, 0x0c, 0x7e, 0xe2, 0xb4, 0xad, 0x83, 0x4d, 0x8b, 0xf6, 0x3a, 0x16, 0x97, 0xc6, + 0xd2, 0xa4, 0xb1, 0x12, 0x69, 0x2c, 0x3b, 0x55, 0x98, 0x2d, 0xa8, 0xa2, 0x06, 0xd4, 0x22, 0x72, + 0xe0, 0xc6, 0x6e, 0x18, 0x18, 0xe3, 0x6b, 0x95, 0x0b, 0x75, 0x3b, 0x9d, 0x23, 0x03, 0xa6, 0x83, + 0xf0, 0x1a, 0x76, 0xba, 0xc4, 0xa8, 0xae, 0x55, 0x2e, 0xd4, 0xec, 0x64, 0x8a, 0xd6, 0x60, 0x06, + 0x53, 0x7a, 0x17, 0xb7, 0x88, 0x77, 0x87, 0x1c, 0x1a, 0x13, 0x62, 0xa1, 0x0e, 0xe2, 0x6b, 0x31, + 0xa5, 0xf7, 0xb0, 0x4f, 0x8c, 0x49, 0xf1, 0x35, 0x99, 0xa2, 0x37, 0xa1, 0x1e, 0x60, 0x9f, 0xc4, + 0x14, 0x3b, 0xc4, 0xa8, 0x89, 0x6f, 0x19, 0x00, 0xfd, 0x14, 0x96, 0x34, 0xc1, 0x1f, 0x84, 0xfd, + 0xc8, 0x21, 0x06, 0x88, 0xad, 0xdf, 0x3f, 0xde, 0xd6, 0xb7, 0x8a, 0x64, 0xed, 0x41, 0x4e, 0xe8, + 0xc7, 0x30, 0x29, 0x7c, 0xca, 0x98, 0x59, 0xab, 0xbe, 0x52, 0x6d, 0x4b, 0xb2, 0x28, 0x80, 0x69, + 0xea, 0xf5, 0x3b, 0x6e, 0x10, 0x1b, 0xb3, 0x82, 0xc3, 0xc3, 0xe3, 0x71, 0xb8, 0x16, 0x06, 0xfb, + 0x6e, 0x67, 0x17, 0x07, 0xb8, 0x43, 0x7c, 0x12, 0xb0, 0x3d, 0x41, 0xdc, 0x4e, 0x98, 0xa0, 0xe7, + 0xb0, 0xd8, 0xeb, 0xc7, 0x2c, 0xf4, 0xdd, 0xe7, 0xe4, 0x3e, 0xe5, 0x6b, 0x63, 0x63, 0x4e, 0x68, + 0xf3, 0xde, 0xf1, 0x18, 0xdf, 0x29, 0x50, 0xb5, 0x07, 0xf8, 0x70, 0x27, 0xe9, 0xf5, 0x5b, 0xe4, + 0xfb, 0x24, 0x12, 0xde, 0x35, 0x2f, 0x9d, 0x44, 0x03, 0x49, 0x37, 0x72, 0xd5, 0x2c, 0x36, 0x16, + 0xd6, 0xaa, 0xd2, 0x8d, 0x52, 0x10, 0xba, 0x00, 0x0b, 0x07, 0x24, 0x72, 0xf7, 0x0f, 0x1f, 0xb8, + 0x9d, 0x00, 0xb3, 0x7e, 0x44, 0x8c, 0x45, 0xe1, 0x8a, 0x45, 0x30, 0xf2, 0x61, 0xae, 0x4b, 0x3c, + 0x9f, 0xab, 0xfc, 0x5a, 0x44, 0xda, 0xb1, 0xb1, 0x24, 0xf4, 0xbb, 0x7d, 0x7c, 0x0b, 0x0a, 0x72, + 0x76, 0x9e, 0x3a, 0x17, 0x2c, 0x08, 0x6d, 0x75, 0x52, 0xe4, 0x19, 0x41, 0x52, 0xb0, 0x02, 0x18, + 0x9d, 0x87, 0x79, 0x16, 0x61, 0xa7, 0xe7, 0x06, 0x9d, 0x5d, 0xc2, 0xba, 0x61, 0xdb, 0x38, 0x25, + 0x34, 0x51, 0x80, 0x22, 0x07, 0x10, 0x09, 0x70, 0xcb, 0x23, 0x6d, 0xe9, 0x8b, 0x0f, 0x0f, 0x29, + 0x89, 0x8d, 0x65, 0xb1, 0x8b, 0x4b, 0x96, 0x16, 0xfb, 0x0a, 0x01, 0xc2, 0xba, 0x31, 0xb0, 0xea, + 0x46, 0xc0, 0xa2, 0x43, 0xbb, 0x84, 0x1c, 0xea, 0xc1, 0x0c, 0xdf, 0x47, 0xe2, 0x0a, 0xa7, 0x85, + 0x2b, 0xdc, 0x3a, 0x9e, 0x8e, 0x76, 0x32, 0x82, 0xb6, 0x4e, 0x1d, 0x59, 0x80, 0xba, 0x38, 0xde, + 0xed, 0x7b, 0xcc, 0xa5, 0x1e, 0x91, 0x62, 0xc4, 0xc6, 0x8a, 0x50, 0x53, 0xc9, 0x17, 0x74, 0x07, + 0x20, 0x22, 0xfb, 0x09, 0xde, 0x19, 0xb1, 0xf3, 0x8b, 0xa3, 0x76, 0x6e, 0xa7, 0xd8, 0x72, 0xc7, + 0xda, 0x72, 0xd4, 0x82, 0x53, 0x9a, 0xb4, 0xbb, 0x84, 0xe1, 0x36, 0x66, 0xd8, 0x30, 0xc4, 0x8e, + 0xbf, 0x65, 0xc9, 0x4c, 0x60, 0xe9, 0x99, 0x20, 0xdb, 0x26, 0xcf, 0x04, 0xd6, 0xc1, 0x86, 0x75, + 0xbf, 0xf5, 0x84, 0x38, 0x8c, 0xaf, 0xb5, 0xcb, 0x88, 0xf1, 0x0d, 0x72, 0x55, 0x11, 0x87, 0xa9, + 0x88, 0x22, 0x42, 0xc7, 0x59, 0xe1, 0xc6, 0x25, 0x5f, 0xb8, 0xbf, 0x2b, 0xa8, 0x08, 0x8c, 0x0d, + 0x79, 0x22, 0x34, 0x50, 0xe3, 0x06, 0x9c, 0x19, 0x62, 0x4e, 0xb4, 0x08, 0xd5, 0x1e, 0x39, 0x14, + 0x69, 0xa0, 0x6e, 0xf3, 0x21, 0x5a, 0x86, 0xc9, 0x03, 0xec, 0xf5, 0x89, 0x08, 0xdc, 0x35, 0x5b, + 0x4e, 0xae, 0x8c, 0x7f, 0x54, 0x69, 0xfc, 0xaa, 0x02, 0x0b, 0x05, 0xe5, 0x94, 0xac, 0xff, 0x91, + 0xbe, 0xfe, 0x15, 0x1c, 0x95, 0xfd, 0x87, 0x38, 0xea, 0x10, 0xa6, 0x09, 0x62, 0xfe, 0xa3, 0x02, + 0x46, 0xc1, 0x6a, 0x3f, 0x70, 0x59, 0xf7, 0xa6, 0xeb, 0x91, 0x18, 0x5d, 0x86, 0xe9, 0x48, 0xc2, + 0x54, 0x72, 0x7b, 0x63, 0x84, 0xb1, 0x77, 0xc6, 0xec, 0x04, 0x1b, 0x7d, 0x02, 0x35, 0x3f, 0x31, + 0xa8, 0x94, 0x7d, 0xad, 0x6c, 0x25, 0xe7, 0x92, 0xd8, 0x6a, 0x67, 0xcc, 0x4e, 0xd7, 0xa0, 0x0f, + 0x60, 0xd2, 0xe9, 0xf6, 0x83, 0x9e, 0x48, 0x6b, 0x33, 0x9b, 0xe7, 0x86, 0x2d, 0xbe, 0xc6, 0x91, + 0x76, 0xc6, 0x6c, 0x89, 0xfd, 0xe9, 0x14, 0x4c, 0x50, 0x1c, 0x31, 0xf3, 0x26, 0x2c, 0x97, 0xb1, + 0xe0, 0xb9, 0xd4, 0xe9, 0x12, 0xa7, 0x17, 0xf7, 0x7d, 0xa5, 0xe6, 0x74, 0x8e, 0x10, 0x4c, 0xc4, + 0xee, 0x73, 0xa9, 0xea, 0xaa, 0x2d, 0xc6, 0xe6, 0xbb, 0xb0, 0x34, 0xc0, 0x8d, 0x1b, 0x55, 0xca, + 0xc6, 0x29, 0xcc, 0x2a, 0xd6, 0x66, 0x1f, 0x4e, 0x3f, 0x14, 0xba, 0x48, 0x13, 0xca, 0x49, 0x54, + 0x07, 0xe6, 0x0e, 0xac, 0x14, 0xd9, 0xc6, 0x34, 0x0c, 0x62, 0xc2, 0x5d, 0x5f, 0x44, 0x60, 0x97, + 0xb4, 0xb3, 0xaf, 0x42, 0x8a, 0x9a, 0x5d, 0xf2, 0xc5, 0xfc, 0xf9, 0x38, 0xac, 0xd8, 0x24, 0x0e, + 0xbd, 0x03, 0x92, 0x84, 0xc7, 0x93, 0x29, 0x70, 0x7e, 0x08, 0x55, 0x4c, 0xa9, 0x72, 0x93, 0x5b, + 0xaf, 0xac, 0x84, 0xb0, 0x39, 0x55, 0xf4, 0x1e, 0x2c, 0x61, 0xbf, 0xe5, 0x76, 0xfa, 0x61, 0x3f, + 0x4e, 0xb6, 0x25, 0x9c, 0xaa, 0x6e, 0x0f, 0x7e, 0x30, 0x1d, 0x38, 0x33, 0xa0, 0x02, 0xa5, 0x4e, + 0xbd, 0x0c, 0xab, 0x14, 0xca, 0xb0, 0x52, 0x26, 0xe3, 0xc3, 0x98, 0xfc, 0xac, 0x02, 0xb5, 0xc4, + 0xab, 0xd0, 0x3a, 0x2c, 0x3a, 0xa1, 0x4f, 0x5d, 0x8f, 0xb4, 0x13, 0x98, 0x22, 0x3f, 0x00, 0xe7, + 0xc1, 0x29, 0xc2, 0xcf, 0x52, 0x34, 0xc9, 0x40, 0x07, 0x71, 0x1f, 0xa6, 0x98, 0x75, 0xd5, 0x06, + 0xc5, 0x98, 0xc3, 0x3c, 0x37, 0x20, 0xa2, 0x04, 0x9c, 0xb4, 0xc5, 0xd8, 0xfc, 0x02, 0x66, 0xaf, + 0x13, 0x4a, 0x82, 0x36, 0x09, 0x1c, 0x97, 0xc4, 0x02, 0x27, 0x74, 0x7a, 0x8a, 0xb3, 0x18, 0x73, + 0x58, 0x9b, 0xd0, 0x58, 0xb1, 0x11, 0x63, 0x64, 0xc2, 0x2c, 0x3f, 0xe1, 0x6e, 0x24, 0x4a, 0x99, + 0x58, 0xf1, 0xc9, 0xc1, 0xcc, 0x18, 0x4e, 0x69, 0x56, 0x48, 0xeb, 0x84, 0x55, 0x00, 0x4c, 0x69, + 0x52, 0x6a, 0x48, 0x46, 0x1a, 0x04, 0x5d, 0x85, 0xd9, 0xb6, 0x26, 0x92, 0x72, 0x07, 0x43, 0x3f, + 0xf8, 0xba, 0xc8, 0x76, 0x0e, 0xdb, 0xfc, 0xb2, 0x0a, 0x8b, 0x59, 0x38, 0x52, 0x26, 0xdb, 0x84, + 0xba, 0xaf, 0x60, 0xb1, 0x51, 0x11, 0xc9, 0x6a, 0xb9, 0x34, 0x7e, 0x65, 0x68, 0xf9, 0xda, 0x77, + 0xbc, 0x58, 0xfb, 0xae, 0xc0, 0x94, 0x6c, 0x7a, 0xd4, 0xce, 0xd5, 0x2c, 0xe7, 0x1c, 0x13, 0x05, + 0xe7, 0x58, 0x05, 0x88, 0xd3, 0x4c, 0x61, 0x4c, 0xc9, 0x8d, 0x67, 0x10, 0xae, 0x53, 0x59, 0x29, + 0xd9, 0x24, 0xee, 0x7b, 0xcc, 0x98, 0x96, 0x3a, 0xd5, 0x61, 0xe8, 0x6d, 0x98, 0x73, 0x42, 0xdf, + 0x77, 0xd9, 0x2e, 0x89, 0x63, 0xdc, 0x49, 0xaa, 0xf2, 0x3c, 0x90, 0x53, 0x92, 0x80, 0xad, 0x3e, + 0xeb, 0x86, 0x91, 0x51, 0x97, 0x94, 0x74, 0x18, 0xba, 0x0d, 0x20, 0xe7, 0xd7, 0x31, 0x4b, 0xca, + 0xf6, 0xf5, 0xa3, 0xe5, 0xda, 0x87, 0xae, 0x4f, 0x6c, 0x6d, 0x35, 0xfa, 0x2c, 0x97, 0xc0, 0xd3, + 0x22, 0x71, 0x46, 0x10, 0xfd, 0x86, 0xae, 0xe9, 0x12, 0x87, 0xb0, 0xcb, 0xd6, 0x9a, 0x21, 0x2c, + 0xdc, 0x75, 0xb9, 0x09, 0xf7, 0xe3, 0x93, 0x89, 0x9f, 0x1f, 0xc2, 0x04, 0x67, 0xc6, 0x2d, 0xd8, + 0x8a, 0x70, 0xe0, 0x74, 0x89, 0x74, 0x95, 0xba, 0x9d, 0xce, 0xf9, 0x49, 0x60, 0xb8, 0xc3, 0x5d, + 0x92, 0xc3, 0xc5, 0xd8, 0xfc, 0xc3, 0xb8, 0x94, 0x74, 0x8b, 0xd2, 0xf8, 0xeb, 0xef, 0x03, 0xcb, + 0x2b, 0xd3, 0xea, 0x60, 0x65, 0x5a, 0x10, 0xf9, 0xab, 0x54, 0xa6, 0xaf, 0xa8, 0xf2, 0x31, 0xfb, + 0x30, 0xbd, 0x45, 0x29, 0x17, 0x04, 0x6d, 0xc0, 0x04, 0xa6, 0x34, 0x39, 0x9b, 0xe7, 0x0a, 0x1e, + 0xc3, 0x51, 0xf8, 0x7f, 0x25, 0x92, 0x40, 0x6d, 0x5c, 0x86, 0x7a, 0x0a, 0x7a, 0x19, 0xdb, 0xba, + 0xce, 0x76, 0x0d, 0x40, 0xb6, 0x5e, 0xb7, 0x82, 0xfd, 0x90, 0x9b, 0x94, 0x9f, 0xea, 0x24, 0xe0, + 0xf1, 0xb1, 0x79, 0x25, 0xc1, 0x10, 0xb2, 0xbd, 0x07, 0x93, 0x2e, 0x23, 0x7e, 0x22, 0xdc, 0x8a, + 0x2e, 0x5c, 0x46, 0xc8, 0x96, 0x48, 0xe6, 0x5f, 0x6a, 0x70, 0x96, 0x5b, 0xec, 0x81, 0x88, 0x07, + 0x5b, 0x94, 0x5e, 0x27, 0x0c, 0xbb, 0x5e, 0xfc, 0x59, 0x9f, 0x44, 0x87, 0xaf, 0xd9, 0x31, 0x3a, + 0x30, 0x25, 0xc3, 0x89, 0x8a, 0x99, 0xaf, 0xbc, 0x0b, 0x57, 0xe4, 0xb3, 0xd6, 0xbb, 0xfa, 0x7a, + 0x5a, 0xef, 0xb2, 0x56, 0x78, 0xe2, 0x84, 0x5a, 0xe1, 0xe1, 0xb7, 0x21, 0xda, 0x1d, 0xcb, 0x54, + 0xfe, 0x8e, 0xa5, 0xa4, 0xc3, 0x9c, 0x3e, 0x6a, 0x87, 0x59, 0x2b, 0xed, 0x30, 0xfd, 0xd2, 0x73, + 0x5c, 0x17, 0xea, 0xfe, 0xae, 0xee, 0x81, 0x43, 0x7d, 0xed, 0x38, 0xbd, 0x26, 0xbc, 0xd6, 0x5e, + 0xf3, 0xf3, 0x5c, 0xef, 0x28, 0x6f, 0x6f, 0x3e, 0x38, 0xda, 0x9e, 0x46, 0x74, 0x91, 0xff, 0x77, + 0xfd, 0xd8, 0x2f, 0x45, 0x19, 0x4e, 0xc3, 0x4c, 0x07, 0x69, 0x3d, 0xc3, 0xf3, 0x10, 0xaf, 0x21, + 0x54, 0xd0, 0xe2, 0x63, 0x74, 0x11, 0x26, 0xb8, 0x92, 0x55, 0x9f, 0x74, 0x46, 0xd7, 0x27, 0xb7, + 0xc4, 0x16, 0xa5, 0x0f, 0x28, 0x71, 0x6c, 0x81, 0x84, 0xae, 0x40, 0x3d, 0x75, 0x7c, 0x75, 0xb2, + 0xde, 0xd4, 0x57, 0xa4, 0xe7, 0x24, 0x59, 0x96, 0xa1, 0xf3, 0xb5, 0x6d, 0x37, 0x22, 0x8e, 0xe8, + 0x22, 0x26, 0x07, 0xd7, 0x5e, 0x4f, 0x3e, 0xa6, 0x6b, 0x53, 0x74, 0xb4, 0x01, 0x53, 0xf2, 0xba, + 0x4b, 0x9c, 0xa0, 0x99, 0xcd, 0xb3, 0x83, 0xc1, 0x34, 0x59, 0xa5, 0x10, 0xcd, 0x2f, 0x2b, 0xf0, + 0x56, 0xe6, 0x10, 0xc9, 0x69, 0x4a, 0x1a, 0xb9, 0xaf, 0x3f, 0xe3, 0x9e, 0x87, 0x79, 0xd1, 0x39, + 0x66, 0xb7, 0x5e, 0xf2, 0x02, 0xb6, 0x00, 0x35, 0x7f, 0x5f, 0x81, 0x77, 0x06, 0xf7, 0x71, 0xad, + 0x8b, 0x23, 0x96, 0x9a, 0xf7, 0x24, 0xf6, 0x92, 0x24, 0xbc, 0xf1, 0x2c, 0xe1, 0xe5, 0xf6, 0x57, + 0xcd, 0xef, 0xcf, 0xfc, 0xd3, 0x38, 0xcc, 0x68, 0x0e, 0x54, 0x96, 0x30, 0x79, 0x65, 0x2b, 0xfc, + 0x56, 0xdc, 0x15, 0x88, 0xa4, 0x50, 0xb7, 0x35, 0x08, 0xea, 0x01, 0x50, 0x1c, 0x61, 0x9f, 0x30, + 0x12, 0xf1, 0x48, 0xce, 0x4f, 0xfc, 0x9d, 0xe3, 0x47, 0x97, 0xbd, 0x84, 0xa6, 0xad, 0x91, 0xe7, + 0xa5, 0xb9, 0x60, 0x1d, 0xab, 0xf8, 0xad, 0x66, 0xe8, 0x19, 0xcc, 0xef, 0xbb, 0x1e, 0xd9, 0xcb, + 0x04, 0x99, 0x12, 0x82, 0xdc, 0x3f, 0xbe, 0x20, 0x37, 0x75, 0xba, 0x76, 0x81, 0x8d, 0xb9, 0x0e, + 0x8b, 0xc5, 0xf3, 0xc4, 0x85, 0x74, 0x7d, 0xdc, 0x49, 0xb5, 0xa5, 0x66, 0x26, 0x82, 0xc5, 0xe2, + 0xf9, 0x31, 0xff, 0x39, 0x0e, 0xa7, 0x53, 0x72, 0x5b, 0x41, 0x10, 0xf6, 0x03, 0x47, 0xb4, 0x58, + 0xa5, 0xb6, 0x58, 0x86, 0x49, 0xe6, 0x32, 0x2f, 0x2d, 0x7c, 0xc4, 0x84, 0xe7, 0x2e, 0x16, 0x86, + 0x1e, 0x73, 0xa9, 0x32, 0x70, 0x32, 0x95, 0xb6, 0x17, 0x5d, 0x5b, 0x5b, 0x44, 0x82, 0x9a, 0x9d, + 0xce, 0xf9, 0x37, 0x5e, 0xd5, 0x88, 0x7e, 0x45, 0x2a, 0x33, 0x9d, 0x0b, 0xbf, 0x0f, 0x3d, 0x8f, + 0x38, 0x5c, 0x1d, 0x5a, 0x47, 0x53, 0x80, 0x8a, 0x4e, 0x89, 0x45, 0x6e, 0xd0, 0x51, 0xfd, 0x8c, + 0x9a, 0x71, 0x39, 0x71, 0x14, 0xe1, 0x43, 0xa3, 0x26, 0x14, 0x20, 0x27, 0xe8, 0x2a, 0x54, 0x7d, + 0x4c, 0x55, 0xa2, 0x5b, 0xcf, 0x45, 0x87, 0x32, 0x0d, 0x58, 0xbb, 0x98, 0xca, 0x4c, 0xc0, 0x97, + 0x35, 0x3e, 0xe4, 0xfd, 0x34, 0xfd, 0xea, 0x25, 0xe1, 0x13, 0x98, 0xcb, 0x05, 0x1f, 0xf4, 0x08, + 0x56, 0x32, 0x8f, 0xd2, 0x19, 0xaa, 0x22, 0xf0, 0xad, 0x97, 0x4a, 0x66, 0x0f, 0x21, 0x60, 0x3e, + 0x85, 0x25, 0xee, 0x32, 0xe2, 0xe0, 0x9f, 0x50, 0x6b, 0xf3, 0x31, 0xd4, 0x53, 0x96, 0xa5, 0x3e, + 0xd3, 0x80, 0xda, 0x41, 0xd2, 0xb4, 0xc9, 0xde, 0x26, 0x9d, 0x9b, 0x5b, 0x80, 0x74, 0x79, 0x55, + 0x06, 0xba, 0x98, 0x2f, 0x8a, 0x4f, 0x17, 0xd3, 0x8d, 0x40, 0x4f, 0x6a, 0xe2, 0x5f, 0x8f, 0xc3, + 0xc2, 0xb6, 0x2b, 0x2e, 0xce, 0x4e, 0x28, 0xc8, 0xad, 0xc3, 0x62, 0xdc, 0x6f, 0xf9, 0x61, 0xbb, + 0xef, 0x11, 0x55, 0x14, 0xa8, 0x4c, 0x3f, 0x00, 0x1f, 0x15, 0xfc, 0xd2, 0x6b, 0x94, 0x09, 0xed, + 0x1a, 0xe5, 0x2a, 0x9c, 0xbd, 0x47, 0x9e, 0xa9, 0xfd, 0x6c, 0x7b, 0x61, 0xab, 0xe5, 0x06, 0x9d, + 0x84, 0xc9, 0xa4, 0x60, 0x32, 0x1c, 0xc1, 0xfc, 0x45, 0x05, 0x16, 0x33, 0x5d, 0x28, 0x6d, 0x5e, + 0x96, 0x5e, 0x2f, 0x75, 0xf9, 0x8e, 0xae, 0xcb, 0x22, 0xea, 0x7f, 0xee, 0xf0, 0xb3, 0xba, 0xc3, + 0xff, 0xb1, 0x02, 0xa7, 0xb7, 0x5d, 0x96, 0x84, 0x1a, 0xf7, 0x7f, 0xcc, 0x2e, 0xa6, 0x05, 0x2b, + 0x45, 0xf1, 0x95, 0x2a, 0x97, 0x61, 0x92, 0x5b, 0x29, 0xe9, 0xdd, 0xe5, 0xc4, 0xfc, 0xdd, 0x14, + 0x9c, 0xfb, 0x9c, 0xb6, 0x31, 0x4b, 0xaf, 0xf3, 0x6e, 0x86, 0xd1, 0x1e, 0xff, 0x74, 0x32, 0xfb, + 0x2e, 0x3c, 0xc2, 0x8e, 0x8f, 0x7c, 0x84, 0xad, 0x8e, 0x78, 0x84, 0x9d, 0x38, 0xd2, 0x23, 0xec, + 0xe4, 0x89, 0x3d, 0xc2, 0x0e, 0xf6, 0x33, 0x53, 0xa5, 0xfd, 0xcc, 0xa3, 0x5c, 0xcd, 0x3f, 0x2d, + 0x1c, 0xfd, 0x3b, 0xba, 0xa3, 0x8f, 0xb4, 0xce, 0xc8, 0xd7, 0xa3, 0xc2, 0xdb, 0x65, 0xed, 0xa5, + 0x6f, 0x97, 0xf5, 0xc1, 0xb7, 0xcb, 0xf2, 0xe7, 0x2f, 0x18, 0xfa, 0xfc, 0x75, 0x1e, 0xe6, 0xe3, + 0xc3, 0xc0, 0x21, 0xed, 0xf4, 0x92, 0x77, 0x46, 0x6e, 0x3b, 0x0f, 0xcd, 0xf9, 0xf0, 0x6c, 0x21, + 0xb6, 0xa4, 0x9e, 0x3a, 0xa7, 0x79, 0xea, 0x7f, 0x4f, 0xfb, 0x71, 0x05, 0x56, 0x87, 0xd9, 0x44, + 0x1d, 0x35, 0x03, 0xa6, 0x9d, 0x2e, 0x0e, 0x3a, 0xe2, 0xa2, 0x4c, 0xf4, 0xc3, 0x6a, 0xba, 0xf9, + 0x67, 0x80, 0xa5, 0xac, 0xd6, 0xe5, 0x7f, 0x5d, 0x87, 0xa0, 0xfb, 0xb0, 0xb8, 0xad, 0x7e, 0x61, + 0x91, 0xde, 0x53, 0x8f, 0x7a, 0x46, 0x6a, 0xbc, 0x59, 0xfe, 0x51, 0xb2, 0x37, 0xc7, 0x90, 0x03, + 0x67, 0x8b, 0x04, 0xb3, 0x17, 0xab, 0xb7, 0x47, 0x50, 0x4e, 0xb1, 0x5e, 0xc6, 0xe2, 0x42, 0x05, + 0x3d, 0x82, 0xf9, 0xfc, 0xbb, 0x0a, 0xca, 0x25, 0xff, 0xd2, 0xa7, 0x9e, 0x86, 0x39, 0x0a, 0x25, + 0x95, 0xff, 0x31, 0x37, 0x75, 0xee, 0x91, 0x01, 0x99, 0xf9, 0x3e, 0xb8, 0xec, 0x11, 0xa6, 0xf1, + 0xcd, 0x91, 0x38, 0x29, 0xf5, 0x8f, 0xa1, 0x96, 0xdc, 0xa0, 0xe6, 0xd5, 0x5c, 0xb8, 0x57, 0x6d, + 0x2c, 0xe6, 0xe9, 0xed, 0xc7, 0xe6, 0x18, 0xfa, 0x44, 0x2e, 0xde, 0xa2, 0xb4, 0x64, 0xb1, 0x76, + 0x6f, 0xd8, 0x38, 0x55, 0x72, 0x57, 0x67, 0x8e, 0xa1, 0xef, 0xc1, 0x0c, 0x1f, 0xed, 0xa9, 0xdf, + 0x36, 0xac, 0x58, 0xf2, 0xa7, 0x34, 0x56, 0xf2, 0x53, 0x1a, 0xeb, 0x86, 0x4f, 0xd9, 0x61, 0xa3, + 0xe4, 0x32, 0x4d, 0x11, 0x78, 0x0c, 0x73, 0xdb, 0x84, 0x65, 0xbd, 0x2f, 0x7a, 0xe7, 0x48, 0x37, + 0x04, 0x0d, 0xb3, 0x88, 0x36, 0xd8, 0x3e, 0x9b, 0x63, 0xe8, 0x37, 0x15, 0x38, 0xb5, 0x4d, 0x58, + 0xb1, 0x9b, 0x44, 0xef, 0x97, 0x33, 0x19, 0xd2, 0x75, 0x36, 0xee, 0x1d, 0xf7, 0xdc, 0xe5, 0xc9, + 0x9a, 0x63, 0xe8, 0xb7, 0x15, 0x38, 0xa3, 0x09, 0xa6, 0xb7, 0x87, 0x68, 0x63, 0xb4, 0x70, 0x25, + 0xad, 0x64, 0xe3, 0xf6, 0x31, 0x7f, 0xb2, 0xa2, 0x91, 0x34, 0xc7, 0xd0, 0x9e, 0xb0, 0x49, 0x56, + 0x0d, 0xa2, 0x73, 0xa5, 0x65, 0x5f, 0xca, 0x7d, 0x75, 0xd8, 0xe7, 0xd4, 0x0e, 0xb7, 0x61, 0x66, + 0x9b, 0xb0, 0xa4, 0xc8, 0xc9, 0x7b, 0x5a, 0xa1, 0x62, 0xcc, 0x1f, 0xd5, 0x62, 0x5d, 0x24, 0x3c, + 0x66, 0x49, 0xd2, 0xd2, 0xca, 0x82, 0xfc, 0x59, 0x2d, 0xad, 0x78, 0xf2, 0x1e, 0x53, 0x5e, 0x55, + 0x98, 0x63, 0xe8, 0x29, 0xac, 0x94, 0x87, 0x43, 0xf4, 0xee, 0x91, 0xd3, 0x58, 0x63, 0xfd, 0x28, + 0xa8, 0x09, 0xcb, 0x4f, 0xb7, 0xfe, 0xfa, 0x62, 0xb5, 0xf2, 0xf7, 0x17, 0xab, 0x95, 0x7f, 0xbd, + 0x58, 0xad, 0x7c, 0x71, 0xe9, 0x25, 0x3f, 0x6d, 0xd3, 0x7e, 0x87, 0x87, 0xa9, 0xeb, 0x78, 0x2e, + 0x09, 0x58, 0x6b, 0x4a, 0x9c, 0xb7, 0x4b, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x90, 0xf3, + 0xb5, 0xa6, 0x27, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3466,54 +3400,6 @@ var _RepoServerService_serviceDesc = grpc.ServiceDesc{ Metadata: "reposerver/repository/repository.proto", } -func (m *VersionConfig) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *VersionConfig) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *VersionConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.ResourceName) > 0 { - i -= len(m.ResourceName) - copy(dAtA[i:], m.ResourceName) - i = encodeVarintRepository(dAtA, i, uint64(len(m.ResourceName))) - i-- - dAtA[i] = 0x1a - } - if len(m.JsonPath) > 0 { - i -= len(m.JsonPath) - copy(dAtA[i:], m.JsonPath) - i = encodeVarintRepository(dAtA, i, uint64(len(m.JsonPath))) - i-- - dAtA[i] = 0x12 - } - if len(m.ProductLabel) > 0 { - i -= len(m.ProductLabel) - copy(dAtA[i:], m.ProductLabel) - i = encodeVarintRepository(dAtA, i, uint64(len(m.ProductLabel))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *ManifestRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3558,9 +3444,9 @@ func (m *ManifestRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xca } } - if m.VersionConfig != nil { + if m.ApplicationMetadata != nil { { - size, err := m.VersionConfig.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.ApplicationMetadata.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -5890,30 +5776,6 @@ func encodeVarintRepository(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *VersionConfig) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.ProductLabel) - if l > 0 { - n += 1 + l + sovRepository(uint64(l)) - } - l = len(m.JsonPath) - if l > 0 { - n += 1 + l + sovRepository(uint64(l)) - } - l = len(m.ResourceName) - if l > 0 { - n += 1 + l + sovRepository(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - func (m *ManifestRequest) Size() (n int) { if m == nil { return 0 @@ -6017,8 +5879,8 @@ func (m *ManifestRequest) Size() (n int) { n += mapEntrySize + 2 + sovRepository(uint64(mapEntrySize)) } } - if m.VersionConfig != nil { - l = m.VersionConfig.Size() + if m.ApplicationMetadata != nil { + l = m.ApplicationMetadata.Size() n += 2 + l + sovRepository(uint64(l)) } if len(m.ProjectSourceRepos) > 0 { @@ -6980,153 +6842,6 @@ func sovRepository(x uint64) (n int) { func sozRepository(x uint64) (n int) { return sovRepository(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *VersionConfig) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRepository - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: VersionConfig: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: VersionConfig: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProductLabel", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRepository - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRepository - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRepository - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ProductLabel = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field JsonPath", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRepository - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRepository - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRepository - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.JsonPath = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRepository - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthRepository - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthRepository - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ResourceName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipRepository(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthRepository - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *ManifestRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -7952,7 +7667,7 @@ func (m *ManifestRequest) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 24: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field VersionConfig", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ApplicationMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -7979,10 +7694,10 @@ func (m *ManifestRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.VersionConfig == nil { - m.VersionConfig = &VersionConfig{} + if m.ApplicationMetadata == nil { + m.ApplicationMetadata = &v1.ObjectMeta{} } - if err := m.VersionConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ApplicationMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/reposerver/apiclient/util.go b/reposerver/apiclient/util.go index 7c1d57b0995df..f060911b8cf43 100644 --- a/reposerver/apiclient/util.go +++ b/reposerver/apiclient/util.go @@ -1,9 +1,5 @@ package apiclient -import ( - "github.com/argoproj/argo-cd/v2/pkg/version_config_manager" -) - func (m *ManifestResponse) GetCompiledManifests() []string { manifests := make([]string, len(m.Manifests)) for i, m := range m.Manifests { @@ -11,17 +7,3 @@ func (m *ManifestResponse) GetCompiledManifests() []string { } return manifests } - -func GetVersionConfig() *VersionConfig { - versionConfig := version_config_manager.GetVersionConfig() - - if versionConfig == nil { - return nil - } - - return &VersionConfig{ - ProductLabel: versionConfig.ProductLabel, - ResourceName: versionConfig.ResourceName, - JsonPath: versionConfig.JsonPath, - } -} diff --git a/reposerver/cache/cache.go b/reposerver/cache/cache.go index 22a7f88e592b8..e98fcb83e4082 100644 --- a/reposerver/cache/cache.go +++ b/reposerver/cache/cache.go @@ -17,6 +17,7 @@ import ( "github.com/spf13/cobra" appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/argoproj/argo-cd/v2/pkg/codefresh" "github.com/argoproj/argo-cd/v2/reposerver/apiclient" "github.com/argoproj/argo-cd/v2/util/argo" cacheutil "github.com/argoproj/argo-cd/v2/util/cache" @@ -27,9 +28,10 @@ import ( var ErrCacheMiss = cacheutil.ErrCacheMiss type Cache struct { - cache *cacheutil.Cache - repoCacheExpiration time.Duration - revisionCacheExpiration time.Duration + cache *cacheutil.Cache + repoCacheExpiration time.Duration + revisionCacheExpiration time.Duration + cfAppConfigCacheExpiration time.Duration } // ClusterRuntimeInfo holds cluster runtime information @@ -40,16 +42,18 @@ type ClusterRuntimeInfo interface { GetKubeVersion() string } -func NewCache(cache *cacheutil.Cache, repoCacheExpiration time.Duration, revisionCacheExpiration time.Duration) *Cache { - return &Cache{cache, repoCacheExpiration, revisionCacheExpiration} +func NewCache(cache *cacheutil.Cache, repoCacheExpiration time.Duration, revisionCacheExpiration time.Duration, cfAppConfigCacheExpiration time.Duration) *Cache { + return &Cache{cache, repoCacheExpiration, revisionCacheExpiration, cfAppConfigCacheExpiration} } func AddCacheFlagsToCmd(cmd *cobra.Command, opts ...func(client *redis.Client)) func() (*Cache, error) { var repoCacheExpiration time.Duration var revisionCacheExpiration time.Duration + var cfAppConfigCacheExpiration time.Duration cmd.Flags().DurationVar(&repoCacheExpiration, "repo-cache-expiration", env.ParseDurationFromEnv("ARGOCD_REPO_CACHE_EXPIRATION", 24*time.Hour, 0, math.MaxInt64), "Cache expiration for repo state, incl. app lists, app details, manifest generation, revision meta-data") cmd.Flags().DurationVar(&revisionCacheExpiration, "revision-cache-expiration", env.ParseDurationFromEnv("ARGOCD_RECONCILIATION_TIMEOUT", 3*time.Minute, 0, math.MaxInt64), "Cache expiration for cached revision") + cmd.Flags().DurationVar(&cfAppConfigCacheExpiration, "cf-app-config-cache-expiration", env.ParseDurationFromEnv("ARGOCD_CF_APP_CONFIG_CACHE_EXPIRATION", 3*time.Minute, 0, math.MaxInt64), "Cache expiration for Codefresh application configs") repoFactory := cacheutil.AddCacheFlagsToCmd(cmd, opts...) @@ -58,7 +62,7 @@ func AddCacheFlagsToCmd(cmd *cobra.Command, opts ...func(client *redis.Client)) if err != nil { return nil, fmt.Errorf("error adding cache flags to cmd: %w", err) } - return NewCache(cache, repoCacheExpiration, revisionCacheExpiration), nil + return NewCache(cache, repoCacheExpiration, revisionCacheExpiration, cfAppConfigCacheExpiration), nil } } @@ -385,6 +389,19 @@ func (cmr *CachedManifestResponse) generateCacheEntryHash() (string, error) { } +func CfAppConfigCacheKey(namespace, name string) string { + return fmt.Sprintf("cf_app_config:%s:%s", namespace, name) +} + +func (c *Cache) GetCfAppConfig(namespace, name string) (*codefresh.ApplicationConfiguration, error) { + item := &codefresh.ApplicationConfiguration{} + return item, c.cache.GetItem(CfAppConfigCacheKey(namespace, name), item) +} + +func (c *Cache) SetCfAppConfig(namespace, name string, item *codefresh.ApplicationConfiguration) error { + return c.cache.SetItem(CfAppConfigCacheKey(namespace, name), item, c.cfAppConfigCacheExpiration, false) +} + // CachedManifestResponse represents a cached result of a previous manifest generation operation, including the caching // of a manifest generation error, plus additional information on previous failures type CachedManifestResponse struct { diff --git a/reposerver/cache/cache_test.go b/reposerver/cache/cache_test.go index a667db453ef98..efc488d5d7b83 100644 --- a/reposerver/cache/cache_test.go +++ b/reposerver/cache/cache_test.go @@ -25,6 +25,7 @@ func newFixtures() *fixtures { cacheutil.NewCache(cacheutil.NewInMemoryCache(1*time.Hour)), 1*time.Minute, 1*time.Minute, + 1*time.Minute, )} } @@ -146,6 +147,7 @@ func TestCachedManifestResponse_HashBehavior(t *testing.T) { cacheutil.NewCache(inMemCache), 1*time.Minute, 1*time.Minute, + 1*time.Minute, ) response := apiclient.ManifestResponse{ diff --git a/reposerver/repository/app_version.go b/reposerver/repository/app_version.go index 1f9213a62d2fa..ddd7098a883c6 100644 --- a/reposerver/repository/app_version.go +++ b/reposerver/repository/app_version.go @@ -1,11 +1,14 @@ package repository import ( + "encoding/json" + "fmt" "os" "path/filepath" "reflect" "strings" + "github.com/argoproj/argo-cd/v2/pkg/version_config_manager" log "github.com/sirupsen/logrus" "gopkg.in/yaml.v2" "k8s.io/client-go/util/jsonpath" @@ -22,23 +25,35 @@ type Result struct { Dependencies DependenciesMap `json:"dependencies"` } -func getVersionFromYaml(appPath, jsonPathExpression string) (*string, error) { +func getVersionFromFile(appPath, jsonPathExpression string) (*string, error) { content, err := os.ReadFile(appPath) if err != nil { return nil, err } - log.Infof("AppVersion source content: %s", string(content)) + log.Infof("AppVersion source content was read from %s", appPath) var obj interface{} - if err := yaml.Unmarshal(content, &obj); err != nil { - return nil, err - } + var jsonObj interface{} - // Convert YAML to Map[interface{}]interface{} - jsonObj, err := convertToJSONCompatible(obj) - if err != nil { - return nil, err + // Determine the file type and unmarshal accordingly + switch filepath.Ext(appPath) { + case ".yaml", ".yml": + if err := yaml.Unmarshal(content, &obj); err != nil { + return nil, err + } + // Convert YAML to Map[interface{}]interface{} + jsonObj, err = convertToJSONCompatible(obj) + if err != nil { + return nil, err + } + case ".json": + if err := json.Unmarshal(content, &obj); err != nil { + return nil, err + } + jsonObj = obj + default: + return nil, fmt.Errorf("Unsupported file format of %s", appPath) } jp := jsonpath.New("jsonpathParser") @@ -54,7 +69,7 @@ func getVersionFromYaml(appPath, jsonPathExpression string) (*string, error) { } appVersion := buf.String() - log.Infof("AppVersion source content appVersion: %s", appVersion) + log.Infof("Extracted appVersion: %s", appVersion) return &appVersion, nil } @@ -81,18 +96,25 @@ func readFileContent(result *Result, appPath, fileName, fieldName string) { } } -func getAppVersions(appPath string, resourceName string, jsonPathExpression string) (*Result, error) { +func getAppVersions(appPath string, versionConfig *version_config_manager.VersionConfig) (*Result, error) { // Defaults - if resourceName == "" { - resourceName = "Chart.yaml" - } - if jsonPathExpression == "" { - jsonPathExpression = "{.appVersion}" + resourceName := "Chart.yaml" + jsonPathExpression := "{.appVersion}" + + if versionConfig != nil { + if versionConfig.ResourceName != "" { + resourceName = versionConfig.ResourceName + } + if versionConfig.JsonPath != "" { + jsonPathExpression = versionConfig.JsonPath + } } // Get version of root - appVersion, err := getVersionFromYaml(filepath.Join(appPath, resourceName), jsonPathExpression) + log.Infof("appVersion get from file: %s, jsonPath: %s", filepath.Join(appPath, resourceName), jsonPathExpression) + appVersion, err := getVersionFromFile(filepath.Join(appPath, resourceName), jsonPathExpression) if err != nil { + log.Errorf("Error in getVersionFromFile. %v", err) return nil, err } log.Infof("appVersion value: %v (appPath=%s)", *appVersion, appPath) @@ -106,5 +128,6 @@ func getAppVersions(appPath string, resourceName string, jsonPathExpression stri readFileContent(result, appPath, "Chart.yaml", "Deps") readFileContent(result, appPath, "requirements.yaml", "Requirements") + log.Infof("Return appVersion as: %v", result) return result, nil } diff --git a/reposerver/repository/repository.go b/reposerver/repository/repository.go index 78fb1fed5d35e..b534960548ef5 100644 --- a/reposerver/repository/repository.go +++ b/reposerver/repository/repository.go @@ -46,6 +46,8 @@ import ( pluginclient "github.com/argoproj/argo-cd/v2/cmpserver/apiclient" "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "github.com/argoproj/argo-cd/v2/pkg/codefresh" + "github.com/argoproj/argo-cd/v2/pkg/version_config_manager" "github.com/argoproj/argo-cd/v2/reposerver/apiclient" "github.com/argoproj/argo-cd/v2/reposerver/cache" "github.com/argoproj/argo-cd/v2/reposerver/metrics" @@ -90,6 +92,8 @@ type Service struct { newGitClient func(rawRepoURL string, root string, creds git.Creds, insecure bool, enableLfs bool, proxy string, opts ...git.ClientOpts) (git.Client, error) newHelmClient func(repoURL string, creds helm.Creds, enableOci bool, proxy string, opts ...helm.ClientOpts) helm.Client initConstants RepoServerInitConstants + codefreshClient codefresh.CodefreshClientInterface + versionConfigManager *version_config_manager.VersionConfigManager // now is usually just time.Now, but may be replaced by unit tests for testing purposes now func() time.Time } @@ -107,6 +111,9 @@ type RepoServerInitConstants struct { StreamedManifestMaxTarSize int64 HelmManifestMaxExtractedSize int64 DisableHelmManifestMaxExtractedSize bool + CodefreshApplicationVersioningEnabled bool + CodefreshUseApplicationConfiguration bool + CodefreshConfig codefresh.CodefreshConfig } // NewService returns a new instance of the Manifest service @@ -118,6 +125,11 @@ func NewService(metricsServer *metrics.MetricsServer, cache *cache.Cache, initCo repoLock := NewRepositoryLock() gitRandomizedPaths := io.NewRandomizedTempPaths(rootDir) helmRandomizedPaths := io.NewRandomizedTempPaths(rootDir) + + codefreshClient := codefresh.NewCodefreshClient(&initConstants.CodefreshConfig) + codefreshGraphQLRequests := codefresh.NewCodefreshGraphQLRequests(codefreshClient) + versionConfigManager := version_config_manager.NewVersionConfigManager(codefreshGraphQLRequests, cache) + return &Service{ parallelismLimitSemaphore: parallelismLimitSemaphore, repoLock: repoLock, @@ -128,13 +140,15 @@ func NewService(metricsServer *metrics.MetricsServer, cache *cache.Cache, initCo newHelmClient: func(repoURL string, creds helm.Creds, enableOci bool, proxy string, opts ...helm.ClientOpts) helm.Client { return helm.NewClientWithLock(repoURL, creds, sync.NewKeyLock(), enableOci, proxy, opts...) }, - initConstants: initConstants, - now: time.Now, - gitCredsStore: gitCredsStore, - gitRepoPaths: gitRandomizedPaths, - chartPaths: helmRandomizedPaths, - gitRepoInitializer: directoryPermissionInitializer, - rootDir: rootDir, + initConstants: initConstants, + now: time.Now, + gitCredsStore: gitCredsStore, + gitRepoPaths: gitRandomizedPaths, + chartPaths: helmRandomizedPaths, + gitRepoInitializer: directoryPermissionInitializer, + rootDir: rootDir, + codefreshClient: codefreshClient, + versionConfigManager: versionConfigManager, } } @@ -592,6 +606,16 @@ func resolveReferencedSources(hasMultipleSources bool, source *v1alpha1.Applicat return repoRefs, nil } +func (s *Service) GetVersionConfig(app *metav1.ObjectMeta) *version_config_manager.VersionConfig { + versionConfig, err := s.versionConfigManager.GetVersionConfig(app) + + if versionConfig == nil || err != nil { + return nil + } + + return versionConfig +} + func (s *Service) GenerateManifest(ctx context.Context, q *apiclient.ManifestRequest) (*apiclient.ManifestResponse, error) { var res *apiclient.ManifestResponse var err error @@ -616,7 +640,19 @@ func (s *Service) GenerateManifest(ctx context.Context, q *apiclient.ManifestReq return nil } - promise = s.runManifestGen(ctx, repoRoot, commitSHA, cacheKey, ctxSrc, q) + var versionConfig *version_config_manager.VersionConfig + if s.initConstants.CodefreshApplicationVersioningEnabled && s.initConstants.CodefreshUseApplicationConfiguration { + log.Infof("cfAppConfig. Get version config for namespace: %s, name: %s", q.ApplicationMetadata.Namespace, q.ApplicationMetadata.Name) + versionConfig = s.GetVersionConfig(q.ApplicationMetadata) + if versionConfig != nil { + log.Infof("cfAppConfig. Config file: %s, jsonPath: %s", versionConfig.ResourceName, versionConfig.JsonPath) + } else { + log.Infof("cfAppConfig. versionConfig is nil. Unable to retrieve version configuration.") + } + } else { + log.Infof("cfAppConfig. Flags for application versioning (CODEFRESH_APPLICATION_VERSIONING_ENABLED and CODEFRESH_USE_APPLICATION_CONFIGURATION) disabled. Skip getting application version config.") + } + promise = s.runManifestGen(ctx, repoRoot, commitSHA, cacheKey, ctxSrc, q, versionConfig) // The fist channel to send the message will resume this operation. // The main purpose for using channels here is to be able to unlock // the repository as soon as the lock in not required anymore. In @@ -676,7 +712,7 @@ type generateManifestCh struct { // - or, the cache does contain a value for this key, but it is an expired manifest generation entry // - or, NoCache is true // Returns a ManifestResponse, or an error, but not both -func (s *Service) runManifestGen(ctx context.Context, repoRoot, commitSHA, cacheKey string, opContextSrc operationContextSrc, q *apiclient.ManifestRequest) *ManifestResponsePromise { +func (s *Service) runManifestGen(ctx context.Context, repoRoot, commitSHA, cacheKey string, opContextSrc operationContextSrc, q *apiclient.ManifestRequest, versionConfig *version_config_manager.VersionConfig) *ManifestResponsePromise { responseCh := make(chan *apiclient.ManifestResponse) tarDoneCh := make(chan bool) @@ -688,7 +724,7 @@ func (s *Service) runManifestGen(ctx context.Context, repoRoot, commitSHA, cache tarDoneCh: tarDoneCh, errCh: errCh, } - go s.runManifestGenAsync(ctx, repoRoot, commitSHA, cacheKey, opContextSrc, q, channels) + go s.runManifestGenAsync(ctx, repoRoot, commitSHA, cacheKey, opContextSrc, q, versionConfig, channels) return responsePromise } @@ -701,7 +737,7 @@ type repoRef struct { key string } -func (s *Service) runManifestGenAsync(ctx context.Context, repoRoot, commitSHA, cacheKey string, opContextSrc operationContextSrc, q *apiclient.ManifestRequest, ch *generateManifestCh) { +func (s *Service) runManifestGenAsync(ctx context.Context, repoRoot, commitSHA, cacheKey string, opContextSrc operationContextSrc, q *apiclient.ManifestRequest, versionConfig *version_config_manager.VersionConfig, ch *generateManifestCh) { defer func() { close(ch.errCh) close(ch.responseCh) @@ -809,7 +845,7 @@ func (s *Service) runManifestGenAsync(ctx context.Context, repoRoot, commitSHA, } } - manifestGenResult, err = GenerateManifests(ctx, opContext.appPath, repoRoot, commitSHA, q, false, s.gitCredsStore, gitClient, s.initConstants.MaxCombinedDirectoryManifestsSize, s.gitRepoPaths, WithCMPTarDoneChannel(ch.tarDoneCh), WithCMPTarExcludedGlobs(s.initConstants.CMPTarExcludedGlobs)) + manifestGenResult, err = GenerateManifests(ctx, opContext.appPath, repoRoot, commitSHA, q, s.initConstants.CodefreshApplicationVersioningEnabled, versionConfig, false, s.gitCredsStore, gitClient, s.initConstants.MaxCombinedDirectoryManifestsSize, s.gitRepoPaths, WithCMPTarDoneChannel(ch.tarDoneCh), WithCMPTarExcludedGlobs(s.initConstants.CMPTarExcludedGlobs)) } refSourceCommitSHAs := make(map[string]string) if len(repoRefs) > 0 { @@ -1377,7 +1413,7 @@ func getRepoCredential(repoCredentials []*v1alpha1.RepoCreds, repoURL string) *v } // GenerateManifests generates manifests from a path -func GenerateManifests(ctx context.Context, appPath, repoRoot, revision string, q *apiclient.ManifestRequest, isLocal bool, gitCredsStore git.CredsStore, gitClient git.Client, maxCombinedManifestQuantity resource.Quantity, gitRepoPaths io.TempPaths, opts ...GenerateManifestOpt) (*apiclient.ManifestResponse, error) { +func GenerateManifests(ctx context.Context, appPath, repoRoot, revision string, q *apiclient.ManifestRequest, codefreshApplicationVersioningEnabled bool, versionConfig *version_config_manager.VersionConfig, isLocal bool, gitCredsStore git.CredsStore, gitClient git.Client, maxCombinedManifestQuantity resource.Quantity, gitRepoPaths io.TempPaths, opts ...GenerateManifestOpt) (*apiclient.ManifestResponse, error) { opt := newGenerateManifestOpt(opts...) var ( @@ -1455,18 +1491,22 @@ func GenerateManifests(ctx context.Context, appPath, repoRoot, revision string, } if appSourceType == v1alpha1.ApplicationSourceTypeHelm { - appVersions, err := getAppVersions(appPath, q.VersionConfig.ResourceName, q.VersionConfig.JsonPath) - if err != nil { - log.Errorf("failed to retrieve application version, app name: %q: %s", q.AppName, err.Error()) - } else { - res.ApplicationVersions = &apiclient.ApplicationVersions{ - AppVersion: appVersions.AppVersion, - Dependencies: &apiclient.Dependencies{ - Lock: appVersions.Dependencies.Lock, - Deps: appVersions.Dependencies.Deps, - Requirements: appVersions.Dependencies.Requirements, - }, + if codefreshApplicationVersioningEnabled { + appVersions, err := getAppVersions(appPath, versionConfig) + if err != nil { + log.Errorf("failed to retrieve application version, app name: %q: %s", q.AppName, err.Error()) + } else { + res.ApplicationVersions = &apiclient.ApplicationVersions{ + AppVersion: appVersions.AppVersion, + Dependencies: &apiclient.Dependencies{ + Lock: appVersions.Dependencies.Lock, + Deps: appVersions.Dependencies.Deps, + Requirements: appVersions.Dependencies.Requirements, + }, + } } + } else { + log.Infof("Application versioning disabled by flag (CODEFRESH_APPLICATION_VERSIONING_ENABLED)") } } diff --git a/reposerver/repository/repository.proto b/reposerver/repository/repository.proto index 5db2779858998..bf9e69531c3fc 100644 --- a/reposerver/repository/repository.proto +++ b/reposerver/repository/repository.proto @@ -8,12 +8,6 @@ import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1/generated.proto"; import "google/protobuf/empty.proto"; -message VersionConfig { - string productLabel = 1; - string jsonPath = 2; - string resourceName = 3; -} - // ManifestRequest is a query for manifest generation. message ManifestRequest { github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Repository repo = 1; @@ -40,7 +34,7 @@ message ManifestRequest { github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.HelmOptions helmOptions = 21; bool hasMultipleSources = 22; map refSources = 23; - VersionConfig versionConfig = 24; + k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta applicationMetadata = 24; // This is used to surface "source not permitted" errors for Helm repositories repeated string projectSourceRepos = 25; // This is used to surface "source not permitted" errors for Helm repositories diff --git a/server/application/application.go b/server/application/application.go index 066cad0342de9..16dac21c6db6f 100644 --- a/server/application/application.go +++ b/server/application/application.go @@ -491,23 +491,23 @@ func (s *Server) GetManifests(ctx context.Context, q *application.ApplicationMan } manifestInfo, err = client.GenerateManifest(ctx, &apiclient.ManifestRequest{ - Repo: repo, - Revision: revision, - AppLabelKey: appInstanceLabelKey, - AppName: a.InstanceName(s.ns), - Namespace: a.Spec.Destination.Namespace, - ApplicationSource: &source, - Repos: helmRepos, - KustomizeOptions: kustomizeOptions, - KubeVersion: serverVersion, - ApiVersions: argo.APIResourcesToStrings(apiResources, true), - HelmRepoCreds: helmCreds, - HelmOptions: helmOptions, - TrackingMethod: string(argoutil.GetTrackingMethod(s.settingsMgr)), - EnabledSourceTypes: enableGenerateManifests, - ProjectName: proj.Name, - ProjectSourceRepos: proj.Spec.SourceRepos, - VersionConfig: apiclient.GetVersionConfig(), + Repo: repo, + Revision: revision, + AppLabelKey: appInstanceLabelKey, + AppName: a.InstanceName(s.ns), + Namespace: a.Spec.Destination.Namespace, + ApplicationSource: &source, + Repos: helmRepos, + KustomizeOptions: kustomizeOptions, + KubeVersion: serverVersion, + ApiVersions: argo.APIResourcesToStrings(apiResources, true), + HelmRepoCreds: helmCreds, + HelmOptions: helmOptions, + TrackingMethod: string(argoutil.GetTrackingMethod(s.settingsMgr)), + EnabledSourceTypes: enableGenerateManifests, + ProjectName: proj.Name, + ProjectSourceRepos: proj.Spec.SourceRepos, + ApplicationMetadata: &a.ObjectMeta, }) if err != nil { return fmt.Errorf("error generating manifests: %w", err) diff --git a/server/server.go b/server/server.go index fb33a607ff393..6b84a1bc1392f 100644 --- a/server/server.go +++ b/server/server.go @@ -1028,7 +1028,7 @@ func (a *ArgoCDServer) newHTTPServer(ctx context.Context, port int, grpcWebHandl // Webhook handler for git events (Note: cache timeouts are hardcoded because API server does not write to cache and not really using them) argoDB := db.NewDB(a.Namespace, a.settingsMgr, a.KubeClientset) - acdWebhookHandler := webhook.NewHandler(a.Namespace, a.ArgoCDServerOpts.ApplicationNamespaces, a.AppClientset, a.settings, a.settingsMgr, repocache.NewCache(a.Cache.GetCache(), 24*time.Hour, 3*time.Minute), a.Cache, argoDB) + acdWebhookHandler := webhook.NewHandler(a.Namespace, a.ArgoCDServerOpts.ApplicationNamespaces, a.AppClientset, a.settings, a.settingsMgr, repocache.NewCache(a.Cache.GetCache(), 24*time.Hour, 3*time.Minute, 3*time.Minute), a.Cache, argoDB) mux.HandleFunc("/api/webhook", acdWebhookHandler.Handler) diff --git a/util/argo/argo.go b/util/argo/argo.go index 76b84b4b5a319..7fe19c5ac13ef 100644 --- a/util/argo/argo.go +++ b/util/argo/argo.go @@ -422,6 +422,7 @@ func validateRepo(ctx context.Context, permittedHelmRepos, helmOptions, app.Name, + &app.ObjectMeta, app.Spec.Destination, sources, repoClient, @@ -706,6 +707,7 @@ func verifyGenerateManifests( helmRepos argoappv1.Repositories, helmOptions *argoappv1.HelmOptions, name string, + metadata *metav1.ObjectMeta, dest argoappv1.ApplicationDestination, sources []argoappv1.ApplicationSource, repoClient apiclient.RepoServerServiceClient, @@ -758,22 +760,22 @@ func verifyGenerateManifests( Name: repoRes.Name, Proxy: repoRes.Proxy, }, - Repos: helmRepos, - Revision: source.TargetRevision, - AppName: name, - Namespace: dest.Namespace, - ApplicationSource: &source, - KustomizeOptions: kustomizeOptions, - KubeVersion: kubeVersion, - ApiVersions: apiVersions, - HelmOptions: helmOptions, - HelmRepoCreds: repositoryCredentials, - TrackingMethod: string(GetTrackingMethod(settingsMgr)), - EnabledSourceTypes: enableGenerateManifests, - NoRevisionCache: true, - HasMultipleSources: hasMultipleSources, - RefSources: refSources, - VersionConfig: apiclient.GetVersionConfig(), + Repos: helmRepos, + Revision: source.TargetRevision, + AppName: name, + Namespace: dest.Namespace, + ApplicationSource: &source, + KustomizeOptions: kustomizeOptions, + KubeVersion: kubeVersion, + ApiVersions: apiVersions, + HelmOptions: helmOptions, + HelmRepoCreds: repositoryCredentials, + TrackingMethod: string(GetTrackingMethod(settingsMgr)), + EnabledSourceTypes: enableGenerateManifests, + NoRevisionCache: true, + HasMultipleSources: hasMultipleSources, + RefSources: refSources, + ApplicationMetadata: metadata, } req.Repo.CopyCredentialsFromRepo(repoRes) req.Repo.CopySettingsFrom(repoRes) diff --git a/util/webhook/webhook_test.go b/util/webhook/webhook_test.go index ab0708cb6f1f9..d85e08b9975b8 100644 --- a/util/webhook/webhook_test.go +++ b/util/webhook/webhook_test.go @@ -70,6 +70,7 @@ func NewMockHandler(reactor *reactorDef, applicationNamespaces []string, objects cacheClient, 1*time.Minute, 1*time.Minute, + 1*time.Minute, ), servercache.NewCache(appstate.NewCache(cacheClient, time.Minute), time.Minute, time.Minute, time.Minute), &mocks.ArgoDB{}) }