Compare commits

...

6 Commits

Author SHA1 Message Date
Argo CD Hydrator
f816ada864 hydrate 6241416c8ef1a94d3c80f38fa2f1f865608886f7
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-24 11:09:24 -04:00
Argo CD Hydrator
ebb71a0018 hydrate f0cc9868393be8abf156adb963f66b9ec8417f37
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-24 10:56:51 -04:00
Argo CD Hydrator
8bd52a7b74 hydrate 665d6fd139b3bcf2df0ff4b464f2fe42597f2455
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-24 10:54:59 -04:00
Argo CD Hydrator
2d43a8331f hydrate
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-24 10:54:56 -04:00
Michael Crenshaw
dd7952e389 it's monitoring both branches now
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-23 17:02:39 -04:00
Michael Crenshaw
037d098d7c feat: manifest hydrator
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2024-04-22 10:47:52 -04:00
28 changed files with 7076 additions and 939 deletions

Submodule 17312096-72e2-485c-a433-7d7c6b81ca08 added at 665d6fd139

Submodule 34628a51-2048-4667-8992-9b36b6f0d245 added at 6241416c8e

Submodule 37026e70-563e-4149-8395-2079e81158a0 added at 665d6fd139

Submodule 9e98b44c-364c-41da-b89d-819b02ff12f5 added at 665d6fd139

Submodule acbbabb3-b0e1-4bfb-8fd4-a253e0296c7e added at a1a761cc43

View File

