From d47b81d78365218666ee66a1d8538a5785912939 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Fri, 28 Sep 2018 12:23:44 -0700 Subject: [PATCH 01/31] Add basic SyncOperationResource --- pkg/apis/application/v1alpha1/types.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 5991512f38c0c..8a1803cf4e3b7 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -17,6 +17,13 @@ import ( "github.com/argoproj/argo-cd/util/git" ) +// SyncOperationResource contains resources to sync. +type SyncOperationResource struct { + Group string + Kind string + Name string +} + // SyncOperation contains sync operation details. type SyncOperation struct { // Revision is the git revision in which to sync the application to. @@ -32,6 +39,8 @@ type SyncOperation struct { // If nil, uses the parameter override set in application. // If empty, sets no parameter overrides ParameterOverrides ParameterOverrides `json:"parameterOverrides" protobuf:"bytes,5,opt,name=parameterOverrides"` + // Resources describes which resources to sync + Resources []SyncOperationResource `json:"resources" protobuf:"bytes,6,opt,name=resources"` } // ParameterOverrides masks the value so protobuf can generate From 3a1f36c2b2b76603c7e69de79e31167339d9663f Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Fri, 28 Sep 2018 12:28:35 -0700 Subject: [PATCH 02/31] Tweak Resources --- pkg/apis/application/v1alpha1/types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 8a1803cf4e3b7..6493f6205a632 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -40,7 +40,7 @@ type SyncOperation struct { // If empty, sets no parameter overrides ParameterOverrides ParameterOverrides `json:"parameterOverrides" protobuf:"bytes,5,opt,name=parameterOverrides"` // Resources describes which resources to sync - Resources []SyncOperationResource `json:"resources" protobuf:"bytes,6,opt,name=resources"` + Resources []SyncOperationResource `json:"resources,omitempty" protobuf:"bytes,6,opt,name=resources"` } // ParameterOverrides masks the value so protobuf can generate From 4c8e45f8ed14b1c652c1180c17e57e7a8ffa27e4 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Fri, 28 Sep 2018 12:32:22 -0700 Subject: [PATCH 03/31] Add resources to proto --- server/application/application.go | 1 + server/application/application.proto | 1 + 2 files changed, 2 insertions(+) diff --git a/server/application/application.go b/server/application/application.go index fe555de0db960..fc1b0a9841581 100644 --- a/server/application/application.go +++ b/server/application/application.go @@ -748,6 +748,7 @@ func (s *Server) Sync(ctx context.Context, syncReq *ApplicationSyncRequest) (*ap DryRun: syncReq.DryRun, SyncStrategy: syncReq.Strategy, ParameterOverrides: parameterOverrides, + Resources: syncReq.Resources, }, } a, err = argo.SetAppOperation(ctx, appIf, s.auditLogger, *syncReq.Name, &op) diff --git a/server/application/application.proto b/server/application/application.proto index 64b88535bc612..a2b8ba994b936 100644 --- a/server/application/application.proto +++ b/server/application/application.proto @@ -58,6 +58,7 @@ message ApplicationSyncRequest { optional bool prune = 4 [(gogoproto.nullable) = false]; optional github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncStrategy strategy = 5; optional ParameterOverrides parameter = 6; + optional string resources = 7 [(gogoproto.nullable) = false]; } // ParameterOverrides is a wrapper on a list of parameters. If omitted, the application's overrides From 4e3f81bfee0f645294f8b6c499f5ab7fd701b270 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Fri, 28 Sep 2018 14:51:10 -0700 Subject: [PATCH 04/31] Update application proto --- server/application/application.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/application/application.proto b/server/application/application.proto index a2b8ba994b936..7bf7524ed0a91 100644 --- a/server/application/application.proto +++ b/server/application/application.proto @@ -58,7 +58,7 @@ message ApplicationSyncRequest { optional bool prune = 4 [(gogoproto.nullable) = false]; optional github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncStrategy strategy = 5; optional ParameterOverrides parameter = 6; - optional string resources = 7 [(gogoproto.nullable) = false]; + repeated github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncOperationResource resources = 7 [(gogoproto.nullable) = false]; } // ParameterOverrides is a wrapper on a list of parameters. If omitted, the application's overrides From dd76964c4056783cabf5d606538a98aa56a7c230 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Mon, 1 Oct 2018 10:47:58 -0700 Subject: [PATCH 05/31] Add SyncResources to controller --- controller/sync.go | 1 + 1 file changed, 1 insertion(+) diff --git a/controller/sync.go b/controller/sync.go index 2c234fe821a88..09d9d177c542b 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -55,6 +55,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper var revision string var syncOp appv1.SyncOperation var syncRes *appv1.SyncOperationResult + var syncResources []*appv1.SyncOperationResource var overrides []appv1.ComponentParameter if state.Operation.Sync != nil { From d10ec1d26d22a5842b5cae6253a1aeb0d38ca66e Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Mon, 1 Oct 2018 13:55:47 -0700 Subject: [PATCH 06/31] Update types.go --- pkg/apis/application/v1alpha1/types.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 6493f6205a632..24a46648bcfdd 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -19,9 +19,9 @@ import ( // SyncOperationResource contains resources to sync. type SyncOperationResource struct { - Group string - Kind string - Name string + Group string `protobuf:"bytes,1,opt,name=group"` + Kind string `protobuf:"bytes,2,opt,name=kind"` + Name string `protobuf:"bytes,3,opt,name=name"` } // SyncOperation contains sync operation details. From 624f233537b01bcd351e58df50598ada9c1a9202 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Mon, 1 Oct 2018 13:56:51 -0700 Subject: [PATCH 07/31] Update generated files --- pkg/apis/application/v1alpha1/generated.pb.go | 710 ++++++++++++------ pkg/apis/application/v1alpha1/generated.proto | 12 + .../v1alpha1/zz_generated.deepcopy.go | 21 + reposerver/repository/repository.pb.go | 16 +- server/account/account.pb.go | 8 +- server/application/application.pb.go | 297 +++++--- server/cluster/cluster.pb.go | 14 +- server/project/project.pb.go | 18 +- server/repository/repository.pb.go | 32 +- server/session/session.pb.go | 10 +- server/settings/settings.pb.go | 12 +- server/swagger.json | 28 + server/version/version.pb.go | 6 +- 13 files changed, 788 insertions(+), 396 deletions(-) diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go index cb3c758eedf5d..12debe098007c 100644 --- a/pkg/apis/application/v1alpha1/generated.pb.go +++ b/pkg/apis/application/v1alpha1/generated.pb.go @@ -30,7 +30,7 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package func (m *AWSAuthConfig) Reset() { *m = AWSAuthConfig{} } func (*AWSAuthConfig) ProtoMessage() {} func (*AWSAuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{0} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{0} } func (m *AWSAuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -58,7 +58,7 @@ var xxx_messageInfo_AWSAuthConfig proto.InternalMessageInfo func (m *AppProject) Reset() { *m = AppProject{} } func (*AppProject) ProtoMessage() {} func (*AppProject) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{1} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{1} } func (m *AppProject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -86,7 +86,7 @@ var xxx_messageInfo_AppProject proto.InternalMessageInfo func (m *AppProjectList) Reset() { *m = AppProjectList{} } func (*AppProjectList) ProtoMessage() {} func (*AppProjectList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{2} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{2} } func (m *AppProjectList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -114,7 +114,7 @@ var xxx_messageInfo_AppProjectList proto.InternalMessageInfo func (m *AppProjectSpec) Reset() { *m = AppProjectSpec{} } func (*AppProjectSpec) ProtoMessage() {} func (*AppProjectSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{3} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{3} } func (m *AppProjectSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -142,7 +142,7 @@ var xxx_messageInfo_AppProjectSpec proto.InternalMessageInfo func (m *Application) Reset() { *m = Application{} } func (*Application) ProtoMessage() {} func (*Application) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{4} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{4} } func (m *Application) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -170,7 +170,7 @@ var xxx_messageInfo_Application proto.InternalMessageInfo func (m *ApplicationCondition) Reset() { *m = ApplicationCondition{} } func (*ApplicationCondition) ProtoMessage() {} func (*ApplicationCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{5} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{5} } func (m *ApplicationCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -198,7 +198,7 @@ var xxx_messageInfo_ApplicationCondition proto.InternalMessageInfo func (m *ApplicationDestination) Reset() { *m = ApplicationDestination{} } func (*ApplicationDestination) ProtoMessage() {} func (*ApplicationDestination) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{6} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{6} } func (m *ApplicationDestination) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -226,7 +226,7 @@ var xxx_messageInfo_ApplicationDestination proto.InternalMessageInfo func (m *ApplicationList) Reset() { *m = ApplicationList{} } func (*ApplicationList) ProtoMessage() {} func (*ApplicationList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{7} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{7} } func (m *ApplicationList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -254,7 +254,7 @@ var xxx_messageInfo_ApplicationList proto.InternalMessageInfo func (m *ApplicationSource) Reset() { *m = ApplicationSource{} } func (*ApplicationSource) ProtoMessage() {} func (*ApplicationSource) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{8} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{8} } func (m *ApplicationSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -282,7 +282,7 @@ var xxx_messageInfo_ApplicationSource proto.InternalMessageInfo func (m *ApplicationSpec) Reset() { *m = ApplicationSpec{} } func (*ApplicationSpec) ProtoMessage() {} func (*ApplicationSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{9} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{9} } func (m *ApplicationSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -310,7 +310,7 @@ var xxx_messageInfo_ApplicationSpec proto.InternalMessageInfo func (m *ApplicationStatus) Reset() { *m = ApplicationStatus{} } func (*ApplicationStatus) ProtoMessage() {} func (*ApplicationStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{10} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{10} } func (m *ApplicationStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -338,7 +338,7 @@ var xxx_messageInfo_ApplicationStatus proto.InternalMessageInfo func (m *ApplicationWatchEvent) Reset() { *m = ApplicationWatchEvent{} } func (*ApplicationWatchEvent) ProtoMessage() {} func (*ApplicationWatchEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{11} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{11} } func (m *ApplicationWatchEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -366,7 +366,7 @@ var xxx_messageInfo_ApplicationWatchEvent proto.InternalMessageInfo func (m *Cluster) Reset() { *m = Cluster{} } func (*Cluster) ProtoMessage() {} func (*Cluster) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{12} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{12} } func (m *Cluster) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -394,7 +394,7 @@ var xxx_messageInfo_Cluster proto.InternalMessageInfo func (m *ClusterConfig) Reset() { *m = ClusterConfig{} } func (*ClusterConfig) ProtoMessage() {} func (*ClusterConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{13} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{13} } func (m *ClusterConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -422,7 +422,7 @@ var xxx_messageInfo_ClusterConfig proto.InternalMessageInfo func (m *ClusterList) Reset() { *m = ClusterList{} } func (*ClusterList) ProtoMessage() {} func (*ClusterList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{14} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{14} } func (m *ClusterList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -450,7 +450,7 @@ var xxx_messageInfo_ClusterList proto.InternalMessageInfo func (m *ComparisonResult) Reset() { *m = ComparisonResult{} } func (*ComparisonResult) ProtoMessage() {} func (*ComparisonResult) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{15} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{15} } func (m *ComparisonResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -478,7 +478,7 @@ var xxx_messageInfo_ComparisonResult proto.InternalMessageInfo func (m *ComponentParameter) Reset() { *m = ComponentParameter{} } func (*ComponentParameter) ProtoMessage() {} func (*ComponentParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{16} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{16} } func (m *ComponentParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -506,7 +506,7 @@ var xxx_messageInfo_ComponentParameter proto.InternalMessageInfo func (m *ConnectionState) Reset() { *m = ConnectionState{} } func (*ConnectionState) ProtoMessage() {} func (*ConnectionState) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{17} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{17} } func (m *ConnectionState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -534,7 +534,7 @@ var xxx_messageInfo_ConnectionState proto.InternalMessageInfo func (m *DeploymentInfo) Reset() { *m = DeploymentInfo{} } func (*DeploymentInfo) ProtoMessage() {} func (*DeploymentInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{18} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{18} } func (m *DeploymentInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -562,7 +562,7 @@ var xxx_messageInfo_DeploymentInfo proto.InternalMessageInfo func (m *HealthStatus) Reset() { *m = HealthStatus{} } func (*HealthStatus) ProtoMessage() {} func (*HealthStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{19} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{19} } func (m *HealthStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -590,7 +590,7 @@ var xxx_messageInfo_HealthStatus proto.InternalMessageInfo func (m *HookStatus) Reset() { *m = HookStatus{} } func (*HookStatus) ProtoMessage() {} func (*HookStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{20} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{20} } func (m *HookStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -618,7 +618,7 @@ var xxx_messageInfo_HookStatus proto.InternalMessageInfo func (m *JWTToken) Reset() { *m = JWTToken{} } func (*JWTToken) ProtoMessage() {} func (*JWTToken) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{21} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{21} } func (m *JWTToken) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -646,7 +646,7 @@ var xxx_messageInfo_JWTToken proto.InternalMessageInfo func (m *Operation) Reset() { *m = Operation{} } func (*Operation) ProtoMessage() {} func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{22} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{22} } func (m *Operation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -674,7 +674,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo func (m *OperationState) Reset() { *m = OperationState{} } func (*OperationState) ProtoMessage() {} func (*OperationState) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{23} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{23} } func (m *OperationState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -702,7 +702,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo func (m *ParameterOverrides) Reset() { *m = ParameterOverrides{} } func (*ParameterOverrides) ProtoMessage() {} func (*ParameterOverrides) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{24} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{24} } func (m *ParameterOverrides) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -730,7 +730,7 @@ var xxx_messageInfo_ParameterOverrides proto.InternalMessageInfo func (m *ProjectRole) Reset() { *m = ProjectRole{} } func (*ProjectRole) ProtoMessage() {} func (*ProjectRole) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{25} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{25} } func (m *ProjectRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -758,7 +758,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo func (m *Repository) Reset() { *m = Repository{} } func (*Repository) ProtoMessage() {} func (*Repository) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{26} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{26} } func (m *Repository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -786,7 +786,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo func (m *RepositoryList) Reset() { *m = RepositoryList{} } func (*RepositoryList) ProtoMessage() {} func (*RepositoryList) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{27} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{27} } func (m *RepositoryList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -814,7 +814,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo func (m *ResourceDetails) Reset() { *m = ResourceDetails{} } func (*ResourceDetails) ProtoMessage() {} func (*ResourceDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{28} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{28} } func (m *ResourceDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -842,7 +842,7 @@ var xxx_messageInfo_ResourceDetails proto.InternalMessageInfo func (m *ResourceNode) Reset() { *m = ResourceNode{} } func (*ResourceNode) ProtoMessage() {} func (*ResourceNode) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{29} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{29} } func (m *ResourceNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -870,7 +870,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo func (m *ResourceState) Reset() { *m = ResourceState{} } func (*ResourceState) ProtoMessage() {} func (*ResourceState) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{30} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{30} } func (m *ResourceState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -898,7 +898,7 @@ var xxx_messageInfo_ResourceState proto.InternalMessageInfo func (m *RollbackOperation) Reset() { *m = RollbackOperation{} } func (*RollbackOperation) ProtoMessage() {} func (*RollbackOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{31} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{31} } func (m *RollbackOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -926,7 +926,7 @@ var xxx_messageInfo_RollbackOperation proto.InternalMessageInfo func (m *SyncOperation) Reset() { *m = SyncOperation{} } func (*SyncOperation) ProtoMessage() {} func (*SyncOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{32} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{32} } func (m *SyncOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -951,10 +951,38 @@ func (m *SyncOperation) XXX_DiscardUnknown() { var xxx_messageInfo_SyncOperation proto.InternalMessageInfo +func (m *SyncOperationResource) Reset() { *m = SyncOperationResource{} } +func (*SyncOperationResource) ProtoMessage() {} +func (*SyncOperationResource) Descriptor() ([]byte, []int) { + return fileDescriptor_generated_a1a901721b8b6bdf, []int{33} +} +func (m *SyncOperationResource) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SyncOperationResource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (dst *SyncOperationResource) XXX_Merge(src proto.Message) { + xxx_messageInfo_SyncOperationResource.Merge(dst, src) +} +func (m *SyncOperationResource) XXX_Size() int { + return m.Size() +} +func (m *SyncOperationResource) XXX_DiscardUnknown() { + xxx_messageInfo_SyncOperationResource.DiscardUnknown(m) +} + +var xxx_messageInfo_SyncOperationResource proto.InternalMessageInfo + func (m *SyncOperationResult) Reset() { *m = SyncOperationResult{} } func (*SyncOperationResult) ProtoMessage() {} func (*SyncOperationResult) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{33} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{34} } func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -982,7 +1010,7 @@ var xxx_messageInfo_SyncOperationResult proto.InternalMessageInfo func (m *SyncPolicy) Reset() { *m = SyncPolicy{} } func (*SyncPolicy) ProtoMessage() {} func (*SyncPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{34} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{35} } func (m *SyncPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1010,7 +1038,7 @@ var xxx_messageInfo_SyncPolicy proto.InternalMessageInfo func (m *SyncPolicyAutomated) Reset() { *m = SyncPolicyAutomated{} } func (*SyncPolicyAutomated) ProtoMessage() {} func (*SyncPolicyAutomated) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{35} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{36} } func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1038,7 +1066,7 @@ var xxx_messageInfo_SyncPolicyAutomated proto.InternalMessageInfo func (m *SyncStrategy) Reset() { *m = SyncStrategy{} } func (*SyncStrategy) ProtoMessage() {} func (*SyncStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{36} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{37} } func (m *SyncStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1066,7 +1094,7 @@ var xxx_messageInfo_SyncStrategy proto.InternalMessageInfo func (m *SyncStrategyApply) Reset() { *m = SyncStrategyApply{} } func (*SyncStrategyApply) ProtoMessage() {} func (*SyncStrategyApply) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{37} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{38} } func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1094,7 +1122,7 @@ var xxx_messageInfo_SyncStrategyApply proto.InternalMessageInfo func (m *SyncStrategyHook) Reset() { *m = SyncStrategyHook{} } func (*SyncStrategyHook) ProtoMessage() {} func (*SyncStrategyHook) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{38} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{39} } func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1122,7 +1150,7 @@ var xxx_messageInfo_SyncStrategyHook proto.InternalMessageInfo func (m *TLSClientConfig) Reset() { *m = TLSClientConfig{} } func (*TLSClientConfig) ProtoMessage() {} func (*TLSClientConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_generated_639498dd9e5881d3, []int{39} + return fileDescriptor_generated_a1a901721b8b6bdf, []int{40} } func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1181,6 +1209,7 @@ func init() { proto.RegisterType((*ResourceState)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.ResourceState") proto.RegisterType((*RollbackOperation)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.RollbackOperation") proto.RegisterType((*SyncOperation)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncOperation") + proto.RegisterType((*SyncOperationResource)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncOperationResource") proto.RegisterType((*SyncOperationResult)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncOperationResult") proto.RegisterType((*SyncPolicy)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncPolicy") proto.RegisterType((*SyncPolicyAutomated)(nil), "github.com.argoproj.argo_cd.pkg.apis.application.v1alpha1.SyncPolicyAutomated") @@ -2605,6 +2634,48 @@ func (m *SyncOperation) MarshalTo(dAtA []byte) (int, error) { } i += n36 } + if len(m.Resources) > 0 { + for _, msg := range m.Resources { + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } + return i, nil +} + +func (m *SyncOperationResource) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *SyncOperationResource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group))) + i += copy(dAtA[i:], m.Group) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind))) + i += copy(dAtA[i:], m.Kind) + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i += copy(dAtA[i:], m.Name) return i, nil } @@ -3384,6 +3455,24 @@ func (m *SyncOperation) Size() (n int) { l = m.ParameterOverrides.Size() n += 1 + l + sovGenerated(uint64(l)) } + if len(m.Resources) > 0 { + for _, e := range m.Resources { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *SyncOperationResource) Size() (n int) { + var l int + _ = l + l = len(m.Group) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Kind) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) return n } @@ -3887,6 +3976,19 @@ func (this *SyncOperation) String() string { `DryRun:` + fmt.Sprintf("%v", this.DryRun) + `,`, `SyncStrategy:` + strings.Replace(fmt.Sprintf("%v", this.SyncStrategy), "SyncStrategy", "SyncStrategy", 1) + `,`, `ParameterOverrides:` + strings.Replace(fmt.Sprintf("%v", this.ParameterOverrides), "ParameterOverrides", "ParameterOverrides", 1) + `,`, + `Resources:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Resources), "SyncOperationResource", "SyncOperationResource", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *SyncOperationResource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&SyncOperationResource{`, + `Group:` + fmt.Sprintf("%v", this.Group) + `,`, + `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `}`, }, "") return s @@ -9030,6 +9132,174 @@ func (m *SyncOperation) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, SyncOperationResource{}) + if err := m.Resources[len(m.Resources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SyncOperationResource) 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 ErrIntOverflowGenerated + } + 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: SyncOperationResource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SyncOperationResource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + 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 ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Group = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + 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 ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Kind = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + 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 ErrIntOverflowGenerated + } + 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 ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -9909,186 +10179,188 @@ var ( ) func init() { - proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_639498dd9e5881d3) + proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_a1a901721b8b6bdf) } -var fileDescriptor_generated_639498dd9e5881d3 = []byte{ - // 2817 bytes of a gzipped FileDescriptorProto +var fileDescriptor_generated_a1a901721b8b6bdf = []byte{ + // 2862 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4d, 0x8c, 0x23, 0x47, - 0xf5, 0x9f, 0xf6, 0xc7, 0x8c, 0xe7, 0xcd, 0xc7, 0xee, 0x56, 0x3e, 0xfe, 0xfe, 0x4f, 0xa4, 0x99, - 0x51, 0x87, 0x8f, 0x80, 0x12, 0x9b, 0x5d, 0x08, 0x84, 0x80, 0x90, 0xc6, 0x9e, 0xdd, 0xec, 0x64, - 0x76, 0x67, 0x87, 0xf2, 0x24, 0x2b, 0x85, 0x28, 0xd0, 0xdb, 0xae, 0xb1, 0x7b, 0x6d, 0x77, 0x77, - 0xba, 0xca, 0xde, 0x58, 0x10, 0x14, 0x84, 0x40, 0x7c, 0x4a, 0x40, 0x84, 0x40, 0xe2, 0x12, 0x24, - 0x4e, 0x5c, 0xb8, 0x44, 0x1c, 0xb8, 0xc1, 0x01, 0xe5, 0x98, 0x03, 0x88, 0x28, 0x44, 0x23, 0x32, - 0xb9, 0x20, 0x71, 0x40, 0x5c, 0x73, 0x42, 0xf5, 0xd1, 0x5d, 0xd5, 0x6d, 0x3b, 0x33, 0xbb, 0xf6, - 0x2e, 0x70, 0x73, 0xd7, 0x7b, 0xfd, 0x7e, 0xaf, 0x5f, 0xbd, 0x7a, 0x5f, 0x65, 0xd8, 0x69, 0x79, - 0xac, 0xdd, 0xbf, 0x51, 0x71, 0x83, 0x5e, 0xd5, 0x89, 0x5a, 0x41, 0x18, 0x05, 0x37, 0xc5, 0x8f, - 0xc7, 0xdc, 0x66, 0x35, 0xec, 0xb4, 0xaa, 0x4e, 0xe8, 0xd1, 0xaa, 0x13, 0x86, 0x5d, 0xcf, 0x75, - 0x98, 0x17, 0xf8, 0xd5, 0xc1, 0x79, 0xa7, 0x1b, 0xb6, 0x9d, 0xf3, 0xd5, 0x16, 0xf1, 0x49, 0xe4, - 0x30, 0xd2, 0xac, 0x84, 0x51, 0xc0, 0x02, 0xf4, 0x59, 0x2d, 0xaa, 0x12, 0x8b, 0x12, 0x3f, 0xbe, - 0xec, 0x36, 0x2b, 0x61, 0xa7, 0x55, 0xe1, 0xa2, 0x2a, 0x86, 0xa8, 0x4a, 0x2c, 0x6a, 0xed, 0x31, - 0x43, 0x8b, 0x56, 0xd0, 0x0a, 0xaa, 0x42, 0xe2, 0x8d, 0xfe, 0xa1, 0x78, 0x12, 0x0f, 0xe2, 0x97, - 0x44, 0x5a, 0xfb, 0x54, 0xe7, 0x09, 0x5a, 0xf1, 0x02, 0xae, 0x5b, 0xcf, 0x71, 0xdb, 0x9e, 0x4f, - 0xa2, 0xa1, 0x56, 0xb6, 0x47, 0x98, 0x53, 0x1d, 0x8c, 0xe8, 0xb7, 0x56, 0x9d, 0xf4, 0x56, 0xd4, - 0xf7, 0x99, 0xd7, 0x23, 0x23, 0x2f, 0x7c, 0xfa, 0xa4, 0x17, 0xa8, 0xdb, 0x26, 0x3d, 0x67, 0xe4, - 0xbd, 0x4f, 0x4e, 0x7a, 0xaf, 0xcf, 0xbc, 0x6e, 0xd5, 0xf3, 0x19, 0x65, 0x51, 0xf6, 0x25, 0xfb, - 0x45, 0x58, 0xd9, 0xba, 0xde, 0xd8, 0xea, 0xb3, 0x76, 0x3d, 0xf0, 0x0f, 0xbd, 0x16, 0x7a, 0x1c, - 0x96, 0xdc, 0x6e, 0x9f, 0x32, 0x12, 0xed, 0x39, 0x3d, 0x52, 0xb6, 0x36, 0xad, 0x47, 0x16, 0x6b, - 0xf7, 0xbd, 0x71, 0xb4, 0x31, 0x77, 0x7c, 0xb4, 0xb1, 0x54, 0xd7, 0x24, 0x6c, 0xf2, 0xa1, 0x8f, - 0xc1, 0x42, 0x14, 0x74, 0xc9, 0x16, 0xde, 0x2b, 0xe7, 0xc4, 0x2b, 0x67, 0xd4, 0x2b, 0x0b, 0x58, - 0x2e, 0xe3, 0x98, 0x6e, 0xff, 0xd5, 0x02, 0xd8, 0x0a, 0xc3, 0xfd, 0x28, 0xb8, 0x49, 0x5c, 0x86, - 0xbe, 0x02, 0x25, 0x6e, 0xba, 0xa6, 0xc3, 0x1c, 0x81, 0xb6, 0x74, 0xe1, 0x13, 0x15, 0xf9, 0x25, - 0x15, 0xf3, 0x4b, 0xf4, 0x56, 0x72, 0xee, 0xca, 0xe0, 0x7c, 0xe5, 0xda, 0x0d, 0xfe, 0xfe, 0x55, - 0xc2, 0x9c, 0x1a, 0x52, 0x60, 0xa0, 0xd7, 0x70, 0x22, 0x15, 0x75, 0xa0, 0x40, 0x43, 0xe2, 0x0a, - 0xc5, 0x96, 0x2e, 0xec, 0x54, 0xee, 0xd8, 0x61, 0x2a, 0x5a, 0xed, 0x46, 0x48, 0xdc, 0xda, 0xb2, - 0x82, 0x2d, 0xf0, 0x27, 0x2c, 0x40, 0xec, 0xb7, 0x2d, 0x58, 0xd5, 0x6c, 0x57, 0x3c, 0xca, 0xd0, - 0xf3, 0x23, 0x5f, 0x58, 0x39, 0xdd, 0x17, 0xf2, 0xb7, 0xc5, 0xf7, 0x9d, 0x55, 0x40, 0xa5, 0x78, - 0xc5, 0xf8, 0xba, 0x9b, 0x50, 0xf4, 0x18, 0xe9, 0xd1, 0x72, 0x6e, 0x33, 0xff, 0xc8, 0xd2, 0x85, - 0x8b, 0x33, 0xf9, 0xbc, 0xda, 0x8a, 0x42, 0x2c, 0xee, 0x70, 0xd9, 0x58, 0x42, 0xd8, 0xbf, 0x28, - 0x9a, 0x1f, 0xc7, 0xbf, 0x1a, 0x9d, 0x87, 0x25, 0x1a, 0xf4, 0x23, 0x97, 0x60, 0x12, 0x06, 0xb4, - 0x6c, 0x6d, 0xe6, 0xf9, 0xe6, 0x73, 0x5f, 0x69, 0xe8, 0x65, 0x6c, 0xf2, 0xa0, 0xef, 0x5b, 0xb0, - 0xdc, 0x24, 0x94, 0x79, 0xbe, 0xc0, 0x8f, 0x35, 0xff, 0xe2, 0x74, 0x9a, 0xc7, 0x8b, 0xdb, 0x5a, - 0x72, 0xed, 0x7e, 0xf5, 0x15, 0xcb, 0xc6, 0x22, 0xc5, 0x29, 0x70, 0xee, 0xf0, 0x4d, 0x42, 0xdd, - 0xc8, 0x0b, 0xf9, 0x73, 0x39, 0x9f, 0x76, 0xf8, 0x6d, 0x4d, 0xc2, 0x26, 0x1f, 0xea, 0x40, 0x91, - 0x3b, 0x34, 0x2d, 0x17, 0x84, 0xf2, 0x97, 0xa6, 0x50, 0x5e, 0x99, 0x93, 0x1f, 0x14, 0x6d, 0x77, - 0xfe, 0x44, 0xb1, 0xc4, 0x40, 0x3f, 0xb4, 0xa0, 0xac, 0x4e, 0x1b, 0x26, 0xd2, 0x94, 0xd7, 0xdb, - 0x1e, 0x23, 0x5d, 0x8f, 0xb2, 0x72, 0x51, 0x28, 0x50, 0x3d, 0x9d, 0x4b, 0x3d, 0x15, 0x05, 0xfd, - 0x70, 0xd7, 0xf3, 0x9b, 0xb5, 0x4d, 0x85, 0x54, 0xae, 0x4f, 0x10, 0x8c, 0x27, 0x42, 0xa2, 0x57, - 0x2d, 0x58, 0xf3, 0x9d, 0x1e, 0xa1, 0xa1, 0xc3, 0x37, 0x55, 0x92, 0x6b, 0x5d, 0xc7, 0xed, 0x08, - 0x8d, 0xe6, 0xef, 0x4c, 0x23, 0x5b, 0x69, 0xb4, 0xb6, 0x37, 0x51, 0x34, 0xfe, 0x00, 0x58, 0xfb, - 0x8f, 0x79, 0x58, 0x32, 0x1c, 0xe1, 0x1e, 0x44, 0x96, 0x6e, 0x2a, 0xb2, 0x3c, 0x3d, 0x1b, 0x07, - 0x9e, 0x14, 0x5a, 0x10, 0x83, 0x79, 0xca, 0x1c, 0xd6, 0xa7, 0xc2, 0x49, 0x97, 0x2e, 0x5c, 0x99, - 0x11, 0x9e, 0x90, 0x59, 0x5b, 0x55, 0x88, 0xf3, 0xf2, 0x19, 0x2b, 0x2c, 0xf4, 0x22, 0x2c, 0x06, - 0x21, 0xcf, 0x19, 0xfc, 0x74, 0x14, 0x04, 0xf0, 0xf6, 0x14, 0xc0, 0xd7, 0x62, 0x59, 0xb5, 0x95, - 0xe3, 0xa3, 0x8d, 0xc5, 0xe4, 0x11, 0x6b, 0x14, 0xdb, 0x85, 0xfb, 0x0d, 0xfd, 0xea, 0x81, 0xdf, - 0xf4, 0xc4, 0x86, 0x6e, 0x42, 0x81, 0x0d, 0xc3, 0x38, 0x29, 0x25, 0x26, 0x3a, 0x18, 0x86, 0x04, - 0x0b, 0x0a, 0x4f, 0x43, 0x3d, 0x42, 0xa9, 0xd3, 0x22, 0xd9, 0x34, 0x74, 0x55, 0x2e, 0xe3, 0x98, - 0x6e, 0xbf, 0x08, 0x0f, 0x8e, 0x8f, 0x1a, 0xe8, 0x23, 0x30, 0x4f, 0x49, 0x34, 0x20, 0x91, 0x02, - 0xd2, 0x96, 0x11, 0xab, 0x58, 0x51, 0x51, 0x15, 0x16, 0x13, 0x6f, 0x54, 0x70, 0xe7, 0x14, 0xeb, - 0xa2, 0x76, 0x61, 0xcd, 0x63, 0xbf, 0x63, 0xc1, 0x19, 0x03, 0xf3, 0x1e, 0x24, 0x87, 0x4e, 0x3a, - 0x39, 0x5c, 0x9a, 0x8d, 0xc7, 0x4c, 0xc8, 0x0e, 0xbf, 0xcf, 0xc3, 0x39, 0xd3, 0xaf, 0xc4, 0xf1, - 0x14, 0x95, 0x01, 0x09, 0x83, 0x67, 0xf0, 0x15, 0x65, 0x4e, 0x5d, 0x19, 0xc8, 0x65, 0x1c, 0xd3, - 0xf9, 0xfe, 0x86, 0x0e, 0x6b, 0x2b, 0x5b, 0x26, 0xfb, 0xbb, 0xef, 0xb0, 0x36, 0x16, 0x14, 0x1e, - 0xac, 0x89, 0x3f, 0xf0, 0xa2, 0xc0, 0xef, 0x11, 0x9f, 0x65, 0x83, 0xf5, 0x45, 0x4d, 0xc2, 0x26, - 0x1f, 0xfa, 0x02, 0xac, 0x32, 0x27, 0x6a, 0x11, 0x86, 0xc9, 0xc0, 0xa3, 0xb1, 0x23, 0x2f, 0xd6, - 0x1e, 0x54, 0x6f, 0xae, 0x1e, 0xa4, 0xa8, 0x38, 0xc3, 0x8d, 0x5e, 0xb7, 0xe0, 0x21, 0x37, 0xe8, - 0x85, 0x81, 0x4f, 0x7c, 0xb6, 0xef, 0x44, 0x4e, 0x8f, 0x30, 0x12, 0x5d, 0x1b, 0x90, 0x28, 0xf2, - 0x9a, 0x84, 0xaa, 0x10, 0x7c, 0x75, 0x0a, 0xeb, 0xd6, 0x47, 0xa4, 0xd7, 0x1e, 0x56, 0xca, 0x3d, - 0x54, 0x9f, 0x8c, 0x8c, 0x3f, 0x48, 0x2d, 0x9e, 0x9b, 0x07, 0x4e, 0xb7, 0x4f, 0xe8, 0x25, 0x8f, - 0x67, 0xaa, 0x79, 0x9d, 0x9b, 0x9f, 0xd5, 0xcb, 0xd8, 0xe4, 0xb1, 0x5f, 0xcf, 0xa7, 0x5c, 0xb4, - 0x11, 0xc7, 0x1d, 0xb1, 0x97, 0xca, 0x41, 0x67, 0x15, 0x77, 0x64, 0xf8, 0xd6, 0xa7, 0x4b, 0x96, - 0x08, 0x0a, 0x0b, 0x7d, 0xc7, 0x12, 0x89, 0x39, 0x3e, 0x95, 0x2a, 0xc6, 0xde, 0x85, 0x22, 0xc1, - 0xcc, 0xf5, 0xf1, 0x22, 0x36, 0xa1, 0xb9, 0x0b, 0x87, 0x32, 0x47, 0x2b, 0x8f, 0x4b, 0x5c, 0x38, - 0x4e, 0xdd, 0x31, 0x1d, 0xf5, 0x01, 0xe8, 0xd0, 0x77, 0xf7, 0x83, 0xae, 0xe7, 0x0e, 0x55, 0xb8, - 0x9c, 0xa6, 0x24, 0x6b, 0x24, 0xc2, 0x6a, 0xab, 0x3c, 0x0d, 0xe9, 0x67, 0x6c, 0x00, 0xd9, 0xaf, - 0xcd, 0xa7, 0x8f, 0x9e, 0x0c, 0xdd, 0x3f, 0xb6, 0xe0, 0x2c, 0xf7, 0x0f, 0x27, 0xf2, 0x68, 0xe0, - 0x63, 0x42, 0xfb, 0x5d, 0xa6, 0xf6, 0x70, 0x77, 0x4a, 0x5f, 0x35, 0x45, 0xd6, 0xca, 0xca, 0x1c, - 0x67, 0xb3, 0x14, 0x3c, 0x02, 0x8f, 0x18, 0x2c, 0xb4, 0x3d, 0xca, 0x82, 0x68, 0xa8, 0x62, 0xd2, - 0x34, 0xf5, 0xf8, 0x36, 0x09, 0xbb, 0xc1, 0x90, 0x1f, 0xf1, 0x1d, 0xff, 0x30, 0xd0, 0xdb, 0x72, - 0x59, 0x22, 0xe0, 0x18, 0x0a, 0x7d, 0xc3, 0x02, 0x08, 0xe3, 0x03, 0xc2, 0xf3, 0xe7, 0x5d, 0x38, - 0xaf, 0x49, 0xa9, 0x90, 0x2c, 0x51, 0x6c, 0x80, 0xa2, 0x00, 0xe6, 0xdb, 0xc4, 0xe9, 0xb2, 0xb6, - 0x72, 0x8b, 0xa7, 0xa6, 0x80, 0xbf, 0x2c, 0x04, 0x65, 0x33, 0xb7, 0x5c, 0xc5, 0x0a, 0x06, 0x7d, - 0xcb, 0x82, 0xd5, 0x24, 0xa9, 0x72, 0x5e, 0x52, 0x2e, 0x4e, 0xdd, 0x02, 0x5d, 0x4b, 0x09, 0xac, - 0x21, 0x1e, 0x3d, 0xd3, 0x6b, 0x38, 0x03, 0x8a, 0xbe, 0x69, 0x01, 0xb8, 0x71, 0x12, 0xa7, 0xaa, - 0x3a, 0xbc, 0x36, 0x9b, 0x83, 0x9c, 0x14, 0x07, 0xda, 0xfc, 0xc9, 0x12, 0xc5, 0x06, 0xac, 0xfd, - 0x9e, 0x05, 0x0f, 0x18, 0x2f, 0x5e, 0x77, 0x98, 0xdb, 0xbe, 0x38, 0xe0, 0xd9, 0x61, 0x37, 0x55, - 0x56, 0x7c, 0xc6, 0x2c, 0x2b, 0xde, 0x3f, 0xda, 0xf8, 0xe8, 0xa4, 0xb6, 0xfa, 0x16, 0x97, 0x50, - 0x11, 0x22, 0x8c, 0x0a, 0xe4, 0x65, 0x58, 0x32, 0x74, 0x56, 0x51, 0x6b, 0x56, 0x79, 0x37, 0x09, - 0x55, 0xc6, 0x22, 0x36, 0xf1, 0xec, 0x3f, 0xe7, 0x60, 0x41, 0x15, 0xf4, 0xa7, 0xae, 0x63, 0x36, - 0xa1, 0xc0, 0x6b, 0x94, 0x6c, 0xda, 0x15, 0x4d, 0xbe, 0xa0, 0xa0, 0x10, 0xe6, 0x5d, 0x31, 0x1e, - 0x50, 0x95, 0xe7, 0xe5, 0x69, 0x4e, 0x8e, 0xd4, 0x4e, 0x8e, 0x1b, 0xb4, 0x4e, 0xf2, 0x19, 0x2b, - 0x1c, 0xde, 0xf1, 0x9c, 0x71, 0x03, 0xdf, 0x27, 0xae, 0x76, 0xde, 0xc2, 0xd4, 0x55, 0x76, 0x3d, - 0x2d, 0xb1, 0xf6, 0x7f, 0x0a, 0xfd, 0x4c, 0x86, 0x80, 0xb3, 0xd8, 0xf6, 0x6f, 0xf3, 0xb0, 0x92, - 0xd2, 0x1c, 0x3d, 0x0a, 0xa5, 0x3e, 0x25, 0x91, 0xaf, 0xa7, 0x24, 0x49, 0x21, 0xf6, 0x8c, 0x5a, - 0xc7, 0x09, 0x07, 0xe7, 0x0e, 0x1d, 0x4a, 0x6f, 0x05, 0x51, 0x53, 0xd9, 0x39, 0xe1, 0xde, 0x57, - 0xeb, 0x38, 0xe1, 0xe0, 0x65, 0xce, 0x0d, 0xe2, 0x44, 0x24, 0x3a, 0x08, 0x3a, 0x64, 0xa4, 0x27, - 0xad, 0x69, 0x12, 0x36, 0xf9, 0x84, 0xd1, 0x58, 0x97, 0xd6, 0xbb, 0x1e, 0xf1, 0x99, 0x54, 0x73, - 0x06, 0x46, 0x3b, 0xb8, 0xd2, 0x30, 0x25, 0x6a, 0xa3, 0x65, 0x08, 0x38, 0x8b, 0xcd, 0xa3, 0xee, - 0x8a, 0x73, 0x8b, 0xea, 0xe9, 0x92, 0x8a, 0x3f, 0xd3, 0xb8, 0x4f, 0x6a, 0x5a, 0x55, 0x3b, 0x77, - 0x7c, 0xb4, 0x91, 0x1e, 0x60, 0xe1, 0x34, 0xa2, 0xfd, 0x27, 0x0b, 0xe2, 0xa9, 0xd5, 0x3d, 0xa8, - 0xb7, 0x5b, 0xe9, 0x7a, 0xbb, 0x36, 0xfd, 0x39, 0x99, 0x50, 0x6b, 0xbf, 0x9d, 0x87, 0x91, 0x6c, - 0x8b, 0x5e, 0xe0, 0x71, 0x96, 0xaf, 0x91, 0xe6, 0x56, 0x9c, 0xe8, 0x3f, 0x7e, 0xba, 0xaf, 0x3b, - 0xf0, 0x7a, 0xc4, 0x0c, 0xa1, 0xb1, 0x14, 0x6c, 0x48, 0x44, 0xaf, 0x58, 0x1a, 0xe0, 0x20, 0x50, - 0xb1, 0x6d, 0xb6, 0xd5, 0xe0, 0x88, 0x0a, 0x07, 0x01, 0x36, 0x30, 0xd1, 0x93, 0x49, 0x0f, 0x5c, - 0x14, 0x87, 0xc2, 0x4e, 0x77, 0xad, 0xef, 0xa7, 0x8a, 0x90, 0x4c, 0x27, 0x3b, 0x84, 0xc5, 0x48, - 0x0d, 0x0d, 0xe2, 0x2c, 0x34, 0x8d, 0x27, 0xc6, 0x03, 0x08, 0x19, 0x4a, 0x92, 0xce, 0x2f, 0x5e, - 0xa6, 0x58, 0xa3, 0xf1, 0xe3, 0x1f, 0xc5, 0xad, 0xc7, 0x42, 0xfa, 0xf8, 0x27, 0x4d, 0x47, 0xc2, - 0x61, 0xff, 0xc0, 0x02, 0x34, 0x5a, 0x60, 0xf0, 0x7e, 0x33, 0xa9, 0xf6, 0x55, 0xc8, 0x49, 0x50, - 0x13, 0x76, 0xac, 0x79, 0x4e, 0x11, 0xd8, 0x1f, 0x86, 0xa2, 0xa8, 0xfe, 0x55, 0x88, 0x49, 0x7c, - 0x4d, 0xf4, 0x07, 0x58, 0xd2, 0xec, 0x3f, 0x58, 0x90, 0x0d, 0x90, 0x22, 0xb7, 0xc8, 0x7d, 0xc8, - 0xe6, 0x96, 0xb4, 0xcd, 0x4f, 0xdf, 0x90, 0xa3, 0xe7, 0x61, 0xc9, 0x61, 0x8c, 0xf4, 0x42, 0x26, - 0xdc, 0x37, 0x7f, 0xdb, 0xee, 0x2b, 0x0a, 0xe4, 0xab, 0x41, 0xd3, 0x3b, 0xf4, 0x84, 0xeb, 0x9a, - 0xe2, 0xec, 0x7f, 0xe5, 0x60, 0x35, 0x5d, 0x2e, 0xa6, 0x36, 0x25, 0x77, 0xd2, 0xa6, 0x9c, 0xd8, - 0x03, 0xe6, 0xff, 0x3b, 0x7b, 0xc0, 0x17, 0x00, 0x9a, 0xe2, 0xb3, 0x85, 0x51, 0x0b, 0x77, 0x1e, - 0x13, 0xb6, 0x13, 0x29, 0xd8, 0x90, 0x88, 0xd6, 0x20, 0xe7, 0x35, 0xc5, 0x61, 0xcc, 0xd7, 0x40, - 0xf1, 0xe6, 0x76, 0xb6, 0x71, 0xce, 0x6b, 0xda, 0x14, 0x96, 0xcd, 0x42, 0xf5, 0xd4, 0x4e, 0xf3, - 0x39, 0x58, 0x91, 0xbf, 0xb6, 0x09, 0x73, 0xbc, 0x2e, 0x55, 0xbb, 0xf3, 0x80, 0x62, 0x5f, 0x69, - 0x98, 0x44, 0x9c, 0xe6, 0xb5, 0x7f, 0x96, 0x03, 0xb8, 0x1c, 0x04, 0x1d, 0x85, 0x19, 0x9f, 0x01, - 0x6b, 0xe2, 0x19, 0xd8, 0x84, 0x42, 0xc7, 0xf3, 0x9b, 0xd9, 0x53, 0xb2, 0xeb, 0xf9, 0x4d, 0x2c, - 0x28, 0xe8, 0x02, 0x80, 0x13, 0x7a, 0xcf, 0x92, 0x88, 0xea, 0x09, 0x71, 0x62, 0x97, 0xad, 0xfd, - 0x1d, 0x45, 0xc1, 0x06, 0x17, 0x7a, 0x54, 0x15, 0x95, 0x72, 0xd0, 0x50, 0xce, 0x14, 0x95, 0x25, - 0xae, 0xa1, 0x51, 0x35, 0x3e, 0x91, 0x09, 0x6b, 0x9b, 0x23, 0x61, 0x4d, 0x17, 0xd9, 0xfb, 0x6d, - 0x87, 0x92, 0x71, 0x07, 0x6c, 0xfe, 0x84, 0x89, 0x57, 0x03, 0x4a, 0x4f, 0x5f, 0x3f, 0x90, 0xa5, - 0x82, 0x0d, 0x79, 0xcf, 0x91, 0x51, 0x24, 0xaf, 0xdd, 0x7e, 0x87, 0xd2, 0xbe, 0xd8, 0x61, 0x4e, - 0x44, 0x0f, 0x43, 0x9e, 0xbc, 0x14, 0x0a, 0xbb, 0xe4, 0x75, 0xa4, 0xb9, 0xf8, 0x52, 0xe8, 0x45, - 0x84, 0x72, 0x26, 0xf2, 0x52, 0x68, 0xff, 0xc3, 0x02, 0x3d, 0xc4, 0x43, 0x87, 0x50, 0xe0, 0x5d, - 0xa9, 0xca, 0x3d, 0x97, 0xa7, 0x6c, 0x7c, 0xf5, 0xac, 0xb0, 0x24, 0x46, 0xa1, 0x43, 0xdf, 0xc5, - 0x42, 0x3e, 0x1a, 0x40, 0x29, 0x0a, 0xba, 0xdd, 0x1b, 0x8e, 0xdb, 0x99, 0x41, 0x1a, 0xc2, 0x4a, - 0x94, 0xc6, 0x5b, 0x16, 0x41, 0x40, 0x2d, 0xe3, 0x04, 0xcb, 0xfe, 0x4d, 0x11, 0x32, 0xdd, 0x0e, - 0xea, 0x9b, 0xf3, 0x51, 0x6b, 0x86, 0xf3, 0xd1, 0xc4, 0xe2, 0xe3, 0x66, 0xa4, 0xe8, 0x71, 0x28, - 0x86, 0xdc, 0x11, 0x94, 0xdb, 0x6e, 0xc4, 0x91, 0x5b, 0x78, 0xc7, 0x18, 0x7f, 0x91, 0xdc, 0xa6, - 0xbb, 0xe4, 0x4f, 0x88, 0xc7, 0x5f, 0x97, 0xa3, 0x0c, 0x35, 0x36, 0x90, 0x91, 0x63, 0x6f, 0x56, - 0x3b, 0xaa, 0x26, 0x07, 0xc9, 0x4c, 0x43, 0xcd, 0x0b, 0x0c, 0x44, 0xf4, 0x3d, 0x0b, 0x56, 0x63, - 0xc3, 0x2b, 0x25, 0x8a, 0x77, 0x45, 0x09, 0xd1, 0xc3, 0xe2, 0x14, 0x12, 0xce, 0x20, 0xa3, 0x2f, - 0xc1, 0x22, 0x65, 0x4e, 0x24, 0x53, 0xd3, 0xfc, 0x6d, 0x47, 0xd1, 0x64, 0x2f, 0x1b, 0xb1, 0x10, - 0xac, 0xe5, 0xa1, 0xe7, 0x00, 0x0e, 0x3d, 0xdf, 0xa3, 0x6d, 0x21, 0x7d, 0xe1, 0xce, 0x12, 0xdf, - 0xa5, 0x44, 0x02, 0x36, 0xa4, 0xd9, 0x3f, 0xb1, 0x00, 0x8d, 0x49, 0x0b, 0x51, 0x5c, 0xa8, 0x5a, - 0x77, 0x23, 0x6d, 0x8d, 0xad, 0x59, 0x9f, 0x2c, 0xfd, 0xfc, 0xb5, 0x8d, 0xb9, 0x57, 0xde, 0xd9, - 0x9c, 0xb3, 0xbf, 0x9d, 0x83, 0x25, 0xe3, 0xd6, 0xeb, 0x14, 0x41, 0x3a, 0x73, 0x4b, 0x97, 0x3b, - 0xe5, 0x2d, 0xdd, 0x23, 0x50, 0x0a, 0x83, 0xae, 0xe7, 0x7a, 0x2a, 0x41, 0x2f, 0xca, 0x93, 0xbd, - 0xaf, 0xd6, 0x70, 0x42, 0x45, 0x0c, 0x16, 0x6f, 0xde, 0x62, 0x22, 0x38, 0xc6, 0x77, 0x7a, 0xf5, - 0x29, 0x8c, 0x12, 0x07, 0x5a, 0xbd, 0xf3, 0xf1, 0x0a, 0xc5, 0x1a, 0xc8, 0xfe, 0x4b, 0x0e, 0x40, - 0x5c, 0x8a, 0x7a, 0x62, 0x4c, 0xb5, 0x09, 0x85, 0x88, 0x84, 0x41, 0xd6, 0x0e, 0x9c, 0x03, 0x0b, - 0x4a, 0xaa, 0xeb, 0xcc, 0xdd, 0x56, 0xd7, 0x99, 0x3f, 0xb1, 0xeb, 0xe4, 0x69, 0x97, 0xb6, 0xf7, - 0x23, 0x6f, 0xe0, 0x30, 0xb2, 0x4b, 0x86, 0x2a, 0x77, 0xe9, 0xb4, 0xdb, 0xb8, 0xac, 0x89, 0x38, - 0xcd, 0x3b, 0xb6, 0x61, 0x2f, 0xfe, 0x07, 0x1b, 0xf6, 0xb7, 0x2d, 0x58, 0xd5, 0x96, 0xfd, 0xdf, - 0xba, 0x87, 0xd7, 0x7a, 0x4f, 0xe8, 0xfe, 0xfe, 0x69, 0xc1, 0x99, 0xb8, 0xcf, 0x50, 0x75, 0xcf, - 0x4c, 0x0a, 0x9d, 0xd4, 0x8d, 0x56, 0xfe, 0xe4, 0x1b, 0x2d, 0x33, 0x9d, 0x14, 0x4e, 0x48, 0x27, - 0x9f, 0xcf, 0x94, 0x38, 0x1f, 0x1a, 0x29, 0x71, 0x50, 0xd2, 0x51, 0x0d, 0x7d, 0x37, 0x5d, 0x12, - 0xda, 0xbf, 0xb6, 0x60, 0x39, 0x26, 0xef, 0x05, 0x4d, 0xd1, 0xb9, 0x50, 0xe1, 0x64, 0x56, 0xba, - 0x73, 0x91, 0xee, 0x20, 0x69, 0xa8, 0x0f, 0x25, 0xb7, 0xed, 0x75, 0x9b, 0x11, 0xf1, 0xd5, 0xb6, - 0x3c, 0x35, 0x83, 0x86, 0x8f, 0xe3, 0x6b, 0x57, 0xa8, 0x2b, 0x00, 0x9c, 0x40, 0xd9, 0xbf, 0xcb, - 0xc3, 0x4a, 0xaa, 0x3b, 0xe4, 0xe1, 0x4b, 0x5e, 0x29, 0x35, 0x0c, 0x9d, 0x93, 0xf0, 0x75, 0xa0, - 0x49, 0xd8, 0xe4, 0xe3, 0xfb, 0xd1, 0xf5, 0x06, 0x52, 0x46, 0xf6, 0x86, 0xf1, 0x4a, 0x4c, 0xc0, - 0x9a, 0xc7, 0x68, 0x8f, 0xf3, 0xb7, 0xdd, 0x1e, 0xbf, 0x6a, 0x01, 0x12, 0x9f, 0xc0, 0x25, 0x27, - 0x5d, 0xac, 0x8a, 0x85, 0x33, 0xb3, 0xdb, 0x9a, 0xd2, 0x08, 0xd5, 0x47, 0xa0, 0xf0, 0x18, 0x78, - 0x63, 0x6a, 0x5e, 0xbc, 0x27, 0x53, 0x73, 0xfb, 0x6b, 0x70, 0x6e, 0xa4, 0x1e, 0x54, 0x5d, 0x8e, - 0x35, 0xae, 0xcb, 0xe1, 0x9e, 0x18, 0x46, 0x7d, 0x5f, 0x6e, 0x50, 0x49, 0x7b, 0xe2, 0x3e, 0x5f, - 0xc4, 0x92, 0xc6, 0x5b, 0x9f, 0x66, 0x34, 0xc4, 0x7d, 0xd9, 0x3e, 0x94, 0x34, 0xfa, 0xb6, 0x58, - 0xc5, 0x8a, 0x6a, 0xff, 0x32, 0x0f, 0x2b, 0xa9, 0x1a, 0x25, 0xd5, 0xa5, 0x5a, 0x27, 0x76, 0xa9, - 0xb3, 0x54, 0x06, 0xbd, 0x0c, 0xcb, 0x54, 0x1c, 0xc5, 0xc8, 0x61, 0xa4, 0x35, 0x9c, 0xc1, 0xbd, - 0x45, 0xc3, 0x10, 0x57, 0x3b, 0x7b, 0x7c, 0xb4, 0xb1, 0x6c, 0xae, 0xe0, 0x14, 0x1c, 0xfa, 0xa9, - 0x05, 0x28, 0x1c, 0x77, 0xd9, 0x6a, 0x4d, 0x59, 0xb1, 0x8c, 0xd6, 0x43, 0xb5, 0x07, 0xb9, 0x4b, - 0x8e, 0xe9, 0xad, 0xc7, 0x28, 0x60, 0xff, 0x2a, 0x07, 0xf7, 0x8d, 0xa9, 0x23, 0xd1, 0x2d, 0x73, - 0xbe, 0x24, 0xeb, 0xaa, 0xa7, 0x67, 0x70, 0x6c, 0x54, 0x80, 0x97, 0xff, 0x97, 0x38, 0x71, 0xba, - 0x74, 0xf2, 0x20, 0xe3, 0x10, 0x8a, 0xed, 0x20, 0xe8, 0xc4, 0x13, 0x8b, 0x69, 0x12, 0x95, 0xee, - 0xb3, 0x6b, 0x8b, 0xdc, 0xcb, 0xf8, 0x33, 0xc5, 0x52, 0xbc, 0xfd, 0x5d, 0x0b, 0x8c, 0xeb, 0x4a, - 0xf4, 0x55, 0x58, 0x74, 0xfa, 0x2c, 0xe8, 0x39, 0x8c, 0x34, 0x55, 0xfa, 0xdd, 0x9b, 0xc9, 0xc5, - 0xe8, 0x56, 0x2c, 0x55, 0x5a, 0x28, 0x79, 0xc4, 0x1a, 0xcf, 0x7e, 0x52, 0xee, 0x58, 0xe6, 0x05, - 0x7d, 0x5a, 0xac, 0xc9, 0xa7, 0xc5, 0xfe, 0xbb, 0x05, 0x29, 0x2f, 0x45, 0x3d, 0x28, 0x72, 0x95, - 0x86, 0x33, 0xb8, 0x0e, 0x37, 0xe5, 0x6e, 0x71, 0x99, 0xd2, 0x8e, 0xe2, 0x27, 0x96, 0x28, 0xc8, - 0x83, 0x02, 0x37, 0xa8, 0xea, 0x73, 0x77, 0x67, 0x84, 0xc6, 0xb7, 0x4a, 0xb6, 0xd5, 0xfc, 0x17, - 0x16, 0x10, 0xf6, 0x13, 0x70, 0x6e, 0x44, 0x23, 0x6e, 0xa4, 0xc3, 0x20, 0xbe, 0xfd, 0x37, 0x8c, - 0x74, 0x89, 0x2f, 0x62, 0x49, 0xe3, 0xf9, 0xf9, 0x6c, 0x56, 0x3c, 0x3f, 0xc0, 0xe7, 0x68, 0x56, - 0xde, 0x5d, 0xb1, 0xda, 0xff, 0x2b, 0xa5, 0x46, 0xd5, 0xc7, 0xa3, 0x1a, 0xf0, 0x1d, 0xcd, 0x5e, - 0x5e, 0xf0, 0x33, 0xe4, 0xf9, 0x94, 0xb8, 0xfd, 0x28, 0xfe, 0x50, 0x3d, 0x15, 0x51, 0xeb, 0x38, - 0xe1, 0x40, 0x17, 0x00, 0xe4, 0xe5, 0xd9, 0x9e, 0x2e, 0xc4, 0x93, 0x89, 0x50, 0x23, 0xa1, 0x60, - 0x83, 0x8b, 0xf7, 0x22, 0x2e, 0x89, 0xd8, 0x36, 0x2f, 0x3f, 0x79, 0xdc, 0x5d, 0x96, 0xbd, 0x48, - 0x5d, 0xad, 0xe1, 0x84, 0x8a, 0x3e, 0x0c, 0x0b, 0x1d, 0x32, 0x14, 0x8c, 0x05, 0xc1, 0xb8, 0xc4, - 0x2b, 0xaa, 0x5d, 0xb9, 0x84, 0x63, 0x1a, 0xb2, 0x61, 0xde, 0x75, 0x04, 0x57, 0x51, 0x70, 0x81, - 0xb8, 0x47, 0xdb, 0x12, 0x4c, 0x8a, 0x52, 0xab, 0xbc, 0xf1, 0xee, 0xfa, 0xdc, 0x9b, 0xef, 0xae, - 0xcf, 0xbd, 0xf5, 0xee, 0xfa, 0xdc, 0x2b, 0xc7, 0xeb, 0xd6, 0x1b, 0xc7, 0xeb, 0xd6, 0x9b, 0xc7, - 0xeb, 0xd6, 0x5b, 0xc7, 0xeb, 0xd6, 0xdf, 0x8e, 0xd7, 0xad, 0x1f, 0xbd, 0xb7, 0x3e, 0xf7, 0x5c, - 0x29, 0x36, 0xed, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xda, 0xda, 0x8a, 0x68, 0x99, 0x2d, 0x00, - 0x00, + 0x15, 0x9e, 0xf6, 0xcf, 0x8c, 0xe7, 0xcd, 0xcf, 0xee, 0x56, 0x7e, 0x30, 0x13, 0x69, 0x66, 0xd4, + 0xe1, 0x27, 0xa0, 0xc4, 0x66, 0x17, 0x02, 0x21, 0x20, 0xa4, 0xb1, 0x67, 0x37, 0x3b, 0x99, 0xdd, + 0xd9, 0xa1, 0x3c, 0xc9, 0x4a, 0x21, 0x0a, 0xf4, 0xb6, 0x6b, 0xec, 0x5e, 0xdb, 0xdd, 0x9d, 0xae, + 0xb2, 0x37, 0x16, 0x04, 0x6d, 0x84, 0x40, 0xfc, 0x4a, 0x40, 0x84, 0x40, 0xe2, 0x92, 0x03, 0x5c, + 0xb8, 0x70, 0x89, 0x38, 0x70, 0x83, 0x03, 0xca, 0x31, 0x07, 0x10, 0x51, 0x88, 0x56, 0x64, 0x72, + 0x41, 0xe2, 0x80, 0xb8, 0xe6, 0x84, 0xea, 0xa7, 0xbb, 0xaa, 0xdb, 0x76, 0x66, 0x76, 0xed, 0x5d, + 0xe0, 0xe6, 0xae, 0xf7, 0xfa, 0x7d, 0xaf, 0x5f, 0xbd, 0x7a, 0x7f, 0x65, 0xd8, 0x69, 0x79, 0xac, + 0xdd, 0xbf, 0x56, 0x71, 0x83, 0x5e, 0xd5, 0x89, 0x5a, 0x41, 0x18, 0x05, 0xd7, 0xc5, 0x8f, 0xc7, + 0xdc, 0x66, 0x35, 0xec, 0xb4, 0xaa, 0x4e, 0xe8, 0xd1, 0xaa, 0x13, 0x86, 0x5d, 0xcf, 0x75, 0x98, + 0x17, 0xf8, 0xd5, 0xc1, 0x59, 0xa7, 0x1b, 0xb6, 0x9d, 0xb3, 0xd5, 0x16, 0xf1, 0x49, 0xe4, 0x30, + 0xd2, 0xac, 0x84, 0x51, 0xc0, 0x02, 0xf4, 0x79, 0x2d, 0xaa, 0x12, 0x8b, 0x12, 0x3f, 0xbe, 0xea, + 0x36, 0x2b, 0x61, 0xa7, 0x55, 0xe1, 0xa2, 0x2a, 0x86, 0xa8, 0x4a, 0x2c, 0x6a, 0xed, 0x31, 0x43, + 0x8b, 0x56, 0xd0, 0x0a, 0xaa, 0x42, 0xe2, 0xb5, 0xfe, 0xa1, 0x78, 0x12, 0x0f, 0xe2, 0x97, 0x44, + 0x5a, 0xfb, 0x4c, 0xe7, 0x09, 0x5a, 0xf1, 0x02, 0xae, 0x5b, 0xcf, 0x71, 0xdb, 0x9e, 0x4f, 0xa2, + 0xa1, 0x56, 0xb6, 0x47, 0x98, 0x53, 0x1d, 0x8c, 0xe8, 0xb7, 0x56, 0x9d, 0xf4, 0x56, 0xd4, 0xf7, + 0x99, 0xd7, 0x23, 0x23, 0x2f, 0x7c, 0xf6, 0xb8, 0x17, 0xa8, 0xdb, 0x26, 0x3d, 0x67, 0xe4, 0xbd, + 0x4f, 0x4f, 0x7a, 0xaf, 0xcf, 0xbc, 0x6e, 0xd5, 0xf3, 0x19, 0x65, 0x51, 0xf6, 0x25, 0xfb, 0x45, + 0x58, 0xd9, 0xba, 0xda, 0xd8, 0xea, 0xb3, 0x76, 0x3d, 0xf0, 0x0f, 0xbd, 0x16, 0x7a, 0x1c, 0x96, + 0xdc, 0x6e, 0x9f, 0x32, 0x12, 0xed, 0x39, 0x3d, 0x52, 0xb6, 0x36, 0xad, 0x47, 0x16, 0x6b, 0xf7, + 0xbd, 0x71, 0x6b, 0x63, 0xee, 0xe8, 0xd6, 0xc6, 0x52, 0x5d, 0x93, 0xb0, 0xc9, 0x87, 0x3e, 0x01, + 0x0b, 0x51, 0xd0, 0x25, 0x5b, 0x78, 0xaf, 0x9c, 0x13, 0xaf, 0x9c, 0x52, 0xaf, 0x2c, 0x60, 0xb9, + 0x8c, 0x63, 0xba, 0xfd, 0x37, 0x0b, 0x60, 0x2b, 0x0c, 0xf7, 0xa3, 0xe0, 0x3a, 0x71, 0x19, 0xfa, + 0x1a, 0x94, 0xb8, 0xe9, 0x9a, 0x0e, 0x73, 0x04, 0xda, 0xd2, 0xb9, 0x4f, 0x55, 0xe4, 0x97, 0x54, + 0xcc, 0x2f, 0xd1, 0x5b, 0xc9, 0xb9, 0x2b, 0x83, 0xb3, 0x95, 0x2b, 0xd7, 0xf8, 0xfb, 0x97, 0x09, + 0x73, 0x6a, 0x48, 0x81, 0x81, 0x5e, 0xc3, 0x89, 0x54, 0xd4, 0x81, 0x02, 0x0d, 0x89, 0x2b, 0x14, + 0x5b, 0x3a, 0xb7, 0x53, 0xb9, 0x63, 0x87, 0xa9, 0x68, 0xb5, 0x1b, 0x21, 0x71, 0x6b, 0xcb, 0x0a, + 0xb6, 0xc0, 0x9f, 0xb0, 0x00, 0xb1, 0xdf, 0xb6, 0x60, 0x55, 0xb3, 0x5d, 0xf2, 0x28, 0x43, 0xcf, + 0x8f, 0x7c, 0x61, 0xe5, 0x64, 0x5f, 0xc8, 0xdf, 0x16, 0xdf, 0x77, 0x5a, 0x01, 0x95, 0xe2, 0x15, + 0xe3, 0xeb, 0xae, 0x43, 0xd1, 0x63, 0xa4, 0x47, 0xcb, 0xb9, 0xcd, 0xfc, 0x23, 0x4b, 0xe7, 0xce, + 0xcf, 0xe4, 0xf3, 0x6a, 0x2b, 0x0a, 0xb1, 0xb8, 0xc3, 0x65, 0x63, 0x09, 0x61, 0xff, 0xb2, 0x68, + 0x7e, 0x1c, 0xff, 0x6a, 0x74, 0x16, 0x96, 0x68, 0xd0, 0x8f, 0x5c, 0x82, 0x49, 0x18, 0xd0, 0xb2, + 0xb5, 0x99, 0xe7, 0x9b, 0xcf, 0x7d, 0xa5, 0xa1, 0x97, 0xb1, 0xc9, 0x83, 0x7e, 0x60, 0xc1, 0x72, + 0x93, 0x50, 0xe6, 0xf9, 0x02, 0x3f, 0xd6, 0xfc, 0xcb, 0xd3, 0x69, 0x1e, 0x2f, 0x6e, 0x6b, 0xc9, + 0xb5, 0xfb, 0xd5, 0x57, 0x2c, 0x1b, 0x8b, 0x14, 0xa7, 0xc0, 0xb9, 0xc3, 0x37, 0x09, 0x75, 0x23, + 0x2f, 0xe4, 0xcf, 0xe5, 0x7c, 0xda, 0xe1, 0xb7, 0x35, 0x09, 0x9b, 0x7c, 0xa8, 0x03, 0x45, 0xee, + 0xd0, 0xb4, 0x5c, 0x10, 0xca, 0x5f, 0x98, 0x42, 0x79, 0x65, 0x4e, 0x7e, 0x50, 0xb4, 0xdd, 0xf9, + 0x13, 0xc5, 0x12, 0x03, 0xfd, 0xc8, 0x82, 0xb2, 0x3a, 0x6d, 0x98, 0x48, 0x53, 0x5e, 0x6d, 0x7b, + 0x8c, 0x74, 0x3d, 0xca, 0xca, 0x45, 0xa1, 0x40, 0xf5, 0x64, 0x2e, 0xf5, 0x54, 0x14, 0xf4, 0xc3, + 0x5d, 0xcf, 0x6f, 0xd6, 0x36, 0x15, 0x52, 0xb9, 0x3e, 0x41, 0x30, 0x9e, 0x08, 0x89, 0x5e, 0xb5, + 0x60, 0xcd, 0x77, 0x7a, 0x84, 0x86, 0x0e, 0xdf, 0x54, 0x49, 0xae, 0x75, 0x1d, 0xb7, 0x23, 0x34, + 0x9a, 0xbf, 0x33, 0x8d, 0x6c, 0xa5, 0xd1, 0xda, 0xde, 0x44, 0xd1, 0xf8, 0x03, 0x60, 0xed, 0x3f, + 0xe5, 0x61, 0xc9, 0x70, 0x84, 0x7b, 0x10, 0x59, 0xba, 0xa9, 0xc8, 0xf2, 0xf4, 0x6c, 0x1c, 0x78, + 0x52, 0x68, 0x41, 0x0c, 0xe6, 0x29, 0x73, 0x58, 0x9f, 0x0a, 0x27, 0x5d, 0x3a, 0x77, 0x69, 0x46, + 0x78, 0x42, 0x66, 0x6d, 0x55, 0x21, 0xce, 0xcb, 0x67, 0xac, 0xb0, 0xd0, 0x8b, 0xb0, 0x18, 0x84, + 0x3c, 0x67, 0xf0, 0xd3, 0x51, 0x10, 0xc0, 0xdb, 0x53, 0x00, 0x5f, 0x89, 0x65, 0xd5, 0x56, 0x8e, + 0x6e, 0x6d, 0x2c, 0x26, 0x8f, 0x58, 0xa3, 0xd8, 0x2e, 0xdc, 0x6f, 0xe8, 0x57, 0x0f, 0xfc, 0xa6, + 0x27, 0x36, 0x74, 0x13, 0x0a, 0x6c, 0x18, 0xc6, 0x49, 0x29, 0x31, 0xd1, 0xc1, 0x30, 0x24, 0x58, + 0x50, 0x78, 0x1a, 0xea, 0x11, 0x4a, 0x9d, 0x16, 0xc9, 0xa6, 0xa1, 0xcb, 0x72, 0x19, 0xc7, 0x74, + 0xfb, 0x45, 0x78, 0x70, 0x7c, 0xd4, 0x40, 0x1f, 0x83, 0x79, 0x4a, 0xa2, 0x01, 0x89, 0x14, 0x90, + 0xb6, 0x8c, 0x58, 0xc5, 0x8a, 0x8a, 0xaa, 0xb0, 0x98, 0x78, 0xa3, 0x82, 0x3b, 0xa3, 0x58, 0x17, + 0xb5, 0x0b, 0x6b, 0x1e, 0xfb, 0x1d, 0x0b, 0x4e, 0x19, 0x98, 0xf7, 0x20, 0x39, 0x74, 0xd2, 0xc9, + 0xe1, 0xc2, 0x6c, 0x3c, 0x66, 0x42, 0x76, 0xf8, 0x43, 0x1e, 0xce, 0x98, 0x7e, 0x25, 0x8e, 0xa7, + 0xa8, 0x0c, 0x48, 0x18, 0x3c, 0x83, 0x2f, 0x29, 0x73, 0xea, 0xca, 0x40, 0x2e, 0xe3, 0x98, 0xce, + 0xf7, 0x37, 0x74, 0x58, 0x5b, 0xd9, 0x32, 0xd9, 0xdf, 0x7d, 0x87, 0xb5, 0xb1, 0xa0, 0xf0, 0x60, + 0x4d, 0xfc, 0x81, 0x17, 0x05, 0x7e, 0x8f, 0xf8, 0x2c, 0x1b, 0xac, 0xcf, 0x6b, 0x12, 0x36, 0xf9, + 0xd0, 0x97, 0x60, 0x95, 0x39, 0x51, 0x8b, 0x30, 0x4c, 0x06, 0x1e, 0x8d, 0x1d, 0x79, 0xb1, 0xf6, + 0xa0, 0x7a, 0x73, 0xf5, 0x20, 0x45, 0xc5, 0x19, 0x6e, 0xf4, 0xba, 0x05, 0x0f, 0xb9, 0x41, 0x2f, + 0x0c, 0x7c, 0xe2, 0xb3, 0x7d, 0x27, 0x72, 0x7a, 0x84, 0x91, 0xe8, 0xca, 0x80, 0x44, 0x91, 0xd7, + 0x24, 0x54, 0x85, 0xe0, 0xcb, 0x53, 0x58, 0xb7, 0x3e, 0x22, 0xbd, 0xf6, 0xb0, 0x52, 0xee, 0xa1, + 0xfa, 0x64, 0x64, 0xfc, 0x41, 0x6a, 0xf1, 0xdc, 0x3c, 0x70, 0xba, 0x7d, 0x42, 0x2f, 0x78, 0x3c, + 0x53, 0xcd, 0xeb, 0xdc, 0xfc, 0xac, 0x5e, 0xc6, 0x26, 0x8f, 0xfd, 0x7a, 0x3e, 0xe5, 0xa2, 0x8d, + 0x38, 0xee, 0x88, 0xbd, 0x54, 0x0e, 0x3a, 0xab, 0xb8, 0x23, 0xc3, 0xb7, 0x3e, 0x5d, 0xb2, 0x44, + 0x50, 0x58, 0xe8, 0xbb, 0x96, 0x48, 0xcc, 0xf1, 0xa9, 0x54, 0x31, 0xf6, 0x2e, 0x14, 0x09, 0x66, + 0xae, 0x8f, 0x17, 0xb1, 0x09, 0xcd, 0x5d, 0x38, 0x94, 0x39, 0x5a, 0x79, 0x5c, 0xe2, 0xc2, 0x71, + 0xea, 0x8e, 0xe9, 0xa8, 0x0f, 0x40, 0x87, 0xbe, 0xbb, 0x1f, 0x74, 0x3d, 0x77, 0xa8, 0xc2, 0xe5, + 0x34, 0x25, 0x59, 0x23, 0x11, 0x56, 0x5b, 0xe5, 0x69, 0x48, 0x3f, 0x63, 0x03, 0xc8, 0x7e, 0x6d, + 0x3e, 0x7d, 0xf4, 0x64, 0xe8, 0xfe, 0x89, 0x05, 0xa7, 0xb9, 0x7f, 0x38, 0x91, 0x47, 0x03, 0x1f, + 0x13, 0xda, 0xef, 0x32, 0xb5, 0x87, 0xbb, 0x53, 0xfa, 0xaa, 0x29, 0xb2, 0x56, 0x56, 0xe6, 0x38, + 0x9d, 0xa5, 0xe0, 0x11, 0x78, 0xc4, 0x60, 0xa1, 0xed, 0x51, 0x16, 0x44, 0x43, 0x15, 0x93, 0xa6, + 0xa9, 0xc7, 0xb7, 0x49, 0xd8, 0x0d, 0x86, 0xfc, 0x88, 0xef, 0xf8, 0x87, 0x81, 0xde, 0x96, 0x8b, + 0x12, 0x01, 0xc7, 0x50, 0xe8, 0x15, 0x0b, 0x20, 0x8c, 0x0f, 0x08, 0xcf, 0x9f, 0x77, 0xe1, 0xbc, + 0x26, 0xa5, 0x42, 0xb2, 0x44, 0xb1, 0x01, 0x8a, 0x02, 0x98, 0x6f, 0x13, 0xa7, 0xcb, 0xda, 0xca, + 0x2d, 0x9e, 0x9a, 0x02, 0xfe, 0xa2, 0x10, 0x94, 0xcd, 0xdc, 0x72, 0x15, 0x2b, 0x18, 0xf4, 0x6d, + 0x0b, 0x56, 0x93, 0xa4, 0xca, 0x79, 0x49, 0xb9, 0x38, 0x75, 0x0b, 0x74, 0x25, 0x25, 0xb0, 0x86, + 0x78, 0xf4, 0x4c, 0xaf, 0xe1, 0x0c, 0x28, 0xfa, 0x96, 0x05, 0xe0, 0xc6, 0x49, 0x9c, 0xaa, 0xea, + 0xf0, 0xca, 0x6c, 0x0e, 0x72, 0x52, 0x1c, 0x68, 0xf3, 0x27, 0x4b, 0x14, 0x1b, 0xb0, 0xf6, 0x7b, + 0x16, 0x3c, 0x60, 0xbc, 0x78, 0xd5, 0x61, 0x6e, 0xfb, 0xfc, 0x80, 0x67, 0x87, 0xdd, 0x54, 0x59, + 0xf1, 0x39, 0xb3, 0xac, 0x78, 0xff, 0xd6, 0xc6, 0xc7, 0x27, 0xb5, 0xd5, 0x37, 0xb8, 0x84, 0x8a, + 0x10, 0x61, 0x54, 0x20, 0x2f, 0xc3, 0x92, 0xa1, 0xb3, 0x8a, 0x5a, 0xb3, 0xca, 0xbb, 0x49, 0xa8, + 0x32, 0x16, 0xb1, 0x89, 0x67, 0xff, 0x25, 0x07, 0x0b, 0xaa, 0xa0, 0x3f, 0x71, 0x1d, 0xb3, 0x09, + 0x05, 0x5e, 0xa3, 0x64, 0xd3, 0xae, 0x68, 0xf2, 0x05, 0x05, 0x85, 0x30, 0xef, 0x8a, 0xf1, 0x80, + 0xaa, 0x3c, 0x2f, 0x4e, 0x73, 0x72, 0xa4, 0x76, 0x72, 0xdc, 0xa0, 0x75, 0x92, 0xcf, 0x58, 0xe1, + 0xf0, 0x8e, 0xe7, 0x94, 0x1b, 0xf8, 0x3e, 0x71, 0xb5, 0xf3, 0x16, 0xa6, 0xae, 0xb2, 0xeb, 0x69, + 0x89, 0xb5, 0x0f, 0x29, 0xf4, 0x53, 0x19, 0x02, 0xce, 0x62, 0xdb, 0xbf, 0xcb, 0xc3, 0x4a, 0x4a, + 0x73, 0xf4, 0x28, 0x94, 0xfa, 0x94, 0x44, 0xbe, 0x9e, 0x92, 0x24, 0x85, 0xd8, 0x33, 0x6a, 0x1d, + 0x27, 0x1c, 0x9c, 0x3b, 0x74, 0x28, 0xbd, 0x11, 0x44, 0x4d, 0x65, 0xe7, 0x84, 0x7b, 0x5f, 0xad, + 0xe3, 0x84, 0x83, 0x97, 0x39, 0xd7, 0x88, 0x13, 0x91, 0xe8, 0x20, 0xe8, 0x90, 0x91, 0x9e, 0xb4, + 0xa6, 0x49, 0xd8, 0xe4, 0x13, 0x46, 0x63, 0x5d, 0x5a, 0xef, 0x7a, 0xc4, 0x67, 0x52, 0xcd, 0x19, + 0x18, 0xed, 0xe0, 0x52, 0xc3, 0x94, 0xa8, 0x8d, 0x96, 0x21, 0xe0, 0x2c, 0x36, 0x8f, 0xba, 0x2b, + 0xce, 0x0d, 0xaa, 0xa7, 0x4b, 0x2a, 0xfe, 0x4c, 0xe3, 0x3e, 0xa9, 0x69, 0x55, 0xed, 0xcc, 0xd1, + 0xad, 0x8d, 0xf4, 0x00, 0x0b, 0xa7, 0x11, 0xed, 0x3f, 0x5b, 0x10, 0x4f, 0xad, 0xee, 0x41, 0xbd, + 0xdd, 0x4a, 0xd7, 0xdb, 0xb5, 0xe9, 0xcf, 0xc9, 0x84, 0x5a, 0xfb, 0xed, 0x3c, 0x8c, 0x64, 0x5b, + 0xf4, 0x02, 0x8f, 0xb3, 0x7c, 0x8d, 0x34, 0xb7, 0xe2, 0x44, 0xff, 0xc9, 0x93, 0x7d, 0xdd, 0x81, + 0xd7, 0x23, 0x66, 0x08, 0x8d, 0xa5, 0x60, 0x43, 0x22, 0xba, 0x69, 0x69, 0x80, 0x83, 0x40, 0xc5, + 0xb6, 0xd9, 0x56, 0x83, 0x23, 0x2a, 0x1c, 0x04, 0xd8, 0xc0, 0x44, 0x4f, 0x26, 0x3d, 0x70, 0x51, + 0x1c, 0x0a, 0x3b, 0xdd, 0xb5, 0xbe, 0x9f, 0x2a, 0x42, 0x32, 0x9d, 0xec, 0x10, 0x16, 0x23, 0x35, + 0x34, 0x88, 0xb3, 0xd0, 0x34, 0x9e, 0x18, 0x0f, 0x20, 0x64, 0x28, 0x49, 0x3a, 0xbf, 0x78, 0x99, + 0x62, 0x8d, 0xc6, 0x8f, 0x7f, 0x14, 0xb7, 0x1e, 0x0b, 0xe9, 0xe3, 0x9f, 0x34, 0x1d, 0x09, 0x87, + 0xfd, 0x43, 0x0b, 0xd0, 0x68, 0x81, 0xc1, 0xfb, 0xcd, 0xa4, 0xda, 0x57, 0x21, 0x27, 0x41, 0x4d, + 0xd8, 0xb1, 0xe6, 0x39, 0x41, 0x60, 0x7f, 0x18, 0x8a, 0xa2, 0xfa, 0x57, 0x21, 0x26, 0xf1, 0x35, + 0xd1, 0x1f, 0x60, 0x49, 0xb3, 0xff, 0x68, 0x41, 0x36, 0x40, 0x8a, 0xdc, 0x22, 0xf7, 0x21, 0x9b, + 0x5b, 0xd2, 0x36, 0x3f, 0x79, 0x43, 0x8e, 0x9e, 0x87, 0x25, 0x87, 0x31, 0xd2, 0x0b, 0x99, 0x70, + 0xdf, 0xfc, 0x6d, 0xbb, 0xaf, 0x28, 0x90, 0x2f, 0x07, 0x4d, 0xef, 0xd0, 0x13, 0xae, 0x6b, 0x8a, + 0xb3, 0xff, 0x9d, 0x83, 0xd5, 0x74, 0xb9, 0x98, 0xda, 0x94, 0xdc, 0x71, 0x9b, 0x72, 0x6c, 0x0f, + 0x98, 0xff, 0xdf, 0xec, 0x01, 0x5f, 0x00, 0x68, 0x8a, 0xcf, 0x16, 0x46, 0x2d, 0xdc, 0x79, 0x4c, + 0xd8, 0x4e, 0xa4, 0x60, 0x43, 0x22, 0x5a, 0x83, 0x9c, 0xd7, 0x14, 0x87, 0x31, 0x5f, 0x03, 0xc5, + 0x9b, 0xdb, 0xd9, 0xc6, 0x39, 0xaf, 0x69, 0x53, 0x58, 0x36, 0x0b, 0xd5, 0x13, 0x3b, 0xcd, 0x17, + 0x60, 0x45, 0xfe, 0xda, 0x26, 0xcc, 0xf1, 0xba, 0x54, 0xed, 0xce, 0x03, 0x8a, 0x7d, 0xa5, 0x61, + 0x12, 0x71, 0x9a, 0xd7, 0xfe, 0x79, 0x0e, 0xe0, 0x62, 0x10, 0x74, 0x14, 0x66, 0x7c, 0x06, 0xac, + 0x89, 0x67, 0x60, 0x13, 0x0a, 0x1d, 0xcf, 0x6f, 0x66, 0x4f, 0xc9, 0xae, 0xe7, 0x37, 0xb1, 0xa0, + 0xa0, 0x73, 0x00, 0x4e, 0xe8, 0x3d, 0x4b, 0x22, 0xaa, 0x27, 0xc4, 0x89, 0x5d, 0xb6, 0xf6, 0x77, + 0x14, 0x05, 0x1b, 0x5c, 0xe8, 0x51, 0x55, 0x54, 0xca, 0x41, 0x43, 0x39, 0x53, 0x54, 0x96, 0xb8, + 0x86, 0x46, 0xd5, 0xf8, 0x44, 0x26, 0xac, 0x6d, 0x8e, 0x84, 0x35, 0x5d, 0x64, 0xef, 0xb7, 0x1d, + 0x4a, 0xc6, 0x1d, 0xb0, 0xf9, 0x63, 0x26, 0x5e, 0x0d, 0x28, 0x3d, 0x7d, 0xf5, 0x40, 0x96, 0x0a, + 0x36, 0xe4, 0x3d, 0x47, 0x46, 0x91, 0xbc, 0x76, 0xfb, 0x1d, 0x4a, 0xfb, 0x62, 0x87, 0x39, 0x11, + 0x3d, 0x0c, 0x79, 0xf2, 0x52, 0x28, 0xec, 0x92, 0xd7, 0x91, 0xe6, 0xfc, 0x4b, 0xa1, 0x17, 0x11, + 0xca, 0x99, 0xc8, 0x4b, 0xa1, 0xfd, 0x4f, 0x0b, 0xf4, 0x10, 0x0f, 0x1d, 0x42, 0x81, 0x77, 0xa5, + 0x2a, 0xf7, 0x5c, 0x9c, 0xb2, 0xf1, 0xd5, 0xb3, 0xc2, 0x92, 0x18, 0x85, 0x0e, 0x7d, 0x17, 0x0b, + 0xf9, 0x68, 0x00, 0xa5, 0x28, 0xe8, 0x76, 0xaf, 0x39, 0x6e, 0x67, 0x06, 0x69, 0x08, 0x2b, 0x51, + 0x1a, 0x6f, 0x59, 0x04, 0x01, 0xb5, 0x8c, 0x13, 0x2c, 0xfb, 0xb7, 0x45, 0xc8, 0x74, 0x3b, 0xa8, + 0x6f, 0xce, 0x47, 0xad, 0x19, 0xce, 0x47, 0x13, 0x8b, 0x8f, 0x9b, 0x91, 0xa2, 0xc7, 0xa1, 0x18, + 0x72, 0x47, 0x50, 0x6e, 0xbb, 0x11, 0x47, 0x6e, 0xe1, 0x1d, 0x63, 0xfc, 0x45, 0x72, 0x9b, 0xee, + 0x92, 0x3f, 0x26, 0x1e, 0x7f, 0x53, 0x8e, 0x32, 0xd4, 0xd8, 0x40, 0x46, 0x8e, 0xbd, 0x59, 0xed, + 0xa8, 0x9a, 0x1c, 0x24, 0x33, 0x0d, 0x35, 0x2f, 0x30, 0x10, 0xd1, 0xf7, 0x2d, 0x58, 0x8d, 0x0d, + 0xaf, 0x94, 0x28, 0xde, 0x15, 0x25, 0x44, 0x0f, 0x8b, 0x53, 0x48, 0x38, 0x83, 0x8c, 0xbe, 0x02, + 0x8b, 0x94, 0x39, 0x91, 0x4c, 0x4d, 0xf3, 0xb7, 0x1d, 0x45, 0x93, 0xbd, 0x6c, 0xc4, 0x42, 0xb0, + 0x96, 0x87, 0x9e, 0x03, 0x38, 0xf4, 0x7c, 0x8f, 0xb6, 0x85, 0xf4, 0x85, 0x3b, 0x4b, 0x7c, 0x17, + 0x12, 0x09, 0xd8, 0x90, 0x66, 0xff, 0xd4, 0x02, 0x34, 0x26, 0x2d, 0x44, 0x71, 0xa1, 0x6a, 0xdd, + 0x8d, 0xb4, 0x35, 0xb6, 0x66, 0x7d, 0xb2, 0xf4, 0x8b, 0xd7, 0x36, 0xe6, 0x6e, 0xbe, 0xb3, 0x39, + 0x67, 0x7f, 0x27, 0x07, 0x4b, 0xc6, 0xad, 0xd7, 0x09, 0x82, 0x74, 0xe6, 0x96, 0x2e, 0x77, 0xc2, + 0x5b, 0xba, 0x47, 0xa0, 0x14, 0x06, 0x5d, 0xcf, 0xf5, 0x54, 0x82, 0x5e, 0x94, 0x27, 0x7b, 0x5f, + 0xad, 0xe1, 0x84, 0x8a, 0x18, 0x2c, 0x5e, 0xbf, 0xc1, 0x44, 0x70, 0x8c, 0xef, 0xf4, 0xea, 0x53, + 0x18, 0x25, 0x0e, 0xb4, 0x7a, 0xe7, 0xe3, 0x15, 0x8a, 0x35, 0x90, 0xfd, 0xd7, 0x1c, 0x80, 0xb8, + 0x14, 0xf5, 0xc4, 0x98, 0x6a, 0x13, 0x0a, 0x11, 0x09, 0x83, 0xac, 0x1d, 0x38, 0x07, 0x16, 0x94, + 0x54, 0xd7, 0x99, 0xbb, 0xad, 0xae, 0x33, 0x7f, 0x6c, 0xd7, 0xc9, 0xd3, 0x2e, 0x6d, 0xef, 0x47, + 0xde, 0xc0, 0x61, 0x64, 0x97, 0x0c, 0x55, 0xee, 0xd2, 0x69, 0xb7, 0x71, 0x51, 0x13, 0x71, 0x9a, + 0x77, 0x6c, 0xc3, 0x5e, 0xfc, 0x2f, 0x36, 0xec, 0x6f, 0x5b, 0xb0, 0xaa, 0x2d, 0xfb, 0xff, 0x75, + 0x0f, 0xaf, 0xf5, 0x9e, 0xd0, 0xfd, 0xfd, 0xcb, 0x82, 0x53, 0x71, 0x9f, 0xa1, 0xea, 0x9e, 0x99, + 0x14, 0x3a, 0xa9, 0x1b, 0xad, 0xfc, 0xf1, 0x37, 0x5a, 0x66, 0x3a, 0x29, 0x1c, 0x93, 0x4e, 0xbe, + 0x98, 0x29, 0x71, 0x3e, 0x32, 0x52, 0xe2, 0xa0, 0xa4, 0xa3, 0x1a, 0xfa, 0x6e, 0xba, 0x24, 0xb4, + 0x7f, 0x63, 0xc1, 0x72, 0x4c, 0xde, 0x0b, 0x9a, 0xa2, 0x73, 0xa1, 0xc2, 0xc9, 0xac, 0x74, 0xe7, + 0x22, 0xdd, 0x41, 0xd2, 0x50, 0x1f, 0x4a, 0x6e, 0xdb, 0xeb, 0x36, 0x23, 0xe2, 0xab, 0x6d, 0x79, + 0x6a, 0x06, 0x0d, 0x1f, 0xc7, 0xd7, 0xae, 0x50, 0x57, 0x00, 0x38, 0x81, 0xb2, 0x7f, 0x9f, 0x87, + 0x95, 0x54, 0x77, 0xc8, 0xc3, 0x97, 0xbc, 0x52, 0x6a, 0x18, 0x3a, 0x27, 0xe1, 0xeb, 0x40, 0x93, + 0xb0, 0xc9, 0xc7, 0xf7, 0xa3, 0xeb, 0x0d, 0xa4, 0x8c, 0xec, 0x0d, 0xe3, 0xa5, 0x98, 0x80, 0x35, + 0x8f, 0xd1, 0x1e, 0xe7, 0x6f, 0xbb, 0x3d, 0x7e, 0xd5, 0x02, 0x24, 0x3e, 0x81, 0x4b, 0x4e, 0xba, + 0x58, 0x15, 0x0b, 0x67, 0x66, 0xb7, 0x35, 0xa5, 0x11, 0xaa, 0x8f, 0x40, 0xe1, 0x31, 0xf0, 0xc6, + 0xd4, 0xbc, 0x78, 0x4f, 0xa6, 0xe6, 0xf6, 0x37, 0xe0, 0xcc, 0x48, 0x3d, 0xa8, 0xba, 0x1c, 0x6b, + 0x5c, 0x97, 0xc3, 0x3d, 0x31, 0x8c, 0xfa, 0xbe, 0xdc, 0xa0, 0x92, 0xf6, 0xc4, 0x7d, 0xbe, 0x88, + 0x25, 0x8d, 0xb7, 0x3e, 0xcd, 0x68, 0x88, 0xfb, 0xb2, 0x7d, 0x28, 0x69, 0xf4, 0x6d, 0xb1, 0x8a, + 0x15, 0xd5, 0xfe, 0x75, 0x01, 0x56, 0x52, 0x35, 0x4a, 0xaa, 0x4b, 0xb5, 0x8e, 0xed, 0x52, 0x67, + 0xa9, 0x0c, 0x7a, 0x19, 0x96, 0xa9, 0x38, 0x8a, 0x91, 0xc3, 0x48, 0x6b, 0x38, 0x83, 0x7b, 0x8b, + 0x86, 0x21, 0xae, 0x76, 0xfa, 0xe8, 0xd6, 0xc6, 0xb2, 0xb9, 0x82, 0x53, 0x70, 0xe8, 0x67, 0x16, + 0xa0, 0x70, 0xdc, 0x65, 0xab, 0x35, 0x65, 0xc5, 0x32, 0x5a, 0x0f, 0xd5, 0x1e, 0xe4, 0x2e, 0x39, + 0xa6, 0xb7, 0x1e, 0xa3, 0x00, 0x7a, 0xc5, 0x1a, 0x1d, 0x24, 0xed, 0xcf, 0xb0, 0x26, 0x95, 0x93, + 0xb0, 0x0f, 0x1c, 0x28, 0xd9, 0x37, 0x2d, 0x78, 0x60, 0xec, 0x7b, 0xdc, 0x03, 0x5a, 0x51, 0xd0, + 0x0f, 0xb3, 0x81, 0x51, 0xfc, 0xcf, 0x06, 0x4b, 0xda, 0x09, 0x52, 0x41, 0x9c, 0x4e, 0xf2, 0x93, + 0xd2, 0x89, 0xfd, 0xab, 0x1c, 0xdc, 0x37, 0xa6, 0x9c, 0x46, 0x37, 0x4c, 0xeb, 0xc8, 0xf2, 0xf2, + 0xe9, 0x19, 0x44, 0x0f, 0x95, 0xe7, 0xe4, 0xdf, 0x46, 0x8e, 0x1d, 0xb2, 0x1d, 0x3f, 0xcf, 0x39, + 0x84, 0x62, 0x3b, 0x08, 0x3a, 0xf1, 0xe0, 0x66, 0x9a, 0x7c, 0xad, 0xc7, 0x0d, 0xb5, 0x45, 0x6e, + 0x6a, 0xfe, 0x4c, 0xb1, 0x14, 0x6f, 0x7f, 0xcf, 0x02, 0xe3, 0xd6, 0x16, 0x7d, 0x1d, 0x16, 0x9d, + 0x3e, 0x0b, 0x7a, 0x0e, 0x23, 0x4d, 0x55, 0x85, 0xec, 0xcd, 0xe4, 0x7e, 0x78, 0x2b, 0x96, 0x2a, + 0x2d, 0x94, 0x3c, 0x62, 0x8d, 0x67, 0x3f, 0x29, 0x77, 0x2c, 0xf3, 0x82, 0x0e, 0x1a, 0xd6, 0xe4, + 0xa0, 0x61, 0xff, 0xc3, 0x82, 0xd4, 0x61, 0x45, 0x3d, 0x28, 0x72, 0x95, 0x86, 0x33, 0xf8, 0x57, + 0x80, 0x29, 0x77, 0x8b, 0xcb, 0x94, 0x76, 0x14, 0x3f, 0xb1, 0x44, 0x41, 0x1e, 0x14, 0xb8, 0x41, + 0x55, 0xbb, 0xbf, 0x3b, 0x23, 0x34, 0xbe, 0x55, 0x72, 0xba, 0xc0, 0x7f, 0x61, 0x01, 0x61, 0x3f, + 0x01, 0x67, 0x46, 0x34, 0xe2, 0x46, 0x3a, 0x0c, 0xe2, 0x3f, 0x41, 0x18, 0x46, 0xba, 0xc0, 0x17, + 0xb1, 0xa4, 0xf1, 0x32, 0xe5, 0x74, 0x56, 0x3c, 0x8f, 0x63, 0x67, 0x68, 0x56, 0xde, 0x5d, 0xb1, + 0xda, 0x87, 0x95, 0x52, 0xa3, 0xea, 0xe3, 0x51, 0x0d, 0xf8, 0x8e, 0x66, 0xef, 0x70, 0xf8, 0x19, + 0xf2, 0x7c, 0x4a, 0xdc, 0x7e, 0x14, 0x7f, 0xa8, 0x1e, 0x0e, 0xa9, 0x75, 0x9c, 0x70, 0xa0, 0x73, + 0x00, 0xf2, 0x0e, 0x71, 0x4f, 0xf7, 0x23, 0xc9, 0x60, 0xac, 0x91, 0x50, 0xb0, 0xc1, 0xc5, 0x5b, + 0x32, 0x97, 0x44, 0x6c, 0x9b, 0x57, 0xe1, 0x3c, 0xb8, 0x2c, 0xcb, 0x96, 0xac, 0xae, 0xd6, 0x70, + 0x42, 0x45, 0x1f, 0x85, 0x85, 0x0e, 0x19, 0x0a, 0xc6, 0x82, 0x60, 0x5c, 0xe2, 0x85, 0xe5, 0xae, + 0x5c, 0xc2, 0x31, 0x0d, 0xd9, 0x30, 0xef, 0x3a, 0x82, 0xab, 0x28, 0xb8, 0x40, 0x5c, 0x27, 0x6e, + 0x09, 0x26, 0x45, 0xa9, 0x55, 0xde, 0x78, 0x77, 0x7d, 0xee, 0xcd, 0x77, 0xd7, 0xe7, 0xde, 0x7a, + 0x77, 0x7d, 0xee, 0xe6, 0xd1, 0xba, 0xf5, 0xc6, 0xd1, 0xba, 0xf5, 0xe6, 0xd1, 0xba, 0xf5, 0xd6, + 0xd1, 0xba, 0xf5, 0xf7, 0xa3, 0x75, 0xeb, 0xc7, 0xef, 0xad, 0xcf, 0x3d, 0x57, 0x8a, 0x4d, 0xfb, + 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xff, 0xa7, 0x75, 0xa0, 0x2e, 0x00, 0x00, } diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto index 9a2d01d346190..0b2748432509a 100644 --- a/pkg/apis/application/v1alpha1/generated.proto +++ b/pkg/apis/application/v1alpha1/generated.proto @@ -413,6 +413,18 @@ message SyncOperation { // If nil, uses the parameter override set in application. // If empty, sets no parameter overrides optional ParameterOverrides parameterOverrides = 5; + + // Resources describes which resources to sync + repeated SyncOperationResource resources = 6; +} + +// SyncOperationResource contains resources to sync. +message SyncOperationResource { + optional string group = 1; + + optional string kind = 2; + + optional string name = 3; } // SyncOperationResult represent result of sync operation diff --git a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go index f155e0c01b6dd..a72f11c4ae48c 100644 --- a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go @@ -790,6 +790,11 @@ func (in *SyncOperation) DeepCopyInto(out *SyncOperation) { *out = make(ParameterOverrides, len(*in)) copy(*out, *in) } + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]SyncOperationResource, len(*in)) + copy(*out, *in) + } return } @@ -803,6 +808,22 @@ func (in *SyncOperation) DeepCopy() *SyncOperation { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SyncOperationResource) DeepCopyInto(out *SyncOperationResource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncOperationResource. +func (in *SyncOperationResource) DeepCopy() *SyncOperationResource { + if in == nil { + return nil + } + out := new(SyncOperationResource) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SyncOperationResult) DeepCopyInto(out *SyncOperationResult) { *out = *in diff --git a/reposerver/repository/repository.pb.go b/reposerver/repository/repository.pb.go index d4c5397d2301c..66d2bcffd6bb2 100644 --- a/reposerver/repository/repository.pb.go +++ b/reposerver/repository/repository.pb.go @@ -46,7 +46,7 @@ func (m *ManifestRequest) Reset() { *m = ManifestRequest{} } func (m *ManifestRequest) String() string { return proto.CompactTextString(m) } func (*ManifestRequest) ProtoMessage() {} func (*ManifestRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_e1170ea85be6baa9, []int{0} + return fileDescriptor_repository_49651600e73b0b40, []int{0} } func (m *ManifestRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -146,7 +146,7 @@ func (m *ManifestResponse) Reset() { *m = ManifestResponse{} } func (m *ManifestResponse) String() string { return proto.CompactTextString(m) } func (*ManifestResponse) ProtoMessage() {} func (*ManifestResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_e1170ea85be6baa9, []int{1} + return fileDescriptor_repository_49651600e73b0b40, []int{1} } func (m *ManifestResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -224,7 +224,7 @@ func (m *ListDirRequest) Reset() { *m = ListDirRequest{} } func (m *ListDirRequest) String() string { return proto.CompactTextString(m) } func (*ListDirRequest) ProtoMessage() {} func (*ListDirRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_e1170ea85be6baa9, []int{2} + return fileDescriptor_repository_49651600e73b0b40, []int{2} } func (m *ListDirRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -286,7 +286,7 @@ func (m *FileList) Reset() { *m = FileList{} } func (m *FileList) String() string { return proto.CompactTextString(m) } func (*FileList) ProtoMessage() {} func (*FileList) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_e1170ea85be6baa9, []int{3} + return fileDescriptor_repository_49651600e73b0b40, []int{3} } func (m *FileList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -336,7 +336,7 @@ func (m *GetFileRequest) Reset() { *m = GetFileRequest{} } func (m *GetFileRequest) String() string { return proto.CompactTextString(m) } func (*GetFileRequest) ProtoMessage() {} func (*GetFileRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_e1170ea85be6baa9, []int{4} + return fileDescriptor_repository_49651600e73b0b40, []int{4} } func (m *GetFileRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -398,7 +398,7 @@ func (m *GetFileResponse) Reset() { *m = GetFileResponse{} } func (m *GetFileResponse) String() string { return proto.CompactTextString(m) } func (*GetFileResponse) ProtoMessage() {} func (*GetFileResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_e1170ea85be6baa9, []int{5} + return fileDescriptor_repository_49651600e73b0b40, []int{5} } func (m *GetFileResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2099,10 +2099,10 @@ var ( ) func init() { - proto.RegisterFile("reposerver/repository/repository.proto", fileDescriptor_repository_e1170ea85be6baa9) + proto.RegisterFile("reposerver/repository/repository.proto", fileDescriptor_repository_49651600e73b0b40) } -var fileDescriptor_repository_e1170ea85be6baa9 = []byte{ +var fileDescriptor_repository_49651600e73b0b40 = []byte{ // 584 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0xdd, 0x8a, 0xd3, 0x40, 0x14, 0xde, 0x6c, 0xbb, 0xdd, 0x76, 0x2a, 0xee, 0x3a, 0x14, 0x09, 0x69, 0x29, 0x21, 0xa0, 0xf4, diff --git a/server/account/account.pb.go b/server/account/account.pb.go index ab3e7b80d9bb9..af01a1b26365b 100644 --- a/server/account/account.pb.go +++ b/server/account/account.pb.go @@ -37,7 +37,7 @@ func (m *UpdatePasswordRequest) Reset() { *m = UpdatePasswordRequest{} } func (m *UpdatePasswordRequest) String() string { return proto.CompactTextString(m) } func (*UpdatePasswordRequest) ProtoMessage() {} func (*UpdatePasswordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_account_c227670d8e34bf5f, []int{0} + return fileDescriptor_account_d27ff2bbd0f6944b, []int{0} } func (m *UpdatePasswordRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -90,7 +90,7 @@ func (m *UpdatePasswordResponse) Reset() { *m = UpdatePasswordResponse{} func (m *UpdatePasswordResponse) String() string { return proto.CompactTextString(m) } func (*UpdatePasswordResponse) ProtoMessage() {} func (*UpdatePasswordResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_account_c227670d8e34bf5f, []int{1} + return fileDescriptor_account_d27ff2bbd0f6944b, []int{1} } func (m *UpdatePasswordResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -566,10 +566,10 @@ var ( ) func init() { - proto.RegisterFile("server/account/account.proto", fileDescriptor_account_c227670d8e34bf5f) + proto.RegisterFile("server/account/account.proto", fileDescriptor_account_d27ff2bbd0f6944b) } -var fileDescriptor_account_c227670d8e34bf5f = []byte{ +var fileDescriptor_account_d27ff2bbd0f6944b = []byte{ // 268 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x29, 0x4e, 0x2d, 0x2a, 0x4b, 0x2d, 0xd2, 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, 0x81, 0xd1, 0x7a, 0x05, 0x45, 0xf9, diff --git a/server/application/application.pb.go b/server/application/application.pb.go index 1a7a2915c55aa..c309eb4fe7645 100644 --- a/server/application/application.pb.go +++ b/server/application/application.pb.go @@ -51,7 +51,7 @@ func (m *ApplicationQuery) Reset() { *m = ApplicationQuery{} } func (m *ApplicationQuery) String() string { return proto.CompactTextString(m) } func (*ApplicationQuery) ProtoMessage() {} func (*ApplicationQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{0} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{0} } func (m *ApplicationQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -115,7 +115,7 @@ func (m *ApplicationResourceEventsQuery) Reset() { *m = ApplicationResou func (m *ApplicationResourceEventsQuery) String() string { return proto.CompactTextString(m) } func (*ApplicationResourceEventsQuery) ProtoMessage() {} func (*ApplicationResourceEventsQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{1} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{1} } func (m *ApplicationResourceEventsQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -178,7 +178,7 @@ func (m *ApplicationManifestQuery) Reset() { *m = ApplicationManifestQue func (m *ApplicationManifestQuery) String() string { return proto.CompactTextString(m) } func (*ApplicationManifestQuery) ProtoMessage() {} func (*ApplicationManifestQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{2} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{2} } func (m *ApplicationManifestQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -231,7 +231,7 @@ func (m *ApplicationResponse) Reset() { *m = ApplicationResponse{} } func (m *ApplicationResponse) String() string { return proto.CompactTextString(m) } func (*ApplicationResponse) ProtoMessage() {} func (*ApplicationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{3} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{3} } func (m *ApplicationResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -272,7 +272,7 @@ func (m *ApplicationCreateRequest) Reset() { *m = ApplicationCreateReque func (m *ApplicationCreateRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationCreateRequest) ProtoMessage() {} func (*ApplicationCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{4} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{4} } func (m *ApplicationCreateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -326,7 +326,7 @@ func (m *ApplicationUpdateRequest) Reset() { *m = ApplicationUpdateReque func (m *ApplicationUpdateRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationUpdateRequest) ProtoMessage() {} func (*ApplicationUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{5} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{5} } func (m *ApplicationUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -374,7 +374,7 @@ func (m *ApplicationDeleteRequest) Reset() { *m = ApplicationDeleteReque func (m *ApplicationDeleteRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationDeleteRequest) ProtoMessage() {} func (*ApplicationDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{6} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{6} } func (m *ApplicationDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -419,22 +419,23 @@ func (m *ApplicationDeleteRequest) GetCascade() bool { // ApplicationSyncRequest is a request to apply the config state to live state type ApplicationSyncRequest struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Revision string `protobuf:"bytes,2,opt,name=revision" json:"revision"` - DryRun bool `protobuf:"varint,3,opt,name=dryRun" json:"dryRun"` - Prune bool `protobuf:"varint,4,opt,name=prune" json:"prune"` - Strategy *v1alpha1.SyncStrategy `protobuf:"bytes,5,opt,name=strategy" json:"strategy,omitempty"` - Parameter *ParameterOverrides `protobuf:"bytes,6,opt,name=parameter" json:"parameter,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` + Revision string `protobuf:"bytes,2,opt,name=revision" json:"revision"` + DryRun bool `protobuf:"varint,3,opt,name=dryRun" json:"dryRun"` + Prune bool `protobuf:"varint,4,opt,name=prune" json:"prune"` + Strategy *v1alpha1.SyncStrategy `protobuf:"bytes,5,opt,name=strategy" json:"strategy,omitempty"` + Parameter *ParameterOverrides `protobuf:"bytes,6,opt,name=parameter" json:"parameter,omitempty"` + Resources []v1alpha1.SyncOperationResource `protobuf:"bytes,7,rep,name=resources" json:"resources"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ApplicationSyncRequest) Reset() { *m = ApplicationSyncRequest{} } func (m *ApplicationSyncRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationSyncRequest) ProtoMessage() {} func (*ApplicationSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{7} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{7} } func (m *ApplicationSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -505,6 +506,13 @@ func (m *ApplicationSyncRequest) GetParameter() *ParameterOverrides { return nil } +func (m *ApplicationSyncRequest) GetResources() []v1alpha1.SyncOperationResource { + if m != nil { + return m.Resources + } + return nil +} + // ParameterOverrides is a wrapper on a list of parameters. If omitted, the application's overrides // in the spec will be used. If set, will use the supplied list of overrides type ParameterOverrides struct { @@ -518,7 +526,7 @@ func (m *ParameterOverrides) Reset() { *m = ParameterOverrides{} } func (m *ParameterOverrides) String() string { return proto.CompactTextString(m) } func (*ParameterOverrides) ProtoMessage() {} func (*ParameterOverrides) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{8} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{8} } func (m *ParameterOverrides) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -567,7 +575,7 @@ func (m *Parameter) Reset() { *m = Parameter{} } func (m *Parameter) String() string { return proto.CompactTextString(m) } func (*Parameter) ProtoMessage() {} func (*Parameter) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{9} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{9} } func (m *Parameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -630,7 +638,7 @@ func (m *ApplicationUpdateSpecRequest) Reset() { *m = ApplicationUpdateS func (m *ApplicationUpdateSpecRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationUpdateSpecRequest) ProtoMessage() {} func (*ApplicationUpdateSpecRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{10} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{10} } func (m *ApplicationUpdateSpecRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -687,7 +695,7 @@ func (m *ApplicationRollbackRequest) Reset() { *m = ApplicationRollbackR func (m *ApplicationRollbackRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationRollbackRequest) ProtoMessage() {} func (*ApplicationRollbackRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{11} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{11} } func (m *ApplicationRollbackRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -758,7 +766,7 @@ func (m *ApplicationDeleteResourceRequest) Reset() { *m = ApplicationDel func (m *ApplicationDeleteResourceRequest) String() string { return proto.CompactTextString(m) } func (*ApplicationDeleteResourceRequest) ProtoMessage() {} func (*ApplicationDeleteResourceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{12} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{12} } func (m *ApplicationDeleteResourceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -832,7 +840,7 @@ func (m *ApplicationPodLogsQuery) Reset() { *m = ApplicationPodLogsQuery func (m *ApplicationPodLogsQuery) String() string { return proto.CompactTextString(m) } func (*ApplicationPodLogsQuery) ProtoMessage() {} func (*ApplicationPodLogsQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{13} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{13} } func (m *ApplicationPodLogsQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -922,7 +930,7 @@ func (m *LogEntry) Reset() { *m = LogEntry{} } func (m *LogEntry) String() string { return proto.CompactTextString(m) } func (*LogEntry) ProtoMessage() {} func (*LogEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{14} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{14} } func (m *LogEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -976,7 +984,7 @@ func (m *OperationTerminateRequest) Reset() { *m = OperationTerminateReq func (m *OperationTerminateRequest) String() string { return proto.CompactTextString(m) } func (*OperationTerminateRequest) ProtoMessage() {} func (*OperationTerminateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{15} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{15} } func (m *OperationTerminateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1022,7 +1030,7 @@ func (m *OperationTerminateResponse) Reset() { *m = OperationTerminateRe func (m *OperationTerminateResponse) String() string { return proto.CompactTextString(m) } func (*OperationTerminateResponse) ProtoMessage() {} func (*OperationTerminateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_application_7fcd602c2bf997a7, []int{16} + return fileDescriptor_application_a0bd93d5f02bc9d6, []int{16} } func (m *OperationTerminateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1970,6 +1978,18 @@ func (m *ApplicationSyncRequest) MarshalTo(dAtA []byte) (int, error) { } i += n4 } + if len(m.Resources) > 0 { + for _, msg := range m.Resources { + dAtA[i] = 0x3a + i++ + i = encodeVarintApplication(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -2448,6 +2468,12 @@ func (m *ApplicationSyncRequest) Size() (n int) { l = m.Parameter.Size() n += 1 + l + sovApplication(uint64(l)) } + if len(m.Resources) > 0 { + for _, e := range m.Resources { + l = e.Size() + n += 1 + l + sovApplication(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -3555,6 +3581,37 @@ func (m *ApplicationSyncRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApplication + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApplication + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, v1alpha1.SyncOperationResource{}) + if err := m.Resources[len(m.Resources)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApplication(dAtA[iNdEx:]) @@ -4877,97 +4934,99 @@ var ( ) func init() { - proto.RegisterFile("server/application/application.proto", fileDescriptor_application_7fcd602c2bf997a7) -} - -var fileDescriptor_application_7fcd602c2bf997a7 = []byte{ - // 1407 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcf, 0x6f, 0xdc, 0x44, - 0x14, 0x66, 0x76, 0x37, 0x9b, 0xec, 0x4b, 0x85, 0x60, 0x68, 0x83, 0x31, 0x69, 0xb2, 0x9a, 0xa6, - 0xe9, 0x36, 0xa5, 0x76, 0x13, 0x55, 0x02, 0x55, 0x20, 0xd4, 0xd0, 0xd2, 0xa6, 0x0a, 0x6d, 0x70, - 0x5a, 0x90, 0xb8, 0xa0, 0xa9, 0x3d, 0xdd, 0x35, 0xd9, 0xf5, 0x98, 0xb1, 0x77, 0xd1, 0x52, 0xf5, - 0x40, 0x41, 0x9c, 0x90, 0x2a, 0x04, 0x07, 0x6e, 0x40, 0xcf, 0x15, 0x17, 0xee, 0x9c, 0x7b, 0x44, - 0xe2, 0x5e, 0xa1, 0x88, 0x3f, 0x04, 0xcd, 0xd8, 0x5e, 0x8f, 0x9b, 0x5d, 0xa7, 0xc0, 0x72, 0x1b, - 0xbf, 0x79, 0xf3, 0xde, 0xf7, 0x7e, 0xcc, 0xbc, 0x4f, 0x86, 0x95, 0x88, 0x89, 0x01, 0x13, 0x36, - 0x0d, 0xc3, 0xae, 0xef, 0xd2, 0xd8, 0xe7, 0x81, 0xbe, 0xb6, 0x42, 0xc1, 0x63, 0x8e, 0xe7, 0x35, - 0x91, 0x79, 0xb4, 0xcd, 0xdb, 0x5c, 0xc9, 0x6d, 0xb9, 0x4a, 0x54, 0xcc, 0xc5, 0x36, 0xe7, 0xed, - 0x2e, 0xb3, 0x69, 0xe8, 0xdb, 0x34, 0x08, 0x78, 0xac, 0x94, 0xa3, 0x74, 0x97, 0xec, 0xbd, 0x11, - 0x59, 0x3e, 0x57, 0xbb, 0x2e, 0x17, 0xcc, 0x1e, 0xac, 0xdb, 0x6d, 0x16, 0x30, 0x41, 0x63, 0xe6, - 0xa5, 0x3a, 0xe7, 0x73, 0x9d, 0x1e, 0x75, 0x3b, 0x7e, 0xc0, 0xc4, 0xd0, 0x0e, 0xf7, 0xda, 0x52, - 0x10, 0xd9, 0x3d, 0x16, 0xd3, 0x71, 0xa7, 0xb6, 0xda, 0x7e, 0xdc, 0xe9, 0xdf, 0xb6, 0x5c, 0xde, - 0xb3, 0xa9, 0x50, 0xc0, 0x3e, 0x51, 0x8b, 0xb3, 0xae, 0x97, 0x9f, 0xd6, 0xc3, 0x1b, 0xac, 0xd3, - 0x6e, 0xd8, 0xa1, 0x07, 0x4d, 0x6d, 0x96, 0x99, 0x12, 0x2c, 0xe4, 0x69, 0xae, 0xd4, 0xd2, 0x8f, - 0xb9, 0x18, 0x6a, 0xcb, 0xc4, 0x06, 0x09, 0xe0, 0x85, 0x8b, 0xb9, 0xaf, 0xf7, 0xfb, 0x4c, 0x0c, - 0x31, 0x86, 0x5a, 0x40, 0x7b, 0xcc, 0x40, 0x4d, 0xd4, 0x6a, 0x38, 0x6a, 0x8d, 0x97, 0x60, 0x56, - 0xb0, 0x3b, 0x82, 0x45, 0x1d, 0xa3, 0xd2, 0x44, 0xad, 0xb9, 0xcd, 0xda, 0xe3, 0x27, 0xcb, 0xcf, - 0x39, 0x99, 0x10, 0xaf, 0xc2, 0xac, 0x74, 0xcf, 0xdc, 0xd8, 0xa8, 0x36, 0xab, 0xad, 0xc6, 0xe6, - 0x91, 0xfd, 0x27, 0xcb, 0x73, 0x3b, 0x89, 0x28, 0x72, 0xb2, 0x4d, 0xf2, 0x35, 0x82, 0x25, 0xcd, - 0xa1, 0xc3, 0x22, 0xde, 0x17, 0x2e, 0xbb, 0x3c, 0x60, 0x41, 0x1c, 0x3d, 0xed, 0xbe, 0x32, 0x72, - 0xdf, 0x82, 0x23, 0x22, 0x55, 0xbd, 0x2e, 0xf7, 0x2a, 0x72, 0x2f, 0xc5, 0x50, 0xd8, 0xc1, 0xab, - 0x30, 0x9f, 0x7d, 0xdf, 0xda, 0xba, 0x64, 0x54, 0x35, 0x45, 0x7d, 0x83, 0xec, 0x80, 0xa1, 0xe1, - 0x78, 0x8f, 0x06, 0xfe, 0x1d, 0x16, 0xc5, 0x93, 0x11, 0x34, 0x61, 0x4e, 0xb0, 0x81, 0x1f, 0xf9, - 0x3c, 0x50, 0x19, 0xc8, 0x8c, 0x8e, 0xa4, 0xe4, 0x18, 0xbc, 0x54, 0x8c, 0x2c, 0xe4, 0x41, 0xc4, - 0xc8, 0x43, 0x54, 0xf0, 0xf4, 0x8e, 0x60, 0x34, 0x66, 0x0e, 0xfb, 0xb4, 0xcf, 0xa2, 0x18, 0x07, - 0xa0, 0xb7, 0xaa, 0x72, 0x38, 0xbf, 0xf1, 0xae, 0x95, 0x17, 0xd6, 0xca, 0x0a, 0xab, 0x16, 0x1f, - 0xbb, 0x9e, 0x15, 0xee, 0xb5, 0x2d, 0xd9, 0x23, 0x96, 0xde, 0xf6, 0x59, 0x8f, 0x58, 0x9a, 0xa7, - 0x2c, 0x6a, 0x4d, 0x0f, 0x2f, 0x40, 0xbd, 0x1f, 0x46, 0x4c, 0xc4, 0x49, 0x15, 0x9d, 0xf4, 0x8b, - 0x7c, 0x55, 0x04, 0x79, 0x2b, 0xf4, 0x34, 0x90, 0x9d, 0xff, 0x11, 0x64, 0x01, 0x1e, 0xb9, 0x5a, - 0x40, 0x71, 0x89, 0x75, 0x59, 0x8e, 0x62, 0x5c, 0x51, 0x0c, 0x98, 0x75, 0x69, 0xe4, 0x52, 0x8f, - 0xa5, 0xf1, 0x64, 0x9f, 0xe4, 0x51, 0x05, 0x16, 0x34, 0x53, 0xbb, 0xc3, 0xc0, 0x2d, 0x33, 0x74, - 0x68, 0x75, 0xf1, 0x22, 0xd4, 0x3d, 0x31, 0x74, 0xfa, 0x81, 0x51, 0xd5, 0xfa, 0x3f, 0x95, 0x61, - 0x13, 0x66, 0x42, 0xd1, 0x0f, 0x98, 0x51, 0xd3, 0x36, 0x13, 0x11, 0x76, 0x61, 0x2e, 0x8a, 0xe5, - 0xbd, 0x6d, 0x0f, 0x8d, 0x99, 0x26, 0x6a, 0xcd, 0x6f, 0x5c, 0xf9, 0x0f, 0xb9, 0x93, 0x91, 0xec, - 0xa6, 0xe6, 0x9c, 0x91, 0x61, 0xfc, 0x16, 0x34, 0x42, 0x2a, 0x68, 0x8f, 0xc5, 0x4c, 0x18, 0x75, - 0xe5, 0x65, 0xb9, 0x60, 0x60, 0x27, 0xdb, 0xbd, 0x31, 0x60, 0x42, 0xf8, 0x1e, 0x8b, 0x9c, 0xfc, - 0x04, 0xb9, 0x06, 0xf8, 0xa0, 0x02, 0x3e, 0x0f, 0x0d, 0x9e, 0x7d, 0x18, 0xa8, 0x59, 0x6d, 0xcd, - 0x6f, 0x2c, 0x8c, 0x37, 0xea, 0xe4, 0x8a, 0x84, 0x41, 0x63, 0x24, 0xc7, 0x86, 0x9e, 0xec, 0x34, - 0x2f, 0x49, 0xca, 0x4d, 0x98, 0x19, 0xd0, 0x6e, 0x9f, 0x15, 0xf2, 0x9d, 0x88, 0x30, 0x81, 0x86, - 0xcb, 0x7b, 0x21, 0x0f, 0x58, 0x10, 0xab, 0x7c, 0x67, 0xfb, 0xb9, 0x98, 0xfc, 0x80, 0x60, 0xf1, - 0x40, 0xcb, 0xee, 0x86, 0xac, 0xb4, 0xce, 0x1e, 0xd4, 0xa2, 0x90, 0xb9, 0xea, 0xfd, 0x98, 0xdf, - 0xb8, 0x36, 0x9d, 0x1e, 0x96, 0x4e, 0xb3, 0xd0, 0xa4, 0x75, 0xf9, 0xc8, 0x99, 0x7a, 0x8f, 0xf3, - 0x6e, 0xf7, 0x36, 0x75, 0xf7, 0xca, 0x80, 0x99, 0x50, 0xf1, 0x3d, 0x05, 0xab, 0xba, 0x09, 0xd2, - 0xd4, 0xfe, 0x93, 0xe5, 0xca, 0xd6, 0x25, 0xa7, 0xe2, 0x7b, 0xff, 0xbe, 0xf5, 0xc8, 0x2f, 0x08, - 0x9a, 0x63, 0x2e, 0x54, 0xf2, 0x0a, 0x96, 0xc1, 0x79, 0xf6, 0xf7, 0x76, 0x03, 0x80, 0x86, 0xfe, - 0x07, 0x4c, 0xa8, 0xbb, 0x93, 0x3c, 0xb7, 0x38, 0x0d, 0x00, 0x2e, 0xee, 0x6c, 0xa5, 0x3b, 0x8e, - 0xa6, 0x25, 0x9b, 0x62, 0xcf, 0x0f, 0x3c, 0xa3, 0xa6, 0x37, 0x85, 0x94, 0x90, 0x9f, 0x2b, 0xf0, - 0xb2, 0x06, 0x78, 0x87, 0x7b, 0xdb, 0xbc, 0x5d, 0x32, 0x17, 0x0c, 0x98, 0x0d, 0xb9, 0x97, 0x43, - 0x74, 0xb2, 0xcf, 0xa4, 0x85, 0x82, 0x98, 0xca, 0xb1, 0x5c, 0x98, 0x02, 0xb9, 0x58, 0x46, 0x19, - 0xf9, 0x81, 0xcb, 0x76, 0x99, 0xcb, 0x03, 0x2f, 0x52, 0x78, 0xaa, 0x59, 0x94, 0xfa, 0x0e, 0xbe, - 0x0a, 0x0d, 0xf5, 0x7d, 0xd3, 0xef, 0xb1, 0xf4, 0x12, 0xaf, 0x59, 0xc9, 0xfc, 0xb7, 0xf4, 0xf9, - 0x9f, 0x37, 0x8d, 0x9c, 0xff, 0xd6, 0x60, 0xdd, 0x92, 0x27, 0x9c, 0xfc, 0xb0, 0xc4, 0x15, 0x53, - 0xbf, 0xbb, 0xed, 0x07, 0x2c, 0x32, 0xea, 0x9a, 0xc3, 0x5c, 0x2c, 0x0b, 0x7e, 0x87, 0x77, 0xbb, - 0xfc, 0x33, 0x63, 0xb6, 0x59, 0xc9, 0x0b, 0x9e, 0xc8, 0xc8, 0xe7, 0x30, 0xb7, 0xcd, 0xdb, 0x97, - 0x83, 0x58, 0x0c, 0xe5, 0x58, 0x96, 0xe1, 0xc8, 0x6b, 0xa2, 0xdf, 0xb0, 0x4c, 0x88, 0xaf, 0x43, - 0x23, 0xf6, 0x7b, 0x6c, 0x37, 0xa6, 0xbd, 0x30, 0x6d, 0xfa, 0x7f, 0x80, 0x7b, 0x84, 0x2c, 0x33, - 0x41, 0x6c, 0x78, 0xe5, 0x46, 0x28, 0x49, 0x88, 0xcf, 0x83, 0x9b, 0x4c, 0xf4, 0xfc, 0x80, 0x96, - 0xbe, 0xd0, 0x64, 0x11, 0xcc, 0x71, 0x07, 0x92, 0xd9, 0xb8, 0xf1, 0xe5, 0x8b, 0x80, 0xf5, 0x8b, - 0xc4, 0xc4, 0xc0, 0x77, 0x19, 0x7e, 0x80, 0xa0, 0xb6, 0xed, 0x47, 0x31, 0x3e, 0x5e, 0xb8, 0x7b, - 0x4f, 0x13, 0x15, 0x73, 0x4a, 0xf7, 0x57, 0xba, 0x22, 0x8b, 0xf7, 0xff, 0xf8, 0xeb, 0xbb, 0xca, - 0x02, 0x3e, 0xaa, 0x38, 0xdf, 0x60, 0x5d, 0xa7, 0x60, 0x11, 0xfe, 0x06, 0x01, 0x96, 0x6a, 0x45, - 0xbe, 0x82, 0xcf, 0x4c, 0xc2, 0x37, 0x86, 0xd7, 0x98, 0xc7, 0xb5, 0xc4, 0x5b, 0x92, 0x54, 0xca, - 0x34, 0x2b, 0x05, 0x05, 0x60, 0x4d, 0x01, 0x58, 0xc1, 0x64, 0x1c, 0x00, 0xfb, 0xae, 0xcc, 0xe6, - 0x3d, 0x9b, 0x25, 0x7e, 0x7f, 0x44, 0x30, 0xf3, 0x21, 0x8d, 0xdd, 0xce, 0x61, 0x19, 0xda, 0x99, - 0x4e, 0x86, 0x94, 0x2f, 0x05, 0x95, 0x9c, 0x50, 0x30, 0x8f, 0xe3, 0x57, 0x33, 0x98, 0x51, 0x2c, - 0x18, 0xed, 0x15, 0xd0, 0x9e, 0x43, 0xf8, 0x21, 0x82, 0x7a, 0x42, 0x75, 0xf0, 0xc9, 0x49, 0x10, - 0x0b, 0x54, 0xc8, 0x9c, 0x12, 0xa1, 0x20, 0xa7, 0x15, 0xc0, 0x13, 0x64, 0x6c, 0x21, 0x2f, 0x14, - 0xd8, 0xd0, 0xb7, 0x08, 0xaa, 0x57, 0xd8, 0xa1, 0x6d, 0x36, 0x2d, 0x64, 0x07, 0x52, 0x37, 0xa6, - 0xc2, 0xf8, 0x3e, 0x82, 0x23, 0x57, 0x58, 0x9c, 0x11, 0xd2, 0x68, 0x72, 0xfa, 0x0a, 0x9c, 0xd5, - 0x5c, 0xb4, 0x34, 0x6e, 0x9f, 0x6d, 0x8d, 0x48, 0xe8, 0x59, 0xe5, 0xfa, 0x14, 0x3e, 0x59, 0xd6, - 0x5c, 0xbd, 0x91, 0xcf, 0xdf, 0x10, 0xd4, 0x93, 0x81, 0x3a, 0xd9, 0x7d, 0x81, 0x23, 0x4e, 0x2d, - 0x47, 0x97, 0x15, 0xd0, 0xb7, 0xcd, 0x73, 0xe3, 0x81, 0xea, 0xe7, 0xe5, 0x4b, 0xe5, 0xd1, 0x98, - 0x5a, 0x0a, 0x7d, 0xb1, 0xb2, 0xbf, 0x22, 0x80, 0x9c, 0x11, 0xe0, 0xd3, 0xe5, 0x41, 0x68, 0xac, - 0xc1, 0x9c, 0x22, 0x27, 0x20, 0x96, 0x0a, 0xa6, 0x65, 0x36, 0xcb, 0xb2, 0x2e, 0x19, 0xc3, 0x05, - 0xc5, 0x1b, 0xf0, 0x00, 0xea, 0xc9, 0x88, 0x9e, 0x9c, 0xf5, 0x02, 0x27, 0x36, 0x9b, 0x25, 0xef, - 0x4f, 0x52, 0xf8, 0xb4, 0xe7, 0xd6, 0x4a, 0x7b, 0xee, 0x27, 0x04, 0x35, 0xc9, 0x2b, 0xf1, 0x89, - 0x49, 0xf6, 0x34, 0xfe, 0x3c, 0xb5, 0x52, 0x9f, 0x51, 0xd0, 0x4e, 0x92, 0xf2, 0xec, 0x0c, 0x03, - 0xf7, 0x02, 0x5a, 0xc3, 0x8f, 0x10, 0xcc, 0x65, 0x3c, 0x0a, 0x9f, 0x9a, 0x18, 0x76, 0x91, 0x69, - 0x4d, 0x0d, 0xaa, 0xad, 0xa0, 0x9e, 0x26, 0x2b, 0x65, 0x50, 0x45, 0xea, 0x5c, 0xc2, 0xfd, 0x1e, - 0x01, 0x1e, 0x8d, 0xbb, 0xd1, 0x00, 0xc4, 0xab, 0x05, 0x57, 0x13, 0x27, 0xa9, 0x79, 0xea, 0x50, - 0xbd, 0xe2, 0xbd, 0x5e, 0x2b, 0xbd, 0xd7, 0x7c, 0xe4, 0xff, 0x01, 0x82, 0xe7, 0x8b, 0x24, 0x10, - 0x9f, 0x3d, 0xac, 0xd3, 0x0a, 0x64, 0xf1, 0x19, 0x3a, 0xee, 0x35, 0x05, 0x69, 0x75, 0xad, 0x3c, - 0x57, 0x99, 0xfb, 0x2f, 0x10, 0xcc, 0xa6, 0x2c, 0x0f, 0xaf, 0x4c, 0xb2, 0xad, 0xd3, 0x40, 0xf3, - 0x58, 0x41, 0x2b, 0x63, 0x42, 0xe4, 0x75, 0xe5, 0x76, 0x1d, 0xdb, 0x65, 0x6e, 0x43, 0xee, 0x45, - 0xf6, 0xdd, 0x94, 0x22, 0xde, 0xb3, 0xbb, 0xbc, 0x1d, 0x9d, 0x43, 0x9b, 0x6f, 0x3e, 0xde, 0x5f, - 0x42, 0xbf, 0xef, 0x2f, 0xa1, 0x3f, 0xf7, 0x97, 0xd0, 0x47, 0x56, 0xd9, 0x5f, 0x95, 0x83, 0x7f, - 0x9f, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x3d, 0xe7, 0xbe, 0x98, 0x92, 0x12, 0x00, 0x00, + proto.RegisterFile("server/application/application.proto", fileDescriptor_application_a0bd93d5f02bc9d6) +} + +var fileDescriptor_application_a0bd93d5f02bc9d6 = []byte{ + // 1427 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0x66, 0xec, 0xc4, 0x8e, 0x5f, 0x2a, 0x04, 0x43, 0x1b, 0x96, 0x25, 0x4d, 0xac, 0x6d, 0x9a, + 0xba, 0x29, 0xdd, 0x6d, 0xa2, 0x4a, 0xa0, 0x0a, 0x84, 0x1a, 0x5a, 0xda, 0x54, 0xa1, 0x35, 0x9b, + 0x16, 0x24, 0x2e, 0x68, 0xba, 0x3b, 0x75, 0x96, 0xd8, 0x3b, 0xcb, 0xec, 0xd8, 0xc8, 0x54, 0x3d, + 0x50, 0x10, 0x27, 0xa4, 0x0a, 0xc1, 0x81, 0x1b, 0xd0, 0x33, 0xe2, 0xc2, 0x9d, 0x73, 0x8f, 0x48, + 0xdc, 0x2b, 0x14, 0xf1, 0x87, 0xa0, 0x99, 0xdd, 0xf5, 0xce, 0x36, 0xf6, 0xa6, 0x50, 0x73, 0x9b, + 0x7d, 0xf3, 0xe6, 0xbd, 0xef, 0xfd, 0x9a, 0xf9, 0x6c, 0x58, 0x89, 0x29, 0x1f, 0x50, 0xee, 0x90, + 0x28, 0xea, 0x06, 0x1e, 0x11, 0x01, 0x0b, 0xf5, 0xb5, 0x1d, 0x71, 0x26, 0x18, 0x9e, 0xd7, 0x44, + 0xe6, 0xd1, 0x0e, 0xeb, 0x30, 0x25, 0x77, 0xe4, 0x2a, 0x51, 0x31, 0x17, 0x3b, 0x8c, 0x75, 0xba, + 0xd4, 0x21, 0x51, 0xe0, 0x90, 0x30, 0x64, 0x42, 0x29, 0xc7, 0xe9, 0xae, 0xb5, 0xf7, 0x46, 0x6c, + 0x07, 0x4c, 0xed, 0x7a, 0x8c, 0x53, 0x67, 0xb0, 0xee, 0x74, 0x68, 0x48, 0x39, 0x11, 0xd4, 0x4f, + 0x75, 0xce, 0xe7, 0x3a, 0x3d, 0xe2, 0xed, 0x06, 0x21, 0xe5, 0x43, 0x27, 0xda, 0xeb, 0x48, 0x41, + 0xec, 0xf4, 0xa8, 0x20, 0xe3, 0x4e, 0x6d, 0x75, 0x02, 0xb1, 0xdb, 0xbf, 0x6d, 0x7b, 0xac, 0xe7, + 0x10, 0xae, 0x80, 0x7d, 0xa2, 0x16, 0x67, 0x3d, 0x3f, 0x3f, 0xad, 0x87, 0x37, 0x58, 0x27, 0xdd, + 0x68, 0x97, 0x1c, 0x34, 0xb5, 0x59, 0x66, 0x8a, 0xd3, 0x88, 0xa5, 0xb9, 0x52, 0xcb, 0x40, 0x30, + 0x3e, 0xd4, 0x96, 0x89, 0x0d, 0x2b, 0x84, 0x17, 0x2e, 0xe6, 0xbe, 0xde, 0xef, 0x53, 0x3e, 0xc4, + 0x18, 0x66, 0x42, 0xd2, 0xa3, 0x06, 0x6a, 0xa2, 0x56, 0xc3, 0x55, 0x6b, 0xbc, 0x04, 0x75, 0x4e, + 0xef, 0x70, 0x1a, 0xef, 0x1a, 0x95, 0x26, 0x6a, 0xcd, 0x6d, 0xce, 0x3c, 0x7a, 0xbc, 0xfc, 0x9c, + 0x9b, 0x09, 0xf1, 0x2a, 0xd4, 0xa5, 0x7b, 0xea, 0x09, 0xa3, 0xda, 0xac, 0xb6, 0x1a, 0x9b, 0x47, + 0xf6, 0x1f, 0x2f, 0xcf, 0xb5, 0x13, 0x51, 0xec, 0x66, 0x9b, 0xd6, 0xd7, 0x08, 0x96, 0x34, 0x87, + 0x2e, 0x8d, 0x59, 0x9f, 0x7b, 0xf4, 0xf2, 0x80, 0x86, 0x22, 0x7e, 0xd2, 0x7d, 0x65, 0xe4, 0xbe, + 0x05, 0x47, 0x78, 0xaa, 0x7a, 0x5d, 0xee, 0x55, 0xe4, 0x5e, 0x8a, 0xa1, 0xb0, 0x83, 0x57, 0x61, + 0x3e, 0xfb, 0xbe, 0xb5, 0x75, 0xc9, 0xa8, 0x6a, 0x8a, 0xfa, 0x86, 0xd5, 0x06, 0x43, 0xc3, 0xf1, + 0x1e, 0x09, 0x83, 0x3b, 0x34, 0x16, 0x93, 0x11, 0x34, 0x61, 0x8e, 0xd3, 0x41, 0x10, 0x07, 0x2c, + 0x54, 0x19, 0xc8, 0x8c, 0x8e, 0xa4, 0xd6, 0x31, 0x78, 0xa9, 0x18, 0x59, 0xc4, 0xc2, 0x98, 0x5a, + 0x0f, 0x51, 0xc1, 0xd3, 0x3b, 0x9c, 0x12, 0x41, 0x5d, 0xfa, 0x69, 0x9f, 0xc6, 0x02, 0x87, 0xa0, + 0xb7, 0xaa, 0x72, 0x38, 0xbf, 0xf1, 0xae, 0x9d, 0x17, 0xd6, 0xce, 0x0a, 0xab, 0x16, 0x1f, 0x7b, + 0xbe, 0x1d, 0xed, 0x75, 0x6c, 0xd9, 0x23, 0xb6, 0xde, 0xf6, 0x59, 0x8f, 0xd8, 0x9a, 0xa7, 0x2c, + 0x6a, 0x4d, 0x0f, 0x2f, 0x40, 0xad, 0x1f, 0xc5, 0x94, 0x8b, 0xa4, 0x8a, 0x6e, 0xfa, 0x65, 0x7d, + 0x55, 0x04, 0x79, 0x2b, 0xf2, 0x35, 0x90, 0xbb, 0xff, 0x23, 0xc8, 0x02, 0x3c, 0xeb, 0x6a, 0x01, + 0xc5, 0x25, 0xda, 0xa5, 0x39, 0x8a, 0x71, 0x45, 0x31, 0xa0, 0xee, 0x91, 0xd8, 0x23, 0x3e, 0x4d, + 0xe3, 0xc9, 0x3e, 0xad, 0x87, 0x55, 0x58, 0xd0, 0x4c, 0xed, 0x0c, 0x43, 0xaf, 0xcc, 0xd0, 0xa1, + 0xd5, 0xc5, 0x8b, 0x50, 0xf3, 0xf9, 0xd0, 0xed, 0x87, 0x46, 0x55, 0xeb, 0xff, 0x54, 0x86, 0x4d, + 0x98, 0x8d, 0x78, 0x3f, 0xa4, 0xc6, 0x8c, 0xb6, 0x99, 0x88, 0xb0, 0x07, 0x73, 0xb1, 0x90, 0x73, + 0xdb, 0x19, 0x1a, 0xb3, 0x4d, 0xd4, 0x9a, 0xdf, 0xb8, 0xf2, 0x0c, 0xb9, 0x93, 0x91, 0xec, 0xa4, + 0xe6, 0xdc, 0x91, 0x61, 0xfc, 0x16, 0x34, 0x22, 0xc2, 0x49, 0x8f, 0x0a, 0xca, 0x8d, 0x9a, 0xf2, + 0xb2, 0x5c, 0x30, 0xd0, 0xce, 0x76, 0x6f, 0x0c, 0x28, 0xe7, 0x81, 0x4f, 0x63, 0x37, 0x3f, 0x81, + 0x05, 0x34, 0xb2, 0xe1, 0x88, 0x8d, 0x7a, 0xb3, 0xda, 0x9a, 0xdf, 0x68, 0x3f, 0x23, 0xc8, 0x1b, + 0x91, 0xbc, 0xac, 0xb4, 0x19, 0x4f, 0xb3, 0x92, 0x3b, 0xb2, 0xae, 0x01, 0x3e, 0x08, 0x0b, 0x9f, + 0x87, 0x06, 0xcb, 0x3e, 0x0c, 0xa4, 0xb0, 0x2c, 0x8c, 0x0f, 0xc5, 0xcd, 0x15, 0x2d, 0x0a, 0x8d, + 0x91, 0x1c, 0x1b, 0x7a, 0x89, 0x53, 0xbf, 0x49, 0xa1, 0x4d, 0x98, 0x1d, 0x90, 0x6e, 0x9f, 0x16, + 0xaa, 0x9c, 0x88, 0xb0, 0x05, 0x0d, 0x8f, 0xf5, 0x22, 0x16, 0xd2, 0x50, 0xa8, 0x2a, 0x67, 0xfb, + 0xb9, 0xd8, 0xfa, 0x01, 0xc1, 0xe2, 0x81, 0x41, 0xd9, 0x89, 0x68, 0x69, 0x77, 0xf9, 0x30, 0x13, + 0x47, 0xd4, 0x53, 0xb7, 0xd6, 0xfc, 0xc6, 0xb5, 0xe9, 0x4c, 0x8e, 0x74, 0x9a, 0x85, 0x26, 0xad, + 0xcb, 0xab, 0xd5, 0xd4, 0x27, 0x8b, 0x75, 0xbb, 0xb7, 0x89, 0xb7, 0x57, 0x06, 0xcc, 0x84, 0x4a, + 0xe0, 0x2b, 0x58, 0xd5, 0x4d, 0x90, 0xa6, 0xf6, 0x1f, 0x2f, 0x57, 0xb6, 0x2e, 0xb9, 0x95, 0xc0, + 0xff, 0xef, 0x0d, 0x6f, 0xfd, 0x8a, 0xa0, 0x39, 0x66, 0x8c, 0x93, 0xaa, 0x97, 0xc1, 0x79, 0xfa, + 0x5b, 0x7e, 0x03, 0x80, 0x44, 0xc1, 0x07, 0x94, 0xab, 0x89, 0x4d, 0x2e, 0x79, 0x9c, 0x06, 0x00, + 0x17, 0xdb, 0x5b, 0xe9, 0x8e, 0xab, 0x69, 0xc9, 0xa6, 0xd8, 0x0b, 0x42, 0xdf, 0x98, 0xd1, 0x9b, + 0x42, 0x4a, 0xac, 0x9f, 0x2b, 0xf0, 0xb2, 0x06, 0xb8, 0xcd, 0xfc, 0x6d, 0xd6, 0x29, 0x79, 0x8d, + 0x0c, 0xa8, 0x47, 0xcc, 0xcf, 0x21, 0xba, 0xd9, 0x67, 0xd2, 0x42, 0xa1, 0x20, 0x92, 0x0c, 0x14, + 0xde, 0x9e, 0x5c, 0x2c, 0xa3, 0x8c, 0x83, 0xd0, 0xa3, 0x3b, 0xd4, 0x63, 0xa1, 0x1f, 0x2b, 0x3c, + 0xd5, 0x2c, 0x4a, 0x7d, 0x07, 0x5f, 0x85, 0x86, 0xfa, 0xbe, 0x19, 0xf4, 0x68, 0x7a, 0x75, 0xac, + 0xd9, 0x09, 0xeb, 0xb0, 0x75, 0xd6, 0x91, 0x37, 0x8d, 0x64, 0x1d, 0xf6, 0x60, 0xdd, 0x96, 0x27, + 0xdc, 0xfc, 0xb0, 0xc4, 0x25, 0x48, 0xd0, 0xdd, 0x0e, 0x42, 0x1a, 0x1b, 0x35, 0xcd, 0x61, 0x2e, + 0x96, 0x05, 0xbf, 0xc3, 0xba, 0x5d, 0xf6, 0x99, 0x51, 0x6f, 0x56, 0xf2, 0x82, 0x27, 0x32, 0xeb, + 0x73, 0x98, 0xdb, 0x66, 0x9d, 0xcb, 0xa1, 0xe0, 0x43, 0x49, 0x06, 0x64, 0x38, 0x72, 0x4c, 0xf4, + 0x09, 0xcb, 0x84, 0xf8, 0x3a, 0x34, 0x44, 0xd0, 0xa3, 0x3b, 0x82, 0xf4, 0xa2, 0xb4, 0xe9, 0xff, + 0x05, 0xee, 0x11, 0xb2, 0xcc, 0x84, 0xe5, 0xc0, 0x2b, 0xa3, 0xdb, 0xe4, 0x26, 0xe5, 0xbd, 0x20, + 0x24, 0xa5, 0xef, 0x82, 0xb5, 0x08, 0xe6, 0xb8, 0x03, 0xc9, 0x8b, 0xbc, 0xf1, 0xe5, 0x8b, 0x80, + 0xf5, 0x41, 0xa2, 0x7c, 0x10, 0x78, 0x14, 0x3f, 0x40, 0x30, 0xb3, 0x1d, 0xc4, 0x02, 0x1f, 0x2f, + 0xcc, 0xde, 0x93, 0xf4, 0xc8, 0x9c, 0xd2, 0xfc, 0x4a, 0x57, 0xd6, 0xe2, 0xfd, 0x3f, 0xff, 0xfe, + 0xae, 0xb2, 0x80, 0x8f, 0x2a, 0xa6, 0x39, 0x58, 0xd7, 0x89, 0x5f, 0x8c, 0xbf, 0x41, 0x80, 0xa5, + 0x5a, 0x91, 0x25, 0xe1, 0x33, 0x93, 0xf0, 0x8d, 0x61, 0x53, 0xe6, 0x71, 0x2d, 0xf1, 0xb6, 0xa4, + 0xb2, 0x32, 0xcd, 0x4a, 0x41, 0x01, 0x58, 0x53, 0x00, 0x56, 0xb0, 0x35, 0x0e, 0x80, 0x73, 0x57, + 0x66, 0xf3, 0x9e, 0x43, 0x13, 0xbf, 0x3f, 0x22, 0x98, 0xfd, 0x90, 0x08, 0x6f, 0xf7, 0xb0, 0x0c, + 0xb5, 0xa7, 0x93, 0x21, 0xe5, 0x4b, 0x41, 0xb5, 0x4e, 0x28, 0x98, 0xc7, 0xf1, 0xab, 0x19, 0xcc, + 0x58, 0x70, 0x4a, 0x7a, 0x05, 0xb4, 0xe7, 0x10, 0x7e, 0x88, 0xa0, 0x96, 0x10, 0x2c, 0x7c, 0x72, + 0x12, 0xc4, 0x02, 0x01, 0x33, 0xa7, 0x44, 0x63, 0xac, 0xd3, 0x0a, 0xe0, 0x09, 0x6b, 0x6c, 0x21, + 0x2f, 0x14, 0x38, 0xd8, 0xb7, 0x08, 0xaa, 0x57, 0xe8, 0xa1, 0x6d, 0x36, 0x2d, 0x64, 0x07, 0x52, + 0x37, 0xa6, 0xc2, 0xf8, 0x3e, 0x82, 0x23, 0x57, 0xa8, 0xc8, 0x68, 0x70, 0x3c, 0x39, 0x7d, 0x05, + 0xa6, 0x6c, 0x2e, 0xda, 0xda, 0x2f, 0x8a, 0x6c, 0x6b, 0x44, 0x7d, 0xcf, 0x2a, 0xd7, 0xa7, 0xf0, + 0xc9, 0xb2, 0xe6, 0xea, 0x8d, 0x7c, 0xfe, 0x8e, 0xa0, 0x96, 0x3c, 0xa8, 0x93, 0xdd, 0x17, 0x98, + 0xe9, 0xd4, 0x72, 0x74, 0x59, 0x01, 0x7d, 0xdb, 0x3c, 0x37, 0x1e, 0xa8, 0x7e, 0x5e, 0xde, 0x54, + 0x3e, 0x11, 0xc4, 0x56, 0xe8, 0x8b, 0x95, 0xfd, 0x0d, 0x01, 0xe4, 0x8c, 0x00, 0x9f, 0x2e, 0x0f, + 0x42, 0x63, 0x0d, 0xe6, 0x14, 0x39, 0x81, 0x65, 0xab, 0x60, 0x5a, 0x66, 0xb3, 0x2c, 0xeb, 0x92, + 0x31, 0x5c, 0x50, 0xbc, 0x01, 0x0f, 0xa0, 0x96, 0x3c, 0xd1, 0x93, 0xb3, 0x5e, 0x60, 0xe2, 0x66, + 0xb3, 0xe4, 0xfe, 0x49, 0x0a, 0x9f, 0xf6, 0xdc, 0x5a, 0x69, 0xcf, 0xfd, 0x84, 0x60, 0x46, 0x12, + 0x45, 0x7c, 0x62, 0x92, 0x3d, 0x8d, 0xb5, 0x4f, 0xad, 0xd4, 0x67, 0x14, 0xb4, 0x93, 0x56, 0x79, + 0x76, 0x86, 0xa1, 0x77, 0x01, 0xad, 0xe1, 0x5f, 0x10, 0xcc, 0x65, 0x3c, 0x0a, 0x9f, 0x9a, 0x18, + 0x76, 0x91, 0x69, 0x4d, 0x0d, 0xaa, 0xa3, 0xa0, 0x9e, 0xb6, 0x56, 0xca, 0xa0, 0xf2, 0xd4, 0xb9, + 0x84, 0xfb, 0x3d, 0x02, 0x3c, 0x7a, 0xee, 0x46, 0x0f, 0x20, 0x5e, 0x2d, 0xb8, 0x9a, 0xf8, 0x92, + 0x9a, 0xa7, 0x0e, 0xd5, 0x2b, 0xce, 0xf5, 0x5a, 0xe9, 0x5c, 0xb3, 0x91, 0xff, 0x07, 0x08, 0x9e, + 0x2f, 0x92, 0x40, 0x7c, 0xf6, 0xb0, 0x4e, 0x2b, 0x90, 0xc5, 0xa7, 0xe8, 0xb8, 0xd7, 0x14, 0xa4, + 0xd5, 0xb5, 0xf2, 0x5c, 0x65, 0xee, 0xbf, 0x40, 0x50, 0x4f, 0x59, 0x1e, 0x5e, 0x99, 0x64, 0x5b, + 0xa7, 0x81, 0xe6, 0xb1, 0x82, 0x56, 0xc6, 0x84, 0xac, 0xd7, 0x95, 0xdb, 0x75, 0xec, 0x94, 0xb9, + 0x8d, 0x98, 0x1f, 0x3b, 0x77, 0x53, 0x8a, 0x78, 0xcf, 0xe9, 0xb2, 0x4e, 0x7c, 0x0e, 0x6d, 0xbe, + 0xf9, 0x68, 0x7f, 0x09, 0xfd, 0xb1, 0xbf, 0x84, 0xfe, 0xda, 0x5f, 0x42, 0x1f, 0xd9, 0x65, 0xff, + 0xe5, 0x1c, 0xfc, 0xcf, 0xeb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6a, 0x08, 0x8a, 0xbf, 0x08, + 0x13, 0x00, 0x00, } diff --git a/server/cluster/cluster.pb.go b/server/cluster/cluster.pb.go index fa4c2ba9ebf42..3b955688baba4 100644 --- a/server/cluster/cluster.pb.go +++ b/server/cluster/cluster.pb.go @@ -45,7 +45,7 @@ func (m *ClusterQuery) Reset() { *m = ClusterQuery{} } func (m *ClusterQuery) String() string { return proto.CompactTextString(m) } func (*ClusterQuery) ProtoMessage() {} func (*ClusterQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{0} + return fileDescriptor_cluster_0875510a34378ea0, []int{0} } func (m *ClusterQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -91,7 +91,7 @@ func (m *ClusterResponse) Reset() { *m = ClusterResponse{} } func (m *ClusterResponse) String() string { return proto.CompactTextString(m) } func (*ClusterResponse) ProtoMessage() {} func (*ClusterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{1} + return fileDescriptor_cluster_0875510a34378ea0, []int{1} } func (m *ClusterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -132,7 +132,7 @@ func (m *ClusterCreateRequest) Reset() { *m = ClusterCreateRequest{} } func (m *ClusterCreateRequest) String() string { return proto.CompactTextString(m) } func (*ClusterCreateRequest) ProtoMessage() {} func (*ClusterCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{2} + return fileDescriptor_cluster_0875510a34378ea0, []int{2} } func (m *ClusterCreateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -189,7 +189,7 @@ func (m *ClusterCreateFromKubeConfigRequest) Reset() { *m = ClusterCreat func (m *ClusterCreateFromKubeConfigRequest) String() string { return proto.CompactTextString(m) } func (*ClusterCreateFromKubeConfigRequest) ProtoMessage() {} func (*ClusterCreateFromKubeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{3} + return fileDescriptor_cluster_0875510a34378ea0, []int{3} } func (m *ClusterCreateFromKubeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -257,7 +257,7 @@ func (m *ClusterUpdateRequest) Reset() { *m = ClusterUpdateRequest{} } func (m *ClusterUpdateRequest) String() string { return proto.CompactTextString(m) } func (*ClusterUpdateRequest) ProtoMessage() {} func (*ClusterUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_cluster_bf8d7367dfc95a3e, []int{4} + return fileDescriptor_cluster_0875510a34378ea0, []int{4} } func (m *ClusterUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1393,10 +1393,10 @@ var ( ) func init() { - proto.RegisterFile("server/cluster/cluster.proto", fileDescriptor_cluster_bf8d7367dfc95a3e) + proto.RegisterFile("server/cluster/cluster.proto", fileDescriptor_cluster_0875510a34378ea0) } -var fileDescriptor_cluster_bf8d7367dfc95a3e = []byte{ +var fileDescriptor_cluster_0875510a34378ea0 = []byte{ // 564 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0xcd, 0x6e, 0x13, 0x31, 0x10, 0xc7, 0xe5, 0xb6, 0xda, 0x12, 0x83, 0xf8, 0xb0, 0x0a, 0x5a, 0xd2, 0x10, 0xa5, 0x3e, 0x54, diff --git a/server/project/project.pb.go b/server/project/project.pb.go index cb59249682e04..492ce08be4a2c 100644 --- a/server/project/project.pb.go +++ b/server/project/project.pb.go @@ -46,7 +46,7 @@ func (m *ProjectCreateRequest) Reset() { *m = ProjectCreateRequest{} } func (m *ProjectCreateRequest) String() string { return proto.CompactTextString(m) } func (*ProjectCreateRequest) ProtoMessage() {} func (*ProjectCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_project_8d94583ca767d5b3, []int{0} + return fileDescriptor_project_082822b5d17b8c4e, []int{0} } func (m *ProjectCreateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -96,7 +96,7 @@ func (m *ProjectTokenDeleteRequest) Reset() { *m = ProjectTokenDeleteReq func (m *ProjectTokenDeleteRequest) String() string { return proto.CompactTextString(m) } func (*ProjectTokenDeleteRequest) ProtoMessage() {} func (*ProjectTokenDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_project_8d94583ca767d5b3, []int{1} + return fileDescriptor_project_082822b5d17b8c4e, []int{1} } func (m *ProjectTokenDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -162,7 +162,7 @@ func (m *ProjectTokenCreateRequest) Reset() { *m = ProjectTokenCreateReq func (m *ProjectTokenCreateRequest) String() string { return proto.CompactTextString(m) } func (*ProjectTokenCreateRequest) ProtoMessage() {} func (*ProjectTokenCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_project_8d94583ca767d5b3, []int{2} + return fileDescriptor_project_082822b5d17b8c4e, []int{2} } func (m *ProjectTokenCreateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -231,7 +231,7 @@ func (m *ProjectTokenResponse) Reset() { *m = ProjectTokenResponse{} } func (m *ProjectTokenResponse) String() string { return proto.CompactTextString(m) } func (*ProjectTokenResponse) ProtoMessage() {} func (*ProjectTokenResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_project_8d94583ca767d5b3, []int{3} + return fileDescriptor_project_082822b5d17b8c4e, []int{3} } func (m *ProjectTokenResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -279,7 +279,7 @@ func (m *ProjectQuery) Reset() { *m = ProjectQuery{} } func (m *ProjectQuery) String() string { return proto.CompactTextString(m) } func (*ProjectQuery) ProtoMessage() {} func (*ProjectQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_project_8d94583ca767d5b3, []int{4} + return fileDescriptor_project_082822b5d17b8c4e, []int{4} } func (m *ProjectQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -326,7 +326,7 @@ func (m *ProjectUpdateRequest) Reset() { *m = ProjectUpdateRequest{} } func (m *ProjectUpdateRequest) String() string { return proto.CompactTextString(m) } func (*ProjectUpdateRequest) ProtoMessage() {} func (*ProjectUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_project_8d94583ca767d5b3, []int{5} + return fileDescriptor_project_082822b5d17b8c4e, []int{5} } func (m *ProjectUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -372,7 +372,7 @@ func (m *EmptyResponse) Reset() { *m = EmptyResponse{} } func (m *EmptyResponse) String() string { return proto.CompactTextString(m) } func (*EmptyResponse) ProtoMessage() {} func (*EmptyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_project_8d94583ca767d5b3, []int{6} + return fileDescriptor_project_082822b5d17b8c4e, []int{6} } func (m *EmptyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1846,10 +1846,10 @@ var ( ) func init() { - proto.RegisterFile("server/project/project.proto", fileDescriptor_project_8d94583ca767d5b3) + proto.RegisterFile("server/project/project.proto", fileDescriptor_project_082822b5d17b8c4e) } -var fileDescriptor_project_8d94583ca767d5b3 = []byte{ +var fileDescriptor_project_082822b5d17b8c4e = []byte{ // 697 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0x5d, 0x6b, 0x13, 0x4d, 0x14, 0x66, 0x9a, 0xbe, 0x79, 0xdf, 0x4e, 0x5e, 0xb5, 0x0c, 0xad, 0xa6, 0xb1, 0x8d, 0x61, 0x2e, diff --git a/server/repository/repository.pb.go b/server/repository/repository.pb.go index 803c50098f571..aa4eabde84f4b 100644 --- a/server/repository/repository.pb.go +++ b/server/repository/repository.pb.go @@ -46,7 +46,7 @@ func (m *RepoAppsQuery) Reset() { *m = RepoAppsQuery{} } func (m *RepoAppsQuery) String() string { return proto.CompactTextString(m) } func (*RepoAppsQuery) ProtoMessage() {} func (*RepoAppsQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{0} + return fileDescriptor_repository_31d36efd186d2b01, []int{0} } func (m *RepoAppsQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -102,7 +102,7 @@ func (m *AppInfo) Reset() { *m = AppInfo{} } func (m *AppInfo) String() string { return proto.CompactTextString(m) } func (*AppInfo) ProtoMessage() {} func (*AppInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{1} + return fileDescriptor_repository_31d36efd186d2b01, []int{1} } func (m *AppInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -159,7 +159,7 @@ func (m *RepoAppDetailsQuery) Reset() { *m = RepoAppDetailsQuery{} } func (m *RepoAppDetailsQuery) String() string { return proto.CompactTextString(m) } func (*RepoAppDetailsQuery) ProtoMessage() {} func (*RepoAppDetailsQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{2} + return fileDescriptor_repository_31d36efd186d2b01, []int{2} } func (m *RepoAppDetailsQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -224,7 +224,7 @@ func (m *RepoAppDetailsResponse) Reset() { *m = RepoAppDetailsResponse{} func (m *RepoAppDetailsResponse) String() string { return proto.CompactTextString(m) } func (*RepoAppDetailsResponse) ProtoMessage() {} func (*RepoAppDetailsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{3} + return fileDescriptor_repository_31d36efd186d2b01, []int{3} } func (m *RepoAppDetailsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -293,7 +293,7 @@ func (m *RepoAppsResponse) Reset() { *m = RepoAppsResponse{} } func (m *RepoAppsResponse) String() string { return proto.CompactTextString(m) } func (*RepoAppsResponse) ProtoMessage() {} func (*RepoAppsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{4} + return fileDescriptor_repository_31d36efd186d2b01, []int{4} } func (m *RepoAppsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -344,7 +344,7 @@ func (m *KsonnetAppSpec) Reset() { *m = KsonnetAppSpec{} } func (m *KsonnetAppSpec) String() string { return proto.CompactTextString(m) } func (*KsonnetAppSpec) ProtoMessage() {} func (*KsonnetAppSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{5} + return fileDescriptor_repository_31d36efd186d2b01, []int{5} } func (m *KsonnetAppSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -408,7 +408,7 @@ func (m *HelmAppSpec) Reset() { *m = HelmAppSpec{} } func (m *HelmAppSpec) String() string { return proto.CompactTextString(m) } func (*HelmAppSpec) ProtoMessage() {} func (*HelmAppSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{6} + return fileDescriptor_repository_31d36efd186d2b01, []int{6} } func (m *HelmAppSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -470,7 +470,7 @@ func (m *KustomizeAppSpec) Reset() { *m = KustomizeAppSpec{} } func (m *KustomizeAppSpec) String() string { return proto.CompactTextString(m) } func (*KustomizeAppSpec) ProtoMessage() {} func (*KustomizeAppSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{7} + return fileDescriptor_repository_31d36efd186d2b01, []int{7} } func (m *KustomizeAppSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -524,7 +524,7 @@ func (m *KsonnetEnvironment) Reset() { *m = KsonnetEnvironment{} } func (m *KsonnetEnvironment) String() string { return proto.CompactTextString(m) } func (*KsonnetEnvironment) ProtoMessage() {} func (*KsonnetEnvironment) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{8} + return fileDescriptor_repository_31d36efd186d2b01, []int{8} } func (m *KsonnetEnvironment) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -595,7 +595,7 @@ func (m *KsonnetEnvironmentDestination) Reset() { *m = KsonnetEnvironmen func (m *KsonnetEnvironmentDestination) String() string { return proto.CompactTextString(m) } func (*KsonnetEnvironmentDestination) ProtoMessage() {} func (*KsonnetEnvironmentDestination) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{9} + return fileDescriptor_repository_31d36efd186d2b01, []int{9} } func (m *KsonnetEnvironmentDestination) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -650,7 +650,7 @@ func (m *RepoQuery) Reset() { *m = RepoQuery{} } func (m *RepoQuery) String() string { return proto.CompactTextString(m) } func (*RepoQuery) ProtoMessage() {} func (*RepoQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{10} + return fileDescriptor_repository_31d36efd186d2b01, []int{10} } func (m *RepoQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -696,7 +696,7 @@ func (m *RepoResponse) Reset() { *m = RepoResponse{} } func (m *RepoResponse) String() string { return proto.CompactTextString(m) } func (*RepoResponse) ProtoMessage() {} func (*RepoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{11} + return fileDescriptor_repository_31d36efd186d2b01, []int{11} } func (m *RepoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -737,7 +737,7 @@ func (m *RepoCreateRequest) Reset() { *m = RepoCreateRequest{} } func (m *RepoCreateRequest) String() string { return proto.CompactTextString(m) } func (*RepoCreateRequest) ProtoMessage() {} func (*RepoCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{12} + return fileDescriptor_repository_31d36efd186d2b01, []int{12} } func (m *RepoCreateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -791,7 +791,7 @@ func (m *RepoUpdateRequest) Reset() { *m = RepoUpdateRequest{} } func (m *RepoUpdateRequest) String() string { return proto.CompactTextString(m) } func (*RepoUpdateRequest) ProtoMessage() {} func (*RepoUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_repository_6cfdcc280f230e64, []int{13} + return fileDescriptor_repository_31d36efd186d2b01, []int{13} } func (m *RepoUpdateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3710,10 +3710,10 @@ var ( ) func init() { - proto.RegisterFile("server/repository/repository.proto", fileDescriptor_repository_6cfdcc280f230e64) + proto.RegisterFile("server/repository/repository.proto", fileDescriptor_repository_31d36efd186d2b01) } -var fileDescriptor_repository_6cfdcc280f230e64 = []byte{ +var fileDescriptor_repository_31d36efd186d2b01 = []byte{ // 911 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x5b, 0x45, 0x10, 0xd7, 0xc6, 0xa9, 0x13, 0x8f, 0xdb, 0x2a, 0xdd, 0x96, 0x60, 0x1e, 0x8e, 0x1b, 0x2d, 0x12, diff --git a/server/session/session.pb.go b/server/session/session.pb.go index f594a9a3f7362..e3db19fa810ae 100644 --- a/server/session/session.pb.go +++ b/server/session/session.pb.go @@ -47,7 +47,7 @@ func (m *SessionCreateRequest) Reset() { *m = SessionCreateRequest{} } func (m *SessionCreateRequest) String() string { return proto.CompactTextString(m) } func (*SessionCreateRequest) ProtoMessage() {} func (*SessionCreateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_session_217b926c109d1cc2, []int{0} + return fileDescriptor_session_8e535ce77fc5e082, []int{0} } func (m *SessionCreateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -108,7 +108,7 @@ func (m *SessionDeleteRequest) Reset() { *m = SessionDeleteRequest{} } func (m *SessionDeleteRequest) String() string { return proto.CompactTextString(m) } func (*SessionDeleteRequest) ProtoMessage() {} func (*SessionDeleteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_session_217b926c109d1cc2, []int{1} + return fileDescriptor_session_8e535ce77fc5e082, []int{1} } func (m *SessionDeleteRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -149,7 +149,7 @@ func (m *SessionResponse) Reset() { *m = SessionResponse{} } func (m *SessionResponse) String() string { return proto.CompactTextString(m) } func (*SessionResponse) ProtoMessage() {} func (*SessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_session_217b926c109d1cc2, []int{2} + return fileDescriptor_session_8e535ce77fc5e082, []int{2} } func (m *SessionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -827,10 +827,10 @@ var ( ) func init() { - proto.RegisterFile("server/session/session.proto", fileDescriptor_session_217b926c109d1cc2) + proto.RegisterFile("server/session/session.proto", fileDescriptor_session_8e535ce77fc5e082) } -var fileDescriptor_session_217b926c109d1cc2 = []byte{ +var fileDescriptor_session_8e535ce77fc5e082 = []byte{ // 356 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xb1, 0x4e, 0xeb, 0x30, 0x14, 0x86, 0xe5, 0x5e, 0xdd, 0xde, 0x7b, 0x3d, 0xdc, 0x8a, 0x28, 0x82, 0x28, 0x2a, 0x15, 0xca, diff --git a/server/settings/settings.pb.go b/server/settings/settings.pb.go index 00fb78fb6608b..4d870a30d4abd 100644 --- a/server/settings/settings.pb.go +++ b/server/settings/settings.pb.go @@ -42,7 +42,7 @@ func (m *SettingsQuery) Reset() { *m = SettingsQuery{} } func (m *SettingsQuery) String() string { return proto.CompactTextString(m) } func (*SettingsQuery) ProtoMessage() {} func (*SettingsQuery) Descriptor() ([]byte, []int) { - return fileDescriptor_settings_0a30d430c5f54e91, []int{0} + return fileDescriptor_settings_71506a99e4ff7448, []int{0} } func (m *SettingsQuery) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -83,7 +83,7 @@ func (m *Settings) Reset() { *m = Settings{} } func (m *Settings) String() string { return proto.CompactTextString(m) } func (*Settings) ProtoMessage() {} func (*Settings) Descriptor() ([]byte, []int) { - return fileDescriptor_settings_0a30d430c5f54e91, []int{1} + return fileDescriptor_settings_71506a99e4ff7448, []int{1} } func (m *Settings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -137,7 +137,7 @@ func (m *DexConfig) Reset() { *m = DexConfig{} } func (m *DexConfig) String() string { return proto.CompactTextString(m) } func (*DexConfig) ProtoMessage() {} func (*DexConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_settings_0a30d430c5f54e91, []int{2} + return fileDescriptor_settings_71506a99e4ff7448, []int{2} } func (m *DexConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -185,7 +185,7 @@ func (m *Connector) Reset() { *m = Connector{} } func (m *Connector) String() string { return proto.CompactTextString(m) } func (*Connector) ProtoMessage() {} func (*Connector) Descriptor() ([]byte, []int) { - return fileDescriptor_settings_0a30d430c5f54e91, []int{3} + return fileDescriptor_settings_71506a99e4ff7448, []int{3} } func (m *Connector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -974,10 +974,10 @@ var ( ) func init() { - proto.RegisterFile("server/settings/settings.proto", fileDescriptor_settings_0a30d430c5f54e91) + proto.RegisterFile("server/settings/settings.proto", fileDescriptor_settings_71506a99e4ff7448) } -var fileDescriptor_settings_0a30d430c5f54e91 = []byte{ +var fileDescriptor_settings_71506a99e4ff7448 = []byte{ // 322 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x41, 0x4b, 0xc3, 0x40, 0x10, 0x85, 0xd9, 0x46, 0xac, 0x19, 0x91, 0xea, 0x22, 0x12, 0x8b, 0xc4, 0x92, 0x53, 0x41, 0x4c, diff --git a/server/swagger.json b/server/swagger.json index 85a4fadc12e5f..30ab7b048943f 100644 --- a/server/swagger.json +++ b/server/swagger.json @@ -1320,6 +1320,12 @@ "type": "boolean", "format": "boolean" }, + "resources": { + "type": "array", + "items": { + "$ref": "#/definitions/v1alpha1SyncOperationResource" + } + }, "revision": { "type": "string" }, @@ -2630,6 +2636,13 @@ "format": "boolean", "title": "Prune deletes resources that are no longer tracked in git" }, + "resources": { + "type": "array", + "title": "Resources describes which resources to sync", + "items": { + "$ref": "#/definitions/v1alpha1SyncOperationResource" + } + }, "revision": { "description": "Revision is the git revision in which to sync the application to.\nIf omitted, will use the revision specified in app spec.", "type": "string" @@ -2639,6 +2652,21 @@ } } }, + "v1alpha1SyncOperationResource": { + "description": "SyncOperationResource contains resources to sync.", + "type": "object", + "properties": { + "group": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, "v1alpha1SyncOperationResult": { "type": "object", "title": "SyncOperationResult represent result of sync operation", diff --git a/server/version/version.pb.go b/server/version/version.pb.go index a6bd3d2c48771..ae8734accdafb 100644 --- a/server/version/version.pb.go +++ b/server/version/version.pb.go @@ -51,7 +51,7 @@ func (m *VersionMessage) Reset() { *m = VersionMessage{} } func (m *VersionMessage) String() string { return proto.CompactTextString(m) } func (*VersionMessage) ProtoMessage() {} func (*VersionMessage) Descriptor() ([]byte, []int) { - return fileDescriptor_version_6f54499c257f90e5, []int{0} + return fileDescriptor_version_cdcdf9fc14514c9b, []int{0} } func (m *VersionMessage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -781,10 +781,10 @@ var ( ) func init() { - proto.RegisterFile("server/version/version.proto", fileDescriptor_version_6f54499c257f90e5) + proto.RegisterFile("server/version/version.proto", fileDescriptor_version_cdcdf9fc14514c9b) } -var fileDescriptor_version_6f54499c257f90e5 = []byte{ +var fileDescriptor_version_cdcdf9fc14514c9b = []byte{ // 343 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x92, 0xcf, 0x4a, 0xc3, 0x40, 0x10, 0xc6, 0x49, 0xd5, 0xfe, 0x59, 0x4a, 0x0f, 0x8b, 0xd4, 0x25, 0x96, 0x22, 0x3d, 0x88, 0x08, From 23cdc29229cf54e8ef9ecc608834b8f2e89cd695 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Mon, 1 Oct 2018 14:48:21 -0700 Subject: [PATCH 08/31] Pass sync resources into syncContext --- controller/sync.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/controller/sync.go b/controller/sync.go index 09d9d177c542b..69685cd07cdbd 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -39,6 +39,7 @@ type syncContext struct { namespace string syncOp *appv1.SyncOperation syncRes *appv1.SyncOperationResult + resources []*appv1.SyncOperationResource opState *appv1.OperationState manifestInfo *repository.ManifestResponse log *log.Entry @@ -163,6 +164,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper namespace: app.Spec.Destination.Namespace, syncOp: &syncOp, syncRes: syncRes, + resources: syncResources, opState: state, manifestInfo: manifestInfo, log: log.WithFields(log.Fields{"application": app.Name}), From a7eb87a2ea2df27921216365792b05ff254e848d Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Mon, 1 Oct 2018 16:59:07 -0700 Subject: [PATCH 09/31] Update controller --- controller/sync.go | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/controller/sync.go b/controller/sync.go index 69685cd07cdbd..da3574014fe52 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -61,6 +61,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper if state.Operation.Sync != nil { syncOp = *state.Operation.Sync + syncResources = syncOp.Resources overrides = []appv1.ComponentParameter(state.Operation.Sync.ParameterOverrides) if state.SyncResult != nil { syncRes = state.SyncResult @@ -109,6 +110,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper // Take the value in the requested operation. We will resolve this to a SHA later. revision = syncOp.Revision } + comparison, manifestInfo, conditions, err := s.CompareAppState(app, revision, overrides) if err != nil { state.Phase = appv1.OperationError @@ -265,11 +267,25 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { sc.setOperationPhase(appv1.OperationError, fmt.Sprintf("Failed to unmarshal target object: %v", err)) return nil, false } - syncTask := syncTask{ - liveObj: liveObj, - targetObj: targetObj, + matchResource := func(uu ...*unstructured.Unstructured) bool { + if sc.resources != nil { + for _, r := range sc.resources { + for _, u := range uu { + if u["name"] != r.Name || u["kind"] == r.Kind || u["group"] == r.Group { + return false + } + } + } + } + return true + } + if matchResource(liveObj, targetObj) { + syncTask := syncTask{ + liveObj: liveObj, + targetObj: targetObj, + } + syncTasks = append(syncTasks, syncTask) } - syncTasks = append(syncTasks, syncTask) } return syncTasks, true } From 6a9cf1264b406997c52fd6dc811e89a66e9da3e0 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Mon, 1 Oct 2018 17:06:24 -0700 Subject: [PATCH 10/31] Fix pointers, access of name/kind/group --- controller/sync.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/controller/sync.go b/controller/sync.go index da3574014fe52..c3ae306d3d26f 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -39,7 +39,7 @@ type syncContext struct { namespace string syncOp *appv1.SyncOperation syncRes *appv1.SyncOperationResult - resources []*appv1.SyncOperationResource + resources []appv1.SyncOperationResource opState *appv1.OperationState manifestInfo *repository.ManifestResponse log *log.Entry @@ -56,7 +56,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper var revision string var syncOp appv1.SyncOperation var syncRes *appv1.SyncOperationResult - var syncResources []*appv1.SyncOperationResource + var syncResources []appv1.SyncOperationResource var overrides []appv1.ComponentParameter if state.Operation.Sync != nil { @@ -271,7 +271,8 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { if sc.resources != nil { for _, r := range sc.resources { for _, u := range uu { - if u["name"] != r.Name || u["kind"] == r.Kind || u["group"] == r.Group { + gvk := u.GroupVersionKind() + if u.GetName() != r.Name || gvk.Kind != r.Kind || gvk.Group != r.Group { return false } } From b9d9ed6ac3aa715cc9ab57e15dffb240438f20a0 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Mon, 1 Oct 2018 17:09:24 -0700 Subject: [PATCH 11/31] Refactor slightly for clarity --- controller/sync.go | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/controller/sync.go b/controller/sync.go index c3ae306d3d26f..f19d80a770e89 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -255,6 +255,17 @@ func (sc *syncContext) forceAppRefresh() { // generateSyncTasks() generates the list of sync tasks we will be performing during this sync. func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { + matchResource := func(uu ...*unstructured.Unstructured) bool { + for _, r := range sc.resources { + for _, u := range uu { + gvk := u.GroupVersionKind() + if u.GetName() != r.Name || gvk.Kind != r.Kind || gvk.Group != r.Group { + return false + } + } + } + return true + } syncTasks := make([]syncTask, 0) for _, resourceState := range sc.comparison.Resources { liveObj, err := resourceState.LiveObject() @@ -267,20 +278,7 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { sc.setOperationPhase(appv1.OperationError, fmt.Sprintf("Failed to unmarshal target object: %v", err)) return nil, false } - matchResource := func(uu ...*unstructured.Unstructured) bool { - if sc.resources != nil { - for _, r := range sc.resources { - for _, u := range uu { - gvk := u.GroupVersionKind() - if u.GetName() != r.Name || gvk.Kind != r.Kind || gvk.Group != r.Group { - return false - } - } - } - } - return true - } - if matchResource(liveObj, targetObj) { + if sc.resources == nil || matchResource(liveObj, targetObj) { syncTask := syncTask{ liveObj: liveObj, targetObj: targetObj, From 255605db5f7580f3ccc98cfbb9d2faa95c9de230 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 2 Oct 2018 10:46:18 -0700 Subject: [PATCH 12/31] Simplify match code a bit --- controller/sync.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/controller/sync.go b/controller/sync.go index f19d80a770e89..d6cf57e4d441e 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -39,7 +39,7 @@ type syncContext struct { namespace string syncOp *appv1.SyncOperation syncRes *appv1.SyncOperationResult - resources []appv1.SyncOperationResource + syncResources []appv1.SyncOperationResource opState *appv1.OperationState manifestInfo *repository.ManifestResponse log *log.Entry @@ -166,7 +166,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper namespace: app.Spec.Destination.Namespace, syncOp: &syncOp, syncRes: syncRes, - resources: syncResources, + syncResources: syncResources, opState: state, manifestInfo: manifestInfo, log: log.WithFields(log.Fields{"application": app.Name}), @@ -255,13 +255,11 @@ func (sc *syncContext) forceAppRefresh() { // generateSyncTasks() generates the list of sync tasks we will be performing during this sync. func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { - matchResource := func(uu ...*unstructured.Unstructured) bool { - for _, r := range sc.resources { - for _, u := range uu { - gvk := u.GroupVersionKind() - if u.GetName() != r.Name || gvk.Kind != r.Kind || gvk.Group != r.Group { - return false - } + matchResource := func(u *unstructured.Unstructured) bool { + for _, r := range sc.syncResources { + gvk := u.GroupVersionKind() + if u.GetName() != r.Name || gvk.Kind != r.Kind || gvk.Group != r.Group { + return false } } return true @@ -278,7 +276,7 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { sc.setOperationPhase(appv1.OperationError, fmt.Sprintf("Failed to unmarshal target object: %v", err)) return nil, false } - if sc.resources == nil || matchResource(liveObj, targetObj) { + if sc.syncResources == nil || (matchResource(liveObj) && matchResource(targetObj)) { syncTask := syncTask{ liveObj: liveObj, targetObj: targetObj, From 5a2ee594d30552a6da0fd3dda25ae0a985794f35 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 2 Oct 2018 10:54:32 -0700 Subject: [PATCH 13/31] Add resources flag --- cmd/argocd/commands/app.go | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 04c3c34092bcd..86991adb85867 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -823,12 +823,13 @@ func printAppResources(w io.Writer, app *argoappv1.Application, showOperation bo // NewApplicationSyncCommand returns a new instance of an `argocd app sync` command func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command { var ( - revision string - prune bool - dryRun bool - timeout uint - strategy string - force bool + revision string + resources string + prune bool + dryRun bool + timeout uint + strategy string + force bool ) var command = &cobra.Command{ Use: "sync APPNAME", @@ -841,11 +842,13 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co conn, appIf := argocdclient.NewClientOrDie(clientOpts).NewApplicationClientOrDie() defer util.Close(conn) appName := args[0] + splitResources := resources syncReq := application.ApplicationSyncRequest{ - Name: &appName, - DryRun: dryRun, - Revision: revision, - Prune: prune, + Name: &appName, + DryRun: dryRun, + Revision: revision, + Resources: splitResources, + Prune: prune, } switch strategy { case "apply": @@ -882,6 +885,7 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co command.Flags().BoolVar(&dryRun, "dry-run", false, "Preview apply without affecting cluster") command.Flags().BoolVar(&prune, "prune", false, "Allow deleting unexpected resources") command.Flags().StringVar(&revision, "revision", "", "Sync to a specific revision. Preserves parameter overrides") + command.Flags().StringVar(&resources, "resources", "", "Sync only specific resources") command.Flags().UintVar(&timeout, "timeout", defaultCheckTimeoutSeconds, "Time out after this many seconds") command.Flags().StringVar(&strategy, "strategy", "", "Sync strategy (one of: apply|hook)") command.Flags().BoolVar(&force, "force", false, "Use a force apply") From 08d0d9f7376a664d765d2faa4d5fd9cc4dc81ee9 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 2 Oct 2018 11:03:34 -0700 Subject: [PATCH 14/31] Support resources on CLI --- cmd/argocd/commands/app.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 86991adb85867..20d6d799d474c 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -824,13 +824,14 @@ func printAppResources(w io.Writer, app *argoappv1.Application, showOperation bo func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command { var ( revision string - resources string + resources []string prune bool dryRun bool timeout uint strategy string force bool ) + const resourceDelimiter = ":" var command = &cobra.Command{ Use: "sync APPNAME", Short: "Sync an application to its target state", @@ -842,12 +843,21 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co conn, appIf := argocdclient.NewClientOrDie(clientOpts).NewApplicationClientOrDie() defer util.Close(conn) appName := args[0] - splitResources := resources + syncResources := []argoappv1.SyncOperationResource{} + for _, r := range resources { + fields := strings.split(r, resourceDelimiter) + rsrc := argoappv1.SyncOperationResource{ + Name: fields[0], + Kind: fields[1], + Group: fields[2], + } + syncResources = append(syncResources, rsrc) + } syncReq := application.ApplicationSyncRequest{ Name: &appName, DryRun: dryRun, Revision: revision, - Resources: splitResources, + Resources: syncResources, Prune: prune, } switch strategy { @@ -885,7 +895,7 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co command.Flags().BoolVar(&dryRun, "dry-run", false, "Preview apply without affecting cluster") command.Flags().BoolVar(&prune, "prune", false, "Allow deleting unexpected resources") command.Flags().StringVar(&revision, "revision", "", "Sync to a specific revision. Preserves parameter overrides") - command.Flags().StringVar(&resources, "resources", "", "Sync only specific resources") + command.Flags().StringArray(&resources, "resource", "", fmt.Sprintf("Sync only specific resources as NAME%sKIND%sGROUP. May be specified repeatedly", resourceDelimiter, resourceDelimiter)) command.Flags().UintVar(&timeout, "timeout", defaultCheckTimeoutSeconds, "Time out after this many seconds") command.Flags().StringVar(&strategy, "strategy", "", "Sync strategy (one of: apply|hook)") command.Flags().BoolVar(&force, "force", false, "Use a force apply") From d1be2a6dbf97b277e26bc125c7da17218762e5e0 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 2 Oct 2018 11:15:17 -0700 Subject: [PATCH 15/31] Process resources from args properly --- cmd/argocd/commands/app.go | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 20d6d799d474c..747cfca0b7e85 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -824,14 +824,17 @@ func printAppResources(w io.Writer, app *argoappv1.Application, showOperation bo func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Command { var ( revision string - resources []string + resources *[]string prune bool dryRun bool timeout uint strategy string force bool ) - const resourceDelimiter = ":" + const ( + resourceFieldDelimiter = ":" + resourceFieldCount = 3 + ) var command = &cobra.Command{ Use: "sync APPNAME", Short: "Sync an application to its target state", @@ -843,15 +846,21 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co conn, appIf := argocdclient.NewClientOrDie(clientOpts).NewApplicationClientOrDie() defer util.Close(conn) appName := args[0] - syncResources := []argoappv1.SyncOperationResource{} - for _, r := range resources { - fields := strings.split(r, resourceDelimiter) - rsrc := argoappv1.SyncOperationResource{ - Name: fields[0], - Kind: fields[1], - Group: fields[2], + var syncResources []argoappv1.SyncOperationResource + if resources != nil { + syncResources = []argoappv1.SyncOperationResource{} + for _, r := range *resources { + fields := strings.Split(r, resourceFieldDelimiter) + if len(fields) != resourceFieldCount { + log.Fatalf("Resource should have NAME:KIND:GROUP, but instead got: %s", r) + } + rsrc := argoappv1.SyncOperationResource{ + Name: fields[0], + Kind: fields[1], + Group: fields[2], + } + syncResources = append(syncResources, rsrc) } - syncResources = append(syncResources, rsrc) } syncReq := application.ApplicationSyncRequest{ Name: &appName, @@ -895,7 +904,7 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co command.Flags().BoolVar(&dryRun, "dry-run", false, "Preview apply without affecting cluster") command.Flags().BoolVar(&prune, "prune", false, "Allow deleting unexpected resources") command.Flags().StringVar(&revision, "revision", "", "Sync to a specific revision. Preserves parameter overrides") - command.Flags().StringArray(&resources, "resource", "", fmt.Sprintf("Sync only specific resources as NAME%sKIND%sGROUP. May be specified repeatedly", resourceDelimiter, resourceDelimiter)) + resources = command.Flags().StringArray("resource", nil, fmt.Sprintf("Sync only specific resources as NAME%sKIND%sGROUP. May be specified repeatedly", resourceFieldDelimiter, resourceFieldDelimiter)) command.Flags().UintVar(&timeout, "timeout", defaultCheckTimeoutSeconds, "Time out after this many seconds") command.Flags().StringVar(&strategy, "strategy", "", "Sync strategy (one of: apply|hook)") command.Flags().BoolVar(&force, "force", false, "Use a force apply") From 8d46ce31acfc4dbf2e4477e7e1ae4942c1fe5932 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 2 Oct 2018 14:57:26 -0700 Subject: [PATCH 16/31] Reverse order of fields --- cmd/argocd/commands/app.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 747cfca0b7e85..25e7381804c67 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -852,12 +852,12 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co for _, r := range *resources { fields := strings.Split(r, resourceFieldDelimiter) if len(fields) != resourceFieldCount { - log.Fatalf("Resource should have NAME:KIND:GROUP, but instead got: %s", r) + log.Fatalf("Resource should have GROUP%sKIND%sNAME, but instead got: %s", resourceFieldDelimiter, resourceFieldDelimiterr) } rsrc := argoappv1.SyncOperationResource{ - Name: fields[0], + Group: fields[0], Kind: fields[1], - Group: fields[2], + Name: fields[2], } syncResources = append(syncResources, rsrc) } @@ -904,7 +904,7 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co command.Flags().BoolVar(&dryRun, "dry-run", false, "Preview apply without affecting cluster") command.Flags().BoolVar(&prune, "prune", false, "Allow deleting unexpected resources") command.Flags().StringVar(&revision, "revision", "", "Sync to a specific revision. Preserves parameter overrides") - resources = command.Flags().StringArray("resource", nil, fmt.Sprintf("Sync only specific resources as NAME%sKIND%sGROUP. May be specified repeatedly", resourceFieldDelimiter, resourceFieldDelimiter)) + resources = command.Flags().StringArray("resource", nil, fmt.Sprintf("Sync only specific resources as GROUP%sKIND%sNAME. Fields may be blank. This option may be specified repeatedly", resourceFieldDelimiter, resourceFieldDelimiter)) command.Flags().UintVar(&timeout, "timeout", defaultCheckTimeoutSeconds, "Time out after this many seconds") command.Flags().StringVar(&strategy, "strategy", "", "Sync strategy (one of: apply|hook)") command.Flags().BoolVar(&force, "force", false, "Use a force apply") From b736e5865995e0117921b156b25cfac7fd647cb7 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 2 Oct 2018 15:18:04 -0700 Subject: [PATCH 17/31] Invert match logic --- controller/sync.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/controller/sync.go b/controller/sync.go index d6cf57e4d441e..695783a8f8c32 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -258,11 +258,11 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { matchResource := func(u *unstructured.Unstructured) bool { for _, r := range sc.syncResources { gvk := u.GroupVersionKind() - if u.GetName() != r.Name || gvk.Kind != r.Kind || gvk.Group != r.Group { - return false + if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { + return true } } - return true + return false } syncTasks := make([]syncTask, 0) for _, resourceState := range sc.comparison.Resources { From 27fae73908b508b11c55e790163fe403d742734b Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 2 Oct 2018 16:38:24 -0700 Subject: [PATCH 18/31] Fix typo --- cmd/argocd/commands/app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 25e7381804c67..573216662c052 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -852,7 +852,7 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co for _, r := range *resources { fields := strings.Split(r, resourceFieldDelimiter) if len(fields) != resourceFieldCount { - log.Fatalf("Resource should have GROUP%sKIND%sNAME, but instead got: %s", resourceFieldDelimiter, resourceFieldDelimiterr) + log.Fatalf("Resource should have GROUP%sKIND%sNAME, but instead got: %s", resourceFieldDelimiter, resourceFieldDelimiter) } rsrc := argoappv1.SyncOperationResource{ Group: fields[0], From f691584359a74295973a818030283bd1d76c08e3 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Wed, 3 Oct 2018 15:19:28 -0700 Subject: [PATCH 19/31] Fail generateSyncTasks if no tasks created --- controller/sync.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controller/sync.go b/controller/sync.go index 695783a8f8c32..47fe7c48350b3 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -284,7 +284,7 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { syncTasks = append(syncTasks, syncTask) } } - return syncTasks, true + return syncTasks, len(syncTasks) > 0 } // startedPreSyncPhase detects if we already started the PreSync stage of a sync operation. From 893d6895d4181c1956d9abf10878d3bac831f2b2 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Thu, 4 Oct 2018 11:55:41 -0700 Subject: [PATCH 20/31] Pass resources to app state comparison --- controller/appcontroller.go | 2 +- controller/state.go | 18 ++++++++++-------- controller/sync.go | 33 ++++++++++++++++++++++----------- 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/controller/appcontroller.go b/controller/appcontroller.go index e5469027f5b7e..72a8f83aead43 100644 --- a/controller/appcontroller.go +++ b/controller/appcontroller.go @@ -539,7 +539,7 @@ func (ctrl *ApplicationController) processAppRefreshQueueItem() (processNext boo return } - comparisonResult, manifestInfo, compConditions, err := ctrl.appStateManager.CompareAppState(app, "", nil) + comparisonResult, manifestInfo, compConditions, err := ctrl.appStateManager.CompareAppState(app, "", nil, nil) if err != nil { conditions = append(conditions, appv1.ApplicationCondition{Type: appv1.ApplicationConditionComparisonError, Message: err.Error()}) } else { diff --git a/controller/state.go b/controller/state.go index e92928078c7fa..6e24cf66361f9 100644 --- a/controller/state.go +++ b/controller/state.go @@ -31,7 +31,7 @@ const ( // AppStateManager defines methods which allow to compare application spec and actual application state. type AppStateManager interface { - CompareAppState(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter) ( + CompareAppState(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter, syncResources []v1alpha1.SyncOperationResource) ( *v1alpha1.ComparisonResult, *repository.ManifestResponse, []v1alpha1.ApplicationCondition, error) SyncAppState(app *v1alpha1.Application, state *v1alpha1.OperationState) } @@ -85,7 +85,7 @@ func groupLiveObjects(liveObjs []*unstructured.Unstructured, targetObjs []*unstr return liveByFullName } -func (s *appStateManager) getTargetObjs(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter) ([]*unstructured.Unstructured, *repository.ManifestResponse, error) { +func (s *appStateManager) getTargetObjs(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter, syncResources []v1alpha1.SyncOperationResource) ([]*unstructured.Unstructured, *repository.ManifestResponse, error) { repo := s.getRepo(app.Spec.Source.RepoURL) conn, repoClient, err := s.repoClientset.NewRepositoryClient() if err != nil { @@ -138,7 +138,9 @@ func (s *appStateManager) getTargetObjs(app *v1alpha1.Application, revision stri if isHook(obj) { continue } - targetObjs = append(targetObjs, obj) + if containsSyncResource(obj, syncResources) { + targetObjs = append(targetObjs, obj) + } } return targetObjs, manifestInfo, nil } @@ -211,12 +213,12 @@ func (s *appStateManager) getLiveObjs(app *v1alpha1.Application, targetObjs []*u // CompareAppState compares application git state to the live app state, using the specified // revision and supplied overrides. If revision or overrides are empty, then compares against // revision and overrides in the app spec. -func (s *appStateManager) CompareAppState(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter) ( +func (s *appStateManager) CompareAppState(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter, syncResources []v1alpha1.SyncOperationResource) ( *v1alpha1.ComparisonResult, *repository.ManifestResponse, []v1alpha1.ApplicationCondition, error) { failedToLoadObjs := false conditions := make([]v1alpha1.ApplicationCondition, 0) - targetObjs, manifestInfo, err := s.getTargetObjs(app, revision, overrides) + targetObjs, manifestInfo, err := s.getTargetObjs(app, revision, overrides, syncResources) if err != nil { targetObjs = make([]*unstructured.Unstructured, 0) conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error()}) @@ -262,7 +264,7 @@ func (s *appStateManager) CompareAppState(app *v1alpha1.Application, revision st comparisonStatus := v1alpha1.ComparisonStatusSynced resources := make([]v1alpha1.ResourceState, len(targetObjs)) - for i := 0; i < len(targetObjs); i++ { + for i, targetObj := range targetObjs { resState := v1alpha1.ResourceState{ ChildLiveResources: make([]v1alpha1.ResourceNode, 0), } @@ -275,13 +277,13 @@ func (s *appStateManager) CompareAppState(app *v1alpha1.Application, revision st resState.Status = v1alpha1.ComparisonStatusSynced } - if targetObjs[i] == nil { + if targetObj == nil { resState.TargetState = "null" // Set resource state to 'OutOfSync' since target resource is missing and live resource is unexpected resState.Status = v1alpha1.ComparisonStatusOutOfSync comparisonStatus = v1alpha1.ComparisonStatusOutOfSync } else { - targetObjBytes, err := json.Marshal(targetObjs[i].Object) + targetObjBytes, err := json.Marshal(targetObj.Object) if err != nil { return nil, nil, nil, err } diff --git a/controller/sync.go b/controller/sync.go index 47fe7c48350b3..471c6e65a224e 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -111,7 +111,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper revision = syncOp.Revision } - comparison, manifestInfo, conditions, err := s.CompareAppState(app, revision, overrides) + comparison, manifestInfo, conditions, err := s.CompareAppState(app, revision, overrides, syncResources) if err != nil { state.Phase = appv1.OperationError state.Message = err.Error() @@ -253,17 +253,28 @@ func (sc *syncContext) forceAppRefresh() { sc.comparison.ComparedAt = metav1.Time{} } -// generateSyncTasks() generates the list of sync tasks we will be performing during this sync. -func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { - matchResource := func(u *unstructured.Unstructured) bool { - for _, r := range sc.syncResources { - gvk := u.GroupVersionKind() - if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { - return true - } - } +// ContainsSyncResource determines if the given resource exists in the provided slice of sync operation resources. +// ContainsSyncResource returns false if the provided resource is nil. +// ContainsSyncResource returns true if the slice of resources is nil. +func containsSyncResource(u *unstructured.Unstructured, rr []appv1.SyncOperationResource) bool { + if u == nil { return false } + if rr == nil { + return true + } + + for _, r := range rr { + gvk := u.GroupVersionKind() + if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { + return true + } + } + return false +} + +// generateSyncTasks() generates the list of sync tasks we will be performing during this sync. +func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { syncTasks := make([]syncTask, 0) for _, resourceState := range sc.comparison.Resources { liveObj, err := resourceState.LiveObject() @@ -276,7 +287,7 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { sc.setOperationPhase(appv1.OperationError, fmt.Sprintf("Failed to unmarshal target object: %v", err)) return nil, false } - if sc.syncResources == nil || (matchResource(liveObj) && matchResource(targetObj)) { + if containsSyncResource(liveObj, sc.syncResources) && containsSyncResource(targetObj, sc.syncResources) { syncTask := syncTask{ liveObj: liveObj, targetObj: targetObj, From eab3e6fa5941d53ce201cc84480742fbbcd23921 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Thu, 4 Oct 2018 13:20:22 -0700 Subject: [PATCH 21/31] Revert "Pass resources to app state comparison" This reverts commit b382bc882d2cd79ef4deb006c781282bef844d30. --- controller/appcontroller.go | 2 +- controller/state.go | 18 ++++++++---------- controller/sync.go | 33 +++++++++++---------------------- 3 files changed, 20 insertions(+), 33 deletions(-) diff --git a/controller/appcontroller.go b/controller/appcontroller.go index 72a8f83aead43..e5469027f5b7e 100644 --- a/controller/appcontroller.go +++ b/controller/appcontroller.go @@ -539,7 +539,7 @@ func (ctrl *ApplicationController) processAppRefreshQueueItem() (processNext boo return } - comparisonResult, manifestInfo, compConditions, err := ctrl.appStateManager.CompareAppState(app, "", nil, nil) + comparisonResult, manifestInfo, compConditions, err := ctrl.appStateManager.CompareAppState(app, "", nil) if err != nil { conditions = append(conditions, appv1.ApplicationCondition{Type: appv1.ApplicationConditionComparisonError, Message: err.Error()}) } else { diff --git a/controller/state.go b/controller/state.go index 6e24cf66361f9..e92928078c7fa 100644 --- a/controller/state.go +++ b/controller/state.go @@ -31,7 +31,7 @@ const ( // AppStateManager defines methods which allow to compare application spec and actual application state. type AppStateManager interface { - CompareAppState(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter, syncResources []v1alpha1.SyncOperationResource) ( + CompareAppState(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter) ( *v1alpha1.ComparisonResult, *repository.ManifestResponse, []v1alpha1.ApplicationCondition, error) SyncAppState(app *v1alpha1.Application, state *v1alpha1.OperationState) } @@ -85,7 +85,7 @@ func groupLiveObjects(liveObjs []*unstructured.Unstructured, targetObjs []*unstr return liveByFullName } -func (s *appStateManager) getTargetObjs(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter, syncResources []v1alpha1.SyncOperationResource) ([]*unstructured.Unstructured, *repository.ManifestResponse, error) { +func (s *appStateManager) getTargetObjs(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter) ([]*unstructured.Unstructured, *repository.ManifestResponse, error) { repo := s.getRepo(app.Spec.Source.RepoURL) conn, repoClient, err := s.repoClientset.NewRepositoryClient() if err != nil { @@ -138,9 +138,7 @@ func (s *appStateManager) getTargetObjs(app *v1alpha1.Application, revision stri if isHook(obj) { continue } - if containsSyncResource(obj, syncResources) { - targetObjs = append(targetObjs, obj) - } + targetObjs = append(targetObjs, obj) } return targetObjs, manifestInfo, nil } @@ -213,12 +211,12 @@ func (s *appStateManager) getLiveObjs(app *v1alpha1.Application, targetObjs []*u // CompareAppState compares application git state to the live app state, using the specified // revision and supplied overrides. If revision or overrides are empty, then compares against // revision and overrides in the app spec. -func (s *appStateManager) CompareAppState(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter, syncResources []v1alpha1.SyncOperationResource) ( +func (s *appStateManager) CompareAppState(app *v1alpha1.Application, revision string, overrides []v1alpha1.ComponentParameter) ( *v1alpha1.ComparisonResult, *repository.ManifestResponse, []v1alpha1.ApplicationCondition, error) { failedToLoadObjs := false conditions := make([]v1alpha1.ApplicationCondition, 0) - targetObjs, manifestInfo, err := s.getTargetObjs(app, revision, overrides, syncResources) + targetObjs, manifestInfo, err := s.getTargetObjs(app, revision, overrides) if err != nil { targetObjs = make([]*unstructured.Unstructured, 0) conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error()}) @@ -264,7 +262,7 @@ func (s *appStateManager) CompareAppState(app *v1alpha1.Application, revision st comparisonStatus := v1alpha1.ComparisonStatusSynced resources := make([]v1alpha1.ResourceState, len(targetObjs)) - for i, targetObj := range targetObjs { + for i := 0; i < len(targetObjs); i++ { resState := v1alpha1.ResourceState{ ChildLiveResources: make([]v1alpha1.ResourceNode, 0), } @@ -277,13 +275,13 @@ func (s *appStateManager) CompareAppState(app *v1alpha1.Application, revision st resState.Status = v1alpha1.ComparisonStatusSynced } - if targetObj == nil { + if targetObjs[i] == nil { resState.TargetState = "null" // Set resource state to 'OutOfSync' since target resource is missing and live resource is unexpected resState.Status = v1alpha1.ComparisonStatusOutOfSync comparisonStatus = v1alpha1.ComparisonStatusOutOfSync } else { - targetObjBytes, err := json.Marshal(targetObj.Object) + targetObjBytes, err := json.Marshal(targetObjs[i].Object) if err != nil { return nil, nil, nil, err } diff --git a/controller/sync.go b/controller/sync.go index 471c6e65a224e..47fe7c48350b3 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -111,7 +111,7 @@ func (s *appStateManager) SyncAppState(app *appv1.Application, state *appv1.Oper revision = syncOp.Revision } - comparison, manifestInfo, conditions, err := s.CompareAppState(app, revision, overrides, syncResources) + comparison, manifestInfo, conditions, err := s.CompareAppState(app, revision, overrides) if err != nil { state.Phase = appv1.OperationError state.Message = err.Error() @@ -253,28 +253,17 @@ func (sc *syncContext) forceAppRefresh() { sc.comparison.ComparedAt = metav1.Time{} } -// ContainsSyncResource determines if the given resource exists in the provided slice of sync operation resources. -// ContainsSyncResource returns false if the provided resource is nil. -// ContainsSyncResource returns true if the slice of resources is nil. -func containsSyncResource(u *unstructured.Unstructured, rr []appv1.SyncOperationResource) bool { - if u == nil { - return false - } - if rr == nil { - return true - } - - for _, r := range rr { - gvk := u.GroupVersionKind() - if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { - return true - } - } - return false -} - // generateSyncTasks() generates the list of sync tasks we will be performing during this sync. func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { + matchResource := func(u *unstructured.Unstructured) bool { + for _, r := range sc.syncResources { + gvk := u.GroupVersionKind() + if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { + return true + } + } + return false + } syncTasks := make([]syncTask, 0) for _, resourceState := range sc.comparison.Resources { liveObj, err := resourceState.LiveObject() @@ -287,7 +276,7 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { sc.setOperationPhase(appv1.OperationError, fmt.Sprintf("Failed to unmarshal target object: %v", err)) return nil, false } - if containsSyncResource(liveObj, sc.syncResources) && containsSyncResource(targetObj, sc.syncResources) { + if sc.syncResources == nil || (matchResource(liveObj) && matchResource(targetObj)) { syncTask := syncTask{ liveObj: liveObj, targetObj: targetObj, From be7852c70581360e001f1b6b972fa5a12cb06e15 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Thu, 4 Oct 2018 13:22:38 -0700 Subject: [PATCH 22/31] Factor out check --- controller/sync.go | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/controller/sync.go b/controller/sync.go index 47fe7c48350b3..a26d8bfa6ac87 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -253,17 +253,24 @@ func (sc *syncContext) forceAppRefresh() { sc.comparison.ComparedAt = metav1.Time{} } -// generateSyncTasks() generates the list of sync tasks we will be performing during this sync. -func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { - matchResource := func(u *unstructured.Unstructured) bool { - for _, r := range sc.syncResources { - gvk := u.GroupVersionKind() - if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { - return true - } - } +// ContainsSyncResource determines if the given resource exists in the provided slice of sync operation resources. +// ContainsSyncResource returns false if either argument is nil. +func containsSyncResource(u *unstructured.Unstructured, rr []appv1.SyncOperationResource) bool { + if u == nil || rr == nil { return false } + + for _, r := range rr { + gvk := u.GroupVersionKind() + if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { + return true + } + } + return false +} + +// generateSyncTasks() generates the list of sync tasks we will be performing during this sync. +func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { syncTasks := make([]syncTask, 0) for _, resourceState := range sc.comparison.Resources { liveObj, err := resourceState.LiveObject() @@ -276,7 +283,7 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { sc.setOperationPhase(appv1.OperationError, fmt.Sprintf("Failed to unmarshal target object: %v", err)) return nil, false } - if sc.syncResources == nil || (matchResource(liveObj) && matchResource(targetObj)) { + if sc.syncResources == nil || (containsSyncResource(liveObj, sc.syncResources) && containsSyncResource(targetObj, sc.syncResources)) { syncTask := syncTask{ liveObj: liveObj, targetObj: targetObj, From 703e4c5df8ae4ef2001d3c63d684256cd3c1d5f4 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Thu, 4 Oct 2018 13:25:09 -0700 Subject: [PATCH 23/31] Factor out further --- controller/sync.go | 18 +----------------- util/argo/argo.go | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/controller/sync.go b/controller/sync.go index a26d8bfa6ac87..15dcf9278169f 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -253,22 +253,6 @@ func (sc *syncContext) forceAppRefresh() { sc.comparison.ComparedAt = metav1.Time{} } -// ContainsSyncResource determines if the given resource exists in the provided slice of sync operation resources. -// ContainsSyncResource returns false if either argument is nil. -func containsSyncResource(u *unstructured.Unstructured, rr []appv1.SyncOperationResource) bool { - if u == nil || rr == nil { - return false - } - - for _, r := range rr { - gvk := u.GroupVersionKind() - if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { - return true - } - } - return false -} - // generateSyncTasks() generates the list of sync tasks we will be performing during this sync. func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { syncTasks := make([]syncTask, 0) @@ -283,7 +267,7 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { sc.setOperationPhase(appv1.OperationError, fmt.Sprintf("Failed to unmarshal target object: %v", err)) return nil, false } - if sc.syncResources == nil || (containsSyncResource(liveObj, sc.syncResources) && containsSyncResource(targetObj, sc.syncResources)) { + if sc.syncResources == nil || (argo.ContainsSyncResource(liveObj, sc.syncResources) && argo.ContainsSyncResource(targetObj, sc.syncResources)) { syncTask := syncTask{ liveObj: liveObj, targetObj: targetObj, diff --git a/util/argo/argo.go b/util/argo/argo.go index 0d1a6db04c813..1ce3fda15dcd5 100644 --- a/util/argo/argo.go +++ b/util/argo/argo.go @@ -14,6 +14,7 @@ import ( "google.golang.org/grpc/status" apierr "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/watch" @@ -457,3 +458,19 @@ func SetAppOperation(ctx context.Context, appIf v1alpha1.ApplicationInterface, a log.Warnf("Failed to set operation for app '%s' due to update conflict. Retrying again...", appName) } } + +// ContainsSyncResource determines if the given resource exists in the provided slice of sync operation resources. +// ContainsSyncResource returns false if either argument is nil. +func ContainsSyncResource(u *unstructured.Unstructured, rr []argoappv1.SyncOperationResource) bool { + if u == nil || rr == nil { + return false + } + + for _, r := range rr { + gvk := u.GroupVersionKind() + if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { + return true + } + } + return false +} From d6e59077003dd28149a10ccbb3ffd9b58d068e73 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Thu, 4 Oct 2018 13:32:41 -0700 Subject: [PATCH 24/31] Add filter logic to CLI --- cmd/argocd/commands/app.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 573216662c052..3a313ec5637be 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -702,7 +702,7 @@ func NewApplicationWaitCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co conn, appIf := argocdclient.NewClientOrDie(clientOpts).NewApplicationClientOrDie() defer util.Close(conn) - _, err := waitOnApplicationStatus(appIf, appName, timeout, watchSync, watchHealth, watchOperations) + _, err := waitOnApplicationStatus(appIf, appName, timeout, watchSync, watchHealth, watchOperations, nil) errors.CheckError(err) }, } @@ -883,7 +883,7 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co _, err := appIf.Sync(ctx, &syncReq) errors.CheckError(err) - app, err := waitOnApplicationStatus(appIf, appName, timeout, false, false, true) + app, err := waitOnApplicationStatus(appIf, appName, timeout, false, false, true, syncResources) errors.CheckError(err) pruningRequired := 0 @@ -959,7 +959,7 @@ func (rs *resourceState) Merge(newState *resourceState) bool { return updated } -func calculateResourceStates(app *argoappv1.Application) map[string]*resourceState { +func calculateResourceStates(app *argoappv1.Application, syncResources []argoappv1.SyncOperationResource) map[string]*resourceState { resStates := make(map[string]*resourceState) for _, res := range app.Status.ComparisonResult.Resources { obj, err := argoappv1.UnmarshalToUnstructured(res.TargetState) @@ -968,6 +968,9 @@ func calculateResourceStates(app *argoappv1.Application) map[string]*resourceSta obj, err = argoappv1.UnmarshalToUnstructured(res.LiveState) errors.CheckError(err) } + if syncResources != nil && !argo.ContainsSyncResource(obj, syncResources) { + continue + } newState := newResourceState(obj.GetKind(), obj.GetName(), string(res.Status), res.Health.Status, "", "") key := newState.Key() if prev, ok := resStates[key]; ok { @@ -1011,7 +1014,7 @@ func calculateResourceStates(app *argoappv1.Application) map[string]*resourceSta return resStates } -func waitOnApplicationStatus(appClient application.ApplicationServiceClient, appName string, timeout uint, watchSync, watchHealth, watchOperation bool) (*argoappv1.Application, error) { +func waitOnApplicationStatus(appClient application.ApplicationServiceClient, appName string, timeout uint, watchSync bool, watchHealth bool, watchOperation bool, syncResources []argoappv1.SyncOperationResource) (*argoappv1.Application, error) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -1068,7 +1071,7 @@ func waitOnApplicationStatus(appClient application.ApplicationServiceClient, app return app, nil } - newStates := calculateResourceStates(app) + newStates := calculateResourceStates(app, syncResources) for _, newState := range newStates { var doPrint bool stateKey := newState.Key() @@ -1235,7 +1238,7 @@ func NewApplicationRollbackCommand(clientOpts *argocdclient.ClientOptions) *cobr }) errors.CheckError(err) - _, err = waitOnApplicationStatus(appIf, appName, timeout, false, false, true) + _, err = waitOnApplicationStatus(appIf, appName, timeout, false, false, true, nil) errors.CheckError(err) }, } From 30ff2fe4665254a1fcc1498c0d1e8b335a1f808a Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Thu, 4 Oct 2018 15:33:08 -0700 Subject: [PATCH 25/31] Simplify resource identity checks --- pkg/apis/application/v1alpha1/types.go | 9 +++++++++ util/argo/argo.go | 3 +-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 24a46648bcfdd..42a65017eeec4 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -24,6 +24,15 @@ type SyncOperationResource struct { Name string `protobuf:"bytes,3,opt,name=name"` } +// HasIdentity determines whether a sync operation is identified by a manifest. +func (r SyncOperationResource) HasIdentity(u *unstructured.Unstructured) bool { + gvk := u.GroupVersionKind() + if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { + return true + } + return false +} + // SyncOperation contains sync operation details. type SyncOperation struct { // Revision is the git revision in which to sync the application to. diff --git a/util/argo/argo.go b/util/argo/argo.go index 1ce3fda15dcd5..75085fe88d0ed 100644 --- a/util/argo/argo.go +++ b/util/argo/argo.go @@ -467,8 +467,7 @@ func ContainsSyncResource(u *unstructured.Unstructured, rr []argoappv1.SyncOpera } for _, r := range rr { - gvk := u.GroupVersionKind() - if u.GetName() == r.Name && gvk.Kind == r.Kind && gvk.Group == r.Group { + if r.HasIdentity(u) { return true } } From a9fd8e63d21a15ca386354bee6fde76ac7bb5607 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Thu, 4 Oct 2018 15:41:53 -0700 Subject: [PATCH 26/31] First draft of sync check --- cmd/argocd/commands/app.go | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 3a313ec5637be..f7121cdec050b 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -1063,7 +1063,31 @@ func waitOnApplicationStatus(appClient application.ApplicationServiceClient, app refresh = true } // consider skipped checks successful - synced := !watchSync || app.Status.ComparisonResult.Status == argoappv1.ComparisonStatusSynced + synced := false + if syncResources != nil { + synced = !watchSync || app.Status.ComparisonResult.Status == argoappv1.ComparisonStatusSynced + } else if watchSync { + synced = true + for _, res := range app.Status.ComparisonResult.Resources { + if synced == false { + break + } + for _, s := range syncResources { + obj, err := argoappv1.UnmarshalToUnstructured(res.TargetState) + errors.CheckError(err) + if obj == nil { + obj, err = argoappv1.UnmarshalToUnstructured(res.LiveState) + errors.CheckError(err) + } + if s.HasIdentity(obj) && res.Status != argoappv1.ComparisonStatusSynced { + synced = false + break + } + } + } + } else { + synced = true + } healthy := !watchHealth || app.Status.Health.Status == argoappv1.HealthStatusHealthy operational := !watchOperation || appEvent.Application.Operation == nil if len(app.Status.GetErrorConditions()) == 0 && synced && healthy && operational { From e4a4711eb0db11e4467aea18dae8917d55b13945 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Fri, 5 Oct 2018 12:44:27 -0700 Subject: [PATCH 27/31] Remove unneeded sync checks --- cmd/argocd/commands/app.go | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index f7121cdec050b..3a313ec5637be 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -1063,31 +1063,7 @@ func waitOnApplicationStatus(appClient application.ApplicationServiceClient, app refresh = true } // consider skipped checks successful - synced := false - if syncResources != nil { - synced = !watchSync || app.Status.ComparisonResult.Status == argoappv1.ComparisonStatusSynced - } else if watchSync { - synced = true - for _, res := range app.Status.ComparisonResult.Resources { - if synced == false { - break - } - for _, s := range syncResources { - obj, err := argoappv1.UnmarshalToUnstructured(res.TargetState) - errors.CheckError(err) - if obj == nil { - obj, err = argoappv1.UnmarshalToUnstructured(res.LiveState) - errors.CheckError(err) - } - if s.HasIdentity(obj) && res.Status != argoappv1.ComparisonStatusSynced { - synced = false - break - } - } - } - } else { - synced = true - } + synced := !watchSync || app.Status.ComparisonResult.Status == argoappv1.ComparisonStatusSynced healthy := !watchHealth || app.Status.Health.Status == argoappv1.HealthStatusHealthy operational := !watchOperation || appEvent.Application.Operation == nil if len(app.Status.GetErrorConditions()) == 0 && synced && healthy && operational { From f8e392fcf4adbf78d401ebd980d57b0358661330 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Fri, 5 Oct 2018 14:46:57 -0700 Subject: [PATCH 28/31] Fix missing formatting option --- cmd/argocd/commands/app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 3a313ec5637be..defae6b4d1815 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -852,7 +852,7 @@ func NewApplicationSyncCommand(clientOpts *argocdclient.ClientOptions) *cobra.Co for _, r := range *resources { fields := strings.Split(r, resourceFieldDelimiter) if len(fields) != resourceFieldCount { - log.Fatalf("Resource should have GROUP%sKIND%sNAME, but instead got: %s", resourceFieldDelimiter, resourceFieldDelimiter) + log.Fatalf("Resource should have GROUP%sKIND%sNAME, but instead got: %s", resourceFieldDelimiter, resourceFieldDelimiter, r) } rsrc := argoappv1.SyncOperationResource{ Group: fields[0], From 95c427682f4c722d62dfc8048b3177715d417877 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 9 Oct 2018 09:23:25 -0700 Subject: [PATCH 29/31] Allow for nil liveObj or targetObj, thanks @alexmt --- controller/sync.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controller/sync.go b/controller/sync.go index 15dcf9278169f..3745b38d357b9 100644 --- a/controller/sync.go +++ b/controller/sync.go @@ -267,7 +267,7 @@ func (sc *syncContext) generateSyncTasks() ([]syncTask, bool) { sc.setOperationPhase(appv1.OperationError, fmt.Sprintf("Failed to unmarshal target object: %v", err)) return nil, false } - if sc.syncResources == nil || (argo.ContainsSyncResource(liveObj, sc.syncResources) && argo.ContainsSyncResource(targetObj, sc.syncResources)) { + if sc.syncResources == nil || argo.ContainsSyncResource(liveObj, sc.syncResources) || argo.ContainsSyncResource(targetObj, sc.syncResources) { syncTask := syncTask{ liveObj: liveObj, targetObj: targetObj, From 13a5ac6394b30c3c386cc03566af642fb8118c46 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 9 Oct 2018 09:25:20 -0700 Subject: [PATCH 30/31] Add JSON annotations, thanks @alexmt --- pkg/apis/application/v1alpha1/types.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 42a65017eeec4..7bf2afdbdb261 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -19,9 +19,9 @@ import ( // SyncOperationResource contains resources to sync. type SyncOperationResource struct { - Group string `protobuf:"bytes,1,opt,name=group"` - Kind string `protobuf:"bytes,2,opt,name=kind"` - Name string `protobuf:"bytes,3,opt,name=name"` + Group string `json:"group,omitempty" protobuf:"bytes,1,opt,name=group"` + Kind string `json:"kind" protobuf:"bytes,2,opt,name=kind"` + Name string `json:"name" protobuf:"bytes,3,opt,name=name"` } // HasIdentity determines whether a sync operation is identified by a manifest. From 9d9f5dad3623f0525188340448a83b7484453518 Mon Sep 17 00:00:00 2001 From: Andrew Merenbach Date: Tue, 9 Oct 2018 10:47:47 -0700 Subject: [PATCH 31/31] Add test for contains sync resource --- util/argo/argo_test.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/util/argo/argo_test.go b/util/argo/argo_test.go index efc115e5fc9f4..3241cb954c73f 100644 --- a/util/argo/argo_test.go +++ b/util/argo/argo_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/assert" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/watch" "github.com/argoproj/argo-cd/common" @@ -94,3 +95,28 @@ func TestWaitForRefresh(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, app) } + +func TestContainsSyncResource(t *testing.T) { + var ( + blankUnstructured unstructured.Unstructured + blankResource argoappv1.SyncOperationResource + helloResource argoappv1.SyncOperationResource = argoappv1.SyncOperationResource{Name: "hello"} + ) + tables := []struct { + u *unstructured.Unstructured + rr []argoappv1.SyncOperationResource + expected bool + }{ + {nil, nil, false}, + {nil, []argoappv1.SyncOperationResource{}, false}, + {&blankUnstructured, []argoappv1.SyncOperationResource{}, false}, + {&blankUnstructured, []argoappv1.SyncOperationResource{blankResource}, true}, + {&blankUnstructured, []argoappv1.SyncOperationResource{helloResource}, false}, + } + + for _, table := range tables { + if out := ContainsSyncResource(table.u, table.rr); out != table.expected { + t.Errorf("Expected %t for slice %+v conains resource %+v; instead got %t", table.expected, table.rr, table.u, out) + } + } +}