github.com/cloudposse/helm@v2.2.3+incompatible/_proto/hapi/services/tiller.proto (about) 1 // Copyright 2016 The Kubernetes Authors All rights reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 syntax = "proto3"; 16 17 package hapi.services.tiller; 18 19 import "hapi/chart/chart.proto"; 20 import "hapi/chart/config.proto"; 21 import "hapi/release/release.proto"; 22 import "hapi/release/info.proto"; 23 import "hapi/release/status.proto"; 24 import "hapi/version/version.proto"; 25 26 option go_package = "services"; 27 28 // ReleaseService is the service that a helm application uses to mutate, 29 // query, and manage releases. 30 // 31 // Release: A named installation composed of a chart and 32 // config. At any given time a release has one 33 // chart and one config. 34 // 35 // Config: A config is a YAML file that supplies values 36 // to the parametrizable templates of a chart. 37 // 38 // Chart: A chart is a helm package that contains 39 // metadata, a default config, zero or more 40 // optionally parameterizable templates, and 41 // zero or more charts (dependencies). 42 service ReleaseService { 43 // ListReleases retrieves release history. 44 // TODO: Allow filtering the set of releases by 45 // release status. By default, ListAllReleases returns the releases who 46 // current status is "Active". 47 rpc ListReleases(ListReleasesRequest) returns (stream ListReleasesResponse) { 48 } 49 50 // GetReleasesStatus retrieves status information for the specified release. 51 rpc GetReleaseStatus(GetReleaseStatusRequest) returns (GetReleaseStatusResponse) { 52 } 53 54 // GetReleaseContent retrieves the release content (chart + value) for the specified release. 55 rpc GetReleaseContent(GetReleaseContentRequest) returns (GetReleaseContentResponse) { 56 } 57 58 // UpdateRelease updates release content. 59 rpc UpdateRelease(UpdateReleaseRequest) returns (UpdateReleaseResponse) { 60 } 61 62 // InstallRelease requests installation of a chart as a new release. 63 rpc InstallRelease(InstallReleaseRequest) returns (InstallReleaseResponse) { 64 } 65 66 // UninstallRelease requests deletion of a named release. 67 rpc UninstallRelease(UninstallReleaseRequest) returns (UninstallReleaseResponse) { 68 } 69 70 // GetVersion returns the current version of the server. 71 rpc GetVersion(GetVersionRequest) returns (GetVersionResponse) { 72 } 73 74 // RollbackRelease rolls back a release to a previous version. 75 rpc RollbackRelease(RollbackReleaseRequest) returns (RollbackReleaseResponse) { 76 } 77 78 // ReleaseHistory retrieves a releasse's history. 79 rpc GetHistory(GetHistoryRequest) returns (GetHistoryResponse) { 80 } 81 82 // RunReleaseTest executes the tests defined of a named release 83 rpc RunReleaseTest(TestReleaseRequest) returns (stream TestReleaseResponse) { 84 } 85 } 86 87 // ListReleasesRequest requests a list of releases. 88 // 89 // Releases can be retrieved in chunks by setting limit and offset. 90 // 91 // Releases can be sorted according to a few pre-determined sort stategies. 92 message ListReleasesRequest { 93 // Limit is the maximum number of releases to be returned. 94 int64 limit = 1; 95 96 // Offset is the last release name that was seen. The next listing 97 // operation will start with the name after this one. 98 // Example: If list one returns albert, bernie, carl, and sets 'next: dennis'. 99 // dennis is the offset. Supplying 'dennis' for the next request should 100 // cause the next batch to return a set of results starting with 'dennis'. 101 string offset = 2; 102 103 // SortBy is the sort field that the ListReleases server should sort data before returning. 104 ListSort.SortBy sort_by = 3; 105 106 // Filter is a regular expression used to filter which releases should be listed. 107 // 108 // Anything that matches the regexp will be included in the results. 109 string filter = 4; 110 111 // SortOrder is the ordering directive used for sorting. 112 ListSort.SortOrder sort_order = 5; 113 114 repeated hapi.release.Status.Code status_codes = 6; 115 // Namespace is the filter to select releases only from a specific namespace. 116 string namespace = 7; 117 } 118 119 // ListSort defines sorting fields on a release list. 120 message ListSort{ 121 // SortBy defines sort operations. 122 enum SortBy { 123 UNKNOWN = 0; 124 NAME = 1; 125 LAST_RELEASED = 2; 126 } 127 128 // SortOrder defines sort orders to augment sorting operations. 129 enum SortOrder { 130 ASC = 0; 131 DESC = 1; 132 } 133 } 134 135 // ListReleasesResponse is a list of releases. 136 message ListReleasesResponse { 137 // Count is the expected total number of releases to be returned. 138 int64 count = 1; 139 140 // Next is the name of the next release. If this is other than an empty 141 // string, it means there are more results. 142 string next = 2; 143 144 // Total is the total number of queryable releases. 145 int64 total = 3; 146 147 // Releases is the list of found release objects. 148 repeated hapi.release.Release releases = 4; 149 } 150 151 // GetReleaseStatusRequest is a request to get the status of a release. 152 message GetReleaseStatusRequest { 153 // Name is the name of the release 154 string name = 1; 155 // Version is the version of the release 156 int32 version = 2; 157 } 158 159 // GetReleaseStatusResponse is the response indicating the status of the named release. 160 message GetReleaseStatusResponse { 161 // Name is the name of the release. 162 string name = 1; 163 164 // Info contains information about the release. 165 hapi.release.Info info = 2; 166 167 // Namesapce the release was released into 168 string namespace = 3; 169 } 170 171 // GetReleaseContentRequest is a request to get the contents of a release. 172 message GetReleaseContentRequest { 173 // The name of the release 174 string name = 1; 175 // Version is the version of the release 176 int32 version = 2; 177 } 178 179 // GetReleaseContentResponse is a response containing the contents of a release. 180 message GetReleaseContentResponse { 181 // The release content 182 hapi.release.Release release = 1; 183 } 184 185 // UpdateReleaseRequest updates a release. 186 message UpdateReleaseRequest { 187 // The name of the release 188 string name = 1; 189 // Chart is the protobuf representation of a chart. 190 hapi.chart.Chart chart = 2; 191 // Values is a string containing (unparsed) YAML values. 192 hapi.chart.Config values = 3; 193 // dry_run, if true, will run through the release logic, but neither create 194 bool dry_run = 4; 195 // DisableHooks causes the server to skip running any hooks for the upgrade. 196 bool disable_hooks = 5; 197 // Performs pods restart for resources if applicable 198 bool recreate = 6; 199 // timeout specifies the max amount of time any kubernetes client command can run. 200 int64 timeout = 7; 201 // ResetValues will cause Tiller to ignore stored values, resetting to default values. 202 bool reset_values = 8; 203 // wait, if true, will wait until all Pods, PVCs, and Services are in a ready state 204 // before marking the release as successful. It will wait for as long as timeout 205 bool wait = 9; 206 } 207 208 // UpdateReleaseResponse is the response to an update request. 209 message UpdateReleaseResponse { 210 hapi.release.Release release = 1; 211 } 212 213 message RollbackReleaseRequest { 214 // The name of the release 215 string name = 1; 216 // dry_run, if true, will run through the release logic but no create 217 bool dry_run = 2; 218 // DisableHooks causes the server to skip running any hooks for the rollback 219 bool disable_hooks = 3; 220 // Version is the version of the release to deploy. 221 int32 version = 4; 222 // Performs pods restart for resources if applicable 223 bool recreate = 5; 224 // timeout specifies the max amount of time any kubernetes client command can run. 225 int64 timeout = 6; 226 // wait, if true, will wait until all Pods, PVCs, and Services are in a ready state 227 // before marking the release as successful. It will wait for as long as timeout 228 bool wait = 7; 229 } 230 231 // RollbackReleaseResponse is the response to an update request. 232 message RollbackReleaseResponse { 233 hapi.release.Release release = 1; 234 } 235 236 // InstallReleaseRequest is the request for an installation of a chart. 237 message InstallReleaseRequest { 238 // Chart is the protobuf representation of a chart. 239 hapi.chart.Chart chart = 1; 240 // Values is a string containing (unparsed) YAML values. 241 hapi.chart.Config values = 2; 242 // DryRun, if true, will run through the release logic, but neither create 243 // a release object nor deploy to Kubernetes. The release object returned 244 // in the response will be fake. 245 bool dry_run = 3; 246 247 // Name is the candidate release name. This must be unique to the 248 // namespace, otherwise the server will return an error. If it is not 249 // supplied, the server will autogenerate one. 250 string name = 4; 251 252 // DisableHooks causes the server to skip running any hooks for the install. 253 bool disable_hooks = 5; 254 255 // Namepace is the kubernetes namespace of the release. 256 string namespace = 6; 257 258 // ReuseName requests that Tiller re-uses a name, instead of erroring out. 259 bool reuse_name = 7; 260 261 // timeout specifies the max amount of time any kubernetes client command can run. 262 int64 timeout = 8; 263 // wait, if true, will wait until all Pods, PVCs, and Services are in a ready state 264 // before marking the release as successful. It will wait for as long as timeout 265 bool wait = 9; 266 } 267 268 // InstallReleaseResponse is the response from a release installation. 269 message InstallReleaseResponse { 270 hapi.release.Release release = 1; 271 } 272 273 // UninstallReleaseRequest represents a request to uninstall a named release. 274 message UninstallReleaseRequest { 275 // Name is the name of the release to delete. 276 string name = 1; 277 // DisableHooks causes the server to skip running any hooks for the uninstall. 278 bool disable_hooks = 2; 279 // Purge removes the release from the store and make its name free for later use. 280 bool purge = 3; 281 // timeout specifies the max amount of time any kubernetes client command can run. 282 int64 timeout = 4; 283 } 284 285 // UninstallReleaseResponse represents a successful response to an uninstall request. 286 message UninstallReleaseResponse { 287 // Release is the release that was marked deleted. 288 hapi.release.Release release = 1; 289 // Info is an uninstall message 290 string info = 2; 291 } 292 293 // GetVersionRequest requests for version information. 294 message GetVersionRequest { 295 } 296 297 message GetVersionResponse { 298 hapi.version.Version Version = 1; 299 } 300 301 // GetHistoryRequest requests a release's history. 302 message GetHistoryRequest { 303 // The name of the release. 304 string name = 1; 305 // The maximum number of releases to include. 306 int32 max = 2; 307 } 308 309 // GetHistoryResponse is received in response to a GetHistory rpc. 310 message GetHistoryResponse { 311 repeated hapi.release.Release releases = 1; 312 } 313 314 // TestReleaseRequest is a request to get the status of a release. 315 message TestReleaseRequest { 316 // Name is the name of the release 317 string name = 1; 318 // timeout specifies the max amount of time any kubernetes client command can run. 319 int64 timeout = 2; 320 // cleanup specifies whether or not to attempt pod deletion after test completes 321 bool cleanup = 3; 322 } 323 324 // TestReleaseResponse represents a message from executing a test 325 message TestReleaseResponse { 326 string msg = 1; 327 }