@@ -6560,6 +6560,9 @@
"source": {
"$ref": "#/definitions/v1alpha1ApplicationSource"
},
"sourceHydrator": {
"$ref": "#/definitions/v1alpha1SourceHydrator"
},
"sources": {
"type": "array",
"title": "Sources is a reference to the location of the application's manifests or chart",
@@ -6617,6 +6620,9 @@
"$ref": "#/definitions/v1alpha1ResourceStatus"
}
},
"sourceHydrator": {
"$ref": "#/definitions/v1alpha1SourceHydratorStatus"
},
"sourceType": {
"type": "string",
"title": "SourceType specifies the type of this application"
@@ -7006,6 +7012,21 @@
}
}
},
"v1alpha1DrySource": {
"description": "DrySource specifies a location for dry \"don't repeat yourself\" manifest source information.",
"type": "object",
"properties": {
"path": {
"type": "string"
},
"repoURL": {
"type": "string"
},
"targetRevision": {
"type": "string"
}
}
},
"v1alpha1DuckTypeGenerator": {
"description": "DuckType defines a generator to match against clusters registered with ArgoCD.",
"type": "object",
@@ -7257,6 +7278,15 @@
}
}
},
"v1alpha1HydrateTo": {
"description": "HydrateTo specifies a location to which hydrated manifests should be pushed as a \"staging area\" before being moved to\nthe SyncSource. The RepoURL and Path are assumed based on the associated SyncSource config in the SourceHydrator.",
"type": "object",
"properties": {
"targetRevision": {
"type": "string"
}
}
},
"v1alpha1Info": {
"type": "object",
"properties": {
@@ -8867,6 +8897,33 @@
}
}
},
"v1alpha1SourceHydrator": {
"description": "SourceHydrator specifies a dry \"don't repeat yourself\" source for manifests, a sync source from which to sync\nhydrated manifests, and an optional hydrateTo location to act as a \"staging\" aread for hydrated manifests.",
"type": "object",
"properties": {
"drySource": {
"$ref": "#/definitions/v1alpha1DrySource"
},
"hydrateTo": {
"$ref": "#/definitions/v1alpha1HydrateTo"
},
"syncSource": {
"$ref": "#/definitions/v1alpha1SyncSource"
}
}
},
"v1alpha1SourceHydratorStatus": {
"type": "object",
"properties": {
"drySource": {
"$ref": "#/definitions/v1alpha1DrySource"
},
"revision": {
"type": "string",
"title": "Revision holds the resolved revision (sha) of the dry source as of the most recent reconciliation"
}
}
},
"v1alpha1SyncOperation": {
"description": "SyncOperation contains details about a sync operation.",
"type": "object",
@@ -9021,6 +9078,18 @@
}
}
},
"v1alpha1SyncSource": {
"description": "SyncSource specifies a location from which hydrated manifests may be synced. RepoURL is assumed based on the\nassociated DrySource config in the SourceHydrator.",
"type": "object",
"properties": {
"path": {
"type": "string"
},
"targetRevision": {
"type": "string"
}
}
},
"v1alpha1SyncStatus": {
"type": "object",
"title": "SyncStatus contains information about the currently observed live and desired states of an application",

Submodule b605bc84-1e9b-4105-b5e7-739af9e65e38 added at a3879b24c0

View File

@@ -5,6 +5,7 @@ import (
"encoding/json"
goerrors "errors"
"fmt"
"github.com/argoproj/argo-cd/v2/controller/commit"
"math"
"math/rand"
"net/http"
@@ -1457,6 +1458,12 @@ func (ctrl *ApplicationController) PatchAppWithWriteBack(ctx context.Context, na
return patchedApp, err
}
// processAppRefreshQueueItem does roughly these tasks:
// 1. If we're shutting down, it quits early and returns "false" to indicate we're done processing refreshes.
// 2. Checks whether the app needs to be refreshed. If not, quit early.
// 3. If we're "comparing with nothing," just update the app resource tree in Redis and the app status in k8s.
// 4. Checks that all AppProject restrictions are being followed. If not, clears the app resource tree and managed
// resources in Redis and sets failure conditions on the app status.
func (ctrl *ApplicationController) processAppRefreshQueueItem() (processNext bool) {
patchMs := time.Duration(0) // time spent in doing patch/update calls
setOpMs := time.Duration(0) // time spent in doing Operation patch calls in autosync
@@ -1546,6 +1553,59 @@ func (ctrl *ApplicationController) processAppRefreshQueueItem() (processNext boo
return
}
// If we're using a source hydrator, see if the dry source has changed.
if app.Spec.SourceHydrator != nil {
revision, err := ctrl.appStateManager.ResolveDryRevision(app)
if err != nil {
logCtx.Errorf("Failed to check whether dry source has changed, skipping: %v", err)
}
if app.Status.SourceHydrator.Revision != revision {
app.Status.SourceHydrator.Revision = revision
ctrl.persistAppStatus(origApp, &app.Status)
sources := []appv1.ApplicationSource{app.Spec.SourceHydrator.GetApplicationSource()}
revisions := []string{app.Spec.SourceHydrator.DrySource.TargetRevision}
appLabelKey, err := ctrl.settingsMgr.GetAppInstanceLabelKey()
if err != nil {
logCtx.Errorf("Failed to get app instance label key: %s", err)
return
}
objs, _, err := ctrl.appStateManager.GetRepoObjs(app, sources, appLabelKey, revisions, false, false, false, project)
if err != nil {
logCtx.Errorf("Failed to get repo objects: %v", err)
return
}
// Set up a ManifestsRequest
manifestDetails := make([]commit.ManifestDetails, len(objs))
for i, obj := range objs {
manifestDetails[i] = commit.ManifestDetails{Manifest: *obj}
}
paths := []commit.PathDetails{{
Path: app.Spec.SourceHydrator.SyncSource.Path,
Manifests: manifestDetails,
}}
manifestsRequest := commit.ManifestsRequest{
RepoURL: app.Spec.SourceHydrator.DrySource.RepoURL,
TargetBranch: app.Spec.SourceHydrator.SyncSource.TargetRevision,
DrySHA: revision,
CommitAuthor: "Argo CD Hydrator <argo-cd-hydrator@example.com>",
CommitMessage: fmt.Sprintf("hydrate %s", revision),
CommitTime: time.Now(),
Paths: paths,
}
commitService := commit.NewService()
_, err = commitService.Commit(manifestsRequest)
if err != nil {
logCtx.Errorf("Failed to commit hydrated manifests: %v", err)
return
}
}
}
var localManifests []string
if opState := app.Status.OperationState; opState != nil && opState.Operation.Sync != nil {
localManifests = opState.Operation.Sync.Manifests
@@ -1717,6 +1777,8 @@ func (ctrl *ApplicationController) needRefreshAppStatus(app *appv1.Application,
return false, refreshType, compareWith
}
// refreshAppConditions validates whether AppProject restrictions are being followed. If not, it adds error conditions
// to the app status.
func (ctrl *ApplicationController) refreshAppConditions(app *appv1.Application) (*appv1.AppProject, bool) {
errorConditions := make([]appv1.ApplicationCondition, 0)
proj, err := ctrl.getAppProj(app)

116
controller/commit/commit.go Normal file
View File

@@ -0,0 +1,116 @@
package commit
import (
"fmt"
"github.com/google/uuid"
log "github.com/sirupsen/logrus"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"os"
"os/exec"
"path"
"sigs.k8s.io/yaml"
"time"
)
/**
The commit package provides a way for the controller to push manifests to git.
*/
type Service interface {
Commit(ManifestsRequest) (ManifestsResponse, error)
}
type ManifestsRequest struct {
RepoURL string
TargetBranch string
DrySHA string
CommitAuthor string
CommitMessage string
CommitTime time.Time
Paths []PathDetails
}
type PathDetails struct {
Path string
Manifests []ManifestDetails
ReadmeDetails
}
type ManifestDetails struct {
Manifest unstructured.Unstructured
}
type ReadmeDetails struct {
}
type ManifestsResponse struct {
RequestId string
}
func NewService() Service {
return &service{}
}
type service struct {
}
func (s *service) Commit(r ManifestsRequest) (ManifestsResponse, error) {
logCtx := log.WithFields(log.Fields{"repo": r.RepoURL, "branch": r.TargetBranch, "drySHA": r.DrySHA})
logCtx.Info("committing")
// Create a temp dir with a UUID
dirName, err := uuid.NewRandom()
err = os.MkdirAll(path.Join("/tmp/_commit-service", dirName.String()), os.ModePerm)
if err != nil {
return ManifestsResponse{}, fmt.Errorf("failed to create temp dir: %w", err)
}
// Clone the repo into the temp dir using the git CLI
err = exec.Command("git", "clone", r.RepoURL, dirName.String()).Run()
if err != nil {
return ManifestsResponse{}, fmt.Errorf("failed to clone repo: %w", err)
}
// Write the manifests to the temp dir
for _, p := range r.Paths {
err = os.MkdirAll(path.Join(dirName.String(), p.Path), os.ModePerm)
if err != nil {
return ManifestsResponse{}, fmt.Errorf("failed to create path: %w", err)
}
for _, m := range p.Manifests {
// Marshal the manifests
mYaml, err := yaml.Marshal(m.Manifest)
if err != nil {
return ManifestsResponse{}, fmt.Errorf("failed to marshal manifest: %w", err)
}
// Write the yaml to manifest.yaml
err = os.WriteFile(path.Join(dirName.String(), p.Path, "manifest.yaml"), mYaml, os.ModePerm)
if err != nil {
return ManifestsResponse{}, fmt.Errorf("failed to write manifest: %w", err)
}
}
}
// Commit the changes
err = exec.Command("git", "add", ".").Run()
if err != nil {
return ManifestsResponse{}, fmt.Errorf("failed to add files: %w", err)
}
commitCmd := exec.Command("git", "commit", "-m", r.CommitMessage, "--author", r.CommitAuthor)
out, err := commitCmd.CombinedOutput()
if err != nil {
log.WithError(err).WithField("output", string(out)).Error("failed to commit files")
return ManifestsResponse{}, fmt.Errorf("failed to commit: %w", err)
}
pushCmd := exec.Command("git", "push", "origin", r.TargetBranch)
out, err = pushCmd.CombinedOutput()
if err != nil {
log.WithError(err).WithField("output", string(out)).Error("failed to push manifests")
return ManifestsResponse{}, fmt.Errorf("failed to push: %w", err)
}
log.WithField("output", string(out)).Debug("pushed manifests to git")
return ManifestsResponse{}, nil
}

View File

@@ -73,6 +73,7 @@ type AppStateManager interface {
CompareAppState(app *v1alpha1.Application, project *v1alpha1.AppProject, revisions []string, sources []v1alpha1.ApplicationSource, noCache bool, noRevisionCache bool, localObjects []string, hasMultipleSources bool) (*comparisonResult, error)
SyncAppState(app *v1alpha1.Application, state *v1alpha1.OperationState)
GetRepoObjs(app *v1alpha1.Application, sources []v1alpha1.ApplicationSource, appLabelKey string, revisions []string, noCache, noRevisionCache, verifySignature bool, proj *v1alpha1.AppProject) ([]*unstructured.Unstructured, []*apiclient.ManifestResponse, error)
ResolveDryRevision(app *v1alpha1.Application) (string, error)
}
// comparisonResult holds the state of an application after the reconciliation
@@ -276,6 +277,29 @@ func (m *appStateManager) GetRepoObjs(app *v1alpha1.Application, sources []v1alp
return targetObjs, manifestInfos, nil
}
func (m *appStateManager) ResolveDryRevision(app *v1alpha1.Application) (string, error) {
conn, repoClient, err := m.repoClientset.NewRepoServerClient()
if err != nil {
return "", fmt.Errorf("failed to connect to repo server: %w", err)
}
defer io.Close(conn)
repo, err := m.db.GetRepository(context.Background(), app.Spec.SourceHydrator.DrySource.RepoURL)
if err != nil {
return "", fmt.Errorf("failed to get repo %q: %w", app.Spec.SourceHydrator.DrySource.RepoURL, err)
}
resp, err := repoClient.ResolveRevision(context.Background(), &apiclient.ResolveRevisionRequest{
Repo: repo,
App: app,
AmbiguousRevision: app.Spec.SourceHydrator.DrySource.TargetRevision,
})
if err != nil {
return "", fmt.Errorf("failed to determine whether the dry source has changed: %w", err)
}
return resp.Revision, nil
}
func unmarshalManifests(manifests []string) ([]*unstructured.Unstructured, error) {
targetObjs := make([]*unstructured.Unstructured, 0)
for _, manifest := range manifests {

Submodule ef2804b5-5feb-4f9d-afab-b07f35775501 added at f0cc986839

File diff suppressed because it is too large Load Diff

View File

@@ -1272,6 +1272,51 @@ spec:
required:
- repoURL
type: object
sourceHydrator:
description: SourceHydrator provides a way to push hydrated manifests
back to git before syncing them to the cluster.
properties:
drySource:
description: DrySource specifies where the dry "don't repeat yourself"
manifest source lives.
properties:
path:
type: string
repoURL:
type: string
targetRevision:
type: string
required:
- path
- repoURL
- targetRevision
type: object
hydrateTo:
description: |-
HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then
have to move manifests to the SyncSource, e.g. by pull request.
properties:
targetRevision:
type: string
required:
- targetRevision
type: object
syncSource:
description: SyncSource specifies where to sync hydrated manifests
from.
properties:
path:
type: string
targetRevision:
type: string
required:
- path
- targetRevision
type: object
required:
- drySource
- syncSource
type: object
sources:
description: Sources is a reference to the location of the application's
manifests or chart
@@ -4179,6 +4224,30 @@ spec:
type: string
type: object
type: array
sourceHydrator:
description: SourceHydrator stores information about the current state
of source hydration
properties:
drySource:
description: DrySource holds the dry source configuration as of
the most recent reconciliation
properties:
path:
type: string
repoURL:
type: string
targetRevision:
type: string
required:
- path
- repoURL
- targetRevision
type: object
revision:
description: Revision holds the resolved revision (sha) of the
dry source as of the most recent reconciliation
type: string
type: object
sourceType:
description: SourceType specifies the type of this application
type: string

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -587,6 +587,9 @@ message ApplicationSpec {
// Sources is a reference to the location of the application's manifests or chart
repeated ApplicationSource sources = 8;
// SourceHydrator provides a way to push hydrated manifests back to git before syncing them to the cluster.
optional SourceHydrator sourceHydrator = 9;
}
// ApplicationStatus contains status information for the application
@@ -630,6 +633,9 @@ message ApplicationStatus {
// ControllerNamespace indicates the namespace in which the application controller is located
optional string controllerNamespace = 13;
// SourceHydrator stores information about the current state of source hydration
optional SourceHydratorStatus sourceHydrator = 14;
}
// ApplicationSummary contains information about URLs and container images used by an application
@@ -875,6 +881,15 @@ message ConnectionState {
optional k8s.io.apimachinery.pkg.apis.meta.v1.Time attemptedAt = 3;
}
// DrySource specifies a location for dry "don't repeat yourself" manifest source information.
message DrySource {
optional string repoURL = 1;
optional string targetRevision = 2;
optional string path = 3;
}
// DuckType defines a generator to match against clusters registered with ArgoCD.
message DuckTypeGenerator {
// ConfigMapRef is a ConfigMap with the duck type definitions needed to retrieve the data
@@ -1040,6 +1055,12 @@ message HostResourceInfo {
optional int64 capacity = 4;
}
// HydrateTo specifies a location to which hydrated manifests should be pushed as a "staging area" before being moved to
// the SyncSource. The RepoURL and Path are assumed based on the associated SyncSource config in the SourceHydrator.
message HydrateTo {
optional string targetRevision = 1;
}
message Info {
optional string name = 1;
@@ -2125,6 +2146,28 @@ message SignatureKey {
optional string keyID = 1;
}
// SourceHydrator specifies a dry "don't repeat yourself" source for manifests, a sync source from which to sync
// hydrated manifests, and an optional hydrateTo location to act as a "staging" aread for hydrated manifests.
message SourceHydrator {
// DrySource specifies where the dry "don't repeat yourself" manifest source lives.
optional DrySource drySource = 1;
// SyncSource specifies where to sync hydrated manifests from.
optional SyncSource syncSource = 2;
// HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then
// have to move manifests to the SyncSource, e.g. by pull request.
optional HydrateTo hydrateTo = 3;
}
message SourceHydratorStatus {
// DrySource holds the dry source configuration as of the most recent reconciliation
optional DrySource drySource = 1;
// Revision holds the resolved revision (sha) of the dry source as of the most recent reconciliation
optional string revision = 2;
}
// SyncOperation contains details about a sync operation.
message SyncOperation {
// Revision is the revision (Git) or chart version (Helm) which to sync the application to
@@ -2221,6 +2264,14 @@ message SyncPolicyAutomated {
optional bool allowEmpty = 3;
}
// SyncSource specifies a location from which hydrated manifests may be synced. RepoURL is assumed based on the
// associated DrySource config in the SourceHydrator.
message SyncSource {
optional string targetRevision = 1;
optional string path = 2;
}
// SyncStatus contains information about the currently observed live and desired states of an application
message SyncStatus {
// Status is the sync state of the comparison

View File

@@ -68,6 +68,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ComponentParameter": schema_pkg_apis_application_v1alpha1_ComponentParameter(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigManagementPlugin": schema_pkg_apis_application_v1alpha1_ConfigManagementPlugin(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConnectionState": schema_pkg_apis_application_v1alpha1_ConnectionState(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.DrySource": schema_pkg_apis_application_v1alpha1_DrySource(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.DuckTypeGenerator": schema_pkg_apis_application_v1alpha1_DuckTypeGenerator(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.EnvEntry": schema_pkg_apis_application_v1alpha1_EnvEntry(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ErrApplicationNotAllowedToUseProject": schema_pkg_apis_application_v1alpha1_ErrApplicationNotAllowedToUseProject(ref),
@@ -83,6 +84,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmParameter": schema_pkg_apis_application_v1alpha1_HelmParameter(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HostInfo": schema_pkg_apis_application_v1alpha1_HostInfo(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HostResourceInfo": schema_pkg_apis_application_v1alpha1_HostResourceInfo(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HydrateTo": schema_pkg_apis_application_v1alpha1_HydrateTo(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Info": schema_pkg_apis_application_v1alpha1_Info(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.InfoItem": schema_pkg_apis_application_v1alpha1_InfoItem(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.JWTToken": schema_pkg_apis_application_v1alpha1_JWTToken(ref),
@@ -154,11 +156,14 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SCMProviderGeneratorGitlab": schema_pkg_apis_application_v1alpha1_SCMProviderGeneratorGitlab(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SecretRef": schema_pkg_apis_application_v1alpha1_SecretRef(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SignatureKey": schema_pkg_apis_application_v1alpha1_SignatureKey(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SourceHydrator": schema_pkg_apis_application_v1alpha1_SourceHydrator(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SourceHydratorStatus": schema_pkg_apis_application_v1alpha1_SourceHydratorStatus(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncOperation": schema_pkg_apis_application_v1alpha1_SyncOperation(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncOperationResource": schema_pkg_apis_application_v1alpha1_SyncOperationResource(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncOperationResult": schema_pkg_apis_application_v1alpha1_SyncOperationResult(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncPolicy": schema_pkg_apis_application_v1alpha1_SyncPolicy(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncPolicyAutomated": schema_pkg_apis_application_v1alpha1_SyncPolicyAutomated(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncSource": schema_pkg_apis_application_v1alpha1_SyncSource(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncStatus": schema_pkg_apis_application_v1alpha1_SyncStatus(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncStrategy": schema_pkg_apis_application_v1alpha1_SyncStrategy(ref),
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncStrategyApply": schema_pkg_apis_application_v1alpha1_SyncStrategyApply(ref),
@@ -2156,12 +2161,18 @@ func schema_pkg_apis_application_v1alpha1_ApplicationSpec(ref common.ReferenceCa
},
},
},
"sourceHydrator": {
SchemaProps: spec.SchemaProps{
Description: "SourceHydrator provides a way to push hydrated manifests back to git before syncing them to the cluster.",
Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SourceHydrator"),
},
},
},
Required: []string{"destination", "project"},
},
},
Dependencies: []string{
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationDestination", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSource", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Info", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ResourceIgnoreDifferences", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncPolicy"},
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationDestination", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSource", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Info", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ResourceIgnoreDifferences", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SourceHydrator", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncPolicy"},
}
}
@@ -2289,11 +2300,18 @@ func schema_pkg_apis_application_v1alpha1_ApplicationStatus(ref common.Reference
Format: "",
},
},
"sourceHydrator": {
SchemaProps: spec.SchemaProps{
Description: "SourceHydrator stores information about the current state of source hydration",
Default: map[string]interface{}{},
Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SourceHydratorStatus"),
},
},
},
},
},
Dependencies: []string{
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationCondition", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSummary", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HealthStatus", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.OperationState", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ResourceStatus", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.RevisionHistory", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.Time"},
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationCondition", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ApplicationSummary", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HealthStatus", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.OperationState", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ResourceStatus", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.RevisionHistory", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SourceHydratorStatus", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.Time"},
}
}
@@ -3128,6 +3146,41 @@ func schema_pkg_apis_application_v1alpha1_ConnectionState(ref common.ReferenceCa
}
}
func schema_pkg_apis_application_v1alpha1_DrySource(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "DrySource specifies a location for dry \"don't repeat yourself\" manifest source information.",
Type: []string{"object"},
Properties: map[string]spec.Schema{
"repoURL": {
SchemaProps: spec.SchemaProps{
Default: "",
Type: []string{"string"},
Format: "",
},
},
"targetRevision": {
SchemaProps: spec.SchemaProps{
Default: "",
Type: []string{"string"},
Format: "",
},
},
"path": {
SchemaProps: spec.SchemaProps{
Default: "",
Type: []string{"string"},
Format: "",
},
},
},
Required: []string{"repoURL", "targetRevision", "path"},
},
},
}
}
func schema_pkg_apis_application_v1alpha1_DuckTypeGenerator(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
@@ -3740,6 +3793,27 @@ func schema_pkg_apis_application_v1alpha1_HostResourceInfo(ref common.ReferenceC
}
}
func schema_pkg_apis_application_v1alpha1_HydrateTo(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "HydrateTo specifies a location to which hydrated manifests should be pushed as a \"staging area\" before being moved to the SyncSource. The RepoURL and Path are assumed based on the associated SyncSource config in the SourceHydrator.",
Type: []string{"object"},
Properties: map[string]spec.Schema{
"targetRevision": {
SchemaProps: spec.SchemaProps{
Default: "",
Type: []string{"string"},
Format: "",
},
},
},
Required: []string{"targetRevision"},
},
},
}
}
func schema_pkg_apis_application_v1alpha1_Info(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
@@ -7367,6 +7441,70 @@ func schema_pkg_apis_application_v1alpha1_SignatureKey(ref common.ReferenceCallb
}
}
func schema_pkg_apis_application_v1alpha1_SourceHydrator(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "SourceHydrator specifies a dry \"don't repeat yourself\" source for manifests, a sync source from which to sync hydrated manifests, and an optional hydrateTo location to act as a \"staging\" aread for hydrated manifests.",
Type: []string{"object"},
Properties: map[string]spec.Schema{
"drySource": {
SchemaProps: spec.SchemaProps{
Description: "DrySource specifies where the dry \"don't repeat yourself\" manifest source lives.",
Default: map[string]interface{}{},
Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.DrySource"),
},
},
"syncSource": {
SchemaProps: spec.SchemaProps{
Description: "SyncSource specifies where to sync hydrated manifests from.",
Default: map[string]interface{}{},
Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncSource"),
},
},
"hydrateTo": {
SchemaProps: spec.SchemaProps{
Description: "HydrateTo specifies an optional \"staging\" location to push hydrated manifests to. An external system would then have to move manifests to the SyncSource, e.g. by pull request.",
Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HydrateTo"),
},
},
},
Required: []string{"drySource", "syncSource"},
},
},
Dependencies: []string{
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.DrySource", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HydrateTo", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncSource"},
}
}
func schema_pkg_apis_application_v1alpha1_SourceHydratorStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Type: []string{"object"},
Properties: map[string]spec.Schema{
"drySource": {
SchemaProps: spec.SchemaProps{
Description: "DrySource holds the dry source configuration as of the most recent reconciliation",
Default: map[string]interface{}{},
Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.DrySource"),
},
},
"revision": {
SchemaProps: spec.SchemaProps{
Description: "Revision holds the resolved revision (sha) of the dry source as of the most recent reconciliation",
Type: []string{"string"},
Format: "",
},
},
},
},
},
Dependencies: []string{
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.DrySource"},
}
}
func schema_pkg_apis_application_v1alpha1_SyncOperation(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
@@ -7689,6 +7827,34 @@ func schema_pkg_apis_application_v1alpha1_SyncPolicyAutomated(ref common.Referen
}
}
func schema_pkg_apis_application_v1alpha1_SyncSource(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "SyncSource specifies a location from which hydrated manifests may be synced. RepoURL is assumed based on the associated DrySource config in the SourceHydrator.",
Type: []string{"object"},
Properties: map[string]spec.Schema{
"targetRevision": {
SchemaProps: spec.SchemaProps{
Default: "",
Type: []string{"string"},
Format: "",
},
},
"path": {
SchemaProps: spec.SchemaProps{
Default: "",
Type: []string{"string"},
Format: "",
},
},
},
Required: []string{"targetRevision", "path"},
},
},
}
}
func schema_pkg_apis_application_v1alpha1_SyncStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{

View File

@@ -83,6 +83,9 @@ type ApplicationSpec struct {
// Sources is a reference to the location of the application's manifests or chart
Sources ApplicationSources `json:"sources,omitempty" protobuf:"bytes,8,opt,name=sources"`
// SourceHydrator provides a way to push hydrated manifests back to git before syncing them to the cluster.
SourceHydrator *SourceHydrator `json:"sourceHydrator,omitempty" protobuf:"bytes,9,opt,name=sourceHydrator"`
}
type IgnoreDifferences []ResourceIgnoreDifferences
@@ -210,6 +213,9 @@ func (a *ApplicationSpec) GetSource() ApplicationSource {
if a.HasMultipleSources() {
return a.Sources[0]
}
if a.SourceHydrator != nil {
return a.SourceHydrator.GetApplicationSource()
}
if a.Source != nil {
return *a.Source
}
@@ -220,6 +226,9 @@ func (a *ApplicationSpec) GetSources() ApplicationSources {
if a.HasMultipleSources() {
return a.Sources
}
if a.SourceHydrator != nil {
return ApplicationSources{a.SourceHydrator.GetApplicationSource()}
}
if a.Source != nil {
return ApplicationSources{*a.Source}
}
@@ -227,7 +236,7 @@ func (a *ApplicationSpec) GetSources() ApplicationSources {
}
func (a *ApplicationSpec) HasMultipleSources() bool {
return a.Sources != nil && len(a.Sources) > 0
return a.SourceHydrator == nil && a.Sources != nil && len(a.Sources) > 0
}
func (a *ApplicationSpec) GetSourcePtr(index int) *ApplicationSource {
@@ -238,6 +247,10 @@ func (a *ApplicationSpec) GetSourcePtr(index int) *ApplicationSource {
}
return &a.Sources[0]
}
if a.SourceHydrator != nil {
source := a.SourceHydrator.GetApplicationSource()
return &source
}
return a.Source
}
@@ -286,6 +299,48 @@ const (
ApplicationSourceTypePlugin ApplicationSourceType = "Plugin"
)
// SourceHydrator specifies a dry "don't repeat yourself" source for manifests, a sync source from which to sync
// hydrated manifests, and an optional hydrateTo location to act as a "staging" aread for hydrated manifests.
type SourceHydrator struct {
// DrySource specifies where the dry "don't repeat yourself" manifest source lives.
DrySource DrySource `json:"drySource" protobuf:"bytes,1,name=drySource"`
// SyncSource specifies where to sync hydrated manifests from.
SyncSource SyncSource `json:"syncSource" protobuf:"bytes,2,name=syncSource"`
// HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then
// have to move manifests to the SyncSource, e.g. by pull request.
HydrateTo *HydrateTo `json:"hydrateTo,omitempty" protobuf:"bytes,3,opt,name=hydrateTo"`
}
// GetApplicationSource gets the source from which we should sync when a source hydrator is configured.
func (s SourceHydrator) GetApplicationSource() ApplicationSource {
return ApplicationSource{
// Pull the RepoURL from the dry source. The SyncSource's RepoURL is assumed to be the same.
RepoURL: s.DrySource.RepoURL,
Path: s.SyncSource.Path,
TargetRevision: s.SyncSource.TargetRevision,
}
}
// DrySource specifies a location for dry "don't repeat yourself" manifest source information.
type DrySource struct {
RepoURL string `json:"repoURL" protobuf:"bytes,1,name=repoURL"`
TargetRevision string `json:"targetRevision" protobuf:"bytes,2,name=targetRevision"`
Path string `json:"path" protobuf:"bytes,3,name=path"`
}
// SyncSource specifies a location from which hydrated manifests may be synced. RepoURL is assumed based on the
// associated DrySource config in the SourceHydrator.
type SyncSource struct {
TargetRevision string `json:"targetRevision" protobuf:"bytes,1,name=targetRevision"`
Path string `json:"path" protobuf:"bytes,2,name=path"`
}
// HydrateTo specifies a location to which hydrated manifests should be pushed as a "staging area" before being moved to
// the SyncSource. The RepoURL and Path are assumed based on the associated SyncSource config in the SourceHydrator.
type HydrateTo struct {
TargetRevision string `json:"targetRevision" protobuf:"bytes,1,name=targetRevision"`
}
// RefreshType specifies how to refresh the sources of a given application
type RefreshType string
@@ -958,6 +1013,15 @@ type ApplicationStatus struct {
SourceTypes []ApplicationSourceType `json:"sourceTypes,omitempty" protobuf:"bytes,12,opt,name=sourceTypes"`
// ControllerNamespace indicates the namespace in which the application controller is located
ControllerNamespace string `json:"controllerNamespace,omitempty" protobuf:"bytes,13,opt,name=controllerNamespace"`
// SourceHydrator stores information about the current state of source hydration
SourceHydrator SourceHydratorStatus `json:"sourceHydrator,omitempty" protobuf:"bytes,14,opt,name=sourceHydrator"`
}
type SourceHydratorStatus struct {
// DrySource holds the dry source configuration as of the most recent reconciliation
DrySource DrySource `json:"drySource,omitempty" protobuf:"bytes,1,opt,name=drySource"`
// Revision holds the resolved revision (sha) of the dry source as of the most recent reconciliation
Revision string `json:"revision,omitempty" protobuf:"bytes,2,opt,name=revision"`
}
// GetRevisions will return the current revision associated with the Application.

View File

@@ -1273,6 +1273,11 @@ func (in *ApplicationSpec) DeepCopyInto(out *ApplicationSpec) {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
if in.SourceHydrator != nil {
in, out := &in.SourceHydrator, &out.SourceHydrator
*out = new(SourceHydrator)
(*in).DeepCopyInto(*out)
}
return
}
@@ -1331,6 +1336,7 @@ func (in *ApplicationStatus) DeepCopyInto(out *ApplicationStatus) {
*out = make([]ApplicationSourceType, len(*in))
copy(*out, *in)
}
out.SourceHydrator = in.SourceHydrator
return
}
@@ -1790,6 +1796,22 @@ func (in *ConnectionState) DeepCopy() *ConnectionState {
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DrySource) DeepCopyInto(out *DrySource) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DrySource.
func (in *DrySource) DeepCopy() *DrySource {
if in == nil {
return nil
}
out := new(DrySource)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DuckTypeGenerator) DeepCopyInto(out *DuckTypeGenerator) {
*out = *in
@@ -2122,6 +2144,22 @@ func (in *HostResourceInfo) DeepCopy() *HostResourceInfo {
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *HydrateTo) DeepCopyInto(out *HydrateTo) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HydrateTo.
func (in *HydrateTo) DeepCopy() *HydrateTo {
if in == nil {
return nil
}
out := new(HydrateTo)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in IgnoreDifferences) DeepCopyInto(out *IgnoreDifferences) {
{
@@ -4043,6 +4081,46 @@ func (in *SignatureKey) DeepCopy() *SignatureKey {
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SourceHydrator) DeepCopyInto(out *SourceHydrator) {
*out = *in
out.DrySource = in.DrySource
out.SyncSource = in.SyncSource
if in.HydrateTo != nil {
in, out := &in.HydrateTo, &out.HydrateTo
*out = new(HydrateTo)
**out = **in
}
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SourceHydrator.
func (in *SourceHydrator) DeepCopy() *SourceHydrator {
if in == nil {
return nil
}
out := new(SourceHydrator)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SourceHydratorStatus) DeepCopyInto(out *SourceHydratorStatus) {
*out = *in
out.DrySource = in.DrySource
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SourceHydratorStatus.
func (in *SourceHydratorStatus) DeepCopy() *SourceHydratorStatus {
if in == nil {
return nil
}
out := new(SourceHydratorStatus)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SyncOperation) DeepCopyInto(out *SyncOperation) {
*out = *in
@@ -4229,6 +4307,22 @@ func (in *SyncPolicyAutomated) DeepCopy() *SyncPolicyAutomated {
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SyncSource) DeepCopyInto(out *SyncSource) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncSource.
func (in *SyncSource) DeepCopy() *SyncSource {
if in == nil {
return nil
}
out := new(SyncSource)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SyncStatus) DeepCopyInto(out *SyncStatus) {
*out = *in

View File

@@ -2340,6 +2340,116 @@ func (m *UpdateRevisionForPathsResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_UpdateRevisionForPathsResponse proto.InternalMessageInfo
type HasDrySourceChangedRequest struct {
Repo *v1alpha1.Repository `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
ApplicationSource *v1alpha1.ApplicationSource `protobuf:"bytes,2,opt,name=applicationSource,proto3" json:"applicationSource,omitempty"`
SyncedRevision string `protobuf:"bytes,3,opt,name=syncedRevision,proto3" json:"syncedRevision,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *HasDrySourceChangedRequest) Reset() { *m = HasDrySourceChangedRequest{} }
func (m *HasDrySourceChangedRequest) String() string { return proto.CompactTextString(m) }
func (*HasDrySourceChangedRequest) ProtoMessage() {}
func (*HasDrySourceChangedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_dd8723cfcc820480, []int{33}
}
func (m *HasDrySourceChangedRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *HasDrySourceChangedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_HasDrySourceChangedRequest.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 *HasDrySourceChangedRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_HasDrySourceChangedRequest.Merge(m, src)
}
func (m *HasDrySourceChangedRequest) XXX_Size() int {
return m.Size()
}
func (m *HasDrySourceChangedRequest) XXX_DiscardUnknown() {
xxx_messageInfo_HasDrySourceChangedRequest.DiscardUnknown(m)
}
var xxx_messageInfo_HasDrySourceChangedRequest proto.InternalMessageInfo
func (m *HasDrySourceChangedRequest) GetRepo() *v1alpha1.Repository {
if m != nil {
return m.Repo
}
return nil
}
func (m *HasDrySourceChangedRequest) GetApplicationSource() *v1alpha1.ApplicationSource {
if m != nil {
return m.ApplicationSource
}
return nil
}
func (m *HasDrySourceChangedRequest) GetSyncedRevision() string {
if m != nil {
return m.SyncedRevision
}
return ""
}
type HasDrySourceChangedResponse struct {
HasChanged bool `protobuf:"varint,1,opt,name=hasChanged,proto3" json:"hasChanged,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *HasDrySourceChangedResponse) Reset() { *m = HasDrySourceChangedResponse{} }
func (m *HasDrySourceChangedResponse) String() string { return proto.CompactTextString(m) }
func (*HasDrySourceChangedResponse) ProtoMessage() {}
func (*HasDrySourceChangedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_dd8723cfcc820480, []int{34}
}
func (m *HasDrySourceChangedResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *HasDrySourceChangedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_HasDrySourceChangedResponse.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 *HasDrySourceChangedResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_HasDrySourceChangedResponse.Merge(m, src)
}
func (m *HasDrySourceChangedResponse) XXX_Size() int {
return m.Size()
}
func (m *HasDrySourceChangedResponse) XXX_DiscardUnknown() {
xxx_messageInfo_HasDrySourceChangedResponse.DiscardUnknown(m)
}
var xxx_messageInfo_HasDrySourceChangedResponse proto.InternalMessageInfo
func (m *HasDrySourceChangedResponse) GetHasChanged() bool {
if m != nil {
return m.HasChanged
}
return false
}
func init() {
proto.RegisterType((*ManifestRequest)(nil), "repository.ManifestRequest")
proto.RegisterMapType((map[string]bool)(nil), "repository.ManifestRequest.EnabledSourceTypesEntry")
@@ -2383,6 +2493,8 @@ func init() {
proto.RegisterType((*UpdateRevisionForPathsRequest)(nil), "repository.UpdateRevisionForPathsRequest")
proto.RegisterMapType((map[string]*v1alpha1.RefTarget)(nil), "repository.UpdateRevisionForPathsRequest.RefSourcesEntry")
proto.RegisterType((*UpdateRevisionForPathsResponse)(nil), "repository.UpdateRevisionForPathsResponse")
proto.RegisterType((*HasDrySourceChangedRequest)(nil), "repository.HasDrySourceChangedRequest")
proto.RegisterType((*HasDrySourceChangedResponse)(nil), "repository.HasDrySourceChangedResponse")
}
func init() {
@@ -2390,149 +2502,154 @@ func init() {
}
var fileDescriptor_dd8723cfcc820480 = []byte{
// 2265 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x1a, 0x5d, 0x6f, 0x1b, 0xc7,
0x51, 0x47, 0x52, 0x14, 0x39, 0x94, 0x25, 0x6a, 0x63, 0xcb, 0x67, 0xc6, 0x16, 0x94, 0x6b, 0x6d,
0x38, 0x76, 0x42, 0xc2, 0x32, 0x12, 0xb7, 0x4e, 0x9a, 0x42, 0x71, 0x6c, 0xc9, 0xb1, 0x65, 0xab,
0x67, 0xa7, 0x85, 0x5b, 0xb7, 0xc5, 0xf2, 0xb8, 0x24, 0x2f, 0x3c, 0xde, 0xad, 0xef, 0xf6, 0x14,
0xd0, 0x40, 0x1f, 0x8a, 0x16, 0xfd, 0x09, 0x7d, 0xe8, 0xaf, 0x28, 0x50, 0x14, 0x7d, 0xec, 0x43,
0xd1, 0x8f, 0xc7, 0xa2, 0x7f, 0xa0, 0x85, 0x5f, 0x0a, 0xf4, 0x57, 0x14, 0xfb, 0x71, 0x9f, 0x3c,
0xd2, 0x4a, 0x69, 0x2b, 0x6d, 0x5f, 0xa4, 0xdb, 0xd9, 0xd9, 0x99, 0xd9, 0xd9, 0xf9, 0xdc, 0x25,
0x5c, 0xf2, 0x09, 0xf5, 0x02, 0xe2, 0x1f, 0x11, 0xbf, 0x23, 0x3e, 0x6d, 0xe6, 0xf9, 0x93, 0xd4,
0x67, 0x9b, 0xfa, 0x1e, 0xf3, 0x10, 0x24, 0x90, 0xd6, 0xfd, 0x81, 0xcd, 0x86, 0x61, 0xb7, 0x6d,
0x79, 0xe3, 0x0e, 0xf6, 0x07, 0x1e, 0xf5, 0xbd, 0xcf, 0xc5, 0xc7, 0xbb, 0x56, 0xaf, 0x73, 0xb4,
0xd3, 0xa1, 0xa3, 0x41, 0x07, 0x53, 0x3b, 0xe8, 0x60, 0x4a, 0x1d, 0xdb, 0xc2, 0xcc, 0xf6, 0xdc,
0xce, 0xd1, 0x35, 0xec, 0xd0, 0x21, 0xbe, 0xd6, 0x19, 0x10, 0x97, 0xf8, 0x98, 0x91, 0x9e, 0xa4,
0xdc, 0x7a, 0x73, 0xe0, 0x79, 0x03, 0x87, 0x74, 0xc4, 0xa8, 0x1b, 0xf6, 0x3b, 0x64, 0x4c, 0x99,
0x62, 0x6b, 0xfc, 0x6b, 0x15, 0xd6, 0x0f, 0xb0, 0x6b, 0xf7, 0x49, 0xc0, 0x4c, 0xf2, 0x2c, 0x24,
0x01, 0x43, 0x4f, 0xa1, 0xc2, 0x85, 0xd1, 0xb5, 0x6d, 0xed, 0x72, 0x63, 0x67, 0xbf, 0x9d, 0x48,
0xd3, 0x8e, 0xa4, 0x11, 0x1f, 0x3f, 0xb6, 0x7a, 0xed, 0xa3, 0x9d, 0x36, 0x1d, 0x0d, 0xda, 0x5c,
0x9a, 0x76, 0x4a, 0x9a, 0x76, 0x24, 0x4d, 0xdb, 0x8c, 0xb7, 0x65, 0x0a, 0xaa, 0xa8, 0x05, 0x35,
0x9f, 0x1c, 0xd9, 0x81, 0xed, 0xb9, 0x7a, 0x69, 0x5b, 0xbb, 0x5c, 0x37, 0xe3, 0x31, 0xd2, 0x61,
0xc5, 0xf5, 0x6e, 0x61, 0x6b, 0x48, 0xf4, 0xf2, 0xb6, 0x76, 0xb9, 0x66, 0x46, 0x43, 0xb4, 0x0d,
0x0d, 0x4c, 0xe9, 0x7d, 0xdc, 0x25, 0xce, 0x3d, 0x32, 0xd1, 0x2b, 0x62, 0x61, 0x1a, 0xc4, 0xd7,
0x62, 0x4a, 0x1f, 0xe0, 0x31, 0xd1, 0x97, 0xc5, 0x6c, 0x34, 0x44, 0xe7, 0xa1, 0xee, 0xe2, 0x31,
0x09, 0x28, 0xb6, 0x88, 0x5e, 0x13, 0x73, 0x09, 0x00, 0xfd, 0x04, 0x36, 0x52, 0x82, 0x3f, 0xf2,
0x42, 0xdf, 0x22, 0x3a, 0x88, 0xad, 0x3f, 0x5c, 0x6c, 0xeb, 0xbb, 0x79, 0xb2, 0xe6, 0x34, 0x27,
0xf4, 0x23, 0x58, 0x16, 0x27, 0xaf, 0x37, 0xb6, 0xcb, 0xaf, 0x54, 0xdb, 0x92, 0x2c, 0x72, 0x61,
0x85, 0x3a, 0xe1, 0xc0, 0x76, 0x03, 0x7d, 0x55, 0x70, 0x78, 0xbc, 0x18, 0x87, 0x5b, 0x9e, 0xdb,
0xb7, 0x07, 0x07, 0xd8, 0xc5, 0x03, 0x32, 0x26, 0x2e, 0x3b, 0x14, 0xc4, 0xcd, 0x88, 0x09, 0x7a,
0x0e, 0xcd, 0x51, 0x18, 0x30, 0x6f, 0x6c, 0x3f, 0x27, 0x0f, 0x29, 0x5f, 0x1b, 0xe8, 0xa7, 0x84,
0x36, 0x1f, 0x2c, 0xc6, 0xf8, 0x5e, 0x8e, 0xaa, 0x39, 0xc5, 0x87, 0x1b, 0xc9, 0x28, 0xec, 0x92,
0xef, 0x12, 0x5f, 0x58, 0xd7, 0x9a, 0x34, 0x92, 0x14, 0x48, 0x9a, 0x91, 0xad, 0x46, 0x81, 0xbe,
0xbe, 0x5d, 0x96, 0x66, 0x14, 0x83, 0xd0, 0x65, 0x58, 0x3f, 0x22, 0xbe, 0xdd, 0x9f, 0x3c, 0xb2,
0x07, 0x2e, 0x66, 0xa1, 0x4f, 0xf4, 0xa6, 0x30, 0xc5, 0x3c, 0x18, 0x8d, 0xe1, 0xd4, 0x90, 0x38,
0x63, 0xae, 0xf2, 0x5b, 0x3e, 0xe9, 0x05, 0xfa, 0x86, 0xd0, 0xef, 0xde, 0xe2, 0x27, 0x28, 0xc8,
0x99, 0x59, 0xea, 0x5c, 0x30, 0xd7, 0x33, 0x95, 0xa7, 0x48, 0x1f, 0x41, 0x52, 0xb0, 0x1c, 0x18,
0x5d, 0x82, 0x35, 0xe6, 0x63, 0x6b, 0x64, 0xbb, 0x83, 0x03, 0xc2, 0x86, 0x5e, 0x4f, 0x7f, 0x43,
0x68, 0x22, 0x07, 0x45, 0x16, 0x20, 0xe2, 0xe2, 0xae, 0x43, 0x7a, 0xd2, 0x16, 0x1f, 0x4f, 0x28,
0x09, 0xf4, 0xd3, 0x62, 0x17, 0xd7, 0xdb, 0xa9, 0x08, 0x95, 0x0b, 0x10, 0xed, 0xdb, 0x53, 0xab,
0x6e, 0xbb, 0xcc, 0x9f, 0x98, 0x05, 0xe4, 0xd0, 0x08, 0x1a, 0x7c, 0x1f, 0x91, 0x29, 0x9c, 0x11,
0xa6, 0x70, 0x77, 0x31, 0x1d, 0xed, 0x27, 0x04, 0xcd, 0x34, 0x75, 0xd4, 0x06, 0x34, 0xc4, 0xc1,
0x41, 0xe8, 0x30, 0x9b, 0x3a, 0x44, 0x8a, 0x11, 0xe8, 0x9b, 0x42, 0x4d, 0x05, 0x33, 0xe8, 0x1e,
0x80, 0x4f, 0xfa, 0x11, 0xde, 0x59, 0xb1, 0xf3, 0xab, 0xf3, 0x76, 0x6e, 0xc6, 0xd8, 0x72, 0xc7,
0xa9, 0xe5, 0x9c, 0x39, 0xdf, 0x06, 0xb1, 0x98, 0xf2, 0x76, 0xe1, 0xd6, 0xba, 0x30, 0xb1, 0x82,
0x19, 0x6e, 0x8b, 0x0a, 0x2a, 0x82, 0xd6, 0x39, 0x69, 0xad, 0x29, 0x50, 0xeb, 0x36, 0x9c, 0x9d,
0xa1, 0x6a, 0xd4, 0x84, 0xf2, 0x88, 0x4c, 0x44, 0x88, 0xae, 0x9b, 0xfc, 0x13, 0x9d, 0x86, 0xe5,
0x23, 0xec, 0x84, 0x44, 0x04, 0xd5, 0x9a, 0x29, 0x07, 0x37, 0x4b, 0xdf, 0xd0, 0x5a, 0xbf, 0xd0,
0x60, 0x3d, 0x27, 0x78, 0xc1, 0xfa, 0x1f, 0xa6, 0xd7, 0xbf, 0x02, 0x33, 0xee, 0x3f, 0xc6, 0xfe,
0x80, 0xb0, 0x94, 0x20, 0xc6, 0xdf, 0x34, 0xd0, 0x73, 0x1a, 0xfd, 0x9e, 0xcd, 0x86, 0x77, 0x6c,
0x87, 0x04, 0xe8, 0x06, 0xac, 0xf8, 0x12, 0xa6, 0x12, 0xcf, 0x9b, 0x73, 0x0e, 0x62, 0x7f, 0xc9,
0x8c, 0xb0, 0xd1, 0x47, 0x50, 0x1b, 0x13, 0x86, 0x7b, 0x98, 0x61, 0x25, 0xfb, 0x76, 0xd1, 0x4a,
0xce, 0xe5, 0x40, 0xe1, 0xed, 0x2f, 0x99, 0xf1, 0x1a, 0xf4, 0x1e, 0x2c, 0x5b, 0xc3, 0xd0, 0x1d,
0x89, 0x94, 0xd3, 0xd8, 0xb9, 0x30, 0x6b, 0xf1, 0x2d, 0x8e, 0xb4, 0xbf, 0x64, 0x4a, 0xec, 0x8f,
0xab, 0x50, 0xa1, 0xd8, 0x67, 0xc6, 0x1d, 0x38, 0x5d, 0xc4, 0x82, 0xe7, 0x39, 0x6b, 0x48, 0xac,
0x51, 0x10, 0x8e, 0x95, 0x9a, 0xe3, 0x31, 0x42, 0x50, 0x09, 0xec, 0xe7, 0x52, 0xd5, 0x65, 0x53,
0x7c, 0x1b, 0x6f, 0xc3, 0xc6, 0x14, 0x37, 0x7e, 0xa8, 0x52, 0x36, 0x4e, 0x61, 0x55, 0xb1, 0x36,
0x42, 0x38, 0xf3, 0x58, 0xe8, 0x22, 0x0e, 0xf6, 0x27, 0x91, 0xb9, 0x8d, 0x7d, 0xd8, 0xcc, 0xb3,
0x0d, 0xa8, 0xe7, 0x06, 0x84, 0x9b, 0xbe, 0x88, 0x8e, 0x36, 0xe9, 0x25, 0xb3, 0x42, 0x8a, 0x9a,
0x59, 0x30, 0x63, 0xfc, 0xb4, 0x04, 0x9b, 0x26, 0x09, 0x3c, 0xe7, 0x88, 0x44, 0xa1, 0xeb, 0x64,
0x8a, 0x8f, 0x1f, 0x40, 0x19, 0x53, 0xaa, 0xcc, 0xe4, 0xee, 0x2b, 0x4b, 0xef, 0x26, 0xa7, 0x8a,
0xde, 0x81, 0x0d, 0x3c, 0xee, 0xda, 0x83, 0xd0, 0x0b, 0x83, 0x68, 0x5b, 0xc2, 0xa8, 0xea, 0xe6,
0xf4, 0x84, 0x61, 0xc1, 0xd9, 0x29, 0x15, 0x28, 0x75, 0xa6, 0x4b, 0x24, 0x2d, 0x57, 0x22, 0x15,
0x32, 0x29, 0xcd, 0x62, 0xf2, 0x27, 0x0d, 0x9a, 0x89, 0xeb, 0x28, 0xf2, 0xe7, 0xa1, 0x3e, 0x56,
0xb0, 0x40, 0xd7, 0x44, 0x7c, 0x4a, 0x00, 0xd9, 0x6a, 0xa9, 0x94, 0xaf, 0x96, 0x36, 0xa1, 0x2a,
0x8b, 0x59, 0xb5, 0x31, 0x35, 0xca, 0x88, 0x5c, 0xc9, 0x89, 0xbc, 0x05, 0x10, 0xc4, 0xf1, 0x4b,
0xaf, 0x8a, 0xd9, 0x14, 0x04, 0x19, 0xb0, 0x2a, 0x73, 0xab, 0x49, 0x82, 0xd0, 0x61, 0xfa, 0x8a,
0xc0, 0xc8, 0xc0, 0x0c, 0x0f, 0xd6, 0xef, 0xdb, 0x7c, 0x0f, 0xfd, 0xe0, 0x64, 0x8c, 0xfd, 0x7d,
0xa8, 0x70, 0x66, 0x7c, 0x63, 0x5d, 0x1f, 0xbb, 0xd6, 0x90, 0x44, 0xba, 0x8a, 0xc7, 0xdc, 0x8d,
0x19, 0x1e, 0x04, 0x7a, 0x49, 0xc0, 0xc5, 0xb7, 0xf1, 0xbb, 0x92, 0x94, 0x74, 0x97, 0xd2, 0xe0,
0xab, 0x2f, 0xa8, 0x8b, 0x53, 0x7c, 0x79, 0x3a, 0xc5, 0xe7, 0x44, 0xfe, 0x32, 0x29, 0xfe, 0x15,
0xa5, 0x29, 0x23, 0x84, 0x95, 0x5d, 0x4a, 0xb9, 0x20, 0xe8, 0x1a, 0x54, 0x30, 0xa5, 0x52, 0xe1,
0xb9, 0x88, 0xac, 0x50, 0xf8, 0x7f, 0x25, 0x92, 0x40, 0x6d, 0xdd, 0x80, 0x7a, 0x0c, 0x7a, 0x19,
0xdb, 0x7a, 0x9a, 0xed, 0x36, 0x80, 0xac, 0x61, 0xef, 0xba, 0x7d, 0x8f, 0x1f, 0x29, 0x37, 0x76,
0xb5, 0x54, 0x7c, 0x1b, 0x37, 0x23, 0x0c, 0x21, 0xdb, 0x3b, 0xb0, 0x6c, 0x33, 0x32, 0x8e, 0x84,
0xdb, 0x4c, 0x0b, 0x97, 0x10, 0x32, 0x25, 0x92, 0xf1, 0xe7, 0x1a, 0x9c, 0xe3, 0x27, 0xf6, 0x48,
0xb8, 0xc9, 0x2e, 0xa5, 0x9f, 0x10, 0x86, 0x6d, 0x27, 0xf8, 0x4e, 0x48, 0xfc, 0xc9, 0x6b, 0x36,
0x8c, 0x01, 0x54, 0xa5, 0x97, 0xa9, 0x78, 0xf7, 0xca, 0xdb, 0x19, 0x45, 0x3e, 0xe9, 0x61, 0xca,
0xaf, 0xa7, 0x87, 0x29, 0xea, 0x29, 0x2a, 0x27, 0xd4, 0x53, 0xcc, 0x6e, 0x2b, 0x53, 0xcd, 0x6a,
0x35, 0xdb, 0xac, 0x16, 0x94, 0xea, 0x2b, 0xc7, 0x2d, 0xd5, 0x6b, 0x85, 0xa5, 0xfa, 0xb8, 0xd0,
0x8f, 0xeb, 0x42, 0xdd, 0xdf, 0x4a, 0x5b, 0xe0, 0x4c, 0x5b, 0x5b, 0xa4, 0x68, 0x87, 0xd7, 0x5a,
0xb4, 0x7f, 0x96, 0x29, 0xc2, 0x65, 0x1b, 0xfc, 0xde, 0xf1, 0xf6, 0x34, 0xa7, 0x1c, 0xff, 0xbf,
0x2b, 0x9e, 0x7f, 0x2e, 0x6a, 0x26, 0xea, 0x25, 0x3a, 0x88, 0x13, 0x3a, 0xcf, 0x43, 0x3c, 0xb5,
0xaa, 0xa0, 0xc5, 0xbf, 0xd1, 0x55, 0xa8, 0x70, 0x25, 0xab, 0xa2, 0xf6, 0x6c, 0x5a, 0x9f, 0xfc,
0x24, 0x76, 0x29, 0x7d, 0x44, 0x89, 0x65, 0x0a, 0x24, 0x74, 0x13, 0xea, 0xb1, 0xe1, 0x2b, 0xcf,
0x3a, 0x9f, 0x5e, 0x11, 0xfb, 0x49, 0xb4, 0x2c, 0x41, 0xe7, 0x6b, 0x7b, 0xb6, 0x4f, 0x2c, 0x51,
0xf2, 0x2d, 0x4f, 0xaf, 0xfd, 0x24, 0x9a, 0x8c, 0xd7, 0xc6, 0xe8, 0xe8, 0x1a, 0x54, 0xe5, 0xbd,
0x81, 0xf0, 0xa0, 0xc6, 0xce, 0xb9, 0xe9, 0x60, 0x1a, 0xad, 0x52, 0x88, 0xc6, 0x1f, 0x35, 0x78,
0x2b, 0x31, 0x88, 0xc8, 0x9b, 0xa2, 0xaa, 0xfb, 0xab, 0xcf, 0xb8, 0x97, 0x60, 0x4d, 0x94, 0xf9,
0xc9, 0xf5, 0x81, 0xbc, 0xc9, 0xca, 0x41, 0x8d, 0xdf, 0x6a, 0x70, 0x71, 0x7a, 0x1f, 0xb7, 0x86,
0xd8, 0x67, 0xf1, 0xf1, 0x9e, 0xc4, 0x5e, 0xa2, 0x84, 0x57, 0x4a, 0x12, 0x5e, 0x66, 0x7f, 0xe5,
0xec, 0xfe, 0x8c, 0xdf, 0x97, 0xa0, 0x91, 0x32, 0xa0, 0xa2, 0x84, 0xc9, 0x0b, 0x3e, 0x61, 0xb7,
0xa2, 0xb1, 0x13, 0x49, 0xa1, 0x6e, 0xa6, 0x20, 0x68, 0x04, 0x40, 0xb1, 0x8f, 0xc7, 0x84, 0x11,
0x9f, 0x47, 0x72, 0xee, 0xf1, 0xf7, 0x16, 0x8f, 0x2e, 0x87, 0x11, 0x4d, 0x33, 0x45, 0x9e, 0x57,
0xac, 0x82, 0x75, 0xa0, 0xe2, 0xb7, 0x1a, 0xa1, 0x2f, 0x60, 0xad, 0x6f, 0x3b, 0xe4, 0x30, 0x11,
0xa4, 0x2a, 0x04, 0x79, 0xb8, 0xb8, 0x20, 0x77, 0xd2, 0x74, 0xcd, 0x1c, 0x1b, 0xe3, 0x0a, 0x34,
0xf3, 0xfe, 0xc4, 0x85, 0xb4, 0xc7, 0x78, 0x10, 0x6b, 0x4b, 0x8d, 0x0c, 0x04, 0xcd, 0xbc, 0xff,
0x18, 0x7f, 0x2f, 0xc1, 0x99, 0x98, 0xdc, 0xae, 0xeb, 0x7a, 0xa1, 0x6b, 0x89, 0xab, 0xb8, 0xc2,
0xb3, 0x38, 0x0d, 0xcb, 0xcc, 0x66, 0x4e, 0x5c, 0xf8, 0x88, 0x01, 0xcf, 0x5d, 0xcc, 0xf3, 0x1c,
0x66, 0x53, 0x75, 0xc0, 0xd1, 0x50, 0x9e, 0xfd, 0xb3, 0xd0, 0xf6, 0x49, 0x4f, 0x44, 0x82, 0x9a,
0x19, 0x8f, 0xf9, 0x1c, 0xaf, 0x6a, 0x44, 0x19, 0x2f, 0x95, 0x19, 0x8f, 0x85, 0xdd, 0x7b, 0x8e,
0x43, 0x2c, 0xae, 0x8e, 0x54, 0xa1, 0x9f, 0x83, 0x8a, 0x06, 0x82, 0xf9, 0xb6, 0x3b, 0x50, 0x65,
0xbe, 0x1a, 0x71, 0x39, 0xb1, 0xef, 0xe3, 0x89, 0x5e, 0x13, 0x0a, 0x90, 0x03, 0xf4, 0x21, 0x94,
0xc7, 0x98, 0xaa, 0x44, 0x77, 0x25, 0x13, 0x1d, 0x8a, 0x34, 0xd0, 0x3e, 0xc0, 0x54, 0x66, 0x02,
0xbe, 0xac, 0xf5, 0x3e, 0xd4, 0x22, 0xc0, 0x97, 0x2a, 0x09, 0x3f, 0x87, 0x53, 0x99, 0xe0, 0x83,
0x9e, 0xc0, 0x66, 0x62, 0x51, 0x69, 0x86, 0xaa, 0x08, 0x7c, 0xeb, 0xa5, 0x92, 0x99, 0x33, 0x08,
0x18, 0xcf, 0x60, 0x83, 0x9b, 0x8c, 0x70, 0xfc, 0x13, 0x6a, 0x6d, 0x3e, 0x80, 0x7a, 0xcc, 0xb2,
0xd0, 0x66, 0x5a, 0x50, 0x3b, 0x8a, 0xae, 0x48, 0x65, 0x6f, 0x13, 0x8f, 0x8d, 0x5d, 0x40, 0x69,
0x79, 0x55, 0x06, 0xba, 0x9a, 0x2d, 0x8a, 0xcf, 0xe4, 0xd3, 0x8d, 0x40, 0x8f, 0x6a, 0xe2, 0xdf,
0x94, 0x60, 0x7d, 0xcf, 0x16, 0xb7, 0x1c, 0x27, 0x14, 0xe4, 0xae, 0x40, 0x33, 0x08, 0xbb, 0x63,
0xaf, 0x17, 0x3a, 0x44, 0x15, 0x05, 0x2a, 0xd3, 0x4f, 0xc1, 0xe7, 0x05, 0x3f, 0xae, 0x2c, 0x8a,
0xd9, 0x50, 0x75, 0xb8, 0xe2, 0x1b, 0x7d, 0x08, 0xe7, 0x1e, 0x90, 0x2f, 0xd4, 0x7e, 0xf6, 0x1c,
0xaf, 0xdb, 0xb5, 0xdd, 0x41, 0xc4, 0x64, 0x59, 0x30, 0x99, 0x8d, 0x50, 0x54, 0x2a, 0x56, 0x0b,
0x4b, 0x45, 0xe3, 0x67, 0x1a, 0x34, 0x13, 0xad, 0x29, 0xbd, 0xdf, 0x90, 0xfe, 0x21, 0xb5, 0x7e,
0x31, 0xad, 0xf5, 0x3c, 0xea, 0x7f, 0xee, 0x1a, 0xab, 0x69, 0xd7, 0xf8, 0xa7, 0x06, 0x67, 0xf6,
0x6c, 0x16, 0x05, 0x25, 0xfb, 0x7f, 0xed, 0x04, 0x0b, 0xf4, 0x5d, 0x29, 0xd6, 0x77, 0x1b, 0x36,
0xf3, 0x1b, 0x55, 0x4a, 0x3f, 0x0d, 0xcb, 0xfc, 0xe4, 0xa3, 0xfb, 0x00, 0x39, 0x30, 0x7e, 0x5d,
0x85, 0x0b, 0x9f, 0xd1, 0x1e, 0x66, 0xf1, 0x7d, 0xce, 0x1d, 0xcf, 0x3f, 0xe4, 0x53, 0x27, 0xa3,
0xa1, 0xdc, 0x0b, 0x59, 0x69, 0xee, 0x0b, 0x59, 0x79, 0xce, 0x0b, 0x59, 0xe5, 0x58, 0x2f, 0x64,
0xcb, 0x27, 0xf6, 0x42, 0x36, 0xdd, 0x23, 0x55, 0x0b, 0x7b, 0xa4, 0x27, 0x99, 0x3e, 0x62, 0x45,
0xb8, 0xc4, 0x37, 0xd3, 0x2e, 0x31, 0xf7, 0x74, 0xe6, 0x5e, 0xed, 0xe7, 0x1e, 0x96, 0x6a, 0x2f,
0x7d, 0x58, 0xaa, 0x4f, 0x3f, 0x2c, 0x15, 0xbf, 0x4d, 0xc0, 0xcc, 0xb7, 0x89, 0x4b, 0xb0, 0x16,
0x4c, 0x5c, 0x8b, 0xf4, 0xe2, 0x5b, 0xbe, 0x86, 0xdc, 0x76, 0x16, 0x9a, 0xb1, 0xf6, 0xd5, 0x9c,
0xb5, 0xc7, 0x96, 0x7a, 0x2a, 0x65, 0xa9, 0xff, 0x3d, 0x2d, 0xcd, 0x36, 0x6c, 0xcd, 0x3a, 0x13,
0xe9, 0x6a, 0x3b, 0x7f, 0x00, 0xd8, 0x48, 0xaa, 0x64, 0xfe, 0xd7, 0xb6, 0x08, 0x7a, 0x08, 0xcd,
0x3d, 0xf5, 0xc8, 0x1d, 0x5d, 0x6e, 0xa2, 0x79, 0xaf, 0x05, 0xad, 0xf3, 0xc5, 0x93, 0x92, 0x89,
0xb1, 0x84, 0x2c, 0x38, 0x97, 0x27, 0x98, 0x3c, 0x4c, 0x7c, 0x7d, 0x0e, 0xe5, 0x18, 0xeb, 0x65,
0x2c, 0x2e, 0x6b, 0xe8, 0x09, 0xac, 0x65, 0xaf, 0xcf, 0x51, 0xa6, 0x6c, 0x28, 0xbc, 0xd1, 0x6f,
0x19, 0xf3, 0x50, 0x62, 0xf9, 0x9f, 0xf2, 0x03, 0xcd, 0xdc, 0x25, 0x23, 0x23, 0xdb, 0x41, 0x17,
0xdd, 0xb5, 0xb7, 0xbe, 0x36, 0x17, 0x27, 0xa6, 0xfe, 0x01, 0xd4, 0xa2, 0xbb, 0xd7, 0xac, 0x9a,
0x73, 0x37, 0xb2, 0xad, 0x66, 0x96, 0x5e, 0x3f, 0x30, 0x96, 0xd0, 0x47, 0x72, 0xf1, 0x2e, 0xa5,
0x05, 0x8b, 0x53, 0x37, 0x8e, 0xad, 0x37, 0x0a, 0x6e, 0xf9, 0x8c, 0x25, 0xf4, 0x6d, 0x68, 0xf0,
0xaf, 0x43, 0xf5, 0xbc, 0xbc, 0xd9, 0x96, 0xbf, 0x66, 0x68, 0x47, 0xbf, 0x66, 0x68, 0xdf, 0x1e,
0x53, 0x36, 0x69, 0x15, 0x5c, 0xc3, 0x29, 0x02, 0x4f, 0xe1, 0xd4, 0x1e, 0x61, 0x49, 0xd7, 0x8c,
0x2e, 0x1e, 0xeb, 0x6e, 0xa1, 0x65, 0xe4, 0xd1, 0xa6, 0x1b, 0x6f, 0x63, 0x09, 0xfd, 0x52, 0x83,
0x37, 0xf6, 0x08, 0xcb, 0xf7, 0xa1, 0xe8, 0xdd, 0x62, 0x26, 0x33, 0xfa, 0xd5, 0xd6, 0x83, 0x45,
0xbd, 0x2b, 0x4b, 0xd6, 0x58, 0x42, 0xbf, 0xd2, 0xe0, 0x6c, 0x4a, 0xb0, 0x74, 0x63, 0x89, 0xae,
0xcd, 0x17, 0xae, 0xa0, 0x09, 0x6d, 0x7d, 0xba, 0xe0, 0xaf, 0x06, 0x52, 0x24, 0x8d, 0x25, 0x74,
0x28, 0xce, 0x24, 0xa9, 0x23, 0xd1, 0x85, 0xc2, 0x82, 0x31, 0xe6, 0xbe, 0x35, 0x6b, 0x3a, 0x3e,
0x87, 0x4f, 0xa1, 0xb1, 0x47, 0x58, 0x54, 0xf4, 0x64, 0x2d, 0x2d, 0x57, 0x6b, 0x66, 0x5d, 0x35,
0x5f, 0x27, 0x09, 0x8b, 0xd9, 0x90, 0xb4, 0x52, 0xc9, 0x3f, 0xeb, 0xab, 0x85, 0x15, 0x50, 0xd6,
0x62, 0x8a, 0x6b, 0x07, 0x63, 0x09, 0x3d, 0x83, 0xcd, 0xe2, 0xa0, 0x87, 0xde, 0x3e, 0x76, 0xb2,
0x6a, 0x5d, 0x39, 0x0e, 0x6a, 0xc4, 0xf2, 0xe3, 0xdd, 0xbf, 0xbc, 0xd8, 0xd2, 0xfe, 0xfa, 0x62,
0x4b, 0xfb, 0xc7, 0x8b, 0x2d, 0xed, 0xfb, 0xd7, 0x5f, 0xf2, 0xeb, 0xa2, 0xd4, 0x0f, 0x96, 0x30,
0xb5, 0x2d, 0xc7, 0x26, 0x2e, 0xeb, 0x56, 0x85, 0xbf, 0x5d, 0xff, 0x77, 0x00, 0x00, 0x00, 0xff,
0xff, 0x0e, 0xc8, 0x27, 0xc7, 0xcf, 0x24, 0x00, 0x00,
// 2338 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x3a, 0x5b, 0x6f, 0x1c, 0x49,
0xd5, 0x9e, 0x8b, 0xc7, 0x33, 0x67, 0x1c, 0x5f, 0x2a, 0x89, 0xd3, 0xe9, 0x24, 0x96, 0xb7, 0xbf,
0x2f, 0x21, 0x9b, 0xec, 0x8e, 0x15, 0x47, 0xbb, 0x81, 0xec, 0x05, 0x79, 0x9d, 0xc4, 0xce, 0x26,
0x4e, 0x4c, 0x27, 0x0b, 0x0a, 0x04, 0x50, 0x4d, 0x4f, 0xb9, 0xa7, 0xd7, 0x3d, 0xdd, 0x95, 0xee,
0x6a, 0xaf, 0x26, 0x12, 0x0f, 0x08, 0xc4, 0x4f, 0xe0, 0x81, 0x37, 0x7e, 0x00, 0x12, 0x12, 0x42,
0x3c, 0xf2, 0xc4, 0xe5, 0x11, 0xf1, 0x07, 0x40, 0x79, 0x41, 0xe2, 0x57, 0xa0, 0xba, 0xf4, 0x75,
0x7a, 0xc6, 0x5e, 0x9c, 0xcc, 0x02, 0x2f, 0x76, 0xd7, 0xa9, 0x53, 0xe7, 0x9c, 0x3a, 0x75, 0x6e,
0x75, 0x6a, 0xe0, 0x4a, 0x40, 0xa8, 0x1f, 0x92, 0xe0, 0x90, 0x04, 0xeb, 0xe2, 0xd3, 0x61, 0x7e,
0x30, 0xcc, 0x7c, 0x76, 0x68, 0xe0, 0x33, 0x1f, 0x41, 0x0a, 0xd1, 0x1f, 0xda, 0x0e, 0xeb, 0x47,
0xdd, 0x8e, 0xe5, 0x0f, 0xd6, 0x71, 0x60, 0xfb, 0x34, 0xf0, 0x3f, 0x17, 0x1f, 0xef, 0x5a, 0xbd,
0xf5, 0xc3, 0x8d, 0x75, 0x7a, 0x60, 0xaf, 0x63, 0xea, 0x84, 0xeb, 0x98, 0x52, 0xd7, 0xb1, 0x30,
0x73, 0x7c, 0x6f, 0xfd, 0xf0, 0x06, 0x76, 0x69, 0x1f, 0xdf, 0x58, 0xb7, 0x89, 0x47, 0x02, 0xcc,
0x48, 0x4f, 0x52, 0xd6, 0x2f, 0xd8, 0xbe, 0x6f, 0xbb, 0x64, 0x5d, 0x8c, 0xba, 0xd1, 0xfe, 0x3a,
0x19, 0x50, 0xa6, 0xd8, 0x1a, 0xff, 0x9c, 0x87, 0xc5, 0x5d, 0xec, 0x39, 0xfb, 0x24, 0x64, 0x26,
0x79, 0x11, 0x91, 0x90, 0xa1, 0xe7, 0x50, 0xe7, 0xc2, 0x68, 0x95, 0xb5, 0xca, 0xd5, 0xf6, 0xc6,
0x4e, 0x27, 0x95, 0xa6, 0x13, 0x4b, 0x23, 0x3e, 0x7e, 0x68, 0xf5, 0x3a, 0x87, 0x1b, 0x1d, 0x7a,
0x60, 0x77, 0xb8, 0x34, 0x9d, 0x8c, 0x34, 0x9d, 0x58, 0x9a, 0x8e, 0x99, 0x6c, 0xcb, 0x14, 0x54,
0x91, 0x0e, 0xcd, 0x80, 0x1c, 0x3a, 0xa1, 0xe3, 0x7b, 0x5a, 0x75, 0xad, 0x72, 0xb5, 0x65, 0x26,
0x63, 0xa4, 0xc1, 0x9c, 0xe7, 0x6f, 0x61, 0xab, 0x4f, 0xb4, 0xda, 0x5a, 0xe5, 0x6a, 0xd3, 0x8c,
0x87, 0x68, 0x0d, 0xda, 0x98, 0xd2, 0x87, 0xb8, 0x4b, 0xdc, 0x07, 0x64, 0xa8, 0xd5, 0xc5, 0xc2,
0x2c, 0x88, 0xaf, 0xc5, 0x94, 0x3e, 0xc2, 0x03, 0xa2, 0xcd, 0x8a, 0xd9, 0x78, 0x88, 0x2e, 0x42,
0xcb, 0xc3, 0x03, 0x12, 0x52, 0x6c, 0x11, 0xad, 0x29, 0xe6, 0x52, 0x00, 0xfa, 0x11, 0x2c, 0x67,
0x04, 0x7f, 0xe2, 0x47, 0x81, 0x45, 0x34, 0x10, 0x5b, 0x7f, 0x7c, 0xb2, 0xad, 0x6f, 0x16, 0xc9,
0x9a, 0xa3, 0x9c, 0xd0, 0x0f, 0x60, 0x56, 0x9c, 0xbc, 0xd6, 0x5e, 0xab, 0xbd, 0x56, 0x6d, 0x4b,
0xb2, 0xc8, 0x83, 0x39, 0xea, 0x46, 0xb6, 0xe3, 0x85, 0xda, 0xbc, 0xe0, 0xf0, 0xf4, 0x64, 0x1c,
0xb6, 0x7c, 0x6f, 0xdf, 0xb1, 0x77, 0xb1, 0x87, 0x6d, 0x32, 0x20, 0x1e, 0xdb, 0x13, 0xc4, 0xcd,
0x98, 0x09, 0x7a, 0x09, 0x4b, 0x07, 0x51, 0xc8, 0xfc, 0x81, 0xf3, 0x92, 0x3c, 0xa6, 0x7c, 0x6d,
0xa8, 0x9d, 0x12, 0xda, 0x7c, 0x74, 0x32, 0xc6, 0x0f, 0x0a, 0x54, 0xcd, 0x11, 0x3e, 0xdc, 0x48,
0x0e, 0xa2, 0x2e, 0xf9, 0x36, 0x09, 0x84, 0x75, 0x2d, 0x48, 0x23, 0xc9, 0x80, 0xa4, 0x19, 0x39,
0x6a, 0x14, 0x6a, 0x8b, 0x6b, 0x35, 0x69, 0x46, 0x09, 0x08, 0x5d, 0x85, 0xc5, 0x43, 0x12, 0x38,
0xfb, 0xc3, 0x27, 0x8e, 0xed, 0x61, 0x16, 0x05, 0x44, 0x5b, 0x12, 0xa6, 0x58, 0x04, 0xa3, 0x01,
0x9c, 0xea, 0x13, 0x77, 0xc0, 0x55, 0xbe, 0x15, 0x90, 0x5e, 0xa8, 0x2d, 0x0b, 0xfd, 0x6e, 0x9f,
0xfc, 0x04, 0x05, 0x39, 0x33, 0x4f, 0x9d, 0x0b, 0xe6, 0xf9, 0xa6, 0xf2, 0x14, 0xe9, 0x23, 0x48,
0x0a, 0x56, 0x00, 0xa3, 0x2b, 0xb0, 0xc0, 0x02, 0x6c, 0x1d, 0x38, 0x9e, 0xbd, 0x4b, 0x58, 0xdf,
0xef, 0x69, 0xa7, 0x85, 0x26, 0x0a, 0x50, 0x64, 0x01, 0x22, 0x1e, 0xee, 0xba, 0xa4, 0x27, 0x6d,
0xf1, 0xe9, 0x90, 0x92, 0x50, 0x3b, 0x23, 0x76, 0x71, 0xb3, 0x93, 0x89, 0x50, 0x85, 0x00, 0xd1,
0xb9, 0x3b, 0xb2, 0xea, 0xae, 0xc7, 0x82, 0xa1, 0x59, 0x42, 0x0e, 0x1d, 0x40, 0x9b, 0xef, 0x23,
0x36, 0x85, 0xb3, 0xc2, 0x14, 0xee, 0x9f, 0x4c, 0x47, 0x3b, 0x29, 0x41, 0x33, 0x4b, 0x1d, 0x75,
0x00, 0xf5, 0x71, 0xb8, 0x1b, 0xb9, 0xcc, 0xa1, 0x2e, 0x91, 0x62, 0x84, 0xda, 0x8a, 0x50, 0x53,
0xc9, 0x0c, 0x7a, 0x00, 0x10, 0x90, 0xfd, 0x18, 0xef, 0x9c, 0xd8, 0xf9, 0xf5, 0x49, 0x3b, 0x37,
0x13, 0x6c, 0xb9, 0xe3, 0xcc, 0x72, 0xce, 0x9c, 0x6f, 0x83, 0x58, 0x4c, 0x79, 0xbb, 0x70, 0x6b,
0x4d, 0x98, 0x58, 0xc9, 0x0c, 0xb7, 0x45, 0x05, 0x15, 0x41, 0xeb, 0xbc, 0xb4, 0xd6, 0x0c, 0x48,
0xbf, 0x0b, 0xe7, 0xc6, 0xa8, 0x1a, 0x2d, 0x41, 0xed, 0x80, 0x0c, 0x45, 0x88, 0x6e, 0x99, 0xfc,
0x13, 0x9d, 0x81, 0xd9, 0x43, 0xec, 0x46, 0x44, 0x04, 0xd5, 0xa6, 0x29, 0x07, 0xb7, 0xab, 0x5f,
0xaf, 0xe8, 0x3f, 0xab, 0xc0, 0x62, 0x41, 0xf0, 0x92, 0xf5, 0xdf, 0xcf, 0xae, 0x7f, 0x0d, 0x66,
0xbc, 0xff, 0x14, 0x07, 0x36, 0x61, 0x19, 0x41, 0x8c, 0xbf, 0x56, 0x40, 0x2b, 0x68, 0xf4, 0x3b,
0x0e, 0xeb, 0xdf, 0x73, 0x5c, 0x12, 0xa2, 0x5b, 0x30, 0x17, 0x48, 0x98, 0x4a, 0x3c, 0x17, 0x26,
0x1c, 0xc4, 0xce, 0x8c, 0x19, 0x63, 0xa3, 0x8f, 0xa1, 0x39, 0x20, 0x0c, 0xf7, 0x30, 0xc3, 0x4a,
0xf6, 0xb5, 0xb2, 0x95, 0x9c, 0xcb, 0xae, 0xc2, 0xdb, 0x99, 0x31, 0x93, 0x35, 0xe8, 0x3d, 0x98,
0xb5, 0xfa, 0x91, 0x77, 0x20, 0x52, 0x4e, 0x7b, 0xe3, 0xd2, 0xb8, 0xc5, 0x5b, 0x1c, 0x69, 0x67,
0xc6, 0x94, 0xd8, 0x9f, 0x34, 0xa0, 0x4e, 0x71, 0xc0, 0x8c, 0x7b, 0x70, 0xa6, 0x8c, 0x05, 0xcf,
0x73, 0x56, 0x9f, 0x58, 0x07, 0x61, 0x34, 0x50, 0x6a, 0x4e, 0xc6, 0x08, 0x41, 0x3d, 0x74, 0x5e,
0x4a, 0x55, 0xd7, 0x4c, 0xf1, 0x6d, 0xbc, 0x0d, 0xcb, 0x23, 0xdc, 0xf8, 0xa1, 0x4a, 0xd9, 0x38,
0x85, 0x79, 0xc5, 0xda, 0x88, 0xe0, 0xec, 0x53, 0xa1, 0x8b, 0x24, 0xd8, 0x4f, 0x23, 0x73, 0x1b,
0x3b, 0xb0, 0x52, 0x64, 0x1b, 0x52, 0xdf, 0x0b, 0x09, 0x37, 0x7d, 0x11, 0x1d, 0x1d, 0xd2, 0x4b,
0x67, 0x85, 0x14, 0x4d, 0xb3, 0x64, 0xc6, 0xf8, 0x71, 0x15, 0x56, 0x4c, 0x12, 0xfa, 0xee, 0x21,
0x89, 0x43, 0xd7, 0x74, 0x8a, 0x8f, 0xef, 0x41, 0x0d, 0x53, 0xaa, 0xcc, 0xe4, 0xfe, 0x6b, 0x4b,
0xef, 0x26, 0xa7, 0x8a, 0xde, 0x81, 0x65, 0x3c, 0xe8, 0x3a, 0x76, 0xe4, 0x47, 0x61, 0xbc, 0x2d,
0x61, 0x54, 0x2d, 0x73, 0x74, 0xc2, 0xb0, 0xe0, 0xdc, 0x88, 0x0a, 0x94, 0x3a, 0xb3, 0x25, 0x52,
0xa5, 0x50, 0x22, 0x95, 0x32, 0xa9, 0x8e, 0x63, 0xf2, 0xc7, 0x0a, 0x2c, 0xa5, 0xae, 0xa3, 0xc8,
0x5f, 0x84, 0xd6, 0x40, 0xc1, 0x42, 0xad, 0x22, 0xe2, 0x53, 0x0a, 0xc8, 0x57, 0x4b, 0xd5, 0x62,
0xb5, 0xb4, 0x02, 0x0d, 0x59, 0xcc, 0xaa, 0x8d, 0xa9, 0x51, 0x4e, 0xe4, 0x7a, 0x41, 0xe4, 0x55,
0x80, 0x30, 0x89, 0x5f, 0x5a, 0x43, 0xcc, 0x66, 0x20, 0xc8, 0x80, 0x79, 0x99, 0x5b, 0x4d, 0x12,
0x46, 0x2e, 0xd3, 0xe6, 0x04, 0x46, 0x0e, 0x66, 0xf8, 0xb0, 0xf8, 0xd0, 0xe1, 0x7b, 0xd8, 0x0f,
0xa7, 0x63, 0xec, 0xef, 0x43, 0x9d, 0x33, 0xe3, 0x1b, 0xeb, 0x06, 0xd8, 0xb3, 0xfa, 0x24, 0xd6,
0x55, 0x32, 0xe6, 0x6e, 0xcc, 0xb0, 0x1d, 0x6a, 0x55, 0x01, 0x17, 0xdf, 0xc6, 0xef, 0xaa, 0x52,
0xd2, 0x4d, 0x4a, 0xc3, 0xaf, 0xbe, 0xa0, 0x2e, 0x4f, 0xf1, 0xb5, 0xd1, 0x14, 0x5f, 0x10, 0xf9,
0xcb, 0xa4, 0xf8, 0xd7, 0x94, 0xa6, 0x8c, 0x08, 0xe6, 0x36, 0x29, 0xe5, 0x82, 0xa0, 0x1b, 0x50,
0xc7, 0x94, 0x4a, 0x85, 0x17, 0x22, 0xb2, 0x42, 0xe1, 0xff, 0x95, 0x48, 0x02, 0x55, 0xbf, 0x05,
0xad, 0x04, 0x74, 0x14, 0xdb, 0x56, 0x96, 0xed, 0x1a, 0x80, 0xac, 0x61, 0xef, 0x7b, 0xfb, 0x3e,
0x3f, 0x52, 0x6e, 0xec, 0x6a, 0xa9, 0xf8, 0x36, 0x6e, 0xc7, 0x18, 0x42, 0xb6, 0x77, 0x60, 0xd6,
0x61, 0x64, 0x10, 0x0b, 0xb7, 0x92, 0x15, 0x2e, 0x25, 0x64, 0x4a, 0x24, 0xe3, 0x4f, 0x4d, 0x38,
0xcf, 0x4f, 0xec, 0x89, 0x70, 0x93, 0x4d, 0x4a, 0xef, 0x10, 0x86, 0x1d, 0x37, 0xfc, 0x56, 0x44,
0x82, 0xe1, 0x1b, 0x36, 0x0c, 0x1b, 0x1a, 0xd2, 0xcb, 0x54, 0xbc, 0x7b, 0xed, 0xd7, 0x19, 0x45,
0x3e, 0xbd, 0xc3, 0xd4, 0xde, 0xcc, 0x1d, 0xa6, 0xec, 0x4e, 0x51, 0x9f, 0xd2, 0x9d, 0x62, 0xfc,
0xb5, 0x32, 0x73, 0x59, 0x6d, 0xe4, 0x2f, 0xab, 0x25, 0xa5, 0xfa, 0xdc, 0x71, 0x4b, 0xf5, 0x66,
0x69, 0xa9, 0x3e, 0x28, 0xf5, 0xe3, 0x96, 0x50, 0xf7, 0x47, 0x59, 0x0b, 0x1c, 0x6b, 0x6b, 0x27,
0x29, 0xda, 0xe1, 0x8d, 0x16, 0xed, 0x9f, 0xe5, 0x8a, 0x70, 0x79, 0x0d, 0x7e, 0xef, 0x78, 0x7b,
0x9a, 0x50, 0x8e, 0xff, 0xcf, 0x15, 0xcf, 0x3f, 0x15, 0x35, 0x13, 0xf5, 0x53, 0x1d, 0x24, 0x09,
0x9d, 0xe7, 0x21, 0x9e, 0x5a, 0x55, 0xd0, 0xe2, 0xdf, 0xe8, 0x3a, 0xd4, 0xb9, 0x92, 0x55, 0x51,
0x7b, 0x2e, 0xab, 0x4f, 0x7e, 0x12, 0x9b, 0x94, 0x3e, 0xa1, 0xc4, 0x32, 0x05, 0x12, 0xba, 0x0d,
0xad, 0xc4, 0xf0, 0x95, 0x67, 0x5d, 0xcc, 0xae, 0x48, 0xfc, 0x24, 0x5e, 0x96, 0xa2, 0xf3, 0xb5,
0x3d, 0x27, 0x20, 0x96, 0x28, 0xf9, 0x66, 0x47, 0xd7, 0xde, 0x89, 0x27, 0x93, 0xb5, 0x09, 0x3a,
0xba, 0x01, 0x0d, 0xd9, 0x37, 0x10, 0x1e, 0xd4, 0xde, 0x38, 0x3f, 0x1a, 0x4c, 0xe3, 0x55, 0x0a,
0xd1, 0xf8, 0x43, 0x05, 0xde, 0x4a, 0x0d, 0x22, 0xf6, 0xa6, 0xb8, 0xea, 0xfe, 0xea, 0x33, 0xee,
0x15, 0x58, 0x10, 0x65, 0x7e, 0xda, 0x3e, 0x90, 0x9d, 0xac, 0x02, 0xd4, 0xf8, 0x6d, 0x05, 0x2e,
0x8f, 0xee, 0x63, 0xab, 0x8f, 0x03, 0x96, 0x1c, 0xef, 0x34, 0xf6, 0x12, 0x27, 0xbc, 0x6a, 0x9a,
0xf0, 0x72, 0xfb, 0xab, 0xe5, 0xf7, 0x67, 0xfc, 0xbe, 0x0a, 0xed, 0x8c, 0x01, 0x95, 0x25, 0x4c,
0x5e, 0xf0, 0x09, 0xbb, 0x15, 0x17, 0x3b, 0x91, 0x14, 0x5a, 0x66, 0x06, 0x82, 0x0e, 0x00, 0x28,
0x0e, 0xf0, 0x80, 0x30, 0x12, 0xf0, 0x48, 0xce, 0x3d, 0xfe, 0xc1, 0xc9, 0xa3, 0xcb, 0x5e, 0x4c,
0xd3, 0xcc, 0x90, 0xe7, 0x15, 0xab, 0x60, 0x1d, 0xaa, 0xf8, 0xad, 0x46, 0xe8, 0x0b, 0x58, 0xd8,
0x77, 0x5c, 0xb2, 0x97, 0x0a, 0xd2, 0x10, 0x82, 0x3c, 0x3e, 0xb9, 0x20, 0xf7, 0xb2, 0x74, 0xcd,
0x02, 0x1b, 0xe3, 0x1a, 0x2c, 0x15, 0xfd, 0x89, 0x0b, 0xe9, 0x0c, 0xb0, 0x9d, 0x68, 0x4b, 0x8d,
0x0c, 0x04, 0x4b, 0x45, 0xff, 0x31, 0xfe, 0x56, 0x85, 0xb3, 0x09, 0xb9, 0x4d, 0xcf, 0xf3, 0x23,
0xcf, 0x12, 0xad, 0xb8, 0xd2, 0xb3, 0x38, 0x03, 0xb3, 0xcc, 0x61, 0x6e, 0x52, 0xf8, 0x88, 0x01,
0xcf, 0x5d, 0xcc, 0xf7, 0x5d, 0xe6, 0x50, 0x75, 0xc0, 0xf1, 0x50, 0x9e, 0xfd, 0x8b, 0xc8, 0x09,
0x48, 0x4f, 0x44, 0x82, 0xa6, 0x99, 0x8c, 0xf9, 0x1c, 0xaf, 0x6a, 0x44, 0x19, 0x2f, 0x95, 0x99,
0x8c, 0x85, 0xdd, 0xfb, 0xae, 0x4b, 0x2c, 0xae, 0x8e, 0x4c, 0xa1, 0x5f, 0x80, 0x8a, 0x0b, 0x04,
0x0b, 0x1c, 0xcf, 0x56, 0x65, 0xbe, 0x1a, 0x71, 0x39, 0x71, 0x10, 0xe0, 0xa1, 0xd6, 0x14, 0x0a,
0x90, 0x03, 0xf4, 0x21, 0xd4, 0x06, 0x98, 0xaa, 0x44, 0x77, 0x2d, 0x17, 0x1d, 0xca, 0x34, 0xd0,
0xd9, 0xc5, 0x54, 0x66, 0x02, 0xbe, 0x4c, 0x7f, 0x1f, 0x9a, 0x31, 0xe0, 0x4b, 0x95, 0x84, 0x9f,
0xc3, 0xa9, 0x5c, 0xf0, 0x41, 0xcf, 0x60, 0x25, 0xb5, 0xa8, 0x2c, 0x43, 0x55, 0x04, 0xbe, 0x75,
0xa4, 0x64, 0xe6, 0x18, 0x02, 0xc6, 0x0b, 0x58, 0xe6, 0x26, 0x23, 0x1c, 0x7f, 0x4a, 0x57, 0x9b,
0x0f, 0xa0, 0x95, 0xb0, 0x2c, 0xb5, 0x19, 0x1d, 0x9a, 0x87, 0x71, 0x8b, 0x54, 0xde, 0x6d, 0x92,
0xb1, 0xb1, 0x09, 0x28, 0x2b, 0xaf, 0xca, 0x40, 0xd7, 0xf3, 0x45, 0xf1, 0xd9, 0x62, 0xba, 0x11,
0xe8, 0x71, 0x4d, 0xfc, 0x9b, 0x2a, 0x2c, 0x6e, 0x3b, 0xa2, 0xcb, 0x31, 0xa5, 0x20, 0x77, 0x0d,
0x96, 0xc2, 0xa8, 0x3b, 0xf0, 0x7b, 0x91, 0x4b, 0x54, 0x51, 0xa0, 0x32, 0xfd, 0x08, 0x7c, 0x52,
0xf0, 0xe3, 0xca, 0xa2, 0x98, 0xf5, 0xd5, 0x0d, 0x57, 0x7c, 0xa3, 0x0f, 0xe1, 0xfc, 0x23, 0xf2,
0x85, 0xda, 0xcf, 0xb6, 0xeb, 0x77, 0xbb, 0x8e, 0x67, 0xc7, 0x4c, 0x66, 0x05, 0x93, 0xf1, 0x08,
0x65, 0xa5, 0x62, 0xa3, 0xb4, 0x54, 0x34, 0x7e, 0x52, 0x81, 0xa5, 0x54, 0x6b, 0x4a, 0xef, 0xb7,
0xa4, 0x7f, 0x48, 0xad, 0x5f, 0xce, 0x6a, 0xbd, 0x88, 0xfa, 0xef, 0xbb, 0xc6, 0x7c, 0xd6, 0x35,
0xfe, 0x51, 0x81, 0xb3, 0xdb, 0x0e, 0x8b, 0x83, 0x92, 0xf3, 0xdf, 0x76, 0x82, 0x25, 0xfa, 0xae,
0x97, 0xeb, 0xbb, 0x03, 0x2b, 0xc5, 0x8d, 0x2a, 0xa5, 0x9f, 0x81, 0x59, 0x7e, 0xf2, 0x71, 0x3f,
0x40, 0x0e, 0x8c, 0x5f, 0x37, 0xe0, 0xd2, 0x67, 0xb4, 0x87, 0x59, 0xd2, 0xcf, 0xb9, 0xe7, 0x07,
0x7b, 0x7c, 0x6a, 0x3a, 0x1a, 0x2a, 0xbc, 0x90, 0x55, 0x27, 0xbe, 0x90, 0xd5, 0x26, 0xbc, 0x90,
0xd5, 0x8f, 0xf5, 0x42, 0x36, 0x3b, 0xb5, 0x17, 0xb2, 0xd1, 0x3b, 0x52, 0xa3, 0xf4, 0x8e, 0xf4,
0x2c, 0x77, 0x8f, 0x98, 0x13, 0x2e, 0xf1, 0x8d, 0xac, 0x4b, 0x4c, 0x3c, 0x9d, 0x89, 0xad, 0xfd,
0xc2, 0xc3, 0x52, 0xf3, 0xc8, 0x87, 0xa5, 0xd6, 0xe8, 0xc3, 0x52, 0xf9, 0xdb, 0x04, 0x8c, 0x7d,
0x9b, 0xb8, 0x02, 0x0b, 0xe1, 0xd0, 0xb3, 0x48, 0x2f, 0xe9, 0xf2, 0xb5, 0xe5, 0xb6, 0xf3, 0xd0,
0x9c, 0xb5, 0xcf, 0x17, 0xac, 0x3d, 0xb1, 0xd4, 0x53, 0x19, 0x4b, 0xfd, 0xcf, 0xb9, 0xd2, 0xac,
0xc1, 0xea, 0xb8, 0x33, 0x91, 0xae, 0x66, 0xfc, 0xb2, 0x0a, 0xfa, 0x0e, 0x0e, 0xef, 0x04, 0x43,
0x29, 0xed, 0x56, 0x1f, 0x7b, 0x36, 0xdf, 0xfc, 0x34, 0x3c, 0xaa, 0xd4, 0xee, 0xab, 0xd3, 0xb4,
0xfb, 0x82, 0x01, 0xd4, 0xca, 0x0c, 0xc0, 0xf8, 0x08, 0x2e, 0x94, 0xaa, 0x48, 0x45, 0xab, 0x55,
0x80, 0x3e, 0x0e, 0x15, 0x54, 0xf5, 0xe4, 0x33, 0x90, 0x8d, 0x5f, 0xb5, 0x61, 0x39, 0xbd, 0x88,
0xf0, 0xbf, 0x8e, 0x45, 0xd0, 0x63, 0x58, 0xda, 0x56, 0xbf, 0x23, 0x88, 0xfb, 0xc7, 0x68, 0xd2,
0x83, 0x8c, 0x7e, 0xb1, 0x7c, 0x52, 0x9d, 0xe3, 0x0c, 0xb2, 0xe0, 0x7c, 0x91, 0x60, 0xfa, 0xf6,
0xf3, 0xff, 0x13, 0x28, 0x27, 0x58, 0x47, 0xb1, 0xb8, 0x5a, 0x41, 0xcf, 0x60, 0x21, 0xff, 0x42,
0x81, 0x72, 0x95, 0x59, 0xe9, 0xa3, 0x89, 0x6e, 0x4c, 0x42, 0x49, 0xe4, 0x7f, 0xce, 0x7d, 0x26,
0xd7, 0xae, 0x47, 0x46, 0xbe, 0x49, 0x51, 0xf6, 0x9c, 0xa1, 0xff, 0xdf, 0x44, 0x9c, 0x84, 0xfa,
0x07, 0xd0, 0x8c, 0xdb, 0xdb, 0x79, 0x35, 0x17, 0x9a, 0xde, 0xfa, 0x52, 0x9e, 0xde, 0x7e, 0x68,
0xcc, 0xa0, 0x8f, 0xe5, 0xe2, 0x4d, 0x4a, 0x4b, 0x16, 0x67, 0x9a, 0xba, 0xfa, 0xe9, 0x92, 0x46,
0xaa, 0x31, 0x83, 0xbe, 0x09, 0x6d, 0xfe, 0xb5, 0xa7, 0x5e, 0xf0, 0x57, 0x3a, 0xf2, 0x07, 0x23,
0x9d, 0xf8, 0x07, 0x23, 0x9d, 0xbb, 0x03, 0xca, 0x86, 0x7a, 0x49, 0xa7, 0x53, 0x11, 0x78, 0x0e,
0xa7, 0xb6, 0x09, 0x4b, 0x1b, 0x13, 0xe8, 0xf2, 0xb1, 0xda, 0x37, 0xba, 0x51, 0x44, 0x1b, 0xed,
0x6d, 0x18, 0x33, 0xe8, 0xe7, 0x15, 0x38, 0xbd, 0x4d, 0x58, 0xf1, 0xaa, 0x8f, 0xde, 0x2d, 0x67,
0x32, 0xa6, 0x25, 0xa0, 0x3f, 0x3a, 0x69, 0x74, 0xc8, 0x93, 0x35, 0x66, 0xd0, 0x2f, 0x2a, 0x70,
0x2e, 0x23, 0x58, 0xf6, 0xee, 0x8e, 0x6e, 0x4c, 0x16, 0xae, 0xe4, 0x9e, 0xaf, 0x7f, 0x7a, 0xc2,
0x1f, 0x66, 0x64, 0x48, 0x1a, 0x33, 0x68, 0x4f, 0x9c, 0x49, 0x5a, 0xaa, 0xa3, 0x4b, 0xa5, 0x35,
0x79, 0xc2, 0x7d, 0x75, 0xdc, 0x74, 0x72, 0x0e, 0x9f, 0x42, 0x7b, 0x9b, 0xb0, 0xb8, 0xae, 0xcc,
0x5b, 0x5a, 0xa1, 0x9c, 0xcf, 0xbb, 0x6a, 0xb1, 0x14, 0x15, 0x16, 0xb3, 0x2c, 0x69, 0x65, 0xea,
0xab, 0xbc, 0xaf, 0x96, 0x16, 0x99, 0x79, 0x8b, 0x29, 0x2f, 0xcf, 0x8c, 0x19, 0xf4, 0x02, 0x56,
0xca, 0xf3, 0x0a, 0x7a, 0xfb, 0xd8, 0xf5, 0x80, 0x7e, 0xed, 0x38, 0xa8, 0x09, 0xcb, 0x3e, 0x9c,
0x2e, 0x09, 0xc2, 0xe8, 0x4a, 0x4e, 0xab, 0x63, 0x13, 0x99, 0xfe, 0xb5, 0x23, 0xf1, 0x62, 0x4e,
0x9f, 0x6c, 0xfe, 0xf9, 0xd5, 0x6a, 0xe5, 0x2f, 0xaf, 0x56, 0x2b, 0x7f, 0x7f, 0xb5, 0x5a, 0xf9,
0xee, 0xcd, 0x23, 0x7e, 0x2a, 0x96, 0xf9, 0xf5, 0x19, 0xa6, 0x8e, 0xe5, 0x3a, 0xc4, 0x63, 0xdd,
0x86, 0xf0, 0xec, 0x9b, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x13, 0x2f, 0x30, 0x1e, 0x9c, 0x26,
0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -2575,6 +2692,8 @@ type RepoServerServiceClient interface {
GetGitDirectories(ctx context.Context, in *GitDirectoriesRequest, opts ...grpc.CallOption) (*GitDirectoriesResponse, error)
// UpdateRevisionForPaths will compare two revisions and update the cache with the new revision if no changes are detected in the provided paths
UpdateRevisionForPaths(ctx context.Context, in *UpdateRevisionForPathsRequest, opts ...grpc.CallOption) (*UpdateRevisionForPathsResponse, error)
// HasDrySourceChanged determines whether a dry source has changed since the last synced revision
HasDrySourceChanged(ctx context.Context, in *HasDrySourceChangedRequest, opts ...grpc.CallOption) (*HasDrySourceChangedResponse, error)
}
type repoServerServiceClient struct {
@@ -2736,6 +2855,15 @@ func (c *repoServerServiceClient) UpdateRevisionForPaths(ctx context.Context, in
return out, nil
}
func (c *repoServerServiceClient) HasDrySourceChanged(ctx context.Context, in *HasDrySourceChangedRequest, opts ...grpc.CallOption) (*HasDrySourceChangedResponse, error) {
out := new(HasDrySourceChangedResponse)
err := c.cc.Invoke(ctx, "/repository.RepoServerService/ResolveDryRevision", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// RepoServerServiceServer is the server API for RepoServerService service.
type RepoServerServiceServer interface {
// GenerateManifest generates manifest for application in specified repo name and revision
@@ -2766,6 +2894,8 @@ type RepoServerServiceServer interface {
GetGitDirectories(context.Context, *GitDirectoriesRequest) (*GitDirectoriesResponse, error)
// UpdateRevisionForPaths will compare two revisions and update the cache with the new revision if no changes are detected in the provided paths
UpdateRevisionForPaths(context.Context, *UpdateRevisionForPathsRequest) (*UpdateRevisionForPathsResponse, error)
// HasDrySourceChanged determines whether a dry source has changed since the last synced revision
HasDrySourceChanged(context.Context, *HasDrySourceChangedRequest) (*HasDrySourceChangedResponse, error)
}
// UnimplementedRepoServerServiceServer can be embedded to have forward compatible implementations.
@@ -2814,6 +2944,9 @@ func (*UnimplementedRepoServerServiceServer) GetGitDirectories(ctx context.Conte
func (*UnimplementedRepoServerServiceServer) UpdateRevisionForPaths(ctx context.Context, req *UpdateRevisionForPathsRequest) (*UpdateRevisionForPathsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateRevisionForPaths not implemented")
}
func (*UnimplementedRepoServerServiceServer) HasDrySourceChanged(ctx context.Context, req *HasDrySourceChangedRequest) (*HasDrySourceChangedResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method ResolveDryRevision not implemented")
}
func RegisterRepoServerServiceServer(s *grpc.Server, srv RepoServerServiceServer) {
s.RegisterService(&_RepoServerService_serviceDesc, srv)
@@ -3079,6 +3212,24 @@ func _RepoServerService_UpdateRevisionForPaths_Handler(srv interface{}, ctx cont
return interceptor(ctx, in, info, handler)
}
func _RepoServerService_HasDrySourceChanged_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(HasDrySourceChangedRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RepoServerServiceServer).HasDrySourceChanged(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/repository.RepoServerService/ResolveDryRevision",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RepoServerServiceServer).HasDrySourceChanged(ctx, req.(*HasDrySourceChangedRequest))
}
return interceptor(ctx, in, info, handler)
}
var _RepoServerService_serviceDesc = grpc.ServiceDesc{
ServiceName: "repository.RepoServerService",
HandlerType: (*RepoServerServiceServer)(nil),
@@ -3135,6 +3286,10 @@ var _RepoServerService_serviceDesc = grpc.ServiceDesc{
MethodName: "UpdateRevisionForPaths",
Handler: _RepoServerService_UpdateRevisionForPaths_Handler,
},
{
MethodName: "ResolveDryRevision",
Handler: _RepoServerService_HasDrySourceChanged_Handler,
},
},
Streams: []grpc.StreamDesc{
{
@@ -5317,6 +5472,101 @@ func (m *UpdateRevisionForPathsResponse) MarshalToSizedBuffer(dAtA []byte) (int,
return len(dAtA) - i, nil
}
func (m *HasDrySourceChangedRequest) 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 *HasDrySourceChangedRequest) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *HasDrySourceChangedRequest) 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.SyncedRevision) > 0 {
i -= len(m.SyncedRevision)
copy(dAtA[i:], m.SyncedRevision)
i = encodeVarintRepository(dAtA, i, uint64(len(m.SyncedRevision)))
i--
dAtA[i] = 0x1a
}
if m.ApplicationSource != nil {
{
size, err := m.ApplicationSource.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintRepository(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
}
if m.Repo != nil {
{
size, err := m.Repo.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintRepository(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func (m *HasDrySourceChangedResponse) 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 *HasDrySourceChangedResponse) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *HasDrySourceChangedResponse) 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 m.HasChanged {
i--
if m.HasChanged {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
func encodeVarintRepository(dAtA []byte, offset int, v uint64) int {
offset -= sovRepository(v)
base := offset
@@ -6300,6 +6550,45 @@ func (m *UpdateRevisionForPathsResponse) Size() (n int) {
return n
}
func (m *HasDrySourceChangedRequest) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.Repo != nil {
l = m.Repo.Size()
n += 1 + l + sovRepository(uint64(l))
}
if m.ApplicationSource != nil {
l = m.ApplicationSource.Size()
n += 1 + l + sovRepository(uint64(l))
}
l = len(m.SyncedRevision)
if l > 0 {
n += 1 + l + sovRepository(uint64(l))
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
return n
}
func (m *HasDrySourceChangedResponse) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.HasChanged {
n += 2
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
return n
}
func sovRepository(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@@ -12491,6 +12780,232 @@ func (m *UpdateRevisionForPathsResponse) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *HasDrySourceChangedRequest) 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: HasDrySourceChangedRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: HasDrySourceChangedRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Repo", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRepository
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthRepository
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthRepository
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Repo == nil {
m.Repo = &v1alpha1.Repository{}
}
if err := m.Repo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ApplicationSource", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRepository
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthRepository
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthRepository
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.ApplicationSource == nil {
m.ApplicationSource = &v1alpha1.ApplicationSource{}
}
if err := m.ApplicationSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field SyncedRevision", 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.SyncedRevision = 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 *HasDrySourceChangedResponse) 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: HasDrySourceChangedResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: HasDrySourceChangedResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field HasChanged", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRepository
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.HasChanged = bool(v != 0)
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 skipRepository(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0

View File

@@ -2777,3 +2777,8 @@ func (s *Service) updateCachedRevision(logCtx *log.Entry, oldRev string, newRev
logCtx.Debugf("manifest cache updated for application %s in repo %s from revision %s to revision %s", request.AppName, request.GetRepo().Repo, oldRev, newRev)
return nil
}
func (s *Service) HasDrySourceChanged(_ context.Context, request *apiclient.HasDrySourceChangedRequest) (*apiclient.HasDrySourceChangedResponse, error) {
resp := apiclient.HasDrySourceChangedResponse{HasChanged: false}
return &resp, nil
}

View File

@@ -277,6 +277,16 @@ message UpdateRevisionForPathsRequest {
message UpdateRevisionForPathsResponse {
}
message HasDrySourceChangedRequest {
github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Repository repo = 1;
github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ApplicationSource applicationSource = 2;
string syncedRevision = 3;
}
message HasDrySourceChangedResponse {
bool hasChanged = 1;
}
// ManifestService
service RepoServerService {
@@ -335,4 +345,8 @@ service RepoServerService {
// UpdateRevisionForPaths will compare two revisions and update the cache with the new revision if no changes are detected in the provided paths
rpc UpdateRevisionForPaths(UpdateRevisionForPathsRequest) returns (UpdateRevisionForPathsResponse) {
}
// HasDrySourceChanged determines whether a dry source has changed since the last synced revision
rpc HasDrySourceChanged(HasDrySourceChangedRequest) returns (HasDrySourceChangedResponse) {
}
}

View File

@@ -188,7 +188,15 @@ export const ApplicationParameters = (props: {
);
} else {
const v: models.ApplicationSource[] = new Array<models.ApplicationSource>();
v.push(app.spec.source);
if (app.spec.sourceHydrator) {
v.push({
repoURL: app.spec.sourceHydrator.drySource.repoURL,
targetRevision: app.spec.sourceHydrator.syncSource.targetRevision,
path: app.spec.sourceHydrator.syncSource.path,
})
} else {
v.push(app.spec.source);
}
return getEditablePanel(attributes, props.details, 0, v);
}
@@ -272,7 +280,7 @@ export const ApplicationParameters = (props: {
values={
app?.spec?.source
? ((props.details.plugin || app?.spec?.source?.plugin) && cloneDeep(app)) || app
: ((repoAppDetails.plugin || app?.spec?.sources[ind]?.plugin) && cloneDeep(app)) || app
: ((repoAppDetails.plugin || src?.plugin) && cloneDeep(app)) || app
}
validate={updatedApp => {
const errors = {} as any;

View File

@@ -107,7 +107,7 @@ export const ApplicationStatusPanel = ({application, showDiff, showOperation, sh
<div className='application-status-panel__item-name' style={{marginBottom: '0.5em'}}>
{application.spec.syncPolicy?.automated ? 'Auto sync is enabled.' : 'Auto sync is not enabled.'}
</div>
{application.status && application.status.sync && application.status.sync.revision && !application.spec.source.chart && (
{application.status && application.status.sync && application.status.sync.revision && !source.chart && (
<div className='application-status-panel__item-name'>
<RevisionMetadataPanel
appName={application.metadata.name}
@@ -151,7 +151,7 @@ export const ApplicationStatusPanel = ({application, showDiff, showOperation, sh
<RevisionMetadataPanel
appName={application.metadata.name}
appNamespace={application.metadata.namespace}
type={source.chart && 'helm'}
type={source?.chart && 'helm'}
revision={appOperationState.syncResult.revision}
/>
)) || <div className='application-status-panel__item-name'>{appOperationState.message}</div>}

View File

@@ -1041,10 +1041,17 @@ export function getAppDefaultSource(app?: appModels.Application) {
if (!app) {
return null;
}
return app.spec.sources && app.spec.sources.length > 0 ? app.spec.sources[0] : app.spec.source;
return getAppSpecDefaultSource(app.spec);
}
export function getAppSpecDefaultSource(spec: appModels.ApplicationSpec) {
if (spec.sourceHydrator) {
return {
repoURL: spec.sourceHydrator.drySource.repoURL,
targetRevision: spec.sourceHydrator.syncSource.targetRevision,
path: spec.sourceHydrator.syncSource.path,
}
}
return spec.sources && spec.sources.length > 0 ? spec.sources[0] : spec.source;
}

View File

@@ -201,6 +201,27 @@ export interface ApplicationSource {
ref?: string;
}
export interface SourceHydrator {
drySource: DrySource;
syncSource: SyncSource;
hydrateTo?: HydrateTo;
}
export interface DrySource {
repoURL: string;
targetRevision: string;
path: string;
}
export interface SyncSource {
targetRevision: string;
path: string
}
export interface HydrateTo {
targetRevision: string;
}
export interface ApplicationSourceHelm {
valueFiles: string[];
values?: string;
@@ -272,6 +293,7 @@ export interface ApplicationSpec {
project: string;
source: ApplicationSource;
sources: ApplicationSource[];
sourceHydrator?: SourceHydrator;
destination: ApplicationDestination;
syncPolicy?: SyncPolicy;
ignoreDifferences?: ResourceIgnoreDifferences[];