mirror of
https://github.com/hanzoai/cd.git
synced 2026-10-30 14:56:45 +00:00
repository.proto and 11 sibling hand-written .proto files referenced generated.proto's application/v1alpha1 types under the pre-fork package path (github.com.argoproj.argo_cd.v3...); protoc silently kept compiling because generated.proto still carried that same stale package too. Point both at the real, mechanically-derived path (github.com.hanzoai.cd.pkg.apis.application.v1alpha1, no v3 segment) and regenerate everything protoc/go-to-protobuf own: generated.proto/pb.go, every pkg/apiclient and reposerver/cmpserver/commitserver *.pb.go, assets/swagger.json, and the CRD manifests. That regeneration surfaced a second, unrelated bug: hack/gen-crd-spec stamped app.kubernetes.io/part-of: cd on the CRDs, but util/settings.isSettingsObject (and the ConfigMap informer built on it) only ever recognizes part-of=hanzocd. The same wrong "cd" value was baked into cmd/cd/commands/admin/settings.go's setSettingsMeta and the shared test/testdata.go fixtures ~30 files import — util/settings' own test suite was panicking on an empty slice because its fixture was invisible to the informer it was supposedly seeding. Fixed the label everywhere it's produced or asserted in the settings path; left the ~90 unrelated part-of:"cd" literals in other packages' local test fixtures alone since they never touch this selector. Also dropped 25 "TODO: Remove deprecated <dead upstream issue link>" comments that duplicated the real explanation already sitting one line away (a proper `Deprecated:` godoc, a cobra Deprecated field, or a nolint:staticcheck marker) — kept the explanation, dropped the link, per the standing rule for these citations. And repointed the two Grafana dashboards' job selector from argocd-server-metrics, a Service the manifests never create, to hanzocd-server-metrics, the one they do.
552 lines
18 KiB
Protocol Buffer
552 lines
18 KiB
Protocol Buffer
syntax = "proto2";
|
|
option go_package = "github.com/hanzoai/cd/pkg/apiclient/application";
|
|
|
|
// Application Service
|
|
//
|
|
// Application Service API performs CRUD actions against application resources
|
|
package application;
|
|
|
|
import "google/api/annotations.proto";
|
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
|
import "github.com/hanzoai/cd/pkg/apis/application/v1alpha1/generated.proto";
|
|
import "github.com/hanzoai/cd/reposerver/repository/repository.proto";
|
|
import "github.com/hanzoai/cd/server/events/events.proto";
|
|
|
|
|
|
// ApplicationQuery is a query for application resources. When getting multiple applications, the "projects" field acts
|
|
// as a filter. When getting a single application, you may specify either zero or one project. If you specify zero
|
|
// projects, the application will be returned regardless of which project it belongs to (assuming you have access). If
|
|
// you specify one project, the application will only be returned if it exists and belongs to the specified project.
|
|
// Otherwise you will receive a 404.
|
|
message ApplicationQuery {
|
|
// the application's name
|
|
optional string name = 1;
|
|
// forces application reconciliation if set to 'hard'
|
|
optional string refresh = 2;
|
|
// the project names to restrict returned list applications
|
|
repeated string projects = 3;
|
|
// when specified with a watch call, shows changes that occur after that particular version of a resource.
|
|
optional string resourceVersion = 4;
|
|
// the selector to restrict returned list to applications only with matched labels
|
|
optional string selector = 5;
|
|
// the repoURL to restrict returned list applications
|
|
optional string repo = 6;
|
|
// the application's namespace
|
|
optional string appNamespace = 7;
|
|
// the project names to restrict returned list applications (legacy name for backwards-compatibility)
|
|
repeated string project = 8;
|
|
}
|
|
|
|
message NodeQuery {
|
|
// the application's name
|
|
optional string name = 1;
|
|
optional string appNamespace = 2;
|
|
}
|
|
|
|
message RevisionMetadataQuery{
|
|
// the application's name
|
|
required string name = 1;
|
|
// the revision of the app
|
|
required string revision = 2;
|
|
// the application's namespace
|
|
optional string appNamespace = 3;
|
|
optional string project = 4;
|
|
// source index (for multi source apps)
|
|
optional int32 sourceIndex = 5;
|
|
// versionId from historical data (for multi source apps)
|
|
optional int32 versionId = 6;
|
|
}
|
|
|
|
// ApplicationEventsQuery is a query for application resource events
|
|
message ApplicationResourceEventsQuery {
|
|
required string name = 1;
|
|
optional string resourceNamespace = 2;
|
|
optional string resourceName = 3;
|
|
optional string resourceUID = 4;
|
|
optional string appNamespace = 5;
|
|
optional string project = 6;
|
|
}
|
|
|
|
// ManifestQuery is a query for manifest resources
|
|
message ApplicationManifestQuery {
|
|
required string name = 1;
|
|
optional string revision = 2;
|
|
optional string appNamespace = 3;
|
|
optional string project = 4;
|
|
repeated int64 sourcePositions = 5;
|
|
repeated string revisions = 6;
|
|
optional bool noCache = 7;
|
|
}
|
|
|
|
message FileChunk {
|
|
required bytes chunk = 1;
|
|
}
|
|
|
|
message ApplicationManifestQueryWithFiles {
|
|
required string name = 1;
|
|
required string checksum = 2;
|
|
optional string appNamespace = 3;
|
|
optional string project = 4;
|
|
}
|
|
|
|
message ApplicationManifestQueryWithFilesWrapper {
|
|
oneof part {
|
|
ApplicationManifestQueryWithFiles query = 1;
|
|
FileChunk chunk = 2;
|
|
}
|
|
}
|
|
|
|
message ApplicationResponse {}
|
|
|
|
message ApplicationCreateRequest {
|
|
required github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Application application = 1;
|
|
optional bool upsert = 2;
|
|
optional bool validate = 3;
|
|
}
|
|
|
|
message ApplicationUpdateRequest {
|
|
required github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Application application = 1;
|
|
optional bool validate = 2;
|
|
optional string project = 3;
|
|
}
|
|
|
|
message ApplicationDeleteRequest {
|
|
required string name = 1;
|
|
optional bool cascade = 2;
|
|
optional string propagationPolicy = 3;
|
|
optional string appNamespace = 4;
|
|
optional string project = 5;
|
|
}
|
|
|
|
message SyncOptions {
|
|
repeated string items = 1;
|
|
}
|
|
|
|
// ApplicationSyncRequest is a request to apply the config state to live state
|
|
message ApplicationSyncRequest {
|
|
required string name = 1;
|
|
optional string revision = 2;
|
|
optional bool dryRun = 3;
|
|
optional bool prune = 4;
|
|
optional github.com.hanzoai.cd.pkg.apis.application.v1alpha1.SyncStrategy strategy = 5;
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.SyncOperationResource resources = 7;
|
|
repeated string manifests = 8;
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Info infos = 9;
|
|
optional github.com.hanzoai.cd.pkg.apis.application.v1alpha1.RetryStrategy retryStrategy = 10;
|
|
optional SyncOptions syncOptions = 11;
|
|
optional string appNamespace = 12;
|
|
optional string project = 13;
|
|
repeated int64 sourcePositions = 14;
|
|
repeated string revisions = 15;
|
|
}
|
|
|
|
// ApplicationUpdateSpecRequest is a request to update application spec
|
|
message ApplicationUpdateSpecRequest {
|
|
required string name = 1;
|
|
required github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ApplicationSpec spec = 2;
|
|
optional bool validate = 3;
|
|
optional string appNamespace = 4;
|
|
optional string project = 5;
|
|
}
|
|
|
|
// ApplicationPatchRequest is a request to patch an application
|
|
message ApplicationPatchRequest {
|
|
required string name = 1;
|
|
required string patch = 2;
|
|
required string patchType = 3;
|
|
optional string appNamespace = 5;
|
|
optional string project = 6;
|
|
}
|
|
|
|
message ApplicationRollbackRequest {
|
|
required string name = 1;
|
|
required int64 id = 2;
|
|
optional bool dryRun = 3;
|
|
optional bool prune = 4;
|
|
optional string appNamespace = 6;
|
|
optional string project = 7;
|
|
}
|
|
|
|
message ApplicationResourceRequest {
|
|
required string name = 1;
|
|
optional string namespace = 2;
|
|
required string resourceName = 3;
|
|
required string version = 4;
|
|
optional string group = 5;
|
|
required string kind = 6;
|
|
optional string appNamespace = 7;
|
|
optional string project = 8;
|
|
}
|
|
|
|
message ApplicationResourcePatchRequest {
|
|
required string name = 1;
|
|
optional string namespace = 2;
|
|
required string resourceName = 3;
|
|
required string version = 4;
|
|
optional string group = 5;
|
|
required string kind = 6;
|
|
required string patch = 7;
|
|
required string patchType = 8;
|
|
optional string appNamespace = 9;
|
|
optional string project = 10;
|
|
}
|
|
|
|
message ApplicationResourceDeleteRequest {
|
|
required string name = 1;
|
|
optional string namespace = 2;
|
|
required string resourceName = 3;
|
|
required string version = 4;
|
|
optional string group = 5;
|
|
required string kind = 6;
|
|
optional bool force = 7;
|
|
optional bool orphan = 8;
|
|
optional string appNamespace = 9;
|
|
optional string project = 10;
|
|
}
|
|
|
|
message ResourceActionParameters {
|
|
required string name = 1;
|
|
required string value = 2;
|
|
}
|
|
|
|
// ResourceActionRunRequest is a request to run a resource action.
|
|
// This message is deprecated and replaced by ResourceActionRunRequestV2.
|
|
message ResourceActionRunRequest {
|
|
option deprecated = true;
|
|
required string name = 1;
|
|
optional string namespace = 2;
|
|
required string resourceName = 3;
|
|
required string version = 4;
|
|
optional string group = 5;
|
|
required string kind = 6;
|
|
required string action = 7;
|
|
optional string appNamespace = 8;
|
|
optional string project = 9;
|
|
}
|
|
|
|
message ResourceActionRunRequestV2 {
|
|
required string name = 1;
|
|
optional string namespace = 2;
|
|
required string resourceName = 3;
|
|
required string version = 4;
|
|
optional string group = 5;
|
|
required string kind = 6;
|
|
required string action = 7;
|
|
optional string appNamespace = 8;
|
|
optional string project = 9;
|
|
repeated ResourceActionParameters resourceActionParameters = 10;
|
|
}
|
|
|
|
message ResourceActionsListResponse {
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ResourceAction actions = 1;
|
|
}
|
|
|
|
message ApplicationResourceResponse {
|
|
required string manifest = 1;
|
|
}
|
|
|
|
message ApplicationPodLogsQuery {
|
|
required string name = 1;
|
|
optional string namespace = 2;
|
|
optional string podName = 3;
|
|
optional string container = 4;
|
|
optional int64 sinceSeconds = 5;
|
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 6;
|
|
optional int64 tailLines = 7;
|
|
optional bool follow = 8;
|
|
optional string untilTime = 9;
|
|
optional string filter = 10;
|
|
optional string kind = 11;
|
|
optional string group = 12;
|
|
optional string resourceName = 13 ;
|
|
optional bool previous = 14;
|
|
optional string appNamespace = 15;
|
|
optional string project = 16;
|
|
optional bool matchCase = 17;
|
|
}
|
|
|
|
message LogEntry {
|
|
required string content = 1;
|
|
// deprecated in favor of timeStampStr since meta.v1.Time don't support nano time
|
|
required k8s.io.apimachinery.pkg.apis.meta.v1.Time timeStamp = 2;
|
|
required bool last = 3;
|
|
required string timeStampStr = 4;
|
|
required string podName = 5;
|
|
}
|
|
|
|
message OperationTerminateRequest {
|
|
required string name = 1;
|
|
optional string appNamespace = 2;
|
|
optional string project = 3;
|
|
}
|
|
|
|
message ApplicationSyncWindowsQuery {
|
|
required string name = 1;
|
|
optional string appNamespace = 2;
|
|
optional string project = 3;
|
|
}
|
|
|
|
message ApplicationSyncWindowsResponse {
|
|
repeated ApplicationSyncWindow activeWindows = 1;
|
|
repeated ApplicationSyncWindow assignedWindows = 2;
|
|
required bool canSync = 3;
|
|
}
|
|
|
|
message ApplicationSyncWindow {
|
|
required string kind = 1;
|
|
required string schedule = 2;
|
|
required string duration = 3;
|
|
required bool manualSync = 4;
|
|
}
|
|
|
|
message OperationTerminateResponse {
|
|
}
|
|
|
|
|
|
message ResourcesQuery {
|
|
required string applicationName = 1;
|
|
|
|
optional string namespace = 2;
|
|
optional string name = 3;
|
|
optional string version = 4;
|
|
optional string group = 5;
|
|
optional string kind = 6;
|
|
optional string appNamespace = 7;
|
|
optional string project = 8;
|
|
}
|
|
|
|
message ManagedResourcesResponse {
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ResourceDiff items = 1;
|
|
}
|
|
|
|
message ApplicationServerSideDiffQuery {
|
|
required string appName = 1;
|
|
optional string appNamespace = 2;
|
|
optional string project = 3;
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ResourceDiff liveResources = 4;
|
|
repeated string targetManifests = 5;
|
|
}
|
|
|
|
message ApplicationServerSideDiffResponse {
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ResourceDiff items = 1;
|
|
required bool modified = 2;
|
|
}
|
|
|
|
message LinkInfo {
|
|
required string title = 1;
|
|
required string url = 2;
|
|
optional string description = 3;
|
|
optional string iconClass = 4;
|
|
}
|
|
|
|
message LinksResponse {
|
|
repeated LinkInfo items = 1;
|
|
}
|
|
|
|
message ListAppLinksRequest {
|
|
required string name = 1;
|
|
optional string namespace = 3;
|
|
optional string project = 4;
|
|
}
|
|
|
|
|
|
// ApplicationService
|
|
service ApplicationService {
|
|
|
|
// List returns list of applications
|
|
rpc List(ApplicationQuery) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ApplicationList) {
|
|
option (google.api.http).get = "/v1/applications";
|
|
}
|
|
|
|
// ListResourceEvents returns a list of event resources
|
|
rpc ListResourceEvents(ApplicationResourceEventsQuery) returns (events.EventList) {
|
|
option (google.api.http).get = "/v1/applications/{name}/events";
|
|
}
|
|
|
|
// Watch returns stream of application change events
|
|
rpc Watch(ApplicationQuery) returns (stream github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ApplicationWatchEvent) {
|
|
option (google.api.http).get = "/v1/stream/applications";
|
|
}
|
|
|
|
// Create creates an application
|
|
rpc Create (ApplicationCreateRequest) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Application) {
|
|
option (google.api.http) = {
|
|
post: "/v1/applications"
|
|
body: "application"
|
|
};
|
|
}
|
|
|
|
// Get returns an application by name
|
|
rpc Get (ApplicationQuery) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Application) {
|
|
option (google.api.http).get = "/v1/applications/{name}";
|
|
}
|
|
|
|
// Get returns sync windows of the application
|
|
rpc GetApplicationSyncWindows (ApplicationSyncWindowsQuery) returns (ApplicationSyncWindowsResponse) {
|
|
option (google.api.http).get = "/v1/applications/{name}/syncwindows";
|
|
}
|
|
|
|
// Get the meta-data (author, date, tags, message) for a specific revision of the application
|
|
rpc RevisionMetadata (RevisionMetadataQuery) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.RevisionMetadata) {
|
|
option (google.api.http).get = "/v1/applications/{name}/revisions/{revision}/metadata";
|
|
}
|
|
|
|
// Get the chart metadata (description, maintainers, home) for a specific revision of the application
|
|
rpc RevisionChartDetails (RevisionMetadataQuery) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ChartDetails) {
|
|
option (google.api.http).get = "/v1/applications/{name}/revisions/{revision}/chartdetails";
|
|
}
|
|
|
|
// Get the chart metadata (description, maintainers, home) for a specific revision of the application
|
|
rpc GetOCIMetadata (RevisionMetadataQuery) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.OCIMetadata) {
|
|
option (google.api.http).get = "/v1/applications/{name}/revisions/{revision}/ocimetadata";
|
|
}
|
|
|
|
// GetManifests returns application manifests
|
|
rpc GetManifests (ApplicationManifestQuery) returns (repository.ManifestResponse) {
|
|
option (google.api.http).get = "/v1/applications/{name}/manifests";
|
|
}
|
|
|
|
// GetManifestsWithFiles returns application manifests using provided files to generate them
|
|
rpc GetManifestsWithFiles (stream ApplicationManifestQueryWithFilesWrapper) returns (repository.ManifestResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/applications/manifestsWithFiles"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
// Update updates an application
|
|
rpc Update(ApplicationUpdateRequest) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Application) {
|
|
option (google.api.http) = {
|
|
put: "/v1/applications/{application.metadata.name}"
|
|
body: "application"
|
|
};
|
|
}
|
|
|
|
// UpdateSpec updates an application spec
|
|
rpc UpdateSpec(ApplicationUpdateSpecRequest) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ApplicationSpec) {
|
|
option (google.api.http) = {
|
|
put: "/v1/applications/{name}/spec"
|
|
body: "spec"
|
|
};
|
|
}
|
|
|
|
// Patch patch an application
|
|
rpc Patch(ApplicationPatchRequest) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Application) {
|
|
option (google.api.http) = {
|
|
patch: "/v1/applications/{name}"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
// Delete deletes an application
|
|
rpc Delete(ApplicationDeleteRequest) returns (ApplicationResponse) {
|
|
option (google.api.http).delete = "/v1/applications/{name}";
|
|
}
|
|
|
|
// Sync syncs an application to its target state
|
|
rpc Sync(ApplicationSyncRequest) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Application) {
|
|
option (google.api.http) = {
|
|
post: "/v1/applications/{name}/sync"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
// ManagedResources returns list of managed resources
|
|
rpc ManagedResources(ResourcesQuery) returns (ManagedResourcesResponse) {
|
|
option (google.api.http).get = "/v1/applications/{applicationName}/managed-resources";
|
|
}
|
|
|
|
// ServerSideDiff performs server-side diff calculation using dry-run apply
|
|
rpc ServerSideDiff(ApplicationServerSideDiffQuery) returns (ApplicationServerSideDiffResponse) {
|
|
option (google.api.http).get = "/v1/applications/{appName}/server-side-diff";
|
|
}
|
|
|
|
// ResourceTree returns resource tree
|
|
rpc ResourceTree(ResourcesQuery) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ApplicationTree) {
|
|
option (google.api.http).get = "/v1/applications/{applicationName}/resource-tree";
|
|
}
|
|
|
|
// Watch returns stream of application resource tree
|
|
rpc WatchResourceTree(ResourcesQuery) returns (stream github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ApplicationTree) {
|
|
option (google.api.http).get = "/v1/stream/applications/{applicationName}/resource-tree";
|
|
}
|
|
|
|
// Rollback syncs an application to its target state
|
|
rpc Rollback(ApplicationRollbackRequest) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Application) {
|
|
option (google.api.http) = {
|
|
post: "/v1/applications/{name}/rollback"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
// TerminateOperation terminates the currently running operation
|
|
rpc TerminateOperation(OperationTerminateRequest) returns (OperationTerminateResponse) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/applications/{name}/operation";
|
|
};
|
|
}
|
|
|
|
// GetResource returns single application resource
|
|
rpc GetResource(ApplicationResourceRequest) returns (ApplicationResourceResponse) {
|
|
option (google.api.http).get = "/v1/applications/{name}/resource";
|
|
}
|
|
|
|
// PatchResource patch single application resource
|
|
rpc PatchResource(ApplicationResourcePatchRequest) returns (ApplicationResourceResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/applications/{name}/resource"
|
|
body: "patch"
|
|
};
|
|
}
|
|
|
|
// ListResourceActions returns list of resource actions
|
|
rpc ListResourceActions(ApplicationResourceRequest) returns (ResourceActionsListResponse) {
|
|
option (google.api.http).get = "/v1/applications/{name}/resource/actions";
|
|
}
|
|
|
|
// RunResourceAction runs a resource action
|
|
//
|
|
// Deprecated: use RunResourceActionV2 instead. This version does not support resource action parameters but is
|
|
// maintained for backward compatibility. It will be removed in a future release.
|
|
rpc RunResourceAction(ResourceActionRunRequest) returns (ApplicationResponse) {
|
|
option deprecated = true;
|
|
option (google.api.http) = {
|
|
post: "/v1/applications/{name}/resource/actions"
|
|
body: "action"
|
|
};
|
|
}
|
|
|
|
// RunResourceActionV2 runs a resource action with parameters
|
|
rpc RunResourceActionV2(ResourceActionRunRequestV2) returns (ApplicationResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/applications/{name}/resource/actions/v2"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
// DeleteResource deletes a single application resource
|
|
rpc DeleteResource(ApplicationResourceDeleteRequest) returns (ApplicationResponse) {
|
|
option (google.api.http).delete = "/v1/applications/{name}/resource";
|
|
}
|
|
|
|
// PodLogs returns stream of log entries for the specified pod. Pod
|
|
rpc PodLogs(ApplicationPodLogsQuery) returns (stream LogEntry) {
|
|
option (google.api.http) = {
|
|
get: "/v1/applications/{name}/pods/{podName}/logs"
|
|
additional_bindings {
|
|
get: "/v1/applications/{name}/logs"
|
|
}
|
|
};
|
|
}
|
|
|
|
// ListLinks returns the list of all application deep links
|
|
rpc ListLinks(ListAppLinksRequest) returns (LinksResponse) {
|
|
option (google.api.http).get = "/v1/applications/{name}/links";
|
|
}
|
|
|
|
// ListResourceLinks returns the list of all resource deep links
|
|
rpc ListResourceLinks(ApplicationResourceRequest) returns (LinksResponse) {
|
|
option (google.api.http).get = "/v1/applications/{name}/resource/links";
|
|
}
|
|
}
|