diff --git a/doc/index.html b/doc/index.html
index 338fa340..cd4b3be3 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -3006,6 +3006,14 @@
Remove labels by key |
+
+ | remove_all |
+ bool |
+ |
+ RemoveAll can be used to clear all existing labels and just apply the labels given by the update field
+do not send remove labels in this case |
+
+
diff --git a/go/metalstack/api/v2/common.pb.go b/go/metalstack/api/v2/common.pb.go
index 3f043254..76b3919a 100644
--- a/go/metalstack/api/v2/common.pb.go
+++ b/go/metalstack/api/v2/common.pb.go
@@ -648,7 +648,10 @@ type UpdateLabels struct {
// Update labels. New ones will be added, existing ones overwritten
Update *Labels `protobuf:"bytes,1,opt,name=update,proto3" json:"update,omitempty"`
// Remove labels by key
- Remove []string `protobuf:"bytes,2,rep,name=remove,proto3" json:"remove,omitempty"`
+ Remove []string `protobuf:"bytes,2,rep,name=remove,proto3" json:"remove,omitempty"`
+ // RemoveAll can be used to clear all existing labels and just apply the labels given by the update field
+ // do not send remove labels in this case
+ RemoveAll bool `protobuf:"varint,3,opt,name=remove_all,json=removeAll,proto3" json:"remove_all,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
@@ -697,6 +700,13 @@ func (x *UpdateLabels) GetRemove() []string {
return nil
}
+func (x *UpdateLabels) GetRemoveAll() bool {
+ if x != nil {
+ return x.RemoveAll
+ }
+ return false
+}
+
// UpdateMeta must be provided with every UpdateRequest to define how optimistic locking should be handled
type UpdateMeta struct {
state protoimpl.MessageState `protogen:"open.v1"`
@@ -884,10 +894,12 @@ const file_metalstack_api_v2_common_proto_rawDesc = "" +
"\n" +
"generation\x18\x04 \x01(\x04R\n" +
"generationB\t\n" +
- "\a_labels\"Y\n" +
+ "\a_labels\"\x86\x01\n" +
"\fUpdateLabels\x121\n" +
- "\x06update\x18\x01 \x01(\v2\x19.metalstack.api.v2.LabelsR\x06update\x12\x16\n" +
- "\x06remove\x18\x02 \x03(\tR\x06remove\"\xaa\x01\n" +
+ "\x06update\x18\x01 \x01(\v2\x19.metalstack.api.v2.LabelsR\x06update\x12$\n" +
+ "\x06remove\x18\x02 \x03(\tB\f\xbaH\t\x92\x01\x06ะค\xb3\xb1\x02\x01R\x06remove\x12\x1d\n" +
+ "\n" +
+ "remove_all\x18\x03 \x01(\bR\tremoveAll\"\xaa\x01\n" +
"\n" +
"UpdateMeta\x129\n" +
"\n" +
diff --git a/js/metalstack/api/v2/common_pb.d.ts b/js/metalstack/api/v2/common_pb.d.ts
index e2f7328f..02f1f193 100644
--- a/js/metalstack/api/v2/common_pb.d.ts
+++ b/js/metalstack/api/v2/common_pb.d.ts
@@ -105,6 +105,13 @@ export type UpdateLabels = Message<"metalstack.api.v2.UpdateLabels"> & {
* @generated from field: repeated string remove = 2;
*/
remove: string[];
+ /**
+ * RemoveAll can be used to clear all existing labels and just apply the labels given by the update field
+ * do not send remove labels in this case
+ *
+ * @generated from field: bool remove_all = 3;
+ */
+ removeAll: boolean;
};
/**
* Describes the message metalstack.api.v2.UpdateLabels.
diff --git a/js/metalstack/api/v2/common_pb.js b/js/metalstack/api/v2/common_pb.js
index 89fa4c24..90c78093 100644
--- a/js/metalstack/api/v2/common_pb.js
+++ b/js/metalstack/api/v2/common_pb.js
@@ -8,7 +8,7 @@ import { file_metalstack_api_v2_predefined_rules } from "./predefined_rules_pb";
/**
* Describes the file metalstack/api/v2/common.proto.
*/
-export const file_metalstack_api_v2_common = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQijgEKBkxhYmVscxJVCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCHrpIG5oBGLiVuLECASIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrUBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKARCCQoHX2xhYmVscyJJCgxVcGRhdGVMYWJlbHMSKQoGdXBkYXRlGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEg4KBnJlbW92ZRgCIAMoCSKOAQoKVXBkYXRlTWV0YRIuCgp1cGRhdGVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJQChBsb2NraW5nX3N0cmF0ZWd5GAIgASgOMiwubWV0YWxzdGFjay5hcGkudjIuT3B0aW1pc3RpY0xvY2tpbmdTdHJhdGVneUIIukgFggECEAEqhwEKClRlbmFudFJvbGUSGwoXVEVOQU5UX1JPTEVfVU5TUEVDSUZJRUQQABIVChFURU5BTlRfUk9MRV9PV05FUhABEhYKElRFTkFOVF9ST0xFX0VESVRPUhACEhYKElRFTkFOVF9ST0xFX1ZJRVdFUhADEhUKEVRFTkFOVF9ST0xFX0dVRVNUEAQqdQoLUHJvamVjdFJvbGUSHAoYUFJPSkVDVF9ST0xFX1VOU1BFQ0lGSUVEEAASFgoSUFJPSkVDVF9ST0xFX09XTkVSEAESFwoTUFJPSkVDVF9ST0xFX0VESVRPUhACEhcKE1BST0pFQ1RfUk9MRV9WSUVXRVIQAypVCglBZG1pblJvbGUSGgoWQURNSU5fUk9MRV9VTlNQRUNJRklFRBAAEhUKEUFETUlOX1JPTEVfRURJVE9SEAESFQoRQURNSU5fUk9MRV9WSUVXRVIQAipVCglJbmZyYVJvbGUSGgoWSU5GUkFfUk9MRV9VTlNQRUNJRklFRBAAEhUKEUlORlJBX1JPTEVfRURJVE9SEAESFQoRSU5GUkFfUk9MRV9WSUVXRVIQAipdCgtNYWNoaW5lUm9sZRIcChhNQUNISU5FX1JPTEVfVU5TUEVDSUZJRUQQABIXChNNQUNISU5FX1JPTEVfRURJVE9SEAESFwoTTUFDSElORV9ST0xFX1ZJRVdFUhACKlQKClZpc2liaWxpdHkSGgoWVklTSUJJTElUWV9VTlNQRUNJRklFRBAAEhUKEVZJU0lCSUxJVFlfUFVCTElDEAESEwoPVklTSUJJTElUWV9TRUxGEAMqUgoIQXVkaXRpbmcSGAoUQVVESVRJTkdfVU5TUEVDSUZJRUQQABIVChFBVURJVElOR19JTkNMVURFRBABEhUKEUFVRElUSU5HX0VYQ0xVREVEEAIqmAEKGU9wdGltaXN0aWNMb2NraW5nU3RyYXRlZ3kSKwonT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASJgoiT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX0NMSUVOVBABEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9TRVJWRVIQAjpiCgx0ZW5hbnRfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi4jgMgAygOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZVILdGVuYW50Um9sZXM6ZQoNcHJvamVjdF9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLmOAyADKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZVIMcHJvamVjdFJvbGVzOl8KC2FkbWluX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuo4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZVIKYWRtaW5Sb2xlczpfCgp2aXNpYmlsaXR5Eh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYu44DIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlZpc2liaWxpdHlSCnZpc2liaWxpdHk6WQoIYXVkaXRpbmcSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi8jgMgASgOMhsubWV0YWxzdGFjay5hcGkudjIuQXVkaXRpbmdSCGF1ZGl0aW5nOl8KC2luZnJhX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvY4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZVIKaW5mcmFSb2xlczplCg1tYWNoaW5lX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvo4DIAMoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVSb2xlUgxtYWNoaW5lUm9sZXM6TwoRZW51bV9zdHJpbmdfdmFsdWUSIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9ucxiglgMgASgJUg9lbnVtU3RyaW5nVmFsdWVCwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILQ29tbW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp, file_metalstack_api_v2_predefined_rules]);
+export const file_metalstack_api_v2_common = /*@__PURE__*/ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQijgEKBkxhYmVscxJVCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCHrpIG5oBGLiVuLECASIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrUBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKARCCQoHX2xhYmVscyJrCgxVcGRhdGVMYWJlbHMSKQoGdXBkYXRlGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEhwKBnJlbW92ZRgCIAMoCUIMukgJkgEG0KSzsQIBEhIKCnJlbW92ZV9hbGwYAyABKAgijgEKClVwZGF0ZU1ldGESLgoKdXBkYXRlZF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASUAoQbG9ja2luZ19zdHJhdGVneRgCIAEoDjIsLm1ldGFsc3RhY2suYXBpLnYyLk9wdGltaXN0aWNMb2NraW5nU3RyYXRlZ3lCCLpIBYIBAhABKocBCgpUZW5hbnRSb2xlEhsKF1RFTkFOVF9ST0xFX1VOU1BFQ0lGSUVEEAASFQoRVEVOQU5UX1JPTEVfT1dORVIQARIWChJURU5BTlRfUk9MRV9FRElUT1IQAhIWChJURU5BTlRfUk9MRV9WSUVXRVIQAxIVChFURU5BTlRfUk9MRV9HVUVTVBAEKnUKC1Byb2plY3RSb2xlEhwKGFBST0pFQ1RfUk9MRV9VTlNQRUNJRklFRBAAEhYKElBST0pFQ1RfUk9MRV9PV05FUhABEhcKE1BST0pFQ1RfUk9MRV9FRElUT1IQAhIXChNQUk9KRUNUX1JPTEVfVklFV0VSEAMqVQoJQWRtaW5Sb2xlEhoKFkFETUlOX1JPTEVfVU5TUEVDSUZJRUQQABIVChFBRE1JTl9ST0xFX0VESVRPUhABEhUKEUFETUlOX1JPTEVfVklFV0VSEAIqVQoJSW5mcmFSb2xlEhoKFklORlJBX1JPTEVfVU5TUEVDSUZJRUQQABIVChFJTkZSQV9ST0xFX0VESVRPUhABEhUKEUlORlJBX1JPTEVfVklFV0VSEAIqXQoLTWFjaGluZVJvbGUSHAoYTUFDSElORV9ST0xFX1VOU1BFQ0lGSUVEEAASFwoTTUFDSElORV9ST0xFX0VESVRPUhABEhcKE01BQ0hJTkVfUk9MRV9WSUVXRVIQAipUCgpWaXNpYmlsaXR5EhoKFlZJU0lCSUxJVFlfVU5TUEVDSUZJRUQQABIVChFWSVNJQklMSVRZX1BVQkxJQxABEhMKD1ZJU0lCSUxJVFlfU0VMRhADKlIKCEF1ZGl0aW5nEhgKFEFVRElUSU5HX1VOU1BFQ0lGSUVEEAASFQoRQVVESVRJTkdfSU5DTFVERUQQARIVChFBVURJVElOR19FWENMVURFRBACKpgBChlPcHRpbWlzdGljTG9ja2luZ1N0cmF0ZWd5EisKJ09QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9VTlNQRUNJRklFRBAAEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9DTElFTlQQARImCiJPUFRJTUlTVElDX0xPQ0tJTkdfU1RSQVRFR1lfU0VSVkVSEAI6YgoMdGVuYW50X3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuI4DIAMoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVSC3RlbmFudFJvbGVzOmUKDXByb2plY3Rfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi5jgMgAygOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVSDHByb2plY3RSb2xlczpfCgthZG1pbl9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLqOAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVSCmFkbWluUm9sZXM6XwoKdmlzaWJpbGl0eRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLuOAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5WaXNpYmlsaXR5Ugp2aXNpYmlsaXR5OlkKCGF1ZGl0aW5nEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvI4DIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0aW5nUghhdWRpdGluZzpfCgtpbmZyYV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL2OAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVSCmluZnJhUm9sZXM6ZQoNbWFjaGluZV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL6OAyADKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZVIMbWFjaGluZVJvbGVzOk8KEWVudW1fc3RyaW5nX3ZhbHVlEiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMYoJYDIAEoCVIPZW51bVN0cmluZ1ZhbHVlQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC0NvbW1vblByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp, file_metalstack_api_v2_predefined_rules]);
/**
* Describes the message metalstack.api.v2.Paging.
* Use `create(PagingSchema)` to create a new message.
diff --git a/js/metalstack/api/v2/common_pb.ts b/js/metalstack/api/v2/common_pb.ts
index 66a7fca5..709020f6 100644
--- a/js/metalstack/api/v2/common_pb.ts
+++ b/js/metalstack/api/v2/common_pb.ts
@@ -14,7 +14,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file metalstack/api/v2/common.proto.
*/
export const file_metalstack_api_v2_common: GenFile = /*@__PURE__*/
- fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQijgEKBkxhYmVscxJVCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCHrpIG5oBGLiVuLECASIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrUBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKARCCQoHX2xhYmVscyJJCgxVcGRhdGVMYWJlbHMSKQoGdXBkYXRlGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEg4KBnJlbW92ZRgCIAMoCSKOAQoKVXBkYXRlTWV0YRIuCgp1cGRhdGVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJQChBsb2NraW5nX3N0cmF0ZWd5GAIgASgOMiwubWV0YWxzdGFjay5hcGkudjIuT3B0aW1pc3RpY0xvY2tpbmdTdHJhdGVneUIIukgFggECEAEqhwEKClRlbmFudFJvbGUSGwoXVEVOQU5UX1JPTEVfVU5TUEVDSUZJRUQQABIVChFURU5BTlRfUk9MRV9PV05FUhABEhYKElRFTkFOVF9ST0xFX0VESVRPUhACEhYKElRFTkFOVF9ST0xFX1ZJRVdFUhADEhUKEVRFTkFOVF9ST0xFX0dVRVNUEAQqdQoLUHJvamVjdFJvbGUSHAoYUFJPSkVDVF9ST0xFX1VOU1BFQ0lGSUVEEAASFgoSUFJPSkVDVF9ST0xFX09XTkVSEAESFwoTUFJPSkVDVF9ST0xFX0VESVRPUhACEhcKE1BST0pFQ1RfUk9MRV9WSUVXRVIQAypVCglBZG1pblJvbGUSGgoWQURNSU5fUk9MRV9VTlNQRUNJRklFRBAAEhUKEUFETUlOX1JPTEVfRURJVE9SEAESFQoRQURNSU5fUk9MRV9WSUVXRVIQAipVCglJbmZyYVJvbGUSGgoWSU5GUkFfUk9MRV9VTlNQRUNJRklFRBAAEhUKEUlORlJBX1JPTEVfRURJVE9SEAESFQoRSU5GUkFfUk9MRV9WSUVXRVIQAipdCgtNYWNoaW5lUm9sZRIcChhNQUNISU5FX1JPTEVfVU5TUEVDSUZJRUQQABIXChNNQUNISU5FX1JPTEVfRURJVE9SEAESFwoTTUFDSElORV9ST0xFX1ZJRVdFUhACKlQKClZpc2liaWxpdHkSGgoWVklTSUJJTElUWV9VTlNQRUNJRklFRBAAEhUKEVZJU0lCSUxJVFlfUFVCTElDEAESEwoPVklTSUJJTElUWV9TRUxGEAMqUgoIQXVkaXRpbmcSGAoUQVVESVRJTkdfVU5TUEVDSUZJRUQQABIVChFBVURJVElOR19JTkNMVURFRBABEhUKEUFVRElUSU5HX0VYQ0xVREVEEAIqmAEKGU9wdGltaXN0aWNMb2NraW5nU3RyYXRlZ3kSKwonT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX1VOU1BFQ0lGSUVEEAASJgoiT1BUSU1JU1RJQ19MT0NLSU5HX1NUUkFURUdZX0NMSUVOVBABEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9TRVJWRVIQAjpiCgx0ZW5hbnRfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi4jgMgAygOMh0ubWV0YWxzdGFjay5hcGkudjIuVGVuYW50Um9sZVILdGVuYW50Um9sZXM6ZQoNcHJvamVjdF9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLmOAyADKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5Qcm9qZWN0Um9sZVIMcHJvamVjdFJvbGVzOl8KC2FkbWluX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuo4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkFkbWluUm9sZVIKYWRtaW5Sb2xlczpfCgp2aXNpYmlsaXR5Eh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYu44DIAEoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlZpc2liaWxpdHlSCnZpc2liaWxpdHk6WQoIYXVkaXRpbmcSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi8jgMgASgOMhsubWV0YWxzdGFjay5hcGkudjIuQXVkaXRpbmdSCGF1ZGl0aW5nOl8KC2luZnJhX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvY4DIAMoDjIcLm1ldGFsc3RhY2suYXBpLnYyLkluZnJhUm9sZVIKaW5mcmFSb2xlczplCg1tYWNoaW5lX3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvo4DIAMoDjIeLm1ldGFsc3RhY2suYXBpLnYyLk1hY2hpbmVSb2xlUgxtYWNoaW5lUm9sZXM6TwoRZW51bV9zdHJpbmdfdmFsdWUSIS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlT3B0aW9ucxiglgMgASgJUg9lbnVtU3RyaW5nVmFsdWVCwQEKFWNvbS5tZXRhbHN0YWNrLmFwaS52MkILQ29tbW9uUHJvdG9QAVo1Z2l0aHViLmNvbS9tZXRhbC1zdGFjay9hcGkvZ28vbWV0YWxzdGFjay9hcGkvdjI7YXBpdjKiAgNNQViqAhFNZXRhbHN0YWNrLkFwaS5WMsoCEU1ldGFsc3RhY2tcQXBpXFYy4gIdTWV0YWxzdGFja1xBcGlcVjJcR1BCTWV0YWRhdGHqAhNNZXRhbHN0YWNrOjpBcGk6OlYyYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp, file_metalstack_api_v2_predefined_rules]);
+ fileDesc("Ch5tZXRhbHN0YWNrL2FwaS92Mi9jb21tb24ucHJvdG8SEW1ldGFsc3RhY2suYXBpLnYyIkIKBlBhZ2luZxIRCgRwYWdlGAEgASgESACIAQESEgoFY291bnQYAiABKARIAYgBAUIHCgVfcGFnZUIICgZfY291bnQijgEKBkxhYmVscxJVCgZsYWJlbHMYASADKAsyJS5tZXRhbHN0YWNrLmFwaS52Mi5MYWJlbHMuTGFiZWxzRW50cnlCHrpIG5oBGLiVuLECASIHcgUQARiAAioHcgUQABiAAhotCgtMYWJlbHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIrUBCgRNZXRhEi4KBmxhYmVscxgBIAEoCzIZLm1ldGFsc3RhY2suYXBpLnYyLkxhYmVsc0gAiAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmdlbmVyYXRpb24YBCABKARCCQoHX2xhYmVscyJrCgxVcGRhdGVMYWJlbHMSKQoGdXBkYXRlGAEgASgLMhkubWV0YWxzdGFjay5hcGkudjIuTGFiZWxzEhwKBnJlbW92ZRgCIAMoCUIMukgJkgEG0KSzsQIBEhIKCnJlbW92ZV9hbGwYAyABKAgijgEKClVwZGF0ZU1ldGESLgoKdXBkYXRlZF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASUAoQbG9ja2luZ19zdHJhdGVneRgCIAEoDjIsLm1ldGFsc3RhY2suYXBpLnYyLk9wdGltaXN0aWNMb2NraW5nU3RyYXRlZ3lCCLpIBYIBAhABKocBCgpUZW5hbnRSb2xlEhsKF1RFTkFOVF9ST0xFX1VOU1BFQ0lGSUVEEAASFQoRVEVOQU5UX1JPTEVfT1dORVIQARIWChJURU5BTlRfUk9MRV9FRElUT1IQAhIWChJURU5BTlRfUk9MRV9WSUVXRVIQAxIVChFURU5BTlRfUk9MRV9HVUVTVBAEKnUKC1Byb2plY3RSb2xlEhwKGFBST0pFQ1RfUk9MRV9VTlNQRUNJRklFRBAAEhYKElBST0pFQ1RfUk9MRV9PV05FUhABEhcKE1BST0pFQ1RfUk9MRV9FRElUT1IQAhIXChNQUk9KRUNUX1JPTEVfVklFV0VSEAMqVQoJQWRtaW5Sb2xlEhoKFkFETUlOX1JPTEVfVU5TUEVDSUZJRUQQABIVChFBRE1JTl9ST0xFX0VESVRPUhABEhUKEUFETUlOX1JPTEVfVklFV0VSEAIqVQoJSW5mcmFSb2xlEhoKFklORlJBX1JPTEVfVU5TUEVDSUZJRUQQABIVChFJTkZSQV9ST0xFX0VESVRPUhABEhUKEUlORlJBX1JPTEVfVklFV0VSEAIqXQoLTWFjaGluZVJvbGUSHAoYTUFDSElORV9ST0xFX1VOU1BFQ0lGSUVEEAASFwoTTUFDSElORV9ST0xFX0VESVRPUhABEhcKE01BQ0hJTkVfUk9MRV9WSUVXRVIQAipUCgpWaXNpYmlsaXR5EhoKFlZJU0lCSUxJVFlfVU5TUEVDSUZJRUQQABIVChFWSVNJQklMSVRZX1BVQkxJQxABEhMKD1ZJU0lCSUxJVFlfU0VMRhADKlIKCEF1ZGl0aW5nEhgKFEFVRElUSU5HX1VOU1BFQ0lGSUVEEAASFQoRQVVESVRJTkdfSU5DTFVERUQQARIVChFBVURJVElOR19FWENMVURFRBACKpgBChlPcHRpbWlzdGljTG9ja2luZ1N0cmF0ZWd5EisKJ09QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9VTlNQRUNJRklFRBAAEiYKIk9QVElNSVNUSUNfTE9DS0lOR19TVFJBVEVHWV9DTElFTlQQARImCiJPUFRJTUlTVElDX0xPQ0tJTkdfU1RSQVRFR1lfU0VSVkVSEAI6YgoMdGVuYW50X3JvbGVzEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYuI4DIAMoDjIdLm1ldGFsc3RhY2suYXBpLnYyLlRlbmFudFJvbGVSC3RlbmFudFJvbGVzOmUKDXByb2plY3Rfcm9sZXMSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxi5jgMgAygOMh4ubWV0YWxzdGFjay5hcGkudjIuUHJvamVjdFJvbGVSDHByb2plY3RSb2xlczpfCgthZG1pbl9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLqOAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5BZG1pblJvbGVSCmFkbWluUm9sZXM6XwoKdmlzaWJpbGl0eRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGLuOAyABKA4yHS5tZXRhbHN0YWNrLmFwaS52Mi5WaXNpYmlsaXR5Ugp2aXNpYmlsaXR5OlkKCGF1ZGl0aW5nEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYvI4DIAEoDjIbLm1ldGFsc3RhY2suYXBpLnYyLkF1ZGl0aW5nUghhdWRpdGluZzpfCgtpbmZyYV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL2OAyADKA4yHC5tZXRhbHN0YWNrLmFwaS52Mi5JbmZyYVJvbGVSCmluZnJhUm9sZXM6ZQoNbWFjaGluZV9yb2xlcxIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGL6OAyADKA4yHi5tZXRhbHN0YWNrLmFwaS52Mi5NYWNoaW5lUm9sZVIMbWFjaGluZVJvbGVzOk8KEWVudW1fc3RyaW5nX3ZhbHVlEiEuZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZU9wdGlvbnMYoJYDIAEoCVIPZW51bVN0cmluZ1ZhbHVlQsEBChVjb20ubWV0YWxzdGFjay5hcGkudjJCC0NvbW1vblByb3RvUAFaNWdpdGh1Yi5jb20vbWV0YWwtc3RhY2svYXBpL2dvL21ldGFsc3RhY2svYXBpL3YyO2FwaXYyogIDTUFYqgIRTWV0YWxzdGFjay5BcGkuVjLKAhFNZXRhbHN0YWNrXEFwaVxWMuICHU1ldGFsc3RhY2tcQXBpXFYyXEdQQk1ldGFkYXRh6gITTWV0YWxzdGFjazo6QXBpOjpWMmIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_descriptor, file_google_protobuf_timestamp, file_metalstack_api_v2_predefined_rules]);
/**
* Paging defines paging for methods with a lot of results
@@ -128,6 +128,14 @@ export type UpdateLabels = Message<"metalstack.api.v2.UpdateLabels"> & {
* @generated from field: repeated string remove = 2;
*/
remove: string[];
+
+ /**
+ * RemoveAll can be used to clear all existing labels and just apply the labels given by the update field
+ * do not send remove labels in this case
+ *
+ * @generated from field: bool remove_all = 3;
+ */
+ removeAll: boolean;
};
/**
diff --git a/proto/metalstack/api/v2/common.proto b/proto/metalstack/api/v2/common.proto
index 50374439..556c4226 100644
--- a/proto/metalstack/api/v2/common.proto
+++ b/proto/metalstack/api/v2/common.proto
@@ -160,7 +160,10 @@ message UpdateLabels {
// Update labels. New ones will be added, existing ones overwritten
Labels update = 1;
// Remove labels by key
- repeated string remove = 2;
+ repeated string remove = 2 [(buf.validate.field).repeated.(metalstack.api.v2.all_trimmed) = true];
+ // RemoveAll can be used to clear all existing labels and just apply the labels given by the update field
+ // do not send remove labels in this case
+ bool remove_all = 3;
}
// UpdateMeta must be provided with every UpdateRequest to define how optimistic locking should be handled
diff --git a/python/metalstack/api/v2/common_pb2.py b/python/metalstack/api/v2/common_pb2.py
index 50ccddec..17d29935 100644
--- a/python/metalstack/api/v2/common_pb2.py
+++ b/python/metalstack/api/v2/common_pb2.py
@@ -28,7 +28,7 @@
from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/api/v2/common.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a google/protobuf/descriptor.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a(metalstack/api/v2/predefined_rules.proto\"O\n\x06Paging\x12\x17\n\x04page\x18\x01 \x01(\x04H\x00R\x04page\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x02 \x01(\x04H\x01R\x05\x63ount\x88\x01\x01\x42\x07\n\x05_pageB\x08\n\x06_count\"\xa2\x01\n\x06Labels\x12]\n\x06labels\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.Labels.LabelsEntryB\x1e\xbaH\x1b\x9a\x01\x18\"\x07r\x05\x10\x01\x18\x80\x02*\x07r\x05\x10\x00\x18\x80\x02\xb8\x95\xb8\xb1\x02\x01R\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xdf\x01\n\x04Meta\x12\x36\n\x06labels\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x00R\x06labels\x88\x01\x01\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x1e\n\ngeneration\x18\x04 \x01(\x04R\ngenerationB\t\n\x07_labels\"Y\n\x0cUpdateLabels\x12\x31\n\x06update\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06update\x12\x16\n\x06remove\x18\x02 \x03(\tR\x06remove\"\xaa\x01\n\nUpdateMeta\x12\x39\n\nupdated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x61\n\x10locking_strategy\x18\x02 \x01(\x0e\x32,.metalstack.api.v2.OptimisticLockingStrategyB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0flockingStrategy*\x87\x01\n\nTenantRole\x12\x1b\n\x17TENANT_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11TENANT_ROLE_OWNER\x10\x01\x12\x16\n\x12TENANT_ROLE_EDITOR\x10\x02\x12\x16\n\x12TENANT_ROLE_VIEWER\x10\x03\x12\x15\n\x11TENANT_ROLE_GUEST\x10\x04*u\n\x0bProjectRole\x12\x1c\n\x18PROJECT_ROLE_UNSPECIFIED\x10\x00\x12\x16\n\x12PROJECT_ROLE_OWNER\x10\x01\x12\x17\n\x13PROJECT_ROLE_EDITOR\x10\x02\x12\x17\n\x13PROJECT_ROLE_VIEWER\x10\x03*U\n\tAdminRole\x12\x1a\n\x16\x41\x44MIN_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41\x44MIN_ROLE_EDITOR\x10\x01\x12\x15\n\x11\x41\x44MIN_ROLE_VIEWER\x10\x02*U\n\tInfraRole\x12\x1a\n\x16INFRA_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11INFRA_ROLE_EDITOR\x10\x01\x12\x15\n\x11INFRA_ROLE_VIEWER\x10\x02*]\n\x0bMachineRole\x12\x1c\n\x18MACHINE_ROLE_UNSPECIFIED\x10\x00\x12\x17\n\x13MACHINE_ROLE_EDITOR\x10\x01\x12\x17\n\x13MACHINE_ROLE_VIEWER\x10\x02*T\n\nVisibility\x12\x1a\n\x16VISIBILITY_UNSPECIFIED\x10\x00\x12\x15\n\x11VISIBILITY_PUBLIC\x10\x01\x12\x13\n\x0fVISIBILITY_SELF\x10\x03*R\n\x08\x41uditing\x12\x18\n\x14\x41UDITING_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41UDITING_INCLUDED\x10\x01\x12\x15\n\x11\x41UDITING_EXCLUDED\x10\x02*\x98\x01\n\x19OptimisticLockingStrategy\x12+\n\'OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED\x10\x00\x12&\n\"OPTIMISTIC_LOCKING_STRATEGY_CLIENT\x10\x01\x12&\n\"OPTIMISTIC_LOCKING_STRATEGY_SERVER\x10\x02:b\n\x0ctenant_roles\x12\x1e.google.protobuf.MethodOptions\x18\xb8\x8e\x03 \x03(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x0btenantRoles:e\n\rproject_roles\x12\x1e.google.protobuf.MethodOptions\x18\xb9\x8e\x03 \x03(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x0cprojectRoles:_\n\x0b\x61\x64min_roles\x12\x1e.google.protobuf.MethodOptions\x18\xba\x8e\x03 \x03(\x0e\x32\x1c.metalstack.api.v2.AdminRoleR\nadminRoles:_\n\nvisibility\x12\x1e.google.protobuf.MethodOptions\x18\xbb\x8e\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.VisibilityR\nvisibility:Y\n\x08\x61uditing\x12\x1e.google.protobuf.MethodOptions\x18\xbc\x8e\x03 \x01(\x0e\x32\x1b.metalstack.api.v2.AuditingR\x08\x61uditing:_\n\x0binfra_roles\x12\x1e.google.protobuf.MethodOptions\x18\xbd\x8e\x03 \x03(\x0e\x32\x1c.metalstack.api.v2.InfraRoleR\ninfraRoles:e\n\rmachine_roles\x12\x1e.google.protobuf.MethodOptions\x18\xbe\x8e\x03 \x03(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x0cmachineRoles:O\n\x11\x65num_string_value\x12!.google.protobuf.EnumValueOptions\x18\xa0\x96\x03 \x01(\tR\x0f\x65numStringValueB\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0b\x43ommonProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/api/v2/common.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a google/protobuf/descriptor.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a(metalstack/api/v2/predefined_rules.proto\"O\n\x06Paging\x12\x17\n\x04page\x18\x01 \x01(\x04H\x00R\x04page\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x02 \x01(\x04H\x01R\x05\x63ount\x88\x01\x01\x42\x07\n\x05_pageB\x08\n\x06_count\"\xa2\x01\n\x06Labels\x12]\n\x06labels\x18\x01 \x03(\x0b\x32%.metalstack.api.v2.Labels.LabelsEntryB\x1e\xbaH\x1b\x9a\x01\x18\"\x07r\x05\x10\x01\x18\x80\x02*\x07r\x05\x10\x00\x18\x80\x02\xb8\x95\xb8\xb1\x02\x01R\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xdf\x01\n\x04Meta\x12\x36\n\x06labels\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x00R\x06labels\x88\x01\x01\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x1e\n\ngeneration\x18\x04 \x01(\x04R\ngenerationB\t\n\x07_labels\"\x86\x01\n\x0cUpdateLabels\x12\x31\n\x06update\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06update\x12$\n\x06remove\x18\x02 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xd0\xa4\xb3\xb1\x02\x01R\x06remove\x12\x1d\n\nremove_all\x18\x03 \x01(\x08R\tremoveAll\"\xaa\x01\n\nUpdateMeta\x12\x39\n\nupdated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x61\n\x10locking_strategy\x18\x02 \x01(\x0e\x32,.metalstack.api.v2.OptimisticLockingStrategyB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0flockingStrategy*\x87\x01\n\nTenantRole\x12\x1b\n\x17TENANT_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11TENANT_ROLE_OWNER\x10\x01\x12\x16\n\x12TENANT_ROLE_EDITOR\x10\x02\x12\x16\n\x12TENANT_ROLE_VIEWER\x10\x03\x12\x15\n\x11TENANT_ROLE_GUEST\x10\x04*u\n\x0bProjectRole\x12\x1c\n\x18PROJECT_ROLE_UNSPECIFIED\x10\x00\x12\x16\n\x12PROJECT_ROLE_OWNER\x10\x01\x12\x17\n\x13PROJECT_ROLE_EDITOR\x10\x02\x12\x17\n\x13PROJECT_ROLE_VIEWER\x10\x03*U\n\tAdminRole\x12\x1a\n\x16\x41\x44MIN_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41\x44MIN_ROLE_EDITOR\x10\x01\x12\x15\n\x11\x41\x44MIN_ROLE_VIEWER\x10\x02*U\n\tInfraRole\x12\x1a\n\x16INFRA_ROLE_UNSPECIFIED\x10\x00\x12\x15\n\x11INFRA_ROLE_EDITOR\x10\x01\x12\x15\n\x11INFRA_ROLE_VIEWER\x10\x02*]\n\x0bMachineRole\x12\x1c\n\x18MACHINE_ROLE_UNSPECIFIED\x10\x00\x12\x17\n\x13MACHINE_ROLE_EDITOR\x10\x01\x12\x17\n\x13MACHINE_ROLE_VIEWER\x10\x02*T\n\nVisibility\x12\x1a\n\x16VISIBILITY_UNSPECIFIED\x10\x00\x12\x15\n\x11VISIBILITY_PUBLIC\x10\x01\x12\x13\n\x0fVISIBILITY_SELF\x10\x03*R\n\x08\x41uditing\x12\x18\n\x14\x41UDITING_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41UDITING_INCLUDED\x10\x01\x12\x15\n\x11\x41UDITING_EXCLUDED\x10\x02*\x98\x01\n\x19OptimisticLockingStrategy\x12+\n\'OPTIMISTIC_LOCKING_STRATEGY_UNSPECIFIED\x10\x00\x12&\n\"OPTIMISTIC_LOCKING_STRATEGY_CLIENT\x10\x01\x12&\n\"OPTIMISTIC_LOCKING_STRATEGY_SERVER\x10\x02:b\n\x0ctenant_roles\x12\x1e.google.protobuf.MethodOptions\x18\xb8\x8e\x03 \x03(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x0btenantRoles:e\n\rproject_roles\x12\x1e.google.protobuf.MethodOptions\x18\xb9\x8e\x03 \x03(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x0cprojectRoles:_\n\x0b\x61\x64min_roles\x12\x1e.google.protobuf.MethodOptions\x18\xba\x8e\x03 \x03(\x0e\x32\x1c.metalstack.api.v2.AdminRoleR\nadminRoles:_\n\nvisibility\x12\x1e.google.protobuf.MethodOptions\x18\xbb\x8e\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.VisibilityR\nvisibility:Y\n\x08\x61uditing\x12\x1e.google.protobuf.MethodOptions\x18\xbc\x8e\x03 \x01(\x0e\x32\x1b.metalstack.api.v2.AuditingR\x08\x61uditing:_\n\x0binfra_roles\x12\x1e.google.protobuf.MethodOptions\x18\xbd\x8e\x03 \x03(\x0e\x32\x1c.metalstack.api.v2.InfraRoleR\ninfraRoles:e\n\rmachine_roles\x12\x1e.google.protobuf.MethodOptions\x18\xbe\x8e\x03 \x03(\x0e\x32\x1e.metalstack.api.v2.MachineRoleR\x0cmachineRoles:O\n\x11\x65num_string_value\x12!.google.protobuf.EnumValueOptions\x18\xa0\x96\x03 \x01(\tR\x0f\x65numStringValueB\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0b\x43ommonProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -40,24 +40,26 @@
_globals['_LABELS_LABELSENTRY']._serialized_options = b'8\001'
_globals['_LABELS'].fields_by_name['labels']._loaded_options = None
_globals['_LABELS'].fields_by_name['labels']._serialized_options = b'\272H\033\232\001\030\"\007r\005\020\001\030\200\002*\007r\005\020\000\030\200\002\270\225\270\261\002\001'
+ _globals['_UPDATELABELS'].fields_by_name['remove']._loaded_options = None
+ _globals['_UPDATELABELS'].fields_by_name['remove']._serialized_options = b'\272H\t\222\001\006\320\244\263\261\002\001'
_globals['_UPDATEMETA'].fields_by_name['locking_strategy']._loaded_options = None
_globals['_UPDATEMETA'].fields_by_name['locking_strategy']._serialized_options = b'\272H\005\202\001\002\020\001'
- _globals['_TENANTROLE']._serialized_start=928
- _globals['_TENANTROLE']._serialized_end=1063
- _globals['_PROJECTROLE']._serialized_start=1065
- _globals['_PROJECTROLE']._serialized_end=1182
- _globals['_ADMINROLE']._serialized_start=1184
- _globals['_ADMINROLE']._serialized_end=1269
- _globals['_INFRAROLE']._serialized_start=1271
- _globals['_INFRAROLE']._serialized_end=1356
- _globals['_MACHINEROLE']._serialized_start=1358
- _globals['_MACHINEROLE']._serialized_end=1451
- _globals['_VISIBILITY']._serialized_start=1453
- _globals['_VISIBILITY']._serialized_end=1537
- _globals['_AUDITING']._serialized_start=1539
- _globals['_AUDITING']._serialized_end=1621
- _globals['_OPTIMISTICLOCKINGSTRATEGY']._serialized_start=1624
- _globals['_OPTIMISTICLOCKINGSTRATEGY']._serialized_end=1776
+ _globals['_TENANTROLE']._serialized_start=974
+ _globals['_TENANTROLE']._serialized_end=1109
+ _globals['_PROJECTROLE']._serialized_start=1111
+ _globals['_PROJECTROLE']._serialized_end=1228
+ _globals['_ADMINROLE']._serialized_start=1230
+ _globals['_ADMINROLE']._serialized_end=1315
+ _globals['_INFRAROLE']._serialized_start=1317
+ _globals['_INFRAROLE']._serialized_end=1402
+ _globals['_MACHINEROLE']._serialized_start=1404
+ _globals['_MACHINEROLE']._serialized_end=1497
+ _globals['_VISIBILITY']._serialized_start=1499
+ _globals['_VISIBILITY']._serialized_end=1583
+ _globals['_AUDITING']._serialized_start=1585
+ _globals['_AUDITING']._serialized_end=1667
+ _globals['_OPTIMISTICLOCKINGSTRATEGY']._serialized_start=1670
+ _globals['_OPTIMISTICLOCKINGSTRATEGY']._serialized_end=1822
_globals['_PAGING']._serialized_start=191
_globals['_PAGING']._serialized_end=270
_globals['_LABELS']._serialized_start=273
@@ -66,8 +68,8 @@
_globals['_LABELS_LABELSENTRY']._serialized_end=435
_globals['_META']._serialized_start=438
_globals['_META']._serialized_end=661
- _globals['_UPDATELABELS']._serialized_start=663
- _globals['_UPDATELABELS']._serialized_end=752
- _globals['_UPDATEMETA']._serialized_start=755
- _globals['_UPDATEMETA']._serialized_end=925
+ _globals['_UPDATELABELS']._serialized_start=664
+ _globals['_UPDATELABELS']._serialized_end=798
+ _globals['_UPDATEMETA']._serialized_start=801
+ _globals['_UPDATEMETA']._serialized_end=971
# @@protoc_insertion_point(module_scope)
diff --git a/python/metalstack/api/v2/common_pb2.pyi b/python/metalstack/api/v2/common_pb2.pyi
index b7856a90..af188b42 100644
--- a/python/metalstack/api/v2/common_pb2.pyi
+++ b/python/metalstack/api/v2/common_pb2.pyi
@@ -141,12 +141,14 @@ class Meta(_message.Message):
def __init__(self, labels: _Optional[_Union[Labels, _Mapping]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., generation: _Optional[int] = ...) -> None: ...
class UpdateLabels(_message.Message):
- __slots__ = ("update", "remove")
+ __slots__ = ("update", "remove", "remove_all")
UPDATE_FIELD_NUMBER: _ClassVar[int]
REMOVE_FIELD_NUMBER: _ClassVar[int]
+ REMOVE_ALL_FIELD_NUMBER: _ClassVar[int]
update: Labels
remove: _containers.RepeatedScalarFieldContainer[str]
- def __init__(self, update: _Optional[_Union[Labels, _Mapping]] = ..., remove: _Optional[_Iterable[str]] = ...) -> None: ...
+ remove_all: bool
+ def __init__(self, update: _Optional[_Union[Labels, _Mapping]] = ..., remove: _Optional[_Iterable[str]] = ..., remove_all: _Optional[bool] = ...) -> None: ...
class UpdateMeta(_message.Message):
__slots__ = ("updated_at", "locking_strategy")