From 1c5e5b74488dd98c7284957bb2cd0f933438a191 Mon Sep 17 00:00:00 2001 From: andrii-codefresh Date: Mon, 29 Jan 2024 18:03:06 +0200 Subject: [PATCH] version config --- .../commands/argocd_repo_server.go | 9 + .../commands/event_reporter_server.go | 2 +- controller/state.go | 10 +- event_reporter/codefresh/client.go | 78 --- event_reporter/controller/controller.go | 2 +- .../reporter/application_event_reporter.go | 4 +- event_reporter/server.go | 2 +- pkg/codefresh/client.go | 168 ++++++ {event_reporter => pkg}/codefresh/utils.go | 0 .../codefresh_client.go | 106 ++++ .../version_config_manager.go | 81 +-- reposerver/apiclient/repository.pb.go | 496 ++++++++++-------- reposerver/apiclient/util.go | 18 - reposerver/repository/repository.go | 55 +- reposerver/repository/repository.proto | 11 +- server/application/application.go | 7 +- util/argo/argo.go | 7 +- 17 files changed, 646 insertions(+), 410 deletions(-) delete mode 100644 event_reporter/codefresh/client.go create mode 100644 pkg/codefresh/client.go rename {event_reporter => pkg}/codefresh/utils.go (100%) create mode 100644 pkg/version_config_manager/codefresh_client.go diff --git a/cmd/argocd-repo-server/commands/argocd_repo_server.go b/cmd/argocd-repo-server/commands/argocd_repo_server.go index 69358d2a91efd..b1c5dc63f30f2 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" @@ -67,6 +68,8 @@ func NewCommand() *cobra.Command { streamedManifestMaxExtractedSize string helmManifestMaxExtractedSize string disableManifestMaxExtractedSize bool + codefreshUrl string + codefreshToken string ) var command = cobra.Command{ Use: cliName, @@ -123,6 +126,10 @@ func NewCommand() *cobra.Command { StreamedManifestMaxExtractedSize: streamedManifestMaxExtractedSizeQuantity.ToDec().Value(), StreamedManifestMaxTarSize: streamedManifestMaxTarSizeQuantity.ToDec().Value(), HelmManifestMaxExtractedSize: helmManifestMaxExtractedSizeQuantity.ToDec().Value(), + CodefreshConfig: codefresh.CodefreshConfig{ + BaseURL: codefreshUrl, + AuthToken: codefreshToken, + }, }, askPassServer) errors.CheckError(err) @@ -203,6 +210,8 @@ func NewCommand() *cobra.Command { command.Flags().BoolVar(&allowOutOfBoundsSymlinks, "allow-oob-symlinks", env.ParseBoolFromEnv("ARGOCD_REPO_SERVER_ALLOW_OUT_OF_BOUNDS_SYMLINKS", false), "Allow out-of-bounds symlinks in repositories (not recommended)") command.Flags().StringVar(&streamedManifestMaxTarSize, "streamed-manifest-max-tar-size", env.StringFromEnv("ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_TAR_SIZE", "100M"), "Maximum size of streamed manifest archives") command.Flags().StringVar(&streamedManifestMaxExtractedSize, "streamed-manifest-max-extracted-size", env.StringFromEnv("ARGOCD_REPO_SERVER_STREAMED_MANIFEST_MAX_EXTRACTED_SIZE", "1G"), "Maximum size of streamed manifest archives when extracted") + command.Flags().StringVar(&codefreshUrl, "codefresh-url", env.StringFromEnv("ARGOCD_REPO_SERVER_CODEFRESH_URL", "https://g.codefresh.io"), "Codefresh API URL") + command.Flags().StringVar(&codefreshToken, "codefresh-token", env.StringFromEnv("ARGOCD_REPO_SERVER_CODEFRESH_TOKEN", ""), "Codefresh token") command.Flags().StringVar(&helmManifestMaxExtractedSize, "helm-manifest-max-extracted-size", env.StringFromEnv("ARGOCD_REPO_SERVER_HELM_MANIFEST_MAX_EXTRACTED_SIZE", "1G"), "Maximum size of helm manifest archives when extracted") command.Flags().BoolVar(&disableManifestMaxExtractedSize, "disable-helm-manifest-max-extracted-size", env.ParseBoolFromEnv("ARGOCD_REPO_SERVER_DISABLE_HELM_MANIFEST_MAX_EXTRACTED_SIZE", false), "Disable maximum size of helm manifest archives when extracted") tlsConfigCustomizerSrc = tls.AddTLSFlagsToCmd(&command) diff --git a/cmd/event-reporter-server/commands/event_reporter_server.go b/cmd/event-reporter-server/commands/event_reporter_server.go index 92b7137cb9815..1e91a5d2b5bf1 100644 --- a/cmd/event-reporter-server/commands/event_reporter_server.go +++ b/cmd/event-reporter-server/commands/event_reporter_server.go @@ -9,8 +9,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 f47f161e2e91c..d13aebb93e078 100644 --- a/controller/state.go +++ b/controller/state.go @@ -4,11 +4,12 @@ import ( "context" "encoding/json" "fmt" - v1 "k8s.io/api/core/v1" "reflect" "strings" "time" + v1 "k8s.io/api/core/v1" + "github.com/argoproj/gitops-engine/pkg/diff" "github.com/argoproj/gitops-engine/pkg/health" "github.com/argoproj/gitops-engine/pkg/sync" @@ -207,7 +208,12 @@ func (m *appStateManager) getRepoObjs(app *v1alpha1.Application, sources []v1alp RefSources: refSources, ProjectName: proj.Name, ProjectSourceRepos: proj.Spec.SourceRepos, - VersionConfig: apiclient.GetVersionConfig(), + ApplicationIdentity: &apiclient.ApplicationIdentity{ + Runtime: "runtime", + Cluster: "cluster", + Namespace: app.Spec.Destination.Namespace, + Name: app.InstanceName(m.namespace), + }, }) 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 4b3c88216699c..4f0008b771a84 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 9c9a31503a090..33d0ec1913c51 100644 --- a/event_reporter/reporter/application_event_reporter.go +++ b/event_reporter/reporter/application_event_reporter.go @@ -11,9 +11,9 @@ 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" 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 +46,7 @@ type AppIdentity struct { type applicationEventReporter struct { cache *servercache.Cache - codefreshClient codefresh.CodefreshClient + codefreshClient *codefresh.CodefreshClient appLister applisters.ApplicationLister applicationServiceClient appclient.ApplicationClient metricsServer *metrics.MetricsServer diff --git a/event_reporter/server.go b/event_reporter/server.go index 10fc42d09c901..f65e1bbefc357 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/pkg/codefresh/client.go b/pkg/codefresh/client.go new file mode 100644 index 0000000000000..7a7eaf1a8ab58 --- /dev/null +++ b/pkg/codefresh/client.go @@ -0,0 +1,168 @@ +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 { + Send(ctx context.Context, appName string, event *events.Event) error + GetApplicationConfiguration(app ApplicationIdentity) (*ApplicationConfiguration, error) +} + +// VersionSource structure for the versionSource field +type VersionSource struct { + File string `json:"file"` + JsonPath string `json:"jsonPath"` +} + +type ApplicationIdentity struct { + Runtime string + Cluster string + Namespace string + Name string +} + +// ApplicationConfiguration structure for GraphQL response +type ApplicationConfiguration struct { + VersionSource VersionSource `json:"versionSource"` +} + +// GraphQLQuery structure to form a GraphQL query +type GraphQLQuery struct { + Query string `json:"query"` + Variables map[string]interface{} `json:"variables"` +} + +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 + }) +} + +// GetApplicationConfiguration method to get application configuration +func (client *CodefreshClient) GetApplicationConfiguration(app *ApplicationIdentity) (*ApplicationConfiguration, error) { + query := GraphQLQuery{ + Query: ` + query ($runtime: String!, $cluster: String!, $namespace: String!, $name: String!) { + applicationConfiguration(runtime: $runtime, cluster: $cluster, namespace: $namespace, name: $name) { + versionSource { + file + jsonPath + } + } + } + `, + Variables: map[string]interface{}{ + "runtime": app.Runtime, + "cluster": app.Cluster, + "namespace": app.Namespace, + "name": app.Name, + }, + } + + responseData, err := sendGraphQLRequest(*client.cfConfig, query) + if err != nil { + return nil, err + } + + return responseData.(*ApplicationConfiguration), nil +} + +// sendGraphQLRequest function to send the GraphQL request and handle the response +func sendGraphQLRequest(config CodefreshConfig, query GraphQLQuery) (interface{}, error) { + queryJSON, err := json.Marshal(query) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", config.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", config.AuthToken) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var responseStruct struct { + Data interface{} `json:"data"` + } + if err := json.Unmarshal(body, &responseStruct); err != nil { + return nil, err + } + + return &responseStruct.Data, nil +} 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/codefresh_client.go b/pkg/version_config_manager/codefresh_client.go new file mode 100644 index 0000000000000..aa8cf3b18321c --- /dev/null +++ b/pkg/version_config_manager/codefresh_client.go @@ -0,0 +1,106 @@ +package version_config_manager + +import ( + "bytes" + "encoding/json" + "io" + "net/http" + + "github.com/argoproj/argo-cd/v2/pkg/codefresh" +) + +// Config structure for configuration +type Config struct { + BaseURL string + Path string + AuthToken string +} + +// VersionSource structure for the versionSource field +type VersionSource struct { + File string `json:"file"` + JsonPath string `json:"jsonPath"` +} + +// ApplicationConfiguration structure for GraphQL response +type ApplicationConfiguration struct { + VersionSource VersionSource `json:"versionSource"` +} + +// GraphQLQuery structure to form a GraphQL query +type GraphQLQuery struct { + Query string `json:"query"` + Variables map[string]interface{} `json:"variables"` +} + +// CodefreshClient is a client for interacting with Codefresh API +type CodefreshClient struct { + config Config +} + +// NewCodefreshClient creates a new instance of CodefreshClient +func NewCodefreshClient(config Config) *CodefreshClient { + return &CodefreshClient{config: config} +} + +// GetApplicationConfiguration method to get application configuration +func (client *CodefreshClient) GetApplicationConfiguration(app codefresh.ApplicationIdentity) (*ApplicationConfiguration, error) { + query := GraphQLQuery{ + Query: ` + query ($runtime: String!, $cluster: String!, $namespace: String!, $name: String!) { + applicationConfiguration(runtime: $runtime, cluster: $cluster, namespace: $namespace, name: $name) { + versionSource { + file + jsonPath + } + } + } + `, + Variables: map[string]interface{}{ + "runtime": app.Runtime, + "cluster": app.Cluster, + "namespace": app.Namespace, + "name": app.Name, + }, + } + + return sendGraphQLRequest(client.config, query) +} + +// sendGraphQLRequest function to send the GraphQL request and handle the response +func sendGraphQLRequest(config Config, query GraphQLQuery) (*ApplicationConfiguration, error) { + queryJSON, err := json.Marshal(query) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", config.BaseURL+config.Path, bytes.NewBuffer(queryJSON)) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Authorization", "Bearer "+config.AuthToken) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var responseStruct struct { + Data struct { + ApplicationConfiguration ApplicationConfiguration `json:"applicationConfiguration"` + } `json:"data"` + } + if err := json.Unmarshal(body, &responseStruct); err != nil { + return nil, err + } + + return &responseStruct.Data.ApplicationConfiguration, nil +} diff --git a/pkg/version_config_manager/version_config_manager.go b/pkg/version_config_manager/version_config_manager.go index 46ba14d83a0fe..c171f8e57f1a2 100644 --- a/pkg/version_config_manager/version_config_manager.go +++ b/pkg/version_config_manager/version_config_manager.go @@ -1,87 +1,42 @@ package version_config_manager import ( - "errors" - + "github.com/argoproj/argo-cd/v2/pkg/codefresh" log "github.com/sirupsen/logrus" ) -const ( - CodefreshAPIProviderType = "CodereshAPI" - ConfigMapProviderType = "ConfigMap" -) - type VersionConfig struct { - ProductLabel string `json:"productLabel"` JsonPath string `json:"jsonPath"` ResourceName string `json:"resourceName"` } -type ConfigProvider interface { - GetConfig() (*VersionConfig, error) -} - -type CodereshAPIConfigProvider struct { - CodereshAPIEndpoint string -} - -type ConfigMapProvider struct { - ConfigMapPath string -} +func (v *VersionConfigManager) GetVersionConfig(app *codefresh.ApplicationIdentity) (*VersionConfig, error) { + appConfig, err := v.client.GetApplicationConfiguration(app) + if err != nil { + log.Printf("Failed to get application config from API: %v", err) + return nil, 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 -} + if appConfig != nil { + 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 return &VersionConfig{ - ProductLabel: "ProductLabelName=ProductName", JsonPath: "{.appVersion}", ResourceName: "Chart.yaml", }, nil } type VersionConfigManager struct { - provider ConfigProvider + client codefresh.CodefreshClient } -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") +func NewVersionConfigManager(client *codefresh.CodefreshClient) *VersionConfigManager { + return &VersionConfigManager{ + client: *client, } - return &VersionConfigManager{provider: provider}, nil -} - -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 - } - - versionConfig, err := versionConfigManager.ObtainConfig() - if err != nil { - log.Printf("Failed to obtain config: %v", err) - return nil - } - - return versionConfig } diff --git a/reposerver/apiclient/repository.pb.go b/reposerver/apiclient/repository.pb.go index 3020fec480995..6b1064c3b0a3e 100644 --- a/reposerver/apiclient/repository.pb.go +++ b/reposerver/apiclient/repository.pb.go @@ -30,27 +30,28 @@ 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"` +type ApplicationIdentity struct { + Runtime string `protobuf:"bytes,1,opt,name=runtime,proto3" json:"runtime,omitempty"` + Cluster string `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,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) { +func (m *ApplicationIdentity) Reset() { *m = ApplicationIdentity{} } +func (m *ApplicationIdentity) String() string { return proto.CompactTextString(m) } +func (*ApplicationIdentity) ProtoMessage() {} +func (*ApplicationIdentity) Descriptor() ([]byte, []int) { return fileDescriptor_dd8723cfcc820480, []int{0} } -func (m *VersionConfig) XXX_Unmarshal(b []byte) error { +func (m *ApplicationIdentity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *VersionConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *ApplicationIdentity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_VersionConfig.Marshal(b, m, deterministic) + return xxx_messageInfo_ApplicationIdentity.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -60,35 +61,42 @@ func (m *VersionConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error return b[:n], nil } } -func (m *VersionConfig) XXX_Merge(src proto.Message) { - xxx_messageInfo_VersionConfig.Merge(m, src) +func (m *ApplicationIdentity) XXX_Merge(src proto.Message) { + xxx_messageInfo_ApplicationIdentity.Merge(m, src) } -func (m *VersionConfig) XXX_Size() int { +func (m *ApplicationIdentity) XXX_Size() int { return m.Size() } -func (m *VersionConfig) XXX_DiscardUnknown() { - xxx_messageInfo_VersionConfig.DiscardUnknown(m) +func (m *ApplicationIdentity) XXX_DiscardUnknown() { + xxx_messageInfo_ApplicationIdentity.DiscardUnknown(m) } -var xxx_messageInfo_VersionConfig proto.InternalMessageInfo +var xxx_messageInfo_ApplicationIdentity proto.InternalMessageInfo -func (m *VersionConfig) GetProductLabel() string { +func (m *ApplicationIdentity) GetRuntime() string { if m != nil { - return m.ProductLabel + return m.Runtime } return "" } -func (m *VersionConfig) GetJsonPath() string { +func (m *ApplicationIdentity) GetCluster() string { if m != nil { - return m.JsonPath + return m.Cluster } return "" } -func (m *VersionConfig) GetResourceName() string { +func (m *ApplicationIdentity) GetNamespace() string { if m != nil { - return m.ResourceName + return m.Namespace + } + return "" +} + +func (m *ApplicationIdentity) GetName() string { + if m != nil { + return m.Name } return "" } @@ -111,15 +119,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"` + ApplicationIdentity *ApplicationIdentity `protobuf:"bytes,24,opt,name=applicationIdentity,proto3" json:"applicationIdentity,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 @@ -302,9 +310,9 @@ func (m *ManifestRequest) GetRefSources() map[string]*v1alpha1.RefTarget { return nil } -func (m *ManifestRequest) GetVersionConfig() *VersionConfig { +func (m *ManifestRequest) GetApplicationIdentity() *ApplicationIdentity { if m != nil { - return m.VersionConfig + return m.ApplicationIdentity } return nil } @@ -2448,7 +2456,7 @@ func (m *GitDirectoriesResponse) GetPaths() []string { } func init() { - proto.RegisterType((*VersionConfig)(nil), "repository.VersionConfig") + proto.RegisterType((*ApplicationIdentity)(nil), "repository.ApplicationIdentity") 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") @@ -2498,158 +2506,157 @@ func init() { } var fileDescriptor_dd8723cfcc820480 = []byte{ - // 2410 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x3a, 0x5b, 0x6f, 0x14, 0xc9, - 0xd5, 0x1e, 0x8f, 0x2f, 0x33, 0xc7, 0x36, 0x1e, 0x17, 0xc6, 0x34, 0xb3, 0xe0, 0xcf, 0xdb, 0xdf, - 0x82, 0x08, 0xec, 0xf6, 0xc8, 0x26, 0xbb, 0xac, 0x58, 0xb2, 0x2b, 0x2f, 0x17, 0x9b, 0x8b, 0xc1, - 0xdb, 0x90, 0x44, 0xbb, 0x21, 0x89, 0x6a, 0x7a, 0xca, 0x33, 0xc5, 0xf4, 0xa5, 0xe8, 0xcb, 0x20, - 0x23, 0x45, 0x4a, 0x94, 0x28, 0x52, 0xfe, 0x40, 0x1e, 0xf2, 0x17, 0xf2, 0x1c, 0xe5, 0x29, 0xca, - 0xd3, 0x2a, 0x79, 0x5c, 0xe5, 0x0f, 0x24, 0xe2, 0x97, 0x44, 0x75, 0xe9, 0xee, 0xea, 0x9e, 0xb6, - 0x61, 0x63, 0xf0, 0x2a, 0x79, 0x81, 0xaa, 0xd3, 0xe7, 0x5e, 0xa7, 0xce, 0xa5, 0x3c, 0x70, 0x21, - 0x24, 0x2c, 0x88, 0x48, 0x38, 0x22, 0x61, 0x47, 0x2c, 0x69, 0x1c, 0x84, 0xfb, 0xda, 0xd2, 0x62, - 0x61, 0x10, 0x07, 0x08, 0x72, 0x48, 0xdb, 0x1c, 0x7e, 0x1c, 0x59, 0x34, 0xe8, 0x60, 0x46, 0x3b, - 0x4e, 0x10, 0x92, 0xce, 0x68, 0xbd, 0xd3, 0x27, 0x3e, 0x09, 0x71, 0x4c, 0x7a, 0x12, 0xbf, 0xfd, - 0xfd, 0x1c, 0xc7, 0xc3, 0xce, 0x80, 0xfa, 0x24, 0xdc, 0xef, 0xb0, 0x61, 0x9f, 0x03, 0xa2, 0x8e, - 0x47, 0x62, 0x5c, 0x45, 0x75, 0xbf, 0x4f, 0xe3, 0x41, 0xd2, 0xb5, 0x9c, 0xc0, 0xeb, 0xe0, 0xb0, - 0x1f, 0xb0, 0x30, 0x78, 0x2a, 0x16, 0x1f, 0x38, 0xbd, 0xce, 0x68, 0x23, 0x67, 0x80, 0x19, 0x73, - 0xa9, 0x83, 0x63, 0x1a, 0xf8, 0x9d, 0xd1, 0x3a, 0x76, 0xd9, 0x00, 0x8f, 0x73, 0x7b, 0xa7, 0x1f, - 0x04, 0x7d, 0x97, 0x74, 0xc4, 0xae, 0x9b, 0xec, 0x75, 0x88, 0xc7, 0x62, 0x65, 0x90, 0x19, 0xc1, - 0xc2, 0x8f, 0x48, 0x18, 0xd1, 0xc0, 0xbf, 0x11, 0xf8, 0x7b, 0xb4, 0x8f, 0x4c, 0x98, 0x67, 0x61, - 0xd0, 0x4b, 0x9c, 0xf8, 0x3e, 0xee, 0x12, 0xd7, 0xa8, 0xad, 0xd5, 0x2e, 0x36, 0xed, 0x02, 0x0c, - 0xb5, 0xa1, 0xf1, 0x34, 0x0a, 0xfc, 0x5d, 0x1c, 0x0f, 0x8c, 0x49, 0xf1, 0x3d, 0xdb, 0x73, 0xfa, - 0x90, 0x44, 0x41, 0x12, 0x3a, 0xe4, 0x01, 0xf6, 0x88, 0x51, 0x97, 0xf4, 0x3a, 0xcc, 0xfc, 0xe3, - 0x02, 0x2c, 0xee, 0x60, 0x9f, 0xee, 0x91, 0x28, 0xb6, 0xc9, 0xb3, 0x84, 0x44, 0x31, 0x7a, 0x02, - 0x53, 0xdc, 0xb7, 0x42, 0xde, 0xdc, 0xc6, 0xb6, 0x95, 0xbb, 0xc0, 0x4a, 0x5d, 0x20, 0x16, 0x3f, - 0x77, 0x7a, 0xd6, 0x68, 0xc3, 0x62, 0xc3, 0xbe, 0xc5, 0x5d, 0x60, 0x69, 0x2e, 0xb0, 0x52, 0x17, - 0x58, 0x76, 0x76, 0x4a, 0xb6, 0xe0, 0xca, 0x35, 0x0e, 0xc9, 0x88, 0x72, 0x3b, 0x53, 0x8d, 0xd3, - 0x3d, 0x32, 0x60, 0xd6, 0x0f, 0x6e, 0x60, 0x67, 0x20, 0x95, 0x6d, 0xd8, 0xe9, 0x16, 0xad, 0xc1, - 0x1c, 0x66, 0x4c, 0xd8, 0x7c, 0x8f, 0xec, 0x1b, 0x53, 0x82, 0x50, 0x07, 0x71, 0x5a, 0xcc, 0x98, - 0x30, 0x74, 0x5a, 0x7c, 0x4d, 0xb7, 0xe8, 0x2c, 0x34, 0x7d, 0xec, 0x91, 0x88, 0x61, 0x87, 0x18, - 0x0d, 0xf1, 0x2d, 0x07, 0xa0, 0x5f, 0xc0, 0x92, 0xa6, 0xf8, 0x23, 0xe1, 0x1a, 0x03, 0x84, 0xe9, - 0x0f, 0x8f, 0x66, 0xfa, 0x66, 0x99, 0xad, 0x3d, 0x2e, 0x09, 0xfd, 0x0c, 0xa6, 0x45, 0x20, 0x1b, - 0x73, 0x6b, 0xf5, 0x37, 0xea, 0x6d, 0xc9, 0x16, 0xf9, 0x30, 0xcb, 0xdc, 0xa4, 0x4f, 0xfd, 0xc8, - 0x98, 0x17, 0x12, 0x1e, 0x1f, 0x4d, 0x82, 0x8c, 0xcd, 0x1d, 0xec, 0xe3, 0x3e, 0xf1, 0x88, 0x1f, - 0xef, 0x0a, 0xe6, 0x76, 0x2a, 0x04, 0xbd, 0x80, 0xd6, 0x30, 0x89, 0xe2, 0xc0, 0xa3, 0x2f, 0xc8, - 0x43, 0xc6, 0x69, 0x23, 0x63, 0x41, 0x78, 0xf3, 0xc1, 0xd1, 0x04, 0xdf, 0x2b, 0x71, 0xb5, 0xc7, - 0xe4, 0xf0, 0x20, 0x19, 0x26, 0x5d, 0xa2, 0x6e, 0x91, 0x71, 0x42, 0x06, 0x89, 0x06, 0x92, 0x61, - 0x44, 0xd5, 0x2e, 0x32, 0x16, 0xd7, 0xea, 0x32, 0x8c, 0x32, 0x10, 0xba, 0x08, 0x8b, 0x23, 0x12, - 0xd2, 0xbd, 0xfd, 0x47, 0xb4, 0xef, 0xe3, 0x38, 0x09, 0x89, 0xd1, 0x12, 0xa1, 0x58, 0x06, 0x23, - 0x0f, 0x16, 0x06, 0xc4, 0xf5, 0xb8, 0xcb, 0x6f, 0x84, 0xa4, 0x17, 0x19, 0x4b, 0xc2, 0xbf, 0x5b, - 0x47, 0x3f, 0x41, 0xc1, 0xce, 0x2e, 0x72, 0xe7, 0x8a, 0xf9, 0x81, 0xad, 0x6e, 0x8a, 0xbc, 0x23, - 0x48, 0x2a, 0x56, 0x02, 0xa3, 0x0b, 0x70, 0x22, 0x0e, 0xb1, 0x33, 0xa4, 0x7e, 0x7f, 0x87, 0xc4, - 0x83, 0xa0, 0x67, 0x9c, 0x14, 0x9e, 0x28, 0x41, 0x91, 0x03, 0x88, 0xf8, 0xb8, 0xeb, 0x92, 0x9e, - 0x8c, 0xc5, 0xc7, 0xfb, 0x8c, 0x44, 0xc6, 0xb2, 0xb0, 0xe2, 0x8a, 0xa5, 0x25, 0xdc, 0x52, 0x82, - 0xb0, 0x6e, 0x8d, 0x51, 0xdd, 0xf2, 0xe3, 0x70, 0xdf, 0xae, 0x60, 0x87, 0x86, 0x30, 0xc7, 0xed, - 0x48, 0x43, 0xe1, 0x94, 0x08, 0x85, 0x3b, 0x47, 0xf3, 0xd1, 0x76, 0xce, 0xd0, 0xd6, 0xb9, 0x23, - 0x0b, 0xd0, 0x00, 0x47, 0x3b, 0x89, 0x1b, 0x53, 0xe6, 0x12, 0xa9, 0x46, 0x64, 0xac, 0x08, 0x37, - 0x55, 0x7c, 0x41, 0xf7, 0x00, 0x42, 0xb2, 0x97, 0xe2, 0x9d, 0x16, 0x96, 0x5f, 0x3e, 0xcc, 0x72, - 0x3b, 0xc3, 0x96, 0x16, 0x6b, 0xe4, 0xe8, 0x33, 0x58, 0x18, 0xe9, 0xf9, 0xdb, 0x30, 0x84, 0xad, - 0x67, 0x74, 0x7e, 0x85, 0x04, 0x6f, 0x17, 0xf1, 0xb9, 0xf6, 0xdc, 0x0f, 0xc4, 0x89, 0x55, 0xba, - 0x10, 0x79, 0xe1, 0x8c, 0x88, 0xd1, 0x8a, 0x2f, 0x3c, 0x98, 0x15, 0x54, 0x64, 0xbd, 0xb6, 0x0c, - 0x77, 0x0d, 0xd4, 0xbe, 0x05, 0xa7, 0x0f, 0x38, 0x2b, 0xd4, 0x82, 0xfa, 0x90, 0xec, 0xab, 0x9a, - 0xc2, 0x97, 0x68, 0x19, 0xa6, 0x47, 0xd8, 0x4d, 0x88, 0xc8, 0xca, 0x0d, 0x5b, 0x6e, 0xae, 0x4d, - 0x7e, 0x5c, 0x6b, 0xff, 0xb6, 0x06, 0x8b, 0x25, 0xcb, 0x2b, 0xe8, 0x7f, 0xaa, 0xd3, 0xbf, 0x81, - 0x7b, 0xb0, 0xf7, 0x18, 0x87, 0x7d, 0x12, 0x6b, 0x8a, 0x98, 0xff, 0xa8, 0x81, 0x51, 0x3a, 0x92, - 0x1f, 0xd3, 0x78, 0x70, 0x9b, 0xba, 0x24, 0x42, 0x57, 0x61, 0x36, 0x94, 0x30, 0x55, 0xb9, 0xde, - 0x39, 0xe4, 0x24, 0xb7, 0x27, 0xec, 0x14, 0x1b, 0x7d, 0x0a, 0x0d, 0x5e, 0xfe, 0x7b, 0x38, 0xc6, - 0x4a, 0xf7, 0xb5, 0x2a, 0x4a, 0x2e, 0x65, 0x47, 0xe1, 0x6d, 0x4f, 0xd8, 0x19, 0x0d, 0xfa, 0x10, - 0xa6, 0x9d, 0x41, 0xe2, 0x0f, 0x45, 0xcd, 0x9a, 0xdb, 0x38, 0x77, 0x10, 0xf1, 0x0d, 0x8e, 0xb4, - 0x3d, 0x61, 0x4b, 0xec, 0xcf, 0x67, 0x60, 0x8a, 0xe1, 0x30, 0x36, 0x6f, 0xc3, 0x72, 0x95, 0x08, - 0x5e, 0x28, 0x9d, 0x01, 0x71, 0x86, 0x51, 0xe2, 0x29, 0x37, 0x67, 0x7b, 0x84, 0x60, 0x2a, 0xa2, - 0x2f, 0xa4, 0xab, 0xeb, 0xb6, 0x58, 0x9b, 0xdf, 0x83, 0xa5, 0x31, 0x69, 0xfc, 0x50, 0xa5, 0x6e, - 0x9c, 0xc3, 0xbc, 0x12, 0x6d, 0x26, 0x70, 0xea, 0xb1, 0xf0, 0x45, 0x56, 0x2d, 0x8e, 0xa3, 0xf4, - 0x9b, 0xdb, 0xb0, 0x52, 0x16, 0x1b, 0xb1, 0xc0, 0x8f, 0x08, 0x0f, 0x7d, 0x91, 0x5e, 0x29, 0xe9, - 0xe5, 0x5f, 0x85, 0x16, 0x0d, 0xbb, 0xe2, 0x8b, 0xf9, 0xab, 0x49, 0x58, 0xb1, 0x49, 0x14, 0xb8, - 0x23, 0x92, 0xe6, 0xbe, 0xe3, 0xe9, 0x5e, 0x7e, 0x02, 0x75, 0xcc, 0x98, 0x0a, 0x93, 0x3b, 0x6f, - 0xac, 0x3f, 0xb0, 0x39, 0x57, 0xf4, 0x3e, 0x2c, 0x61, 0xaf, 0x4b, 0xfb, 0x49, 0x90, 0x44, 0xa9, - 0x59, 0xaa, 0x6b, 0x1b, 0xff, 0x60, 0x3a, 0x70, 0x7a, 0xcc, 0x05, 0xca, 0x9d, 0x7a, 0x8f, 0x55, - 0x2b, 0xf5, 0x58, 0x95, 0x42, 0x26, 0x0f, 0x12, 0xf2, 0xcb, 0x1a, 0x34, 0xd2, 0xa8, 0x42, 0x97, - 0xa0, 0xe5, 0x04, 0x1e, 0xa3, 0x2e, 0xe9, 0xa5, 0x30, 0xc5, 0x7e, 0x0c, 0xce, 0x93, 0x53, 0x88, - 0x9f, 0x67, 0x68, 0x52, 0x80, 0x0e, 0xe2, 0x31, 0xcc, 0x78, 0xdb, 0x2a, 0x0d, 0x14, 0x6b, 0x0e, - 0x73, 0xa9, 0x4f, 0x44, 0x7f, 0x37, 0x6d, 0x8b, 0xb5, 0xf9, 0x15, 0xcc, 0xdf, 0x24, 0x8c, 0xf8, - 0x3d, 0xe2, 0x3b, 0x94, 0x44, 0x02, 0x27, 0x70, 0x86, 0x4a, 0xb2, 0x58, 0x73, 0x58, 0x8f, 0xb0, - 0x48, 0x89, 0x11, 0x6b, 0xd9, 0xfe, 0x3e, 0x4b, 0x68, 0x28, 0xfa, 0x94, 0x28, 0x6f, 0x7f, 0x73, - 0x98, 0x19, 0xc1, 0x49, 0xed, 0x14, 0xb2, 0x26, 0x60, 0x15, 0x00, 0x33, 0x96, 0xf6, 0x11, 0x52, - 0x90, 0x06, 0x41, 0xd7, 0x61, 0xbe, 0xa7, 0xa9, 0xa4, 0xc2, 0xc1, 0xd0, 0x2f, 0xbe, 0xae, 0xb2, - 0x5d, 0xc0, 0x36, 0xbf, 0xae, 0x43, 0x2b, 0x4f, 0x47, 0xea, 0xc8, 0x36, 0xa0, 0xe9, 0x29, 0x58, - 0x64, 0xd4, 0x44, 0x25, 0x5a, 0xae, 0xcc, 0x5f, 0x39, 0x5a, 0xb1, 0xb1, 0x9d, 0x2c, 0x37, 0xb6, - 0x2b, 0x30, 0x23, 0xc7, 0x28, 0x65, 0xb9, 0xda, 0x15, 0x82, 0x63, 0xaa, 0x14, 0x1c, 0xab, 0x00, - 0x51, 0x56, 0x29, 0x8c, 0x19, 0x69, 0x78, 0x0e, 0xe1, 0x3e, 0x95, 0x6d, 0x90, 0x4d, 0xa2, 0xc4, - 0x8d, 0x8d, 0x59, 0xe9, 0x53, 0x1d, 0x86, 0xde, 0x83, 0x05, 0x27, 0xf0, 0x3c, 0x1a, 0xef, 0x90, - 0x28, 0xc2, 0xfd, 0xb4, 0xe5, 0x2e, 0x02, 0x39, 0x27, 0x09, 0xd8, 0x4c, 0xe2, 0x41, 0x10, 0x1a, - 0x4d, 0xc9, 0x49, 0x87, 0xa1, 0xbb, 0x00, 0x72, 0x7f, 0x13, 0xc7, 0x69, 0x4f, 0x7e, 0xc9, 0x92, - 0x73, 0x9c, 0xa5, 0xcf, 0x71, 0xf9, 0x45, 0xe3, 0x49, 0xd9, 0x1a, 0xad, 0x5b, 0x8f, 0xa9, 0x47, - 0x6c, 0x8d, 0x1a, 0x7d, 0x01, 0x27, 0xf1, 0xf8, 0x49, 0x1b, 0x73, 0x82, 0xe9, 0xff, 0xe9, 0x9e, - 0xae, 0x08, 0x08, 0xbb, 0x8a, 0xd6, 0x0c, 0x60, 0xf1, 0x3e, 0xe5, 0x47, 0xb8, 0x17, 0x1d, 0x4f, - 0xfe, 0xfc, 0x08, 0xa6, 0xb8, 0x30, 0x7e, 0x82, 0xdd, 0x10, 0xfb, 0xce, 0x80, 0xc8, 0x50, 0x69, - 0xda, 0xd9, 0x9e, 0xdf, 0x84, 0x18, 0xf7, 0x79, 0x48, 0x72, 0xb8, 0x58, 0x9b, 0x7f, 0x9e, 0x94, - 0x9a, 0x6e, 0x32, 0x16, 0x7d, 0xf7, 0x43, 0x5e, 0x75, 0xdb, 0x59, 0x1f, 0x6f, 0x3b, 0x4b, 0x2a, - 0x7f, 0x9b, 0xb6, 0xf3, 0x0d, 0x75, 0x3e, 0x66, 0x02, 0xb3, 0x9b, 0x8c, 0x71, 0x45, 0xd0, 0x3a, - 0x4c, 0x61, 0xc6, 0xd2, 0xbb, 0x79, 0xae, 0x14, 0x31, 0x1c, 0x85, 0xff, 0xaf, 0x54, 0x12, 0xa8, - 0xed, 0xab, 0xd0, 0xcc, 0x40, 0xaf, 0x12, 0xdb, 0xd4, 0xc5, 0xae, 0x01, 0xc8, 0xb9, 0xea, 0x8e, - 0xbf, 0x17, 0xf0, 0x23, 0xe5, 0xb7, 0x3a, 0x4d, 0x78, 0x7c, 0x6d, 0x5e, 0x4b, 0x31, 0x84, 0x6e, - 0xef, 0xc3, 0x34, 0x8d, 0x89, 0x97, 0x2a, 0xb7, 0xa2, 0x2b, 0x97, 0x33, 0xb2, 0x25, 0x92, 0xf9, - 0xb7, 0x06, 0x9c, 0xe1, 0x27, 0xf6, 0x48, 0xe4, 0x83, 0x4d, 0xc6, 0x6e, 0x92, 0x18, 0x53, 0x37, - 0xfa, 0x22, 0x21, 0xe1, 0xfe, 0x5b, 0x0e, 0x8c, 0x3e, 0xcc, 0xc8, 0x74, 0xa2, 0x72, 0xe6, 0x1b, - 0x1f, 0xb1, 0x15, 0xfb, 0x7c, 0xae, 0xae, 0xbf, 0x9d, 0xb9, 0xba, 0x6a, 0xce, 0x9d, 0x3a, 0xa6, - 0x39, 0xf7, 0xe0, 0xa7, 0x0e, 0xed, 0x01, 0x65, 0xa6, 0xf8, 0x80, 0x52, 0x31, 0x3e, 0xce, 0xbe, - 0xee, 0xf8, 0xd8, 0xa8, 0x1c, 0x1f, 0xbd, 0xca, 0x7b, 0xdc, 0x14, 0xee, 0xfe, 0x81, 0x1e, 0x81, - 0x07, 0xc6, 0xda, 0x51, 0x06, 0x49, 0x78, 0xab, 0x83, 0xe4, 0x0f, 0x0b, 0x83, 0xa1, 0x7c, 0x9a, - 0xf9, 0xf0, 0xf5, 0x6c, 0x3a, 0x64, 0x44, 0xfc, 0x9f, 0x9b, 0xc7, 0x7e, 0x23, 0xda, 0x70, 0x16, - 0xe4, 0x3e, 0xc8, 0xfa, 0x19, 0x5e, 0x87, 0x78, 0x0f, 0xa1, 0x92, 0x16, 0x5f, 0xa3, 0xcb, 0x30, - 0xc5, 0x9d, 0xac, 0xe6, 0xa4, 0xd3, 0xba, 0x3f, 0xf9, 0x49, 0x6c, 0x32, 0xf6, 0x88, 0x11, 0xc7, - 0x16, 0x48, 0xe8, 0x1a, 0x34, 0xb3, 0xc0, 0x57, 0x37, 0xeb, 0xac, 0x4e, 0x91, 0xdd, 0x93, 0x94, - 0x2c, 0x47, 0xe7, 0xb4, 0x3d, 0x1a, 0x12, 0x47, 0x4c, 0x11, 0xd3, 0xe3, 0xb4, 0x37, 0xd3, 0x8f, - 0x19, 0x6d, 0x86, 0x8e, 0xd6, 0x61, 0x46, 0xbe, 0x65, 0x89, 0x1b, 0x54, 0x9a, 0xdf, 0x65, 0x32, - 0x4d, 0xa9, 0x14, 0xa2, 0xf9, 0x75, 0x0d, 0xde, 0xcd, 0x03, 0x22, 0xbd, 0x4d, 0xe9, 0x20, 0xf7, - 0xdd, 0x57, 0xdc, 0x0b, 0x70, 0x42, 0x4c, 0x8e, 0xf9, 0x93, 0x96, 0x7c, 0x5d, 0x2d, 0x41, 0xcd, - 0x3f, 0xd5, 0xe0, 0xfc, 0xb8, 0x1d, 0x37, 0x06, 0x38, 0x8c, 0xb3, 0xe3, 0x3d, 0x0e, 0x5b, 0xd2, - 0x82, 0x37, 0x99, 0x17, 0xbc, 0x82, 0x7d, 0xf5, 0xa2, 0x7d, 0xe6, 0x5f, 0x27, 0x61, 0x4e, 0x0b, - 0xa0, 0xaa, 0x82, 0xc9, 0x3b, 0x5b, 0x11, 0xb7, 0xe2, 0xad, 0x40, 0x14, 0x85, 0xa6, 0xad, 0x41, - 0xd0, 0x10, 0x80, 0xe1, 0x10, 0x7b, 0x24, 0x26, 0x21, 0xcf, 0xe4, 0xfc, 0xc6, 0xdf, 0x3b, 0x7a, - 0x76, 0xd9, 0x4d, 0x79, 0xda, 0x1a, 0x7b, 0xde, 0x9a, 0x0b, 0xd1, 0x91, 0xca, 0xdf, 0x6a, 0x87, - 0x9e, 0xc3, 0x89, 0x3d, 0xea, 0x92, 0xdd, 0x5c, 0x91, 0x19, 0xa1, 0xc8, 0xc3, 0xa3, 0x2b, 0x72, - 0x5b, 0xe7, 0x6b, 0x97, 0xc4, 0x98, 0x97, 0xa0, 0x55, 0xbe, 0x4f, 0x5c, 0x49, 0xea, 0xe1, 0x7e, - 0xe6, 0x2d, 0xb5, 0x33, 0x11, 0xb4, 0xca, 0xf7, 0xc7, 0xfc, 0xe7, 0x24, 0x9c, 0xca, 0xd8, 0x6d, - 0xfa, 0x7e, 0x90, 0xf8, 0x8e, 0x18, 0xb1, 0x2a, 0xcf, 0x62, 0x19, 0xa6, 0x63, 0x1a, 0xbb, 0x59, - 0xe3, 0x23, 0x36, 0xbc, 0x76, 0xc5, 0x41, 0xe0, 0xc6, 0x94, 0xa9, 0x03, 0x4e, 0xb7, 0xf2, 0xec, - 0xc5, 0xd4, 0xd6, 0x13, 0x99, 0xa0, 0x61, 0x67, 0x7b, 0xfe, 0x8d, 0x77, 0x35, 0x62, 0x5e, 0x91, - 0xce, 0xcc, 0xf6, 0x22, 0xee, 0x03, 0xd7, 0x25, 0x0e, 0x77, 0x87, 0x36, 0xd1, 0x94, 0xa0, 0x62, - 0x52, 0x8a, 0x43, 0xea, 0xf7, 0xd5, 0x3c, 0xa3, 0x76, 0x5c, 0x4f, 0x1c, 0x86, 0x78, 0xdf, 0x68, - 0x08, 0x07, 0xc8, 0x0d, 0xba, 0x0e, 0x75, 0x0f, 0x33, 0x55, 0xe8, 0x2e, 0x15, 0xb2, 0x43, 0x95, - 0x07, 0xac, 0x1d, 0xcc, 0x64, 0x25, 0xe0, 0x64, 0xed, 0x8f, 0xf8, 0x3c, 0xcd, 0xbe, 0x7d, 0x4b, - 0xf8, 0x14, 0x16, 0x0a, 0xc9, 0x07, 0x7d, 0x09, 0x2b, 0x79, 0x44, 0xe9, 0x02, 0x55, 0x13, 0xf8, - 0xee, 0x2b, 0x35, 0xb3, 0x0f, 0x60, 0x60, 0x3e, 0x83, 0x25, 0x1e, 0x32, 0xe2, 0xe2, 0x1f, 0xd3, - 0x68, 0xf3, 0x09, 0x34, 0x33, 0x91, 0x95, 0x31, 0xd3, 0x86, 0xc6, 0x28, 0x1d, 0xda, 0xe4, 0x6c, - 0x93, 0xed, 0xcd, 0x4d, 0x40, 0xba, 0xbe, 0xaa, 0x02, 0x5d, 0x2e, 0x36, 0xc5, 0xa7, 0xca, 0xe5, - 0x46, 0xa0, 0xa7, 0x3d, 0xf1, 0xef, 0x26, 0x61, 0x71, 0x8b, 0x8a, 0x87, 0xb3, 0x63, 0x4a, 0x72, - 0x97, 0xa0, 0x15, 0x25, 0x5d, 0x2f, 0xe8, 0x25, 0x2e, 0x51, 0x4d, 0x81, 0xaa, 0xf4, 0x63, 0xf0, - 0xc3, 0x92, 0x5f, 0xf6, 0x8c, 0x32, 0xa5, 0x3d, 0xa3, 0x5c, 0x87, 0x33, 0x0f, 0xc8, 0x73, 0x65, - 0xcf, 0x96, 0x1b, 0x74, 0xbb, 0xd4, 0xef, 0xa7, 0x42, 0xa6, 0x85, 0x90, 0x83, 0x11, 0xcc, 0x5f, - 0xd7, 0xa0, 0x95, 0xfb, 0x42, 0x79, 0xf3, 0xaa, 0x8c, 0x7a, 0xe9, 0xcb, 0xf3, 0xba, 0x2f, 0xcb, - 0xa8, 0xff, 0x79, 0xc0, 0xcf, 0xeb, 0x01, 0xff, 0x97, 0x1a, 0x9c, 0xda, 0xa2, 0x71, 0x9a, 0x6a, - 0xe8, 0x7f, 0xd9, 0xb9, 0x98, 0x16, 0xac, 0x94, 0xd5, 0x57, 0xae, 0x5c, 0x86, 0x69, 0x7e, 0x4a, - 0xe9, 0xec, 0x2e, 0x37, 0x1b, 0xdf, 0x34, 0x61, 0x29, 0x2f, 0xbe, 0xfc, 0x5f, 0xea, 0x10, 0xf4, - 0x10, 0x5a, 0x5b, 0xea, 0x8f, 0xc8, 0xd9, 0xc3, 0xd9, 0x61, 0xef, 0xda, 0xed, 0xb3, 0xd5, 0x1f, - 0xa5, 0x68, 0x73, 0x02, 0x39, 0x70, 0xa6, 0xcc, 0x30, 0x7f, 0x42, 0x7f, 0xef, 0x10, 0xce, 0x19, - 0xd6, 0xab, 0x44, 0x5c, 0xac, 0xa1, 0x2f, 0xe1, 0x44, 0xf1, 0xa1, 0x17, 0x15, 0xb2, 0x51, 0xe5, - 0xdb, 0x73, 0xdb, 0x3c, 0x0c, 0x25, 0xd3, 0xff, 0x09, 0x6f, 0x7d, 0x0b, 0xaf, 0x9e, 0xc8, 0x2c, - 0x36, 0xe6, 0x55, 0xaf, 0xc2, 0xed, 0xff, 0x3f, 0x14, 0x27, 0xe3, 0xfe, 0x09, 0x34, 0xd2, 0x27, - 0x9d, 0xa2, 0x9b, 0x4b, 0x0f, 0x3d, 0xed, 0x56, 0x91, 0xdf, 0x5e, 0x64, 0x4e, 0xa0, 0x4f, 0x25, - 0x31, 0x1f, 0xf9, 0xc7, 0x89, 0xb5, 0x87, 0x8c, 0xf6, 0xc9, 0x8a, 0xc7, 0x03, 0x73, 0x02, 0x7d, - 0x06, 0x73, 0x7c, 0xb5, 0xab, 0xfe, 0x92, 0xba, 0x62, 0xc9, 0x5f, 0x0b, 0x58, 0xe9, 0xaf, 0x05, - 0xac, 0x5b, 0x1e, 0x8b, 0xf7, 0xdb, 0x15, 0xd3, 0xbd, 0x62, 0xf0, 0x04, 0x16, 0xb6, 0x48, 0x9c, - 0x37, 0xe3, 0xe8, 0xfc, 0x6b, 0x8d, 0x2c, 0x6d, 0xb3, 0x8c, 0x36, 0xde, 0xcf, 0x9b, 0x13, 0xe8, - 0xf7, 0x35, 0x38, 0xb9, 0x45, 0xe2, 0x72, 0x7b, 0x8b, 0x3e, 0xa8, 0x16, 0x72, 0x40, 0x1b, 0xdc, - 0x7e, 0x70, 0xd4, 0xfb, 0x5a, 0x64, 0x6b, 0x4e, 0xa0, 0x3f, 0xd4, 0xe0, 0xb4, 0xa6, 0x98, 0xde, - 0xaf, 0xa2, 0xf5, 0xc3, 0x95, 0xab, 0xe8, 0x6d, 0xdb, 0x77, 0x8f, 0xf8, 0x07, 0x72, 0x8d, 0xa5, - 0x39, 0x81, 0x76, 0xc5, 0x99, 0xe4, 0xe5, 0x09, 0x9d, 0xab, 0xac, 0x43, 0x99, 0xf4, 0xd5, 0x83, - 0x3e, 0x67, 0xe7, 0x70, 0x17, 0xe6, 0xb6, 0x48, 0x9c, 0x66, 0xdd, 0x62, 0xa4, 0x95, 0x4a, 0x58, - 0xf1, 0xaa, 0x96, 0x13, 0xb5, 0x88, 0x98, 0x25, 0xc9, 0x4b, 0xcb, 0x53, 0xc5, 0xbb, 0x5a, 0x99, - 0x82, 0x8b, 0x11, 0x53, 0x9d, 0xe6, 0xcc, 0x89, 0xcf, 0x37, 0xff, 0xfe, 0x72, 0xb5, 0xf6, 0xcd, - 0xcb, 0xd5, 0xda, 0xbf, 0x5e, 0xae, 0xd6, 0xbe, 0xba, 0xf2, 0x8a, 0x9f, 0xd2, 0x68, 0xbf, 0xfb, - 0xc1, 0x8c, 0x3a, 0x2e, 0x25, 0x7e, 0xdc, 0x9d, 0x11, 0xc1, 0x7f, 0xe5, 0xdf, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x9a, 0x96, 0x2e, 0x92, 0x16, 0x24, 0x00, 0x00, + // 2400 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x3a, 0x5b, 0x6f, 0xdc, 0xc6, + 0xd5, 0x5a, 0x5d, 0x77, 0x8f, 0x24, 0x4b, 0x1a, 0xcb, 0x32, 0xbd, 0xb1, 0xf5, 0x29, 0xfc, 0x62, + 0xc3, 0xb5, 0x13, 0x2e, 0x24, 0x37, 0x71, 0xe0, 0xb8, 0x29, 0x14, 0x5f, 0x24, 0x5f, 0x64, 0x3b, + 0xb4, 0xdb, 0x22, 0xa9, 0xdb, 0x62, 0xc4, 0x1d, 0xed, 0x4e, 0x96, 0x97, 0x09, 0x39, 0x94, 0xb1, + 0x2e, 0x0a, 0xb4, 0x68, 0x51, 0xa0, 0x7f, 0xa0, 0x0f, 0xfd, 0x1f, 0x45, 0x9f, 0x82, 0x3e, 0x05, + 0xed, 0x63, 0xd0, 0x3f, 0xd0, 0xc2, 0xbf, 0xa4, 0x98, 0x0b, 0xc9, 0x21, 0x97, 0x92, 0x9d, 0xca, + 0x56, 0xd0, 0xbe, 0xd8, 0x73, 0x0e, 0xcf, 0x9c, 0xdb, 0x9c, 0x39, 0x97, 0xd1, 0xc2, 0x85, 0x98, + 0xb0, 0x28, 0x21, 0xf1, 0x3e, 0x89, 0x3b, 0x72, 0x49, 0x79, 0x14, 0x0f, 0x8d, 0xa5, 0xc3, 0xe2, + 0x88, 0x47, 0x08, 0x0a, 0x4c, 0xdb, 0x1e, 0x7c, 0x98, 0x38, 0x34, 0xea, 0x60, 0x46, 0x3b, 0x5e, + 0x14, 0x93, 0xce, 0xfe, 0x7a, 0xa7, 0x47, 0x42, 0x12, 0x63, 0x4e, 0xba, 0x8a, 0xbe, 0xfd, 0xfd, + 0x82, 0x26, 0xc0, 0x5e, 0x9f, 0x86, 0x24, 0x1e, 0x76, 0xd8, 0xa0, 0x27, 0x10, 0x49, 0x27, 0x20, + 0x1c, 0xd7, 0xed, 0xba, 0xdf, 0xa3, 0xbc, 0x9f, 0xee, 0x3a, 0x5e, 0x14, 0x74, 0x70, 0xdc, 0x8b, + 0x58, 0x1c, 0x7d, 0x21, 0x17, 0xef, 0x79, 0xdd, 0xce, 0xfe, 0x46, 0xc1, 0x00, 0x33, 0xe6, 0x53, + 0x0f, 0x73, 0x1a, 0x85, 0x9d, 0xfd, 0x75, 0xec, 0xb3, 0x3e, 0x1e, 0xe5, 0xf6, 0x56, 0x2f, 0x8a, + 0x7a, 0x3e, 0xe9, 0x48, 0x68, 0x37, 0xdd, 0xeb, 0x90, 0x80, 0x71, 0x6d, 0x90, 0xfd, 0x4b, 0x38, + 0xb9, 0x59, 0x30, 0xb9, 0xd3, 0x25, 0x21, 0xa7, 0x7c, 0x88, 0x2c, 0x98, 0x89, 0xd3, 0x90, 0xd3, + 0x80, 0x58, 0x8d, 0xb5, 0xc6, 0xc5, 0x96, 0x9b, 0x81, 0xe2, 0x8b, 0xe7, 0xa7, 0x09, 0x27, 0xb1, + 0x35, 0xae, 0xbe, 0x68, 0x10, 0x9d, 0x85, 0x56, 0x88, 0x03, 0x92, 0x30, 0xec, 0x11, 0x6b, 0x42, + 0x7e, 0x2b, 0x10, 0x08, 0xc1, 0xa4, 0x00, 0xac, 0x49, 0xf9, 0x41, 0xae, 0xed, 0xaf, 0xe6, 0x61, + 0x61, 0x07, 0x87, 0x74, 0x8f, 0x24, 0xdc, 0x25, 0x5f, 0xa6, 0x24, 0xe1, 0xe8, 0x29, 0x4c, 0x0a, + 0x1f, 0x4b, 0xb1, 0xb3, 0x1b, 0xdb, 0x4e, 0xe1, 0x0a, 0x27, 0x73, 0x85, 0x5c, 0xfc, 0xc2, 0xeb, + 0x3a, 0xfb, 0x1b, 0x0e, 0x1b, 0xf4, 0x1c, 0xe1, 0x0a, 0xc7, 0x70, 0x85, 0x93, 0xb9, 0xc2, 0x71, + 0xf3, 0xd3, 0x72, 0x25, 0x57, 0xd4, 0x86, 0x66, 0x4c, 0xf6, 0x69, 0x42, 0xa3, 0x50, 0xab, 0x9f, + 0xc3, 0xc2, 0xb2, 0x30, 0xba, 0x81, 0xbd, 0xbe, 0xd2, 0xbe, 0xe9, 0x66, 0x20, 0x5a, 0x83, 0x59, + 0xcc, 0xd8, 0x7d, 0xbc, 0x4b, 0xfc, 0x7b, 0x64, 0xa8, 0x4d, 0x30, 0x51, 0x62, 0x2f, 0x66, 0xec, + 0x81, 0x30, 0x70, 0x4a, 0x79, 0x45, 0x83, 0x65, 0xaf, 0x34, 0xab, 0x5e, 0xf9, 0x15, 0x2c, 0x19, + 0x8a, 0x3f, 0x8e, 0xd2, 0xd8, 0x23, 0x16, 0x48, 0xd3, 0x1f, 0x1e, 0xcd, 0xf4, 0xcd, 0x2a, 0x5b, + 0x77, 0x54, 0x12, 0xfa, 0x39, 0x4c, 0xc9, 0x80, 0xb6, 0x66, 0xd7, 0x26, 0x5e, 0xab, 0xb7, 0x15, + 0x5b, 0x14, 0xc2, 0x0c, 0xf3, 0xd3, 0x1e, 0x0d, 0x13, 0x6b, 0x4e, 0x4a, 0x78, 0x72, 0x34, 0x09, + 0x37, 0xa2, 0x70, 0x8f, 0xf6, 0x76, 0x70, 0x88, 0x7b, 0x24, 0x20, 0x21, 0x7f, 0x24, 0x99, 0xbb, + 0x99, 0x10, 0xf4, 0x1c, 0x16, 0x07, 0x69, 0xc2, 0xa3, 0x80, 0x3e, 0x27, 0x0f, 0x99, 0xd8, 0x9b, + 0x58, 0xf3, 0xd2, 0x9b, 0x0f, 0x8e, 0x26, 0xf8, 0x5e, 0x85, 0xab, 0x3b, 0x22, 0x47, 0x04, 0xc9, + 0x20, 0xdd, 0x25, 0x3f, 0x26, 0xb1, 0x8c, 0xae, 0x13, 0x2a, 0x48, 0x0c, 0x94, 0x0a, 0x23, 0xaa, + 0xa1, 0xc4, 0x5a, 0x58, 0x9b, 0x50, 0x61, 0x94, 0xa3, 0xd0, 0x45, 0x58, 0xd8, 0x27, 0x31, 0xdd, + 0x1b, 0x3e, 0xa6, 0xbd, 0x10, 0xf3, 0x34, 0x26, 0xd6, 0xa2, 0x0c, 0xc5, 0x2a, 0x1a, 0x05, 0x30, + 0xdf, 0x27, 0x7e, 0x20, 0x5c, 0x7e, 0x23, 0x26, 0xdd, 0xc4, 0x5a, 0x92, 0xfe, 0xdd, 0x3a, 0xfa, + 0x09, 0x4a, 0x76, 0x6e, 0x99, 0xbb, 0x50, 0x2c, 0x8c, 0x5c, 0x7d, 0x53, 0xd4, 0x1d, 0x41, 0x4a, + 0xb1, 0x0a, 0x1a, 0x5d, 0x80, 0x13, 0x3c, 0xc6, 0xde, 0x80, 0x86, 0xbd, 0x1d, 0xc2, 0xfb, 0x51, + 0xd7, 0x3a, 0x29, 0x3d, 0x51, 0xc1, 0x22, 0x0f, 0x10, 0x09, 0xf1, 0xae, 0x4f, 0xba, 0x2a, 0x16, + 0x9f, 0x0c, 0x19, 0x49, 0xac, 0x65, 0x69, 0xc5, 0x15, 0xc7, 0x48, 0xbc, 0x95, 0x04, 0xe1, 0xdc, + 0x1a, 0xd9, 0x75, 0x2b, 0xe4, 0xf1, 0xd0, 0xad, 0x61, 0x87, 0x06, 0x30, 0x2b, 0xec, 0xc8, 0x42, + 0xe1, 0x94, 0x0c, 0x85, 0x3b, 0x47, 0xf3, 0xd1, 0x76, 0xc1, 0xd0, 0x35, 0xb9, 0x23, 0x07, 0x50, + 0x1f, 0x27, 0x3b, 0xa9, 0xcf, 0x29, 0xf3, 0x89, 0x52, 0x23, 0xb1, 0x56, 0xa4, 0x9b, 0x6a, 0xbe, + 0xa0, 0x7b, 0x00, 0x31, 0xd9, 0xcb, 0xe8, 0x4e, 0x4b, 0xcb, 0x2f, 0x1f, 0x66, 0xb9, 0x9b, 0x53, + 0x2b, 0x8b, 0x8d, 0xed, 0xe8, 0x53, 0x38, 0x89, 0x47, 0xf3, 0xb8, 0x65, 0x49, 0x8b, 0xff, 0xcf, + 0xe4, 0x5a, 0x93, 0xee, 0xdd, 0xba, 0xbd, 0xc2, 0x1e, 0xe1, 0x19, 0xe2, 0x71, 0x9d, 0x40, 0x64, + 0xa6, 0x38, 0x23, 0xa3, 0xb6, 0xe6, 0x8b, 0x08, 0x6f, 0x8d, 0x95, 0x79, 0xb0, 0xad, 0x2e, 0x80, + 0x81, 0x6a, 0xdf, 0x82, 0xd3, 0x07, 0x9c, 0x1e, 0x5a, 0x84, 0x89, 0x01, 0x19, 0xea, 0x62, 0x23, + 0x96, 0x68, 0x19, 0xa6, 0xf6, 0xb1, 0x9f, 0x12, 0x99, 0xa7, 0x9b, 0xae, 0x02, 0xae, 0x8d, 0x7f, + 0xd8, 0x68, 0xff, 0xbe, 0x01, 0x0b, 0x15, 0x5f, 0xd4, 0xec, 0xff, 0x99, 0xb9, 0xff, 0x35, 0xdc, + 0x8c, 0xbd, 0x27, 0x38, 0xee, 0x11, 0x6e, 0x28, 0x62, 0xff, 0xa3, 0x01, 0x56, 0xe5, 0x90, 0x7e, + 0x42, 0x79, 0xff, 0x36, 0xf5, 0x49, 0x82, 0xae, 0xc2, 0x4c, 0xac, 0x70, 0xba, 0x96, 0xbd, 0x75, + 0xc8, 0xd9, 0x6e, 0x8f, 0xb9, 0x19, 0x35, 0xfa, 0x18, 0x9a, 0xa2, 0x31, 0xe8, 0x62, 0x8e, 0xb5, + 0xee, 0x6b, 0x75, 0x3b, 0x85, 0x94, 0x1d, 0x4d, 0xb7, 0x3d, 0xe6, 0xe6, 0x7b, 0xd0, 0xfb, 0x30, + 0xe5, 0xf5, 0xd3, 0x70, 0x20, 0xab, 0xd8, 0xec, 0xc6, 0xb9, 0x83, 0x36, 0xdf, 0x10, 0x44, 0xdb, + 0x63, 0xae, 0xa2, 0xfe, 0x64, 0x1a, 0x26, 0x19, 0x8e, 0xb9, 0x7d, 0x1b, 0x96, 0xeb, 0x44, 0x88, + 0xd2, 0xe9, 0xf5, 0x89, 0x37, 0x48, 0xd2, 0x40, 0xbb, 0x39, 0x87, 0x45, 0x71, 0x4f, 0xe8, 0x73, + 0xe5, 0xea, 0x09, 0x57, 0xae, 0xed, 0xef, 0xc1, 0xd2, 0x88, 0x34, 0x71, 0xa8, 0x4a, 0x37, 0xc1, + 0x61, 0x4e, 0x8b, 0xb6, 0x53, 0x38, 0xf5, 0x44, 0xfa, 0x22, 0xaf, 0x1f, 0xc7, 0xd1, 0x0c, 0xd8, + 0xdb, 0xb0, 0x52, 0x15, 0x9b, 0xb0, 0x28, 0x4c, 0x88, 0x08, 0x7d, 0x99, 0x70, 0x29, 0xe9, 0x16, + 0x5f, 0xa5, 0x16, 0x4d, 0xb7, 0xe6, 0x8b, 0xfd, 0x9b, 0x71, 0x58, 0x71, 0x49, 0x12, 0xf9, 0xfb, + 0x24, 0xcb, 0x86, 0xc7, 0xd3, 0xcf, 0xfc, 0x14, 0x26, 0x30, 0x63, 0x3a, 0x4c, 0xee, 0xbc, 0xb6, + 0x8e, 0xc1, 0x15, 0x5c, 0xd1, 0xbb, 0xb0, 0x84, 0x83, 0x5d, 0xda, 0x4b, 0xa3, 0x34, 0xc9, 0xcc, + 0xd2, 0x8d, 0xdd, 0xe8, 0x07, 0xdb, 0x83, 0xd3, 0x23, 0x2e, 0xd0, 0xee, 0x34, 0xbb, 0xae, 0x46, + 0xa5, 0xeb, 0xaa, 0x15, 0x32, 0x7e, 0x90, 0x90, 0x5f, 0x37, 0xa0, 0x99, 0x45, 0x15, 0xba, 0x04, + 0x8b, 0x5e, 0x14, 0x30, 0xea, 0x93, 0x6e, 0x86, 0xd3, 0xec, 0x47, 0xf0, 0x22, 0x39, 0xc5, 0xf8, + 0x59, 0x4e, 0xa6, 0x04, 0x98, 0x28, 0x11, 0xc3, 0x0c, 0xf3, 0xbe, 0x36, 0x50, 0xae, 0x05, 0xce, + 0xa7, 0xa1, 0x6a, 0x5a, 0xa7, 0x5c, 0xb9, 0xb6, 0x3f, 0x87, 0xb9, 0x9b, 0x84, 0x91, 0xb0, 0x4b, + 0x42, 0x8f, 0x92, 0x44, 0xd2, 0x44, 0xde, 0x40, 0x4b, 0x96, 0x6b, 0x81, 0xeb, 0x12, 0x96, 0x68, + 0x31, 0x72, 0x8d, 0x6c, 0x98, 0x13, 0x37, 0x9c, 0xc6, 0xb2, 0x73, 0x49, 0xb4, 0x9c, 0x12, 0xce, + 0x4e, 0x4a, 0xdd, 0x78, 0xde, 0x16, 0xac, 0x02, 0x60, 0xc6, 0xb2, 0xce, 0x42, 0x09, 0x32, 0x30, + 0xe8, 0x3a, 0xcc, 0x75, 0x0d, 0x95, 0x74, 0x38, 0x58, 0xe6, 0xc5, 0x37, 0x55, 0x76, 0x4b, 0xd4, + 0xf6, 0xd7, 0x13, 0xb0, 0x58, 0xa4, 0x23, 0x7d, 0x64, 0x1b, 0xd0, 0x0a, 0x34, 0x2e, 0xb1, 0x1a, + 0xb2, 0x36, 0x2d, 0xd7, 0xe6, 0xaf, 0x82, 0xac, 0xdc, 0xea, 0x8e, 0x57, 0x5b, 0xdd, 0x15, 0x98, + 0x56, 0x03, 0x96, 0xb6, 0x5c, 0x43, 0xa5, 0xe0, 0x98, 0xac, 0x04, 0xc7, 0x2a, 0x40, 0x92, 0x57, + 0x0a, 0x6b, 0x5a, 0x19, 0x5e, 0x60, 0x84, 0x4f, 0x55, 0x63, 0xe4, 0x92, 0x24, 0xf5, 0xb9, 0x35, + 0xa3, 0x7c, 0x6a, 0xe2, 0xd0, 0x3b, 0x30, 0xef, 0x45, 0x41, 0x40, 0xf9, 0x0e, 0x49, 0x12, 0xdc, + 0xcb, 0x9a, 0xf0, 0x32, 0x52, 0x70, 0x52, 0x88, 0xcd, 0x94, 0xf7, 0xa3, 0xd8, 0x6a, 0x29, 0x4e, + 0x26, 0x0e, 0xdd, 0x05, 0x50, 0xf0, 0x4d, 0xcc, 0xb3, 0x2e, 0xfd, 0x92, 0xa3, 0x26, 0x3c, 0xc7, + 0x9c, 0xf0, 0x8a, 0x8b, 0x26, 0x92, 0xb2, 0xb3, 0xbf, 0xee, 0x3c, 0xa1, 0x01, 0x71, 0x8d, 0xdd, + 0x95, 0x7a, 0x9d, 0xf7, 0x84, 0xb3, 0x87, 0xd6, 0xeb, 0x8c, 0xcc, 0xad, 0xdb, 0x6b, 0x47, 0xb0, + 0x70, 0x9f, 0x8a, 0x23, 0xdc, 0x4b, 0x8e, 0x27, 0x7f, 0x7e, 0x00, 0x93, 0x42, 0x98, 0x38, 0xc1, + 0xdd, 0x18, 0x87, 0x5e, 0x9f, 0xa8, 0x50, 0x69, 0xb9, 0x39, 0x2c, 0x6e, 0x02, 0xc7, 0x3d, 0x11, + 0x92, 0x02, 0x2f, 0xd7, 0xf6, 0x5f, 0xc6, 0x95, 0xa6, 0x9b, 0x8c, 0x25, 0xdf, 0xfd, 0xd8, 0x57, + 0xdf, 0x88, 0x4e, 0x8c, 0x36, 0xa2, 0x15, 0x95, 0xbf, 0x4d, 0x23, 0xfa, 0x9a, 0x3a, 0x1f, 0x3b, + 0x85, 0x99, 0x4d, 0xc6, 0x84, 0x22, 0x68, 0x1d, 0x26, 0x31, 0x63, 0xd9, 0xdd, 0x3c, 0x57, 0x89, + 0x18, 0x41, 0x22, 0xfe, 0xd7, 0x2a, 0x49, 0xd2, 0xf6, 0x55, 0x68, 0xe5, 0xa8, 0x97, 0x89, 0x6d, + 0x99, 0x62, 0xd7, 0x00, 0xd4, 0xa4, 0x75, 0x27, 0xdc, 0x8b, 0xf2, 0x49, 0xbe, 0x61, 0x4c, 0xf2, + 0xd7, 0x32, 0x0a, 0xa9, 0xdb, 0xbb, 0x30, 0x45, 0x39, 0x09, 0x32, 0xe5, 0x56, 0x4c, 0xe5, 0x0a, + 0x46, 0xae, 0x22, 0xb2, 0xff, 0xd6, 0x84, 0x33, 0xe2, 0xc4, 0x1e, 0xcb, 0x7c, 0xb0, 0xc9, 0xd8, + 0x4d, 0xc2, 0x31, 0xf5, 0x93, 0x4f, 0x53, 0x12, 0x0f, 0xdf, 0x70, 0x60, 0xf4, 0x60, 0x5a, 0xa5, + 0x13, 0x9d, 0x33, 0x5f, 0xfb, 0xd0, 0xad, 0xd9, 0x17, 0x93, 0xf6, 0xc4, 0x9b, 0x99, 0xb4, 0xeb, + 0x26, 0xdf, 0xc9, 0x63, 0x9a, 0x7c, 0x0f, 0x7e, 0xfc, 0x30, 0x9e, 0x54, 0xa6, 0xcb, 0x4f, 0x2a, + 0x35, 0x03, 0xe5, 0xcc, 0xab, 0x0e, 0x94, 0xcd, 0xda, 0x81, 0x32, 0xa8, 0xbd, 0xc7, 0x2d, 0xe9, + 0xee, 0x1f, 0x98, 0x11, 0x78, 0x60, 0xac, 0x1d, 0x65, 0xb4, 0x84, 0x37, 0x3a, 0x5a, 0xfe, 0xa8, + 0x34, 0x2a, 0xaa, 0xc7, 0x9a, 0xf7, 0x5f, 0xcd, 0xa6, 0x43, 0x86, 0xc6, 0xff, 0xb9, 0x79, 0xec, + 0x77, 0xb2, 0x0d, 0x67, 0x51, 0xe1, 0x83, 0xbc, 0x9f, 0x11, 0x75, 0x48, 0xf4, 0x10, 0x3a, 0x69, + 0x89, 0x35, 0xba, 0x0c, 0x93, 0xc2, 0xc9, 0x7a, 0x4e, 0x3a, 0x6d, 0xfa, 0x53, 0x9c, 0xc4, 0x26, + 0x63, 0x8f, 0x19, 0xf1, 0x5c, 0x49, 0x84, 0xae, 0x41, 0x2b, 0x0f, 0x7c, 0x7d, 0xb3, 0xce, 0x9a, + 0x3b, 0xf2, 0x7b, 0x92, 0x6d, 0x2b, 0xc8, 0xc5, 0xde, 0x2e, 0x8d, 0x89, 0x27, 0xa7, 0x88, 0xa9, + 0xd1, 0xbd, 0x37, 0xb3, 0x8f, 0xf9, 0xde, 0x9c, 0x1c, 0xad, 0xc3, 0xb4, 0x7a, 0xdd, 0x92, 0x37, + 0x68, 0x76, 0xe3, 0xcc, 0x68, 0x32, 0xcd, 0x76, 0x69, 0x42, 0xfb, 0xeb, 0x06, 0xbc, 0x5d, 0x04, + 0x44, 0x76, 0x9b, 0xb2, 0x41, 0xee, 0xbb, 0xaf, 0xb8, 0x17, 0xe0, 0x84, 0x9c, 0x1c, 0x8b, 0x47, + 0x2e, 0xf5, 0xde, 0x5a, 0xc1, 0xda, 0x7f, 0x6e, 0xc0, 0xf9, 0x51, 0x3b, 0x6e, 0xf4, 0x71, 0xcc, + 0xf3, 0xe3, 0x3d, 0x0e, 0x5b, 0xb2, 0x82, 0x37, 0x5e, 0x14, 0xbc, 0x92, 0x7d, 0x13, 0x65, 0xfb, + 0xec, 0xbf, 0x8e, 0xc3, 0xac, 0x11, 0x40, 0x75, 0x05, 0x53, 0x74, 0xb6, 0x32, 0x6e, 0xe5, 0x5b, + 0x81, 0x2c, 0x0a, 0x2d, 0xd7, 0xc0, 0xa0, 0x01, 0x00, 0xc3, 0x31, 0x0e, 0x08, 0x27, 0xb1, 0xc8, + 0xe4, 0xe2, 0xc6, 0xdf, 0x3b, 0x7a, 0x76, 0x79, 0x94, 0xf1, 0x74, 0x0d, 0xf6, 0xa2, 0x35, 0x97, + 0xa2, 0x13, 0x9d, 0xbf, 0x35, 0x84, 0x9e, 0xc1, 0x89, 0x3d, 0xea, 0x93, 0x47, 0x85, 0x22, 0xd3, + 0x52, 0x91, 0x87, 0x47, 0x57, 0xe4, 0xb6, 0xc9, 0xd7, 0xad, 0x88, 0xb1, 0x2f, 0xc1, 0x62, 0xf5, + 0x3e, 0x09, 0x25, 0x69, 0x80, 0x7b, 0xb9, 0xb7, 0x34, 0x64, 0x23, 0x58, 0xac, 0xde, 0x1f, 0xfb, + 0x9f, 0xe3, 0x70, 0x2a, 0x67, 0xb7, 0x19, 0x86, 0x51, 0x1a, 0x7a, 0x72, 0xc4, 0xaa, 0x3d, 0x8b, + 0x65, 0x98, 0xe2, 0x94, 0xfb, 0x79, 0xe3, 0x23, 0x01, 0x51, 0xbb, 0x78, 0x14, 0xf9, 0x9c, 0x32, + 0x7d, 0xc0, 0x19, 0xa8, 0xce, 0x5e, 0x4e, 0x6d, 0x5d, 0x99, 0x09, 0x9a, 0x6e, 0x0e, 0x8b, 0x6f, + 0xa2, 0xab, 0x91, 0xf3, 0x8a, 0x72, 0x66, 0x0e, 0xcb, 0xb8, 0x8f, 0x7c, 0x9f, 0x78, 0xc2, 0x1d, + 0xc6, 0x44, 0x53, 0xc1, 0xca, 0x49, 0x89, 0xc7, 0x34, 0xec, 0xe9, 0x79, 0x46, 0x43, 0x42, 0x4f, + 0x1c, 0xc7, 0x78, 0x68, 0x35, 0xa5, 0x03, 0x14, 0x80, 0xae, 0xc3, 0x44, 0x80, 0x99, 0x2e, 0x74, + 0x97, 0x4a, 0xd9, 0xa1, 0xce, 0x03, 0xce, 0x0e, 0x66, 0xaa, 0x12, 0x88, 0x6d, 0xed, 0x0f, 0xc4, + 0x3c, 0xcd, 0xbe, 0x7d, 0x4b, 0xf8, 0x05, 0xcc, 0x97, 0x92, 0x0f, 0xfa, 0x0c, 0x56, 0x8a, 0x88, + 0x32, 0x05, 0xea, 0x26, 0xf0, 0xed, 0x97, 0x6a, 0xe6, 0x1e, 0xc0, 0xc0, 0xfe, 0x12, 0x96, 0x44, + 0xc8, 0xc8, 0x8b, 0x7f, 0x4c, 0xa3, 0xcd, 0x47, 0xd0, 0xca, 0x45, 0xd6, 0xc6, 0x4c, 0x1b, 0x9a, + 0xfb, 0xd9, 0xd0, 0xa6, 0x66, 0x9b, 0x1c, 0xb6, 0x37, 0x01, 0x99, 0xfa, 0xea, 0x0a, 0x74, 0xb9, + 0xdc, 0x14, 0x9f, 0xaa, 0x96, 0x1b, 0x49, 0x9e, 0xf5, 0xc4, 0x7f, 0x18, 0x87, 0x85, 0x2d, 0x2a, + 0x1f, 0xce, 0x8e, 0x29, 0xc9, 0x5d, 0x82, 0xc5, 0x24, 0xdd, 0x0d, 0xa2, 0x6e, 0xea, 0x13, 0xdd, + 0x14, 0xe8, 0x4a, 0x3f, 0x82, 0x3f, 0x2c, 0xf9, 0xe5, 0xcf, 0x28, 0x93, 0xc6, 0x33, 0xca, 0x75, + 0x38, 0xf3, 0x80, 0x3c, 0xd3, 0xf6, 0x6c, 0xf9, 0xd1, 0xee, 0x2e, 0x0d, 0x7b, 0x99, 0x90, 0x29, + 0x29, 0xe4, 0x60, 0x02, 0xfb, 0xb7, 0x0d, 0x58, 0x2c, 0x7c, 0xa1, 0xbd, 0x79, 0x55, 0x45, 0xbd, + 0xf2, 0xe5, 0x79, 0xd3, 0x97, 0x55, 0xd2, 0xff, 0x3c, 0xe0, 0xe7, 0xcc, 0x80, 0xff, 0xaa, 0x01, + 0xa7, 0xb6, 0x28, 0xcf, 0x52, 0x0d, 0xfd, 0x2f, 0x3b, 0x17, 0xdb, 0x81, 0x95, 0xaa, 0xfa, 0xda, + 0x95, 0xcb, 0x30, 0x25, 0x4e, 0x29, 0x9b, 0xdd, 0x15, 0xb0, 0xf1, 0x4d, 0x0b, 0x96, 0x8a, 0xe2, + 0x2b, 0xfe, 0xa5, 0x1e, 0x41, 0x0f, 0x61, 0x71, 0x4b, 0xff, 0x79, 0x39, 0x7f, 0x38, 0x3b, 0xec, + 0x5d, 0xbb, 0x7d, 0xb6, 0xfe, 0xa3, 0x12, 0x6d, 0x8f, 0x21, 0x0f, 0xce, 0x54, 0x19, 0x16, 0x4f, + 0xe8, 0xef, 0x1c, 0xc2, 0x39, 0xa7, 0x7a, 0x99, 0x88, 0x8b, 0x0d, 0xf4, 0x19, 0x9c, 0x28, 0x3f, + 0xf4, 0xa2, 0x52, 0x36, 0xaa, 0x7d, 0x7b, 0x6e, 0xdb, 0x87, 0x91, 0xe4, 0xfa, 0x3f, 0x15, 0xad, + 0x6f, 0xe9, 0xd5, 0x13, 0xd9, 0xe5, 0xc6, 0xbc, 0xee, 0x55, 0xb8, 0xfd, 0xff, 0x87, 0xd2, 0xe4, + 0xdc, 0x3f, 0x82, 0x66, 0xf6, 0xa4, 0x53, 0x76, 0x73, 0xe5, 0xa1, 0xa7, 0xbd, 0x58, 0xe6, 0xb7, + 0x97, 0xd8, 0x63, 0xe8, 0x63, 0xb5, 0x59, 0x8c, 0xfc, 0xa3, 0x9b, 0x8d, 0x87, 0x8c, 0xf6, 0xc9, + 0x9a, 0xc7, 0x03, 0x7b, 0x0c, 0xfd, 0x10, 0x66, 0xc5, 0xea, 0x91, 0xfe, 0xdb, 0xea, 0x8a, 0xa3, + 0x7e, 0x47, 0xe0, 0x64, 0xbf, 0x23, 0x70, 0x6e, 0x05, 0x8c, 0x0f, 0xdb, 0x35, 0xd3, 0xbd, 0x66, + 0xf0, 0x14, 0xe6, 0xb7, 0x08, 0x2f, 0x9a, 0x71, 0x74, 0xfe, 0x95, 0x46, 0x96, 0xb6, 0x5d, 0x25, + 0x1b, 0xed, 0xe7, 0xed, 0x31, 0xf4, 0xc7, 0x06, 0x9c, 0xdc, 0x22, 0xbc, 0xda, 0xde, 0xa2, 0xf7, + 0xea, 0x85, 0x1c, 0xd0, 0x06, 0xb7, 0x1f, 0x1c, 0xf5, 0xbe, 0x96, 0xd9, 0xda, 0x63, 0xe8, 0x4f, + 0x0d, 0x38, 0x6d, 0x28, 0x66, 0xf6, 0xab, 0x68, 0xfd, 0x70, 0xe5, 0x6a, 0x7a, 0xdb, 0xf6, 0xdd, + 0x23, 0xfe, 0xc9, 0xdc, 0x60, 0x69, 0x8f, 0xa1, 0x47, 0xf2, 0x4c, 0x8a, 0xf2, 0x84, 0xce, 0xd5, + 0xd6, 0xa1, 0x5c, 0xfa, 0xea, 0x41, 0x9f, 0xf3, 0x73, 0xb8, 0x0b, 0xb3, 0x5b, 0x84, 0x67, 0x59, + 0xb7, 0x1c, 0x69, 0x95, 0x12, 0x56, 0xbe, 0xaa, 0xd5, 0x44, 0x2d, 0x23, 0x66, 0x49, 0xf1, 0x32, + 0xf2, 0x54, 0xf9, 0xae, 0xd6, 0xa6, 0xe0, 0x72, 0xc4, 0xd4, 0xa7, 0x39, 0x7b, 0xec, 0x93, 0xcd, + 0xbf, 0xbf, 0x58, 0x6d, 0x7c, 0xf3, 0x62, 0xb5, 0xf1, 0xaf, 0x17, 0xab, 0x8d, 0xcf, 0xaf, 0xbc, + 0xe4, 0x47, 0x36, 0xc6, 0x2f, 0x82, 0x30, 0xa3, 0x9e, 0x4f, 0x49, 0xc8, 0x77, 0xa7, 0x65, 0xf0, + 0x5f, 0xf9, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x13, 0xd6, 0xef, 0x1d, 0x30, 0x24, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -3225,7 +3232,7 @@ var _RepoServerService_serviceDesc = grpc.ServiceDesc{ Metadata: "reposerver/repository/repository.proto", } -func (m *VersionConfig) Marshal() (dAtA []byte, err error) { +func (m *ApplicationIdentity) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3235,12 +3242,12 @@ func (m *VersionConfig) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *VersionConfig) MarshalTo(dAtA []byte) (int, error) { +func (m *ApplicationIdentity) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *VersionConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ApplicationIdentity) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -3249,24 +3256,31 @@ func (m *VersionConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { 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))) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintRepository(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0x22 + } + if len(m.Namespace) > 0 { + i -= len(m.Namespace) + copy(dAtA[i:], m.Namespace) + i = encodeVarintRepository(dAtA, i, uint64(len(m.Namespace))) 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))) + if len(m.Cluster) > 0 { + i -= len(m.Cluster) + copy(dAtA[i:], m.Cluster) + i = encodeVarintRepository(dAtA, i, uint64(len(m.Cluster))) 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))) + if len(m.Runtime) > 0 { + i -= len(m.Runtime) + copy(dAtA[i:], m.Runtime) + i = encodeVarintRepository(dAtA, i, uint64(len(m.Runtime))) i-- dAtA[i] = 0xa } @@ -3317,9 +3331,9 @@ func (m *ManifestRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xca } } - if m.VersionConfig != nil { + if m.ApplicationIdentity != nil { { - size, err := m.VersionConfig.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.ApplicationIdentity.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -5458,21 +5472,25 @@ func encodeVarintRepository(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *VersionConfig) Size() (n int) { +func (m *ApplicationIdentity) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.ProductLabel) + l = len(m.Runtime) if l > 0 { n += 1 + l + sovRepository(uint64(l)) } - l = len(m.JsonPath) + l = len(m.Cluster) + if l > 0 { + n += 1 + l + sovRepository(uint64(l)) + } + l = len(m.Namespace) if l > 0 { n += 1 + l + sovRepository(uint64(l)) } - l = len(m.ResourceName) + l = len(m.Name) if l > 0 { n += 1 + l + sovRepository(uint64(l)) } @@ -5585,8 +5603,8 @@ func (m *ManifestRequest) Size() (n int) { n += mapEntrySize + 2 + sovRepository(uint64(mapEntrySize)) } } - if m.VersionConfig != nil { - l = m.VersionConfig.Size() + if m.ApplicationIdentity != nil { + l = m.ApplicationIdentity.Size() n += 2 + l + sovRepository(uint64(l)) } if len(m.ProjectSourceRepos) > 0 { @@ -6457,7 +6475,7 @@ 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 { +func (m *ApplicationIdentity) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -6480,15 +6498,15 @@ func (m *VersionConfig) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: VersionConfig: wiretype end group for non-group") + return fmt.Errorf("proto: ApplicationIdentity: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: VersionConfig: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ApplicationIdentity: 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) + return fmt.Errorf("proto: wrong wireType = %d for field Runtime", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6516,11 +6534,11 @@ func (m *VersionConfig) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ProductLabel = string(dAtA[iNdEx:postIndex]) + m.Runtime = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field JsonPath", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6548,11 +6566,11 @@ func (m *VersionConfig) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.JsonPath = string(dAtA[iNdEx:postIndex]) + m.Cluster = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -6580,7 +6598,39 @@ func (m *VersionConfig) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ResourceName = string(dAtA[iNdEx:postIndex]) + m.Namespace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", 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.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -7429,7 +7479,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 ApplicationIdentity", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -7456,10 +7506,10 @@ func (m *ManifestRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.VersionConfig == nil { - m.VersionConfig = &VersionConfig{} + if m.ApplicationIdentity == nil { + m.ApplicationIdentity = &ApplicationIdentity{} } - if err := m.VersionConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ApplicationIdentity.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/repository/repository.go b/reposerver/repository/repository.go index 67f432f148d12..486a5f4dbf3b0 100644 --- a/reposerver/repository/repository.go +++ b/reposerver/repository/repository.go @@ -45,6 +45,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" @@ -89,6 +91,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.CodefreshClient + 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 } @@ -106,6 +110,7 @@ type RepoServerInitConstants struct { StreamedManifestMaxTarSize int64 HelmManifestMaxExtractedSize int64 DisableHelmManifestMaxExtractedSize bool + CodefreshConfig codefresh.CodefreshConfig } // NewService returns a new instance of the Manifest service @@ -117,6 +122,10 @@ func NewService(metricsServer *metrics.MetricsServer, cache *cache.Cache, initCo repoLock := NewRepositoryLock() gitRandomizedPaths := io.NewRandomizedTempPaths(rootDir) helmRandomizedPaths := io.NewRandomizedTempPaths(rootDir) + + codefreshClient := codefresh.NewCodefreshClient(&initConstants.CodefreshConfig) + versionConfigManager := version_config_manager.NewVersionConfigManager(codefreshClient) + return &Service{ parallelismLimitSemaphore: parallelismLimitSemaphore, repoLock: repoLock, @@ -127,13 +136,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, } } @@ -591,6 +602,16 @@ func resolveReferencedSources(hasMultipleSources bool, source *v1alpha1.Applicat return repoRefs, nil } +func (s *Service) GetVersionConfig(app *codefresh.ApplicationIdentity) *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 @@ -615,7 +636,13 @@ func (s *Service) GenerateManifest(ctx context.Context, q *apiclient.ManifestReq return nil } - promise = s.runManifestGen(ctx, repoRoot, commitSHA, cacheKey, ctxSrc, q) + versionConfig := s.GetVersionConfig(&codefresh.ApplicationIdentity{ + Runtime: q.ApplicationIdentity.Runtime, + Cluster: q.ApplicationIdentity.Cluster, + Namespace: q.ApplicationIdentity.Namespace, + Name: q.ApplicationIdentity.Name, + }) + 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 @@ -675,7 +702,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) @@ -687,7 +714,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 } @@ -700,7 +727,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) @@ -808,7 +835,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, 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 { @@ -1376,7 +1403,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, 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 ( @@ -1453,7 +1480,7 @@ func GenerateManifests(ctx context.Context, appPath, repoRoot, revision string, } if appSourceType == v1alpha1.ApplicationSourceTypeHelm { - appVersions, err := getAppVersions(appPath, q.VersionConfig.ResourceName, q.VersionConfig.JsonPath) + appVersions, err := getAppVersions(appPath, versionConfig.ResourceName, versionConfig.JsonPath) if err != nil { log.Errorf("failed to retrieve application version, app name: %q: %s", q.AppName, err.Error()) } else { diff --git a/reposerver/repository/repository.proto b/reposerver/repository/repository.proto index 6a5056900666b..fc681bb027e16 100644 --- a/reposerver/repository/repository.proto +++ b/reposerver/repository/repository.proto @@ -8,10 +8,11 @@ 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; +message ApplicationIdentity { + string runtime = 1; + string cluster = 2; + string namespace = 3; + string name = 4; } // ManifestRequest is a query for manifest generation. @@ -40,7 +41,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; + ApplicationIdentity applicationIdentity = 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 d453ef3858f43..94ed890ffebc7 100644 --- a/server/application/application.go +++ b/server/application/application.go @@ -507,7 +507,12 @@ func (s *Server) GetManifests(ctx context.Context, q *application.ApplicationMan EnabledSourceTypes: enableGenerateManifests, ProjectName: proj.Name, ProjectSourceRepos: proj.Spec.SourceRepos, - VersionConfig: apiclient.GetVersionConfig(), + ApplicationIdentity: &apiclient.ApplicationIdentity{ + Runtime: "runtime", + Cluster: "cluster", + Namespace: a.Spec.Destination.Namespace, + Name: a.InstanceName(s.ns), + }, }) if err != nil { return fmt.Errorf("error generating manifests: %w", err) diff --git a/util/argo/argo.go b/util/argo/argo.go index 76b84b4b5a319..4cfc679161474 100644 --- a/util/argo/argo.go +++ b/util/argo/argo.go @@ -773,7 +773,12 @@ func verifyGenerateManifests( NoRevisionCache: true, HasMultipleSources: hasMultipleSources, RefSources: refSources, - VersionConfig: apiclient.GetVersionConfig(), + ApplicationIdentity: &apiclient.ApplicationIdentity{ + Runtime: "runtime", + Cluster: "cluster", + Namespace: dest.Namespace, + Name: name, + }, } req.Repo.CopyCredentialsFromRepo(repoRes) req.Repo.CopySettingsFrom(repoRes)