From 90f0daaf0f81a888fe2be365a85ea32071be9201 Mon Sep 17 00:00:00 2001 From: Cian McGrath Date: Wed, 11 Oct 2023 11:27:13 +0100 Subject: [PATCH] release/tag.v2: Release Tag.v2.0.3 Change-Id: I5b1e9ab649b65e2cf24d96deb0c3bae1a69ec1d8 --- arista/tag.v2/services.gen.proto | 108 ++++++ arista/tag.v2/services.gen.swagger.json | 437 ++++++++++++++++++++---- arista/tag.v2/tag-changelog.yaml | 18 + arista/tag.v2/tag.proto | 38 +++ 4 files changed, 542 insertions(+), 59 deletions(-) diff --git a/arista/tag.v2/services.gen.proto b/arista/tag.v2/services.gen.proto index a02fbff0..2d48122b 100644 --- a/arista/tag.v2/services.gen.proto +++ b/arista/tag.v2/services.gen.proto @@ -14,7 +14,9 @@ option go_package = "arista/resources/arista/tag.v2;tag"; import "arista/tag.v2/tag.proto"; import "arista/time/time.proto"; import "arista/subscriptions/subscriptions.proto"; +import "fmp/deletes.proto"; import "google/protobuf/timestamp.proto"; +import "google/protobuf/wrappers.proto"; message TagRequest { // Key uniquely identifies a Tag instance to retrieve. @@ -49,6 +51,17 @@ message TagStreamRequest { // TimeRange allows limiting response data to within a specified time window. // If this field is populated, at least one of the two time fields are required. // + // For GetAll, the fields start and end can be used as follows: + // + // * end: Returns the state of each Tag at end. + // * Each Tag response is fully-specified (all fields set). + // * start: Returns the state of each Tag at start, followed by updates until now. + // * Each Tag response at start is fully-specified, but updates may be partial. + // * start and end: Returns the state of each Tag at start, followed by updates + // until end. + // * Each Tag response at start is fully-specified, but updates until end may + // be partial. + // // This field is not allowed in the Subscribe RPC. arista.time.TimeBounds time = 3; }; @@ -108,6 +121,17 @@ message TagAssignmentStreamRequest { // TimeRange allows limiting response data to within a specified time window. // If this field is populated, at least one of the two time fields are required. // + // For GetAll, the fields start and end can be used as follows: + // + // * end: Returns the state of each TagAssignment at end. + // * Each TagAssignment response is fully-specified (all fields set). + // * start: Returns the state of each TagAssignment at start, followed by updates until now. + // * Each TagAssignment response at start is fully-specified, but updates may be partial. + // * start and end: Returns the state of each TagAssignment at start, followed by updates + // until end. + // * Each TagAssignment response at start is fully-specified, but updates until end may + // be partial. + // // This field is not allowed in the Subscribe RPC. arista.time.TimeBounds time = 3; }; @@ -167,6 +191,17 @@ message TagAssignmentConfigStreamRequest { // TimeRange allows limiting response data to within a specified time window. // If this field is populated, at least one of the two time fields are required. // + // For GetAll, the fields start and end can be used as follows: + // + // * end: Returns the state of each TagAssignmentConfig at end. + // * Each TagAssignmentConfig response is fully-specified (all fields set). + // * start: Returns the state of each TagAssignmentConfig at start, followed by updates until now. + // * Each TagAssignmentConfig response at start is fully-specified, but updates may be partial. + // * start and end: Returns the state of each TagAssignmentConfig at start, followed by updates + // until end. + // * Each TagAssignmentConfig response at start is fully-specified, but updates until end may + // be partial. + // // This field is not allowed in the Subscribe RPC. arista.time.TimeBounds time = 3; }; @@ -207,6 +242,21 @@ message TagAssignmentConfigSetResponse { google.protobuf.Timestamp time = 2; }; +message TagAssignmentConfigSetSomeRequest { + // value contains a list of TagAssignmentConfig values to write. + // It is possible to provide more values than can fit within either: + // - the maxiumum send size of the client + // - the maximum receive size of the server + // If this error occurs you must reduce the number of values sent. + // See gRPC "maximum message size" documentation for more information. + repeated TagAssignmentConfig values = 1; +}; + +message TagAssignmentConfigSetSomeResponse { + TagAssignmentKey key = 1; + string error = 2; +}; + message TagAssignmentConfigDeleteRequest { // Key indicates which TagAssignmentConfig instance to remove. // This field must always be set. @@ -226,12 +276,28 @@ message TagAssignmentConfigDeleteResponse { google.protobuf.Timestamp time = 2; }; +message TagAssignmentConfigDeleteAllRequest { +}; + +message TagAssignmentConfigDeleteAllResponse { + // This describes the class of delete error. + fmp.DeleteError type = 1; + // This indicates the error message from the delete failure. + google.protobuf.StringValue error = 2; + // This is the key of the TagAssignmentConfig instance that failed to be deleted. + TagAssignmentKey key = 3; + // Time indicates the (UTC) timestamp when the key was being deleted. + google.protobuf.Timestamp time = 4; +}; + service TagAssignmentConfigService { rpc GetOne (TagAssignmentConfigRequest) returns (TagAssignmentConfigResponse); rpc GetAll (TagAssignmentConfigStreamRequest) returns (stream TagAssignmentConfigStreamResponse); rpc Subscribe (TagAssignmentConfigStreamRequest) returns (stream TagAssignmentConfigStreamResponse); rpc Set (TagAssignmentConfigSetRequest) returns (TagAssignmentConfigSetResponse); + rpc SetSome (TagAssignmentConfigSetSomeRequest) returns (stream TagAssignmentConfigSetSomeResponse); rpc Delete (TagAssignmentConfigDeleteRequest) returns (TagAssignmentConfigDeleteResponse); + rpc DeleteAll (TagAssignmentConfigDeleteAllRequest) returns (stream TagAssignmentConfigDeleteAllResponse); } message TagConfigRequest { @@ -267,6 +333,17 @@ message TagConfigStreamRequest { // TimeRange allows limiting response data to within a specified time window. // If this field is populated, at least one of the two time fields are required. // + // For GetAll, the fields start and end can be used as follows: + // + // * end: Returns the state of each TagConfig at end. + // * Each TagConfig response is fully-specified (all fields set). + // * start: Returns the state of each TagConfig at start, followed by updates until now. + // * Each TagConfig response at start is fully-specified, but updates may be partial. + // * start and end: Returns the state of each TagConfig at start, followed by updates + // until end. + // * Each TagConfig response at start is fully-specified, but updates until end may + // be partial. + // // This field is not allowed in the Subscribe RPC. arista.time.TimeBounds time = 3; }; @@ -307,6 +384,21 @@ message TagConfigSetResponse { google.protobuf.Timestamp time = 2; }; +message TagConfigSetSomeRequest { + // value contains a list of TagConfig values to write. + // It is possible to provide more values than can fit within either: + // - the maxiumum send size of the client + // - the maximum receive size of the server + // If this error occurs you must reduce the number of values sent. + // See gRPC "maximum message size" documentation for more information. + repeated TagConfig values = 1; +}; + +message TagConfigSetSomeResponse { + TagKey key = 1; + string error = 2; +}; + message TagConfigDeleteRequest { // Key indicates which TagConfig instance to remove. // This field must always be set. @@ -326,10 +418,26 @@ message TagConfigDeleteResponse { google.protobuf.Timestamp time = 2; }; +message TagConfigDeleteAllRequest { +}; + +message TagConfigDeleteAllResponse { + // This describes the class of delete error. + fmp.DeleteError type = 1; + // This indicates the error message from the delete failure. + google.protobuf.StringValue error = 2; + // This is the key of the TagConfig instance that failed to be deleted. + TagKey key = 3; + // Time indicates the (UTC) timestamp when the key was being deleted. + google.protobuf.Timestamp time = 4; +}; + service TagConfigService { rpc GetOne (TagConfigRequest) returns (TagConfigResponse); rpc GetAll (TagConfigStreamRequest) returns (stream TagConfigStreamResponse); rpc Subscribe (TagConfigStreamRequest) returns (stream TagConfigStreamResponse); rpc Set (TagConfigSetRequest) returns (TagConfigSetResponse); + rpc SetSome (TagConfigSetSomeRequest) returns (stream TagConfigSetSomeResponse); rpc Delete (TagConfigDeleteRequest) returns (TagConfigDeleteResponse); + rpc DeleteAll (TagConfigDeleteAllRequest) returns (stream TagConfigDeleteAllResponse); } diff --git a/arista/tag.v2/services.gen.swagger.json b/arista/tag.v2/services.gen.swagger.json index fa9680a6..9c349b2a 100644 --- a/arista/tag.v2/services.gen.swagger.json +++ b/arista/tag.v2/services.gen.swagger.json @@ -59,7 +59,7 @@ }, { "name": "key.elementType", - "description": "element_type is the category of network element to which\nthis tag can be assigned.\n\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", + "description": "element_type is the category of network element to which\nthis tag can be assigned.\n\n - ELEMENT_TYPE_UNSPECIFIED: ELEMENT_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", "in": "query", "required": true, "type": "string", @@ -84,6 +84,21 @@ "required": true, "type": "string" }, + { + "name": "key.elementSubType", + "description": "element_sub_type is the sub-category of network element\nto which this tag can be assigned.\n\n - ELEMENT_SUB_TYPE_UNSPECIFIED: ELEMENT_SUB_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_SUB_TYPE_DEVICE: ELEMENT_SUB_TYPE_DEVICE is used for EOS or\nthird-party devices discovered via LLDP/SNMP.\n - ELEMENT_SUB_TYPE_VDS: ELEMENT_SUB_TYPE_VDS is used for VMWare vSphere Distributed Switch (VDS) tags.\n - ELEMENT_SUB_TYPE_WORKLOAD_SERVER: ELEMENT_SUB_TYPE_WORKLOAD_SERVER is used for workload server\ntags (such as VMWare ESXi host).\nA workload server is a server/data storage device on which\nthe hypervisor is installed.\n - ELEMENT_SUB_TYPE_VM: ELEMENT_SUB_TYPE_VM is used for VM tags.\nA VM is a software computer that, like a physical computer,\nruns an operating system and applications.", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM" + ], + "default": "ELEMENT_SUB_TYPE_UNSPECIFIED" + }, { "name": "time", "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", @@ -297,7 +312,7 @@ }, { "name": "key.elementType", - "description": "element_type is the element type of a tag. What should\nbe set per element type:. ELEMENT_TYPE_DEVICE: device_id\nELEMENT_TYPE_INTERFACE: device_id, interface_id\n\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", + "description": "element_type is the element type of a tag. What should\nbe set per element type:\n\nELEMENT_TYPE_DEVICE: device_id\nELEMENT_TYPE_INTERFACE: device_id, interface_id\n\n - ELEMENT_TYPE_UNSPECIFIED: ELEMENT_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", "in": "query", "required": true, "type": "string", @@ -336,6 +351,21 @@ "required": true, "type": "string" }, + { + "name": "key.elementSubType", + "description": "element_sub_type is the element sub-type of a tag.\n\n - ELEMENT_SUB_TYPE_UNSPECIFIED: ELEMENT_SUB_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_SUB_TYPE_DEVICE: ELEMENT_SUB_TYPE_DEVICE is used for EOS or\nthird-party devices discovered via LLDP/SNMP.\n - ELEMENT_SUB_TYPE_VDS: ELEMENT_SUB_TYPE_VDS is used for VMWare vSphere Distributed Switch (VDS) tags.\n - ELEMENT_SUB_TYPE_WORKLOAD_SERVER: ELEMENT_SUB_TYPE_WORKLOAD_SERVER is used for workload server\ntags (such as VMWare ESXi host).\nA workload server is a server/data storage device on which\nthe hypervisor is installed.\n - ELEMENT_SUB_TYPE_VM: ELEMENT_SUB_TYPE_VM is used for VM tags.\nA VM is a software computer that, like a physical computer,\nruns an operating system and applications.", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM" + ], + "default": "ELEMENT_SUB_TYPE_UNSPECIFIED" + }, { "name": "time", "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", @@ -549,7 +579,7 @@ }, { "name": "key.elementType", - "description": "element_type is the element type of a tag. What should\nbe set per element type:. ELEMENT_TYPE_DEVICE: device_id\nELEMENT_TYPE_INTERFACE: device_id, interface_id\n\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", + "description": "element_type is the element type of a tag. What should\nbe set per element type:\n\nELEMENT_TYPE_DEVICE: device_id\nELEMENT_TYPE_INTERFACE: device_id, interface_id\n\n - ELEMENT_TYPE_UNSPECIFIED: ELEMENT_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", "in": "query", "required": true, "type": "string", @@ -588,6 +618,21 @@ "required": true, "type": "string" }, + { + "name": "key.elementSubType", + "description": "element_sub_type is the element sub-type of a tag.\n\n - ELEMENT_SUB_TYPE_UNSPECIFIED: ELEMENT_SUB_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_SUB_TYPE_DEVICE: ELEMENT_SUB_TYPE_DEVICE is used for EOS or\nthird-party devices discovered via LLDP/SNMP.\n - ELEMENT_SUB_TYPE_VDS: ELEMENT_SUB_TYPE_VDS is used for VMWare vSphere Distributed Switch (VDS) tags.\n - ELEMENT_SUB_TYPE_WORKLOAD_SERVER: ELEMENT_SUB_TYPE_WORKLOAD_SERVER is used for workload server\ntags (such as VMWare ESXi host).\nA workload server is a server/data storage device on which\nthe hypervisor is installed.\n - ELEMENT_SUB_TYPE_VM: ELEMENT_SUB_TYPE_VM is used for VM tags.\nA VM is a software computer that, like a physical computer,\nruns an operating system and applications.", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM" + ], + "default": "ELEMENT_SUB_TYPE_UNSPECIFIED" + }, { "name": "time", "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", @@ -627,7 +672,7 @@ }, { "name": "key.elementType", - "description": "element_type is the element type of a tag. What should\nbe set per element type:. ELEMENT_TYPE_DEVICE: device_id\nELEMENT_TYPE_INTERFACE: device_id, interface_id\n\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", + "description": "element_type is the element type of a tag. What should\nbe set per element type:\n\nELEMENT_TYPE_DEVICE: device_id\nELEMENT_TYPE_INTERFACE: device_id, interface_id\n\n - ELEMENT_TYPE_UNSPECIFIED: ELEMENT_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", "in": "query", "required": true, "type": "string", @@ -665,6 +710,21 @@ "in": "query", "required": true, "type": "string" + }, + { + "name": "key.elementSubType", + "description": "element_sub_type is the element sub-type of a tag.\n\n - ELEMENT_SUB_TYPE_UNSPECIFIED: ELEMENT_SUB_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_SUB_TYPE_DEVICE: ELEMENT_SUB_TYPE_DEVICE is used for EOS or\nthird-party devices discovered via LLDP/SNMP.\n - ELEMENT_SUB_TYPE_VDS: ELEMENT_SUB_TYPE_VDS is used for VMWare vSphere Distributed Switch (VDS) tags.\n - ELEMENT_SUB_TYPE_WORKLOAD_SERVER: ELEMENT_SUB_TYPE_WORKLOAD_SERVER is used for workload server\ntags (such as VMWare ESXi host).\nA workload server is a server/data storage device on which\nthe hypervisor is installed.\n - ELEMENT_SUB_TYPE_VM: ELEMENT_SUB_TYPE_VM is used for VM tags.\nA VM is a software computer that, like a physical computer,\nruns an operating system and applications.", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM" + ], + "default": "ELEMENT_SUB_TYPE_UNSPECIFIED" } ], "tags": [ @@ -689,7 +749,7 @@ }, "parameters": [ { - "name": "body", + "name": "value", "description": "TagAssignmentConfig carries the value to set into the datastore.\nSee the documentation on the TagAssignmentConfig struct for which fields are required.", "in": "body", "required": true, @@ -749,6 +809,35 @@ "TagAssignmentConfigService" ] }, + "delete": { + "operationId": "TagAssignmentConfigService_DeleteAll", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.tag.v2.TagAssignmentConfigDeleteAllResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.tag.v2.TagAssignmentConfigDeleteAllResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "tags": [ + "TagAssignmentConfigService" + ] + }, "post": { "operationId": "TagAssignmentConfigService_GetAll2", "responses": { @@ -789,6 +878,52 @@ ] } }, + "/api/resources/tag/v2/TagAssignmentConfig/some": { + "post": { + "operationId": "TagAssignmentConfigService_SetSome", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.tag.v2.TagAssignmentConfigSetSomeResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.tag.v2.TagAssignmentConfigSetSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "values", + "description": "value contains a list of TagAssignmentConfig values to write.\nIt is possible to provide more values than can fit within either:\n - the maxiumum send size of the client\n - the maximum receive size of the server\nIf this error occurs you must reduce the number of values sent.\nSee gRPC \"maximum message size\" documentation for more information.", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.tag.v2.TagAssignmentConfig" + } + } + } + ], + "tags": [ + "TagAssignmentConfigService" + ] + } + }, "/api/resources/tag/v2/TagAssignmentConfig/watch": { "get": { "operationId": "TagAssignmentConfigService_Subscribe", @@ -902,7 +1037,7 @@ }, { "name": "key.elementType", - "description": "element_type is the category of network element to which\nthis tag can be assigned.\n\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", + "description": "element_type is the category of network element to which\nthis tag can be assigned.\n\n - ELEMENT_TYPE_UNSPECIFIED: ELEMENT_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", "in": "query", "required": true, "type": "string", @@ -927,6 +1062,21 @@ "required": true, "type": "string" }, + { + "name": "key.elementSubType", + "description": "element_sub_type is the sub-category of network element\nto which this tag can be assigned.\n\n - ELEMENT_SUB_TYPE_UNSPECIFIED: ELEMENT_SUB_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_SUB_TYPE_DEVICE: ELEMENT_SUB_TYPE_DEVICE is used for EOS or\nthird-party devices discovered via LLDP/SNMP.\n - ELEMENT_SUB_TYPE_VDS: ELEMENT_SUB_TYPE_VDS is used for VMWare vSphere Distributed Switch (VDS) tags.\n - ELEMENT_SUB_TYPE_WORKLOAD_SERVER: ELEMENT_SUB_TYPE_WORKLOAD_SERVER is used for workload server\ntags (such as VMWare ESXi host).\nA workload server is a server/data storage device on which\nthe hypervisor is installed.\n - ELEMENT_SUB_TYPE_VM: ELEMENT_SUB_TYPE_VM is used for VM tags.\nA VM is a software computer that, like a physical computer,\nruns an operating system and applications.", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM" + ], + "default": "ELEMENT_SUB_TYPE_UNSPECIFIED" + }, { "name": "time", "description": "Time indicates the time for which you are interested in the data.\nIf no time is given, the server will use the time at which it makes the request.", @@ -966,7 +1116,7 @@ }, { "name": "key.elementType", - "description": "element_type is the category of network element to which\nthis tag can be assigned.\n\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", + "description": "element_type is the category of network element to which\nthis tag can be assigned.\n\n - ELEMENT_TYPE_UNSPECIFIED: ELEMENT_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags.", "in": "query", "required": true, "type": "string", @@ -990,6 +1140,21 @@ "in": "query", "required": true, "type": "string" + }, + { + "name": "key.elementSubType", + "description": "element_sub_type is the sub-category of network element\nto which this tag can be assigned.\n\n - ELEMENT_SUB_TYPE_UNSPECIFIED: ELEMENT_SUB_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_SUB_TYPE_DEVICE: ELEMENT_SUB_TYPE_DEVICE is used for EOS or\nthird-party devices discovered via LLDP/SNMP.\n - ELEMENT_SUB_TYPE_VDS: ELEMENT_SUB_TYPE_VDS is used for VMWare vSphere Distributed Switch (VDS) tags.\n - ELEMENT_SUB_TYPE_WORKLOAD_SERVER: ELEMENT_SUB_TYPE_WORKLOAD_SERVER is used for workload server\ntags (such as VMWare ESXi host).\nA workload server is a server/data storage device on which\nthe hypervisor is installed.\n - ELEMENT_SUB_TYPE_VM: ELEMENT_SUB_TYPE_VM is used for VM tags.\nA VM is a software computer that, like a physical computer,\nruns an operating system and applications.", + "in": "query", + "required": true, + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM" + ], + "default": "ELEMENT_SUB_TYPE_UNSPECIFIED" } ], "tags": [ @@ -1014,7 +1179,7 @@ }, "parameters": [ { - "name": "body", + "name": "value", "description": "TagConfig carries the value to set into the datastore.\nSee the documentation on the TagConfig struct for which fields are required.", "in": "body", "required": true, @@ -1074,6 +1239,35 @@ "TagConfigService" ] }, + "delete": { + "operationId": "TagConfigService_DeleteAll", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.tag.v2.TagConfigDeleteAllResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.tag.v2.TagConfigDeleteAllResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "tags": [ + "TagConfigService" + ] + }, "post": { "operationId": "TagConfigService_GetAll2", "responses": { @@ -1114,6 +1308,52 @@ ] } }, + "/api/resources/tag/v2/TagConfig/some": { + "post": { + "operationId": "TagConfigService_SetSome", + "responses": { + "200": { + "description": "A successful response.(streaming responses)", + "schema": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/arista.tag.v2.TagConfigSetSomeResponse" + }, + "error": { + "$ref": "#/definitions/google.rpc.Status" + } + }, + "title": "Stream result of arista.tag.v2.TagConfigSetSomeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/google.rpc.Status" + } + } + }, + "parameters": [ + { + "name": "values", + "description": "value contains a list of TagConfig values to write.\nIt is possible to provide more values than can fit within either:\n - the maxiumum send size of the client\n - the maximum receive size of the server\nIf this error occurs you must reduce the number of values sent.\nSee gRPC \"maximum message size\" documentation for more information.", + "in": "body", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/arista.tag.v2.TagConfig" + } + } + } + ], + "tags": [ + "TagConfigService" + ] + } + }, "/api/resources/tag/v2/TagConfig/watch": { "get": { "operationId": "TagConfigService_Subscribe", @@ -1219,10 +1459,23 @@ "enum": [ "CREATOR_TYPE_UNSPECIFIED", "CREATOR_TYPE_SYSTEM", - "CREATOR_TYPE_USER" + "CREATOR_TYPE_USER", + "CREATOR_TYPE_EXTERNAL" ], "default": "CREATOR_TYPE_UNSPECIFIED", - "description": "CreatorType enumerates the types of entities that can create\na tag.\n\n - CREATOR_TYPE_SYSTEM: CREATOR_TYPE_SYSTEM is used for system tags.\n - CREATOR_TYPE_USER: CREATOR_TYPE_USER is used for user tags." + "description": "CreatorType enumerates the types of entities that can create\na tag.\n\n - CREATOR_TYPE_UNSPECIFIED: CREATOR_TYPE_UNSPECIFIED is the default value.\n - CREATOR_TYPE_SYSTEM: CREATOR_TYPE_SYSTEM is used for system tags.\n - CREATOR_TYPE_USER: CREATOR_TYPE_USER is used for user tags.\n - CREATOR_TYPE_EXTERNAL: CREATOR_TYPE_EXTERNAL is used for tags created from external sources.\nFor E.g., vCenter" + }, + "arista.tag.v2.ElementSubType": { + "type": "string", + "enum": [ + "ELEMENT_SUB_TYPE_UNSPECIFIED", + "ELEMENT_SUB_TYPE_DEVICE", + "ELEMENT_SUB_TYPE_VDS", + "ELEMENT_SUB_TYPE_WORKLOAD_SERVER", + "ELEMENT_SUB_TYPE_VM" + ], + "default": "ELEMENT_SUB_TYPE_UNSPECIFIED", + "description": "ElementSubType enumerates the sub-types of network elements that can\nbe associated with tags.\n\n - ELEMENT_SUB_TYPE_UNSPECIFIED: ELEMENT_SUB_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_SUB_TYPE_DEVICE: ELEMENT_SUB_TYPE_DEVICE is used for EOS or\nthird-party devices discovered via LLDP/SNMP.\n - ELEMENT_SUB_TYPE_VDS: ELEMENT_SUB_TYPE_VDS is used for VMWare vSphere Distributed Switch (VDS) tags.\n - ELEMENT_SUB_TYPE_WORKLOAD_SERVER: ELEMENT_SUB_TYPE_WORKLOAD_SERVER is used for workload server\ntags (such as VMWare ESXi host).\nA workload server is a server/data storage device on which\nthe hypervisor is installed.\n - ELEMENT_SUB_TYPE_VM: ELEMENT_SUB_TYPE_VM is used for VM tags.\nA VM is a software computer that, like a physical computer,\nruns an operating system and applications." }, "arista.tag.v2.ElementType": { "type": "string", @@ -1232,7 +1485,7 @@ "ELEMENT_TYPE_INTERFACE" ], "default": "ELEMENT_TYPE_UNSPECIFIED", - "description": "ElementType enumerates the types of network elements that can\nbe associated with tags.\n\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags." + "description": "ElementType enumerates the types of network elements that can\nbe associated with tags.\n\n - ELEMENT_TYPE_UNSPECIFIED: ELEMENT_TYPE_UNSPECIFIED is the default value.\n - ELEMENT_TYPE_DEVICE: ELEMENT_TYPE_DEVICE is used for device tags.\n - ELEMENT_TYPE_INTERFACE: ELEMENT_TYPE_INTERFACE is used for interface tags." }, "arista.tag.v2.Tag": { "type": "object", @@ -1254,6 +1507,10 @@ "key": { "$ref": "#/definitions/arista.tag.v2.TagAssignmentKey", "description": "key identifies an assignment." + }, + "tagCreatorType": { + "$ref": "#/definitions/arista.tag.v2.CreatorType", + "description": "tag_creator_type is the creator type of the tag\ninvolved in the assignment." } }, "description": "TagAssignment holds a merge-preview or the existing merged\nstate (if the workspace ID is \"\") of an assignment between\na tag and a network element." @@ -1270,7 +1527,29 @@ "description": "remove indicates whether to remove (true) or add (false,\nunset) the assignment identified by the key if the\nencompassing workspace merges." } }, - "description": "TagAssignmentConfig holds a configuration for an assignment\nbetween a tag and a network element." + "description": "TagAssignmentConfig holds a configuration for an assignment\nbetween a tag and a network element.\nThe tag assignments that belong to entities other than ELEMENT_SUB_TYPE_DEVICE\nwill always be present in mainline only." + }, + "arista.tag.v2.TagAssignmentConfigDeleteAllResponse": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/fmp.DeleteError", + "description": "This describes the class of delete error." + }, + "error": { + "type": "string", + "description": "This indicates the error message from the delete failure." + }, + "key": { + "$ref": "#/definitions/arista.tag.v2.TagAssignmentKey", + "description": "This is the key of the TagAssignmentConfig instance that failed to be deleted." + }, + "time": { + "type": "string", + "format": "date-time", + "description": "Time indicates the (UTC) timestamp when the key was being deleted." + } + } }, "arista.tag.v2.TagAssignmentConfigDeleteResponse": { "type": "object", @@ -1316,19 +1595,31 @@ } } }, + "arista.tag.v2.TagAssignmentConfigSetSomeResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/definitions/arista.tag.v2.TagAssignmentKey" + }, + "error": { + "type": "string" + } + } + }, "arista.tag.v2.TagAssignmentConfigStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/arista.tag.v2.TagAssignmentConfig" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each TagAssignmentConfig at end.\n * Each TagAssignmentConfig response is fully-specified (all fields set).\n * start: Returns the state of each TagAssignmentConfig at start, followed by updates until now.\n * Each TagAssignmentConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each TagAssignmentConfig at start, followed by updates\n until end.\n * Each TagAssignmentConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, @@ -1355,46 +1646,32 @@ "properties": { "workspaceId": { "type": "string", - "description": "workspace_id is the ID of a workspace. The special ID \"\"\nidentifies the location where merged assignments reside.", - "required": [ - "workspace_id" - ] + "description": "workspace_id is the ID of a workspace. The special ID \"\"\nidentifies the location where merged assignments reside." }, "elementType": { "$ref": "#/definitions/arista.tag.v2.ElementType", "description": "ELEMENT_TYPE_DEVICE: device_id\nELEMENT_TYPE_INTERFACE: device_id, interface_id", - "title": "element_type is the element type of a tag. What should\nbe set per element type:", - "required": [ - "element_type" - ] + "title": "element_type is the element type of a tag. What should\nbe set per element type:" }, "label": { "type": "string", - "description": "label is the label of a tag.", - "required": [ - "label" - ] + "description": "label is the label of a tag." }, "value": { "type": "string", - "description": "value is the value of a tag.", - "required": [ - "value" - ] + "description": "value is the value of a tag." }, "deviceId": { "type": "string", - "description": "device_id identifies a device.", - "required": [ - "device_id" - ] + "description": "device_id identifies a device." }, "interfaceId": { "type": "string", - "description": "interface_id identifies an interface on a device.", - "required": [ - "interface_id" - ] + "description": "interface_id identifies an interface on a device." + }, + "elementSubType": { + "$ref": "#/definitions/arista.tag.v2.ElementSubType", + "description": "element_sub_type is the element sub-type of a tag." } }, "description": "TagAssignmentKey uniquely identifies an assignment between\na tag and a network element.", @@ -1404,7 +1681,8 @@ "label", "value", "deviceId", - "interfaceId" + "interfaceId", + "elementSubType" ] }, "arista.tag.v2.TagAssignmentResponse": { @@ -1427,13 +1705,14 @@ "partialEqFilter": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/arista.tag.v2.TagAssignment" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each TagAssignment at end.\n * Each TagAssignment response is fully-specified (all fields set).\n * start: Returns the state of each TagAssignment at start, followed by updates until now.\n * Each TagAssignment response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each TagAssignment at start, followed by updates\n until end.\n * Each TagAssignment response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, @@ -1467,7 +1746,29 @@ "description": "remove indicates whether to remove (true) or add (false,\nunset) the tag identified by the key if the encompassing\nworkspace merges." } }, - "description": "TagConfig holds a configuration for a user tag." + "description": "TagConfig holds a configuration for a user tag.\nThe tags that belong to entities other than ELEMENT_SUB_TYPE_DEVICE\nwill always be present in mainline only." + }, + "arista.tag.v2.TagConfigDeleteAllResponse": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/fmp.DeleteError", + "description": "This describes the class of delete error." + }, + "error": { + "type": "string", + "description": "This indicates the error message from the delete failure." + }, + "key": { + "$ref": "#/definitions/arista.tag.v2.TagKey", + "description": "This is the key of the TagConfig instance that failed to be deleted." + }, + "time": { + "type": "string", + "format": "date-time", + "description": "Time indicates the (UTC) timestamp when the key was being deleted." + } + } }, "arista.tag.v2.TagConfigDeleteResponse": { "type": "object", @@ -1513,19 +1814,31 @@ } } }, + "arista.tag.v2.TagConfigSetSomeResponse": { + "type": "object", + "properties": { + "key": { + "$ref": "#/definitions/arista.tag.v2.TagKey" + }, + "error": { + "type": "string" + } + } + }, "arista.tag.v2.TagConfigStreamRequest": { "type": "object", "properties": { "partialEqFilter": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/arista.tag.v2.TagConfig" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each TagConfig at end.\n * Each TagConfig response is fully-specified (all fields set).\n * start: Returns the state of each TagConfig at start, followed by updates until now.\n * Each TagConfig response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each TagConfig at start, followed by updates\n until end.\n * Each TagConfig response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, @@ -1552,31 +1865,23 @@ "properties": { "workspaceId": { "type": "string", - "description": "workspace_id is the ID of a workspace. The special ID \"\"\nidentifies the location where merged tags reside.", - "required": [ - "workspace_id" - ] + "description": "workspace_id is the ID of a workspace. The special ID \"\"\nidentifies the location where merged tags reside." }, "elementType": { "$ref": "#/definitions/arista.tag.v2.ElementType", - "description": "element_type is the category of network element to which\nthis tag can be assigned.", - "required": [ - "element_type" - ] + "description": "element_type is the category of network element to which\nthis tag can be assigned." }, "label": { "type": "string", - "description": "label is an arbitrary label.", - "required": [ - "label" - ] + "description": "label is an arbitrary label." }, "value": { "type": "string", - "description": "value is an arbitrary value.", - "required": [ - "value" - ] + "description": "value is an arbitrary value." + }, + "elementSubType": { + "$ref": "#/definitions/arista.tag.v2.ElementSubType", + "description": "element_sub_type is the sub-category of network element\nto which this tag can be assigned." } }, "description": "TagKey uniquely identifies a tag.", @@ -1584,7 +1889,8 @@ "workspaceId", "elementType", "label", - "value" + "value", + "elementSubType" ] }, "arista.tag.v2.TagResponse": { @@ -1607,13 +1913,14 @@ "partialEqFilter": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/arista.tag.v2.Tag" }, "description": "PartialEqFilter provides a way to server-side filter a GetAll/Subscribe.\nThis requires all provided fields to be equal to the response.\n\nWhile transparent to users, this field also allows services to optimize internal\nsubscriptions if filter(s) are sufficiently specific." }, "time": { "$ref": "#/definitions/arista.time.TimeBounds", - "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nThis field is not allowed in the Subscribe RPC." + "description": "TimeRange allows limiting response data to within a specified time window.\nIf this field is populated, at least one of the two time fields are required.\n\nFor GetAll, the fields start and end can be used as follows:\n\n * end: Returns the state of each Tag at end.\n * Each Tag response is fully-specified (all fields set).\n * start: Returns the state of each Tag at start, followed by updates until now.\n * Each Tag response at start is fully-specified, but updates may be partial.\n * start and end: Returns the state of each Tag at start, followed by updates\n until end.\n * Each Tag response at start is fully-specified, but updates until end may\n be partial.\n\nThis field is not allowed in the Subscribe RPC." } } }, @@ -1648,6 +1955,17 @@ } } }, + "fmp.DeleteError": { + "type": "string", + "enum": [ + "DELETE_ERROR_UNSPECIFIED", + "DELETE_ERROR_UNAUTHORIZED", + "DELETE_ERROR_INTERNAL", + "DELETE_ERROR_UNDELETABLE_KEY" + ], + "default": "DELETE_ERROR_UNSPECIFIED", + "description": "DeleteError defines the set of delete error types.\n\n - DELETE_ERROR_UNSPECIFIED: DELETE_ERROR_UNSPECIFIED indicates that the delete error\nis not specified.\n - DELETE_ERROR_UNAUTHORIZED: DELETE_ERROR_UNAUTHORIZED indicates that the user is not authorized\nto perform the specified delete.\n - DELETE_ERROR_INTERNAL: DELETE_ERROR_INTERNAL indicates that the server encountered an\nunrecoverable error on the specified delete.\n - DELETE_ERROR_UNDELETABLE_KEY: DELETE_ERROR_UNDELETABLE_KEY indicates that the specified error is\nnot allowed by the service." + }, "google.protobuf.Any": { "type": "object", "properties": { @@ -1670,6 +1988,7 @@ "details": { "type": "array", "items": { + "type": "object", "$ref": "#/definitions/google.protobuf.Any" } } diff --git a/arista/tag.v2/tag-changelog.yaml b/arista/tag.v2/tag-changelog.yaml index 1210a656..86e3e78e 100644 --- a/arista/tag.v2/tag-changelog.yaml +++ b/arista/tag.v2/tag-changelog.yaml @@ -4,6 +4,24 @@ # FOR INTERNAL USE ONLY. NOT FOR DISTRIBUTION. Changes: + - date: 2022-10-26 + description: Rename ElementSubTypeHost as ElementSubTypeWorkLoadServer + version: 2.0.3 + onprem: true + cvaas: true + + - date: 2022-08-11 + description: Add ElementSubType enum and External CreatorType + version: 2.0.2 + onprem: true + cvaas: true + + - date: 2022-05-11 + description: Add creator type to TagAssignment + version: 2.0.1 + onprem: true + cvaas: true + - date: 2021-05-03 description: Initial revision version: 2.0.0 diff --git a/arista/tag.v2/tag.proto b/arista/tag.v2/tag.proto index 56d995c6..1d173c06 100644 --- a/arista/tag.v2/tag.proto +++ b/arista/tag.v2/tag.proto @@ -14,6 +14,7 @@ import "fmp/extensions.proto"; // ElementType enumerates the types of network elements that can // be associated with tags. enum ElementType { + // ELEMENT_TYPE_UNSPECIFIED is the default value. ELEMENT_TYPE_UNSPECIFIED = 0; // ELEMENT_TYPE_DEVICE is used for device tags. ELEMENT_TYPE_DEVICE = 1; @@ -21,6 +22,27 @@ enum ElementType { ELEMENT_TYPE_INTERFACE = 2; } +// ElementSubType enumerates the sub-types of network elements that can +// be associated with tags. +enum ElementSubType { + // ELEMENT_SUB_TYPE_UNSPECIFIED is the default value. + ELEMENT_SUB_TYPE_UNSPECIFIED = 0; + // ELEMENT_SUB_TYPE_DEVICE is used for EOS or + // third-party devices discovered via LLDP/SNMP. + ELEMENT_SUB_TYPE_DEVICE = 1; + // ELEMENT_SUB_TYPE_VDS is used for VMWare vSphere Distributed Switch (VDS) tags. + ELEMENT_SUB_TYPE_VDS = 2; + // ELEMENT_SUB_TYPE_WORKLOAD_SERVER is used for workload server + // tags (such as VMWare ESXi host). + // A workload server is a server/data storage device on which + // the hypervisor is installed. + ELEMENT_SUB_TYPE_WORKLOAD_SERVER = 3; + // ELEMENT_SUB_TYPE_VM is used for VM tags. + // A VM is a software computer that, like a physical computer, + // runs an operating system and applications. + ELEMENT_SUB_TYPE_VM = 4; +} + // TagKey uniquely identifies a tag. message TagKey { option (fmp.model_key) = true; @@ -34,9 +56,14 @@ message TagKey { google.protobuf.StringValue label = 3; // value is an arbitrary value. google.protobuf.StringValue value = 4; + // element_sub_type is the sub-category of network element + // to which this tag can be assigned. + ElementSubType element_sub_type = 5; } // TagConfig holds a configuration for a user tag. +// The tags that belong to entities other than ELEMENT_SUB_TYPE_DEVICE +// will always be present in mainline only. message TagConfig { option (fmp.model) = "rw"; // key identifies a tag. The special workspace ID "" for @@ -51,11 +78,15 @@ message TagConfig { // CreatorType enumerates the types of entities that can create // a tag. enum CreatorType { + // CREATOR_TYPE_UNSPECIFIED is the default value. CREATOR_TYPE_UNSPECIFIED = 0; // CREATOR_TYPE_SYSTEM is used for system tags. CREATOR_TYPE_SYSTEM = 1; // CREATOR_TYPE_USER is used for user tags. CREATOR_TYPE_USER = 2; + // CREATOR_TYPE_EXTERNAL is used for tags created from external sources. + // For E.g., vCenter + CREATOR_TYPE_EXTERNAL = 3; } // Tag holds a merge-preview or the existing merged state (if the @@ -89,10 +120,14 @@ message TagAssignmentKey { google.protobuf.StringValue device_id = 5; // interface_id identifies an interface on a device. google.protobuf.StringValue interface_id = 6; + // element_sub_type is the element sub-type of a tag. + ElementSubType element_sub_type = 7; } // TagAssignmentConfig holds a configuration for an assignment // between a tag and a network element. +// The tag assignments that belong to entities other than ELEMENT_SUB_TYPE_DEVICE +// will always be present in mainline only. message TagAssignmentConfig { option (fmp.model) = "rw"; // key identifies an assignment. The special workspace ID "" @@ -111,4 +146,7 @@ message TagAssignment { option (fmp.model) = "ro"; // key identifies an assignment. TagAssignmentKey key = 1; + // tag_creator_type is the creator type of the tag + // involved in the assignment. + CreatorType tag_creator_type = 2; }