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.
380 lines
14 KiB
Protocol Buffer
380 lines
14 KiB
Protocol Buffer
syntax = "proto3";
|
|
option go_package = "github.com/hanzoai/cd/reposerver/apiclient";
|
|
|
|
package repository;
|
|
|
|
import "github.com/hanzoai/cd/pkg/apis/application/v1alpha1/generated.proto";
|
|
import "google/protobuf/empty.proto";
|
|
|
|
// ManifestRequest is a query for manifest generation.
|
|
message ManifestRequest {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
// revision, potentially un-resolved
|
|
string revision = 2;
|
|
bool noCache = 3;
|
|
string appLabelKey = 4;
|
|
// Name of the application for which the request is triggered
|
|
string appName = 5;
|
|
string namespace = 8;
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ApplicationSource applicationSource = 10;
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repos = 11;
|
|
// Deprecated: use sidecar plugins instead.
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ConfigManagementPlugin plugins = 12;
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.KustomizeOptions kustomizeOptions = 13;
|
|
// KubeVersion is the Kubernetes API version from the destination cluster.
|
|
string kubeVersion = 14;
|
|
// ApiVersions is the list of API versions from the destination cluster, used for rendering Helm charts.
|
|
repeated string apiVersions = 15;
|
|
// Deprecated: Use sourceIntegrity for more detailed information. verifySignature will be removed with the next major version.
|
|
bool verifySignature = 16;
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.RepoCreds helmRepoCreds = 17;
|
|
bool noRevisionCache = 18;
|
|
string trackingMethod = 19;
|
|
map<string, bool> enabledSourceTypes = 20;
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.HelmOptions helmOptions = 21;
|
|
bool hasMultipleSources = 22;
|
|
map<string, github.com.hanzoai.cd.pkg.apis.application.v1alpha1.RefTarget> refSources = 23;
|
|
// This is used to surface "source not permitted" errors for Helm repositories
|
|
repeated string projectSourceRepos = 24;
|
|
// This is used to surface "source not permitted" errors for Helm repositories
|
|
string projectName = 25;
|
|
// apps.hanzo.ai/manifest-generate-paths annotation value of the Application to allow optimize which resources propagated to cmpserver
|
|
string annotationManifestGeneratePaths = 26;
|
|
// Holds instance installation id
|
|
string installationID = 27;
|
|
// Source integrity constrains to verify the sources before use
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.SourceIntegrity sourceIntegrity = 28;
|
|
}
|
|
|
|
message ManifestRequestWithFiles {
|
|
oneof part {
|
|
ManifestRequest request = 1;
|
|
ManifestFileMetadata metadata = 2;
|
|
ManifestFileChunk chunk = 3;
|
|
}
|
|
}
|
|
|
|
message ManifestFileMetadata {
|
|
// checksum is used to verify the integrity of the file
|
|
string checksum = 1;
|
|
// size relates to the file size in bytes
|
|
int64 size = 2;
|
|
}
|
|
|
|
message ManifestFileChunk {
|
|
bytes chunk = 1;
|
|
}
|
|
|
|
// TestRepositoryRequest is a query to test repository is valid or not and has valid access.
|
|
message TestRepositoryRequest {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
}
|
|
|
|
// TestRepositoryResponse represents the TestRepository response
|
|
message TestRepositoryResponse {
|
|
// Request to verify the signature when generating the manifests (only for Git repositories)
|
|
bool verifiedRepository = 1;
|
|
}
|
|
|
|
// ResolveRevisionRequest
|
|
message ResolveRevisionRequest {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Application app = 2;
|
|
string ambiguousRevision = 3;
|
|
int64 sourceIndex = 4;
|
|
bool noRevisionCache = 5;
|
|
}
|
|
|
|
// ResolveRevisionResponse
|
|
message ResolveRevisionResponse {
|
|
// returns the resolved revision
|
|
string revision = 1;
|
|
string ambiguousRevision = 2;
|
|
}
|
|
|
|
message ManifestResponse {
|
|
repeated string manifests = 1;
|
|
string namespace = 2;
|
|
string server = 3;
|
|
// resolved revision
|
|
string revision = 4;
|
|
string sourceType = 6;
|
|
// Deprecated: Use sourceIntegrityResult for more detailed information. verifyResult will be removed with the next major version.
|
|
string verifyResult = 7;
|
|
// Commands is the list of commands used to hydrate the manifests
|
|
repeated string commands = 8;
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.SourceIntegrityCheckResult sourceIntegrityResult = 9;
|
|
}
|
|
|
|
message ListRefsRequest {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
}
|
|
|
|
// A subset of the repository's named refs
|
|
message Refs {
|
|
repeated string branches = 1;
|
|
repeated string tags = 2;
|
|
}
|
|
|
|
// ListAppsRequest requests a repository directory structure
|
|
message ListAppsRequest {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
string revision = 2;
|
|
map<string, bool> enabledSourceTypes = 3;
|
|
}
|
|
|
|
// AppList returns the contents of the repo of a ListApps request
|
|
message AppList {
|
|
map<string, string> apps = 1;
|
|
}
|
|
|
|
message PluginInfo {
|
|
string name = 1;
|
|
}
|
|
|
|
// PluginList returns the list of all cmp v2 plugins running as sidecars
|
|
message PluginList {
|
|
repeated PluginInfo items = 1;
|
|
}
|
|
|
|
// RepoServerAppDetailsQuery contains query information for app details request
|
|
message RepoServerAppDetailsQuery {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ApplicationSource source = 2;
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repos = 3;
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.KustomizeOptions kustomizeOptions = 4;
|
|
string appName = 5;
|
|
bool noCache = 6;
|
|
bool noRevisionCache = 7;
|
|
string trackingMethod = 8;
|
|
map<string, bool> enabledSourceTypes = 9;
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.HelmOptions helmOptions = 10;
|
|
map<string, github.com.hanzoai.cd.pkg.apis.application.v1alpha1.RefTarget> refSources = 11;
|
|
}
|
|
|
|
// RepoAppDetailsResponse application details
|
|
message RepoAppDetailsResponse {
|
|
string type = 1;
|
|
HelmAppSpec helm = 3;
|
|
KustomizeAppSpec kustomize = 4;
|
|
DirectoryAppSpec directory = 5;
|
|
PluginAppSpec plugin = 6;
|
|
}
|
|
|
|
message RepoServerRevisionMetadataRequest {
|
|
// the repo
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
// the revision within the repo
|
|
string revision = 2;
|
|
// Deprecated: Use sourceIntegrity for more detailed information. checkSignature will be removed with the next major version.
|
|
bool checkSignature = 3;
|
|
// Source integrity constrains to verify the sources before use
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.SourceIntegrity sourceIntegrity = 4;
|
|
}
|
|
|
|
message RepoServerRevisionChartDetailsRequest {
|
|
// the repo
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
// the chart
|
|
string name = 2;
|
|
// the revision within the chart
|
|
string revision = 3;
|
|
}
|
|
|
|
// HelmAppSpec contains helm app name in source repo
|
|
message HelmAppSpec {
|
|
string name = 1;
|
|
repeated string valueFiles = 3;
|
|
// the output of `helm inspect values`
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.HelmParameter parameters = 4;
|
|
// the contents of values.yaml
|
|
string values = 5;
|
|
// helm file parameters
|
|
repeated github.com.hanzoai.cd.pkg.apis.application.v1alpha1.HelmFileParameter fileParameters = 6;
|
|
}
|
|
|
|
// KustomizeAppSpec contains kustomize images
|
|
message KustomizeAppSpec {
|
|
// images is a list of available images.
|
|
repeated string images = 3;
|
|
}
|
|
|
|
// DirectoryAppSpec contains directory
|
|
message DirectoryAppSpec {
|
|
}
|
|
|
|
message ParameterAnnouncement {
|
|
// name is the name identifying a parameter.
|
|
string name = 1;
|
|
// title is a human-readable text of the parameter name.
|
|
string title = 2;
|
|
// tooltip is a human-readable description of the parameter.
|
|
string tooltip = 3;
|
|
// required defines if this given parameter is mandatory.
|
|
bool required = 4;
|
|
// itemType determines the primitive data type represented by the parameter. Parameters are always encoded as
|
|
// strings, but this field lets them be interpreted as other primitive types.
|
|
string itemType = 5;
|
|
// collectionType is the type of value this parameter holds - either a single value (a string) or a collection
|
|
// (array or map). If collectionType is set, only the field with that type will be used. If collectionType is not
|
|
// set, `string` is the default. If collectionType is set to an invalid value, a validation error is thrown.
|
|
string collectionType = 6;
|
|
// string is the default value of the parameter if the parameter is a string.
|
|
string string = 7;
|
|
// array is the default value of the parameter if the parameter is an array.
|
|
repeated string array = 8;
|
|
// map is the default value of the parameter if the parameter is a map.
|
|
map<string, string> map = 9;
|
|
}
|
|
|
|
// PluginAppSpec contains details about a plugin-type Application
|
|
message PluginAppSpec {
|
|
repeated ParameterAnnouncement parametersAnnouncement = 1;
|
|
}
|
|
|
|
message HelmChartsRequest {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
}
|
|
|
|
message HelmChart {
|
|
string name = 1;
|
|
repeated string versions = 2;
|
|
}
|
|
|
|
message HelmChartsResponse {
|
|
repeated HelmChart items = 1;
|
|
}
|
|
|
|
message GitFilesRequest {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
bool submoduleEnabled = 2;
|
|
string revision = 3;
|
|
string path = 4;
|
|
bool NewGitFileGlobbingEnabled = 5;
|
|
bool noRevisionCache = 6;
|
|
// Deprecated: Use sourceIntegrity for more detailed information. verifyCommit will be removed with the next major version.
|
|
bool verifyCommit = 7;
|
|
// Source integrity constrains to verify the sources before use
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.SourceIntegrity sourceIntegrity = 8;
|
|
}
|
|
|
|
message GitFilesResponse {
|
|
// Map consisting of path of the path to its contents in bytes
|
|
map<string, bytes> map = 1;
|
|
}
|
|
|
|
message GitDirectoriesRequest {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
bool submoduleEnabled = 2;
|
|
string revision = 3;
|
|
bool noRevisionCache = 4;
|
|
// Deprecated: Use sourceIntegrity for more detailed information. verifyCommit will be removed with the next major version.
|
|
bool verifyCommit = 5;
|
|
// Source integrity constrains to verify the sources before use
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.SourceIntegrity sourceIntegrity = 6;
|
|
}
|
|
|
|
message GitDirectoriesResponse {
|
|
// A set of directory paths
|
|
repeated string paths = 1;
|
|
}
|
|
|
|
message UpdateRevisionForPathsRequest {
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.Repository repo = 1;
|
|
|
|
string appLabelKey = 2;
|
|
string appName = 3;
|
|
string namespace = 4;
|
|
github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ApplicationSource applicationSource = 5;
|
|
string trackingMethod = 6;
|
|
map<string, github.com.hanzoai.cd.pkg.apis.application.v1alpha1.RefTarget> refSources = 7;
|
|
string kubeVersion = 8;
|
|
repeated string apiVersions = 9;
|
|
bool hasMultipleSources = 10;
|
|
|
|
string syncedRevision = 11;
|
|
string revision = 12;
|
|
repeated string paths = 13;
|
|
|
|
bool noRevisionCache = 14;
|
|
string installationID = 15;
|
|
|
|
map<string, github.com.hanzoai.cd.pkg.apis.application.v1alpha1.RefTarget> syncedRefSources = 16;
|
|
}
|
|
|
|
message UpdateRevisionForPathsResponse {
|
|
// Changes indicates whether any changes were detected in the provided paths. If false, it means that the manifest
|
|
// cache was updated to the new revision. If true, it means that there are relevant changes in the repo files and
|
|
// that new manifests should be generated.
|
|
bool changes = 1;
|
|
string revision = 2;
|
|
}
|
|
|
|
// ManifestService
|
|
service RepoServerService {
|
|
|
|
// GenerateManifest generates manifest for application in specified repo name and revision
|
|
rpc GenerateManifest(ManifestRequest) returns (ManifestResponse) {
|
|
}
|
|
|
|
// GenerateManifestWithFiles generates manifest for application using provided tarball of files
|
|
rpc GenerateManifestWithFiles(stream ManifestRequestWithFiles) returns (ManifestResponse) {
|
|
}
|
|
|
|
// Returns a bool val if the repository is valid and has proper access
|
|
rpc TestRepository(TestRepositoryRequest) returns (TestRepositoryResponse) {
|
|
}
|
|
|
|
// Returns a valid revision
|
|
rpc ResolveRevision(ResolveRevisionRequest) returns (ResolveRevisionResponse) {
|
|
}
|
|
|
|
// Returns a list of refs (e.g. branches and tags) in the repo
|
|
rpc ListRefs(ListRefsRequest) returns (Refs) {
|
|
}
|
|
|
|
// Returns a list of oci tags in the repo
|
|
rpc ListOCITags(ListRefsRequest) returns (Refs) {
|
|
}
|
|
|
|
// ListApps returns a list of apps in the repo
|
|
rpc ListApps(ListAppsRequest) returns (AppList) {
|
|
}
|
|
|
|
// ListPlugins returns a list of cmp v2 plugins running as sidecar to reposerver
|
|
rpc ListPlugins(google.protobuf.Empty) returns (PluginList) {
|
|
}
|
|
|
|
// Generate manifest for application in specified repo name and revision
|
|
rpc GetAppDetails(RepoServerAppDetailsQuery) returns (RepoAppDetailsResponse) {
|
|
}
|
|
|
|
// Get the meta-data (author, date, tags, message) for a specific revision of the repo
|
|
rpc GetRevisionMetadata(RepoServerRevisionMetadataRequest) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.RevisionMetadata) {
|
|
}
|
|
|
|
// Get the meta-data (author, date, tags, message) for a specific revision of the OCI image
|
|
rpc GetOCIMetadata(RepoServerRevisionChartDetailsRequest) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.OCIMetadata) {
|
|
}
|
|
|
|
// Get the chart details (author, date, tags, message) for a specific revision of the repo
|
|
rpc GetRevisionChartDetails(RepoServerRevisionChartDetailsRequest) returns (github.com.hanzoai.cd.pkg.apis.application.v1alpha1.ChartDetails) {
|
|
}
|
|
|
|
// GetHelmCharts returns list of helm charts in the specified repository
|
|
rpc GetHelmCharts(HelmChartsRequest) returns (HelmChartsResponse) {
|
|
}
|
|
|
|
// GetGitFiles returns a set of file paths and their contents for the given repo
|
|
rpc GetGitFiles(GitFilesRequest) returns (GitFilesResponse) {
|
|
}
|
|
|
|
// GetGitDirectories returns a set of directory paths for the given repo
|
|
rpc GetGitDirectories(GitDirectoriesRequest) returns (GitDirectoriesResponse) {
|
|
}
|
|
|
|
// UpdateRevisionForPaths will compare two revisions and update the cache with the new revision if no changes are detected in the provided paths
|
|
rpc UpdateRevisionForPaths(UpdateRevisionForPathsRequest) returns (UpdateRevisionForPathsResponse) {
|
|
}
|
|
}
|