Add new properties to the metadata API (#3562)

* Update metadata API docs

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Make type consistent

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Add docs for enabledFeatures

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Update docs

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Update daprdocs/content/en/reference/api/metadata_api.md

Co-authored-by: Hannah Hunter <94493363+hhunter-ms@users.noreply.github.com>
Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Update daprdocs/content/en/reference/api/metadata_api.md

Co-authored-by: Hannah Hunter <94493363+hhunter-ms@users.noreply.github.com>
Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Update daprdocs/content/en/reference/api/metadata_api.md

Co-authored-by: Hannah Hunter <94493363+hhunter-ms@users.noreply.github.com>
Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Update daprdocs/content/en/reference/api/metadata_api.md

Co-authored-by: Hannah Hunter <94493363+hhunter-ms@users.noreply.github.com>
Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

* Update daprdocs/content/en/reference/api/metadata_api.md

Co-authored-by: Mark Fussell <markfussell@gmail.com>
Signed-off-by: Shubham Sharma <shubhash@microsoft.com>

---------

Signed-off-by: Shubham Sharma <shubhash@microsoft.com>
Co-authored-by: Hannah Hunter <94493363+hhunter-ms@users.noreply.github.com>
Co-authored-by: Mark Fussell <markfussell@gmail.com>
This commit is contained in:
Shubham Sharma 2023-06-21 10:29:36 +05:30 committed by GitHub
parent 64534816e1
commit dd379f51d0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 145 additions and 56 deletions

View File

@ -6,9 +6,17 @@ description: "Detailed documentation on the Metadata API"
weight: 1100
---
Dapr has a metadata API that returns information about the sidecar allowing runtime discoverability. The metadata endpoint returns a list of the resources (components and HttpEndpoints loaded), the activated actors (if present), and attributes with information attached.
Dapr has a metadata API that returns information about the sidecar allowing runtime discoverability. The metadata endpoint returns the following information.
- Runtime version
- List of the loaded resources (`components`, `subscriptions` and `HttpEndpoints`)
- Registered actor types
- Features enabled
- Application connection details
- Custom, ephemeral attributes with information.
## Components
## Metadata API
### Components
Each loaded component provides its name, type and version and also information about supported features in the form of component capabilities.
These features are available for the [state store]({{< ref supported-state-stores.md >}}) and [binding]({{< ref supported-bindings.md >}}) component types. The table below shows the component type and the list of capabilities for a given version. This list might grow in future and only represents the capabilities of the loaded components.
@ -17,12 +25,21 @@ Component type | Capabilities
State Store | ETAG, TRANSACTION, ACTOR, QUERY_API
Binding | INPUT_BINDING, OUTPUT_BINDING
## HTTPEndpoints
### HTTPEndpoints
Each loaded `HttpEndpoint` provides a name to easily identify the Dapr resource associated with the runtime.
## Attributes
### Subscriptions
The metadata API returns a list of pub/sub subscriptions that the app has registered with the Dapr runtime. This includes the pub/sub name, topic, routes, dead letter topic, and the metadata associated with the subscription.
The metadata API allows you to store additional attribute information in the format of key-value pairs. These are ephemeral in-memory and are not persisted if a sidecar is reloaded. This information should be added at the time of a sidecar creation, for example, after the application has started.
### Enabled features
A list of features enabled via Configuration spec (including build-time overrides).
### App connection details
The metadata API returns information related to Dapr's connection to the app. This includes the app port, protocol, host, max concurrency, along with health check details.
### Attributes
The metadata API allows you to store additional attribute information in the format of key-value pairs. These are ephemeral in-memory and are not persisted if a sidecar is reloaded. This information should be added at the time of a sidecar creation (for example, after the application has started).
## Get the Dapr sidecar information
@ -57,9 +74,13 @@ Code | Description
Name | Type | Description
---- | ---- | -----------
id | string | Application ID
runtimeVersion | string | Version of the Dapr runtime
actors | [Metadata API Response Registered Actor](#metadataapiresponseactor)[] | A json encoded array of registered actors metadata.
extended.attributeName | string | List of custom attributes as key-value pairs, where key is the attribute name.
components | [Metadata API Response Component](#metadataapiresponsecomponent)[] | A json encoded array of loaded components metadata.
httpEndpoints | [Metadata API Response HttpEndpoint](#metadataapiresponsehttpendpoint)[] | A json encoded array of loaded HttpEndpoints metadata.
subscriptions | [Metadata API Response Subscription](#metadataapiresponsesubscription)[] | A json encoded array of pub/sub subscriptions metadata.
appConnectionProperties| [Metadata API Response AppConnectionProperties](#metadataapiresponseappconnectionproperties) | A json encoded object of app connection properties.
<a id="metadataapiresponseactor"></a>**Metadata API Response Registered Actor**
@ -75,7 +96,50 @@ Name | Type | Description
name | string | Name of the component.
type | string | Component type.
version | string | Component version.
capabilities | array | Supported capabilities for this component type and version.
capabilities | array | Supported capabilities for this component type and version.
<a id="metadataapiresponsehttpendpoint"></a>**Metadata API Response HttpEndpoint**
Name | Type | Description
---- | ---- | -----------
name | string | Name of the HttpEndpoint.
<a id="metadataapiresponsesubscription"></a>**Metadata API Response Subscription**
Name | Type | Description
---- | ---- | -----------
pubsubname | string | Name of the pub/sub.
topic | string | Topic name.
metadata | object | Metadata associated with the subscription.
rules | [Metadata API Response Subscription Rules](metadataapiresponsesubscriptionrules)[] | List of rules associated with the subscription.
deadLetterTopic | string | Dead letter topic name.
<a id="metadataapiresponsesubscriptionrules"></a>**Metadata API Response Subscription Rules**
Name | Type | Description
---- | ---- | -----------
match | string | CEL expression to match the message.
path | string | Path to route the message if the match expression is true.
<a id="metadataapiresponseappconnectionproperties"></a>**Metadata API Response AppConnectionProperties**
Name | Type | Description
---- | ---- | -----------
port | integer| Port on which the app is listening.
protocol | string | Protocol used by the app.
channelAddress| string | Host address on which the app is listening.
maxConcurrency| integer| Maximum number of concurrent requests the app can handle.
health | [Metadata API Response AppConnectionProperties Health](#metadataapiresponseappconnectionpropertieshealth) | Health check details of the app.
<a id="metadataapiresponseappconnectionpropertieshealth"></a>**Metadata API Response AppConnectionProperties Health**
Name | Type | Description
---- | ---- | -----------
healthCheckPath | string | Health check path, applicable for HTTP protocol.
healthProbeInterval | string | Time between each health probe, in go duration format.
healthProbeTimeout | string | Timeout for each health probe, in go duration format.
healthThreshold | integer | Max number of failed health probes before the app is considered unhealthy.
### Examples
@ -87,32 +151,44 @@ curl http://localhost:3500/v1.0/metadata
```json
{
"id":"demo-actor",
"actors":[
{
"type":"DemoActor",
"count":1
}
],
"extended": {
"cliPID":"1031040",
"appCommand":"uvicorn --port 3000 demo_actor_service:app",
"daprRuntimeVersion": "1.10.0"
"id": "demo-actor",
"runtimeVersion": "1.12.0",
"enabledFeatures": [
"ServiceInvocationStreaming"
],
"actors": [
{
"type": "DemoActor"
}
],
"components": [
{
"name": "pubsub",
"type": "pubsub.redis",
"version": "v1"
},
"components":[
{
"name":"pubsub",
"type":"pubsub.redis",
"version":"v1",
"capabilities": [""]
},
{
"name":"statestore",
"type":"state.redis",
"version":"v1",
"capabilities": ["ETAG", "TRANSACTION", "ACTOR", "QUERY_API"]
}
]
{
"name": "statestore",
"type": "state.redis",
"version": "v1",
"capabilities": [
"ETAG",
"TRANSACTIONAL",
"ACTOR"
]
}
],
"extended": {
"appCommand": "uvicorn --port 3000 demo_actor_service:app",
"appPID": "98121",
"cliPID": "98114",
"daprRuntimeVersion": "1.12.0"
},
"appConnectionProperties": {
"port": 3000,
"protocol": "http",
"channelAddress": "127.0.0.1"
}
}
```
@ -172,32 +248,45 @@ Get the metadata information to confirm your custom attribute was added:
```json
{
"id":"demo-actor",
"actors":[
{
"type":"DemoActor",
"count":1
}
],
"extended": {
"myDemoAttribute": "myDemoAttributeValue",
"cliPID":"1031040",
"appCommand":"uvicorn --port 3000 demo_actor_service:app"
"id": "demo-actor",
"runtimeVersion": "1.12.0",
"enabledFeatures": [
"ServiceInvocationStreaming"
],
"actors": [
{
"type": "DemoActor"
}
],
"components": [
{
"name": "pubsub",
"type": "pubsub.redis",
"version": "v1"
},
"components":[
{
"name":"pubsub",
"type":"pubsub.redis",
"version":"v1",
"capabilities": [""]
},
{
"name":"statestore",
"type":"state.redis",
"version":"v1",
"capabilities": ["ETAG", "TRANSACTION", "ACTOR", "QUERY_API"]
}
]
{
"name": "statestore",
"type": "state.redis",
"version": "v1",
"capabilities": [
"ETAG",
"TRANSACTIONAL",
"ACTOR"
]
}
],
"extended": {
"myDemoAttribute": "myDemoAttributeValue",
"appCommand": "uvicorn --port 3000 demo_actor_service:app",
"appPID": "98121",
"cliPID": "98114",
"daprRuntimeVersion": "1.12.0"
},
"appConnectionProperties": {
"port": 3000,
"protocol": "http",
"channelAddress": "127.0.0.1"
}
}
```