Skip to content

Commit

Permalink
Remove direction metadata from output-only bindings
Browse files Browse the repository at this point in the history
Signed-off-by: ItalyPaleAle <[email protected]>
  • Loading branch information
ItalyPaleAle committed Oct 11, 2023
1 parent 5010459 commit 84e9dc1
Show file tree
Hide file tree
Showing 32 changed files with 18 additions and 113 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -76,14 +76,14 @@ Read the [Use output bindings to interface with external resources guide]({{< re

## Binding directions (optional)

You can provide the `direction` metadata field to indicate the direction(s) supported by the binding component. In doing so, the Dapr sidecar avoids the `"wait for the app to become ready"` state reducing the lifecycle dependency between the Dapr sidecar and the application:
You can provide the `direction` metadata field to indicate the direction(s) supported by the binding component. In doing so, the Dapr sidecar avoids the `"wait for the app to become ready"` state, reducing the lifecycle dependency between the Dapr sidecar and the application:

- `"input"`
- `"output"`
- `"input, output"`

{{% alert title="Note" color="primary" %}}
It is highly recommended that all bindings should include the `direction` property.
It is highly recommended that all input bindings should include the `direction` property.
{{% /alert %}}

[See a full example of the bindings `direction` metadata.]({{< ref "bindings_api.md#binding-direction-optional" >}})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ spec:
value: "[access-key]"
- name: bucket
value: "[bucket]"
- name: direction
value: "output"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -44,13 +42,12 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `accessKeyID` | Y | Output | Access key ID credential. |
| `accessKey` | Y | Output | Access key credential. |
| `bucket` | Y | Output | Name of the storage bucket. |
| `direction` | N | Output | Direction of the binding. | `"output"`

## Binding support

This component supports **output binding** with the following operations:
- `create`: [Create object](#create-object)

- `create`: [Create object](#create-object)

### Create object

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ spec:
value: "[accessKey-secret]"
- name: Endpoint
value: "[endpoint]"
- name: direction
value: "output"
```
## Spec metadata fields
Expand All @@ -37,13 +35,12 @@ spec:
| `AccessKeyID` | Y | Output | Access key ID credential. |
| `AccessKeySecret` | Y | Output | Access key credential secret |
| `Endpoint` | Y | Output | Alicloud SLS endpoint. |
| `direction` | N | Output | Direction of the binding. | `"output"`

## Binding support

This component supports **output binding** with the following operations:
- `create`: [Create object](#create-object)

- `create`: [Create object](#create-object)

### Request format

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ spec:
value: "[table]"
- name: endpoint
value: "[endpoint]"
- name: direction
value: "output"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -49,13 +47,12 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `accessKey` | Y | Output | Access key credential. |
| `instanceName` | Y | Output | Name of the instance. |
| `tableName` | Y | Output | Name of the table. |
| `direction` | N | Output | Direction of the binding. | `"output"`

## Binding support

This component supports **output binding** with the following operations:
- `create`: [Create object](#create-object)

- `create`: [Create object](#create-object)

### Create object

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ spec:
secretKeyRef:
name: <SECRET>
key: "<SECRET-KEY-NAME>"
- name: direction
value: "output"
```
## Spec metadata fields
Expand All @@ -41,14 +39,15 @@ spec:
| `key-id` | Y | Output | The identifier for the private key from the Apple Developer Portal | `"private-key-id`" |
| `team-id` | Y | Output | The identifier for the organization or author from the Apple Developer Portal | `"team-id"` |
| `private-key` | Y | Output| Is a PKCS #8-formatted private key. It is intended that the private key is stored in the secret store and not exposed directly in the configuration. See [here](#private-key) for more details | `"pem file"` |
| `direction` | N | Output| The direction of the binding. | `"output"` |

### Private key

The APNS binding needs a cryptographic private key in order to generate authentication tokens for the APNS service.
The private key can be generated from the Apple Developer Portal and is provided as a PKCS #8 file with the private key stored in PEM format.
The private key should be stored in the Dapr secret store and not stored directly in the binding's configuration file.

A sample configuration file for the APNS binding is shown below:

```yaml
apiVersion: dapr.io/v1alpha1
kind: Component
Expand All @@ -68,7 +67,9 @@ spec:
name: apns-secrets
key: private-key
```

If using Kubernetes, a sample secret configuration may look like this:

```yaml
apiVersion: v1
kind: Secret
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@ spec:
# value: <integer>
# - name: publicAccessLevel
# value: <publicAccessLevel>
# - name: direction
# value: "output"
```
{{% alert title="Warning" color="warning" %}}
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here]({{< ref component-secrets.md >}}).
Expand All @@ -51,7 +49,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `decodeBase64` | N | Output | Configuration to decode base64 file content before saving to Blob Storage. (In case of saving a file with binary content). Defaults to `false` | `true`, `false` |
| `getBlobRetryCount` | N | Output | Specifies the maximum number of HTTP GET requests that will be made while reading from a RetryReader Defaults to `10` | `1`, `2`
| `publicAccessLevel` | N | Output | Specifies whether data in the container may be accessed publicly and the level of access (only used if the container is created by Dapr). Defaults to `none` | `blob`, `container`, `none`
| `direction` | N | Output | The direction of the binding. | `"output"`

### Azure Active Directory (AAD) authentication

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,6 @@ spec:
# URL of the Worker (required if the Worker has been pre-created outside of Dapr)
- name: workerUrl
value: ""
# Direction of the binding
- name: direction
value: "output"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -64,7 +61,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `cfAccountID` | Y/N | Output | Cloudflare account ID. Required to have Dapr manage the worker. | `"456789abcdef8b5588f3d134f74ac"def`
| `cfAPIToken` | Y/N | Output | API token for Cloudflare. Required to have Dapr manage the Worker. | `"secret-key"`
| `workerUrl` | Y/N | Output | URL of the Worker. Required if the Worker has been pre-provisioned outside of Dapr. | `"https://mydaprqueue.mydomain.workers.dev"`
| `direction` | N | Output | Direction of the binding. | `"output"`

> When you configure Dapr to create your Worker for you, you may need to set a longer value for the `initTimeout` property of the component, to allow enough time for the Worker script to be deployed. For example: `initTimeout: "120s"`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ aliases:

To setup commercetools GraphQL binding create a component of type `bindings.commercetools`. See [this guide]({{< ref "howto-bindings.md#1-create-a-binding" >}}) on how to create and apply a binding configuration.



```yaml
apiVersion: dapr.io/v1alpha1
kind: Component
Expand All @@ -34,9 +32,8 @@ spec:
value: "*****************"
- name: scopes # required.
value: "<project-scopes>"
- name: direction
value: "output"
```
{{% alert title="Warning" color="warning" %}}
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here]({{< ref component-secrets.md >}}).
{{% /alert %}}
Expand All @@ -51,7 +48,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `clientID` | Y | Output | The commercetools client ID for the project | |
| `clientSecret` | Y | Output | The commercetools client secret for the project | |
| `scopes` | Y | Output | The commercetools scopes for the project | `"manage_project:project-key"` |
| `direction` | N | Output | The direction of the binding | `"output"` |

For more information see [commercetools - Creating an API Client](https://docs.commercetools.com/getting-started/create-api-client#create-an-api-client) and [commercetools - Regions](https://docs.commercetools.com/api/general-concepts#regions).

Expand All @@ -61,7 +57,6 @@ This component supports **output binding** with the following operations:

- `create`


## Related links

- [Basic schema for a Dapr component]({{< ref component-schema >}})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ aliases:

To setup Azure Cosmos DB binding create a component of type `bindings.azure.cosmosdb`. See [this guide]({{< ref "howto-bindings.md#1-create-a-binding" >}}) on how to create and apply a binding configuration.


```yaml
apiVersion: dapr.io/v1alpha1
kind: Component
Expand All @@ -31,8 +30,6 @@ spec:
value: "Orders"
- name: partitionKey
value: "<message>"
- name: direction
value: "output"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -48,7 +45,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `database` | Y | Output | The name of the Cosmos DB database | `"OrderDb"` |
| `collection` | Y | Output | The name of the container inside the database. | `"Orders"` |
| `partitionKey` | Y | Output | The name of the key to extract from the payload (document to be created) that is used as the partition key. This name must match the partition key specified upon creation of the Cosmos DB container. | `"OrderId"`, `"message"` |
| `direction` | N | Output | The direction of the binding. | `"output"` |

For more information see [Azure Cosmos DB resource model](https://docs.microsoft.com/azure/cosmos-db/account-databases-containers-items).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ description: "Detailed documentation on the Azure Cosmos DB (Gremlin API) bindin

To setup an Azure Cosmos DB (Gremlin API) binding create a component of type `bindings.azure.cosmosdb.gremlinapi`. See [this guide]({{< ref "howto-bindings.md#1-create-a-binding" >}}) on how to create and apply a binding configuration.


```yaml
apiVersion: dapr.io/v1alpha1
kind: Component
Expand All @@ -25,8 +24,6 @@ spec:
value: "*****"
- name: username
value: "*****"
- name: direction
value: "output"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -40,7 +37,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `url` | Y | Output | The Cosmos DB url for Gremlin APIs | `"wss://******.gremlin.cosmos.azure.com:443/"` |
| `masterKey` | Y | Output | The Cosmos DB account master key | `"masterKey"` |
| `username` | Y | Output | The username of the Cosmos DB database | `"/dbs/<database_name>/colls/<graph_name>"` |
| `direction` | N | Output | The direction of the binding | `"output"` |

For more information see [Quickstart: Azure Cosmos Graph DB using Gremlin](https://docs.microsoft.com/azure/cosmos-db/graph/create-graph-console).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ spec:
value: "*****************"
- name: sessionToken
value: "*****************"
- name: direction
value: "output"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -49,7 +47,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `accessKey` | Y | Output | The AWS Access Key to access this resource | `"key"` |
| `secretKey` | Y | Output | The AWS Secret Access Key to access this resource | `"secretAccessKey"` |
| `sessionToken` | N | Output | The AWS session token to use | `"sessionToken"` |
| `direction` | N | Output | The direction of the binding | `"output"` |

{{% alert title="Important" color="warning" %}}
When running the Dapr sidecar (daprd) with your application on EKS (AWS Kubernetes), if you're using a node/pod that has already been attached to an IAM policy defining access to AWS resources, you **must not** provide AWS access-key, secret-key, and tokens in the definition of the component spec you're using.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ spec:
value: "<bool>"
- name: encodeBase64
value: "<bool>"
- name: direction
value: "output"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -72,7 +70,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `client_x509_cert_url` | Y | Output | GCP credentials project x509 cert url | `https://www.googleapis.com/robot/v1/metadata/x509/<PROJECT_NAME>.iam.gserviceaccount.com`
| `decodeBase64` | N | Output | Configuration to decode base64 file content before saving to bucket storage. (In case of saving a file with binary content). `true` is the only allowed positive value. Other positive variations like `"True", "1"` are not acceptable. Defaults to `false` | `true`, `false` |
| `encodeBase64` | N | Output | Configuration to encode base64 file content before return the content. (In case of opening a file with binary content). `true` is the only allowed positive value. Other positive variations like `"True", "1"` are not acceptable. Defaults to `false` | `true`, `false` |
| `direction` | N | Output | The direction of the binding. | `"output"`

## Binding support

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ spec:
value: "adminkey"
- name: header:Cache-Control
value: "no-cache"
- name: direction
value: "output"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -42,7 +40,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `endpoint` | Y | Output | GraphQL endpoint string See [here](#url-format) for more details | `"http://localhost:4000/graphql/graphql"` |
| `header:[HEADERKEY]` | N | Output | GraphQL header. Specify the header key in the `name`, and the header value in the `value`. | `"no-cache"` (see above) |
| `variable:[VARIABLEKEY]` | N | Output | GraphQL query variable. Specify the variable name in the `name`, and the variable value in the `value`. | `"123"` (see below) |
| `direction` | N | Output | The direction of the binding | `"output"` |

### Endpoint and Header format

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@ spec:
# key: "mytoken"
#- name: securityTokenHeader
# value: "Authorization: Bearer" # OPTIONAL <header name for the security token>
#- name: direction
# value: "output"
```

## Spec metadata fields
Expand All @@ -56,7 +54,6 @@ spec:
| `MTLSRenegotiation` | N | Output | Type of mTLS renegotiation to be used | `RenegotiateOnceAsClient`
| `securityToken` | N | Output | The value of a token to be added to a HTTP request as a header. Used together with `securityTokenHeader` |
| `securityTokenHeader` | N | Output | The name of the header for `securityToken` on a HTTP request |
| `direction` | N | Output |The direction of the binding | `"output"`

### How to configure mTLS-related fields in metadata

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ spec:
# optional fields
- name: region
value: "<your-bucket-region>"
- name: direction
value: "<your-binding-direction>"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -47,7 +45,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `accessKey` | Y | Output | The Huawei Access Key (AK) to access this resource | `"************"` |
| `secretKey` | Y | Output | The Huawei Secret Key (SK) to access this resource | `"************"` |
| `region` | N | Output | The specific Huawei region of the bucket | `"cn-north-4"` |
| `direction` | N | Output | The direction of the binding | `"output"` |

## Binding support

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ spec:
value: "<ORG>"
- name: bucket # Required
value: "<BUCKET>"
- name: direction
value: "<DIRECTION>"
```
{{% alert title="Warning" color="warning" %}}
Expand All @@ -45,7 +43,6 @@ The above example uses secrets as plain strings. It is recommended to use a secr
| `token` | Y | Output | The authorization token for InfluxDB | `"mytoken"` |
| `org` | Y | Output | The InfluxDB organization | `"myorg"` |
| `bucket` | Y | Output | Bucket name to write to | `"mybucket"` |
| `direction` | N | Output | Direction of the binding | `"output"` |

## Binding support

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,12 @@ spec:
value: "echo"
- name: version
value: "0.5.0"
- name: direction
value: "output"
```
## Spec metadata fields
The `InvokeRequest.Metadata` for `bindings.kitex` requires the client to fill in four required items when making a call:

- `hostPorts`
- `destService`
- `methodName`
Expand All @@ -52,8 +51,6 @@ The `InvokeRequest.Metadata` for `bindings.kitex` requires the client to fill in
| `destService` | Y | Output | Service name of the Kitex server (Thrift) | `"echo"` |
| `methodName` | Y | Output | Method name under a specific service name of the Kitex server (Thrift) | `"echo"` |
| `version` | Y | Output | Kitex version | `"0.5.0"` |
| `direction` | N | Output | Direction of the binding | `"output"` |


## Binding support

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,13 @@ spec:
metadata:
- name: rootPath
value: "<string>"
- name: direction
value: "<direction>"
```
## Spec metadata fields
| Field | Required | Binding support | Details | Example |
|--------------------|:--------:|--------|---------|---------|
| `rootPath` | Y | Input / Output | The root path anchor to which files can be read / saved | `"/temp/files"` |
| `direction` | N | Input / Output | The direction of the binding | `"output"` |
| `rootPath` | Y | Output | The root path anchor to which files can be read / saved | `"/temp/files"` |

## Binding support

Expand Down Expand Up @@ -265,6 +262,5 @@ By default the Local Storage output binding auto generates a UUID as the file na

- [Basic schema for a Dapr component]({{< ref component-schema >}})
- [Bindings building block]({{< ref bindings >}})
- [How-To: Trigger application with input binding]({{< ref howto-triggers.md >}})
- [How-To: Use bindings to interface with external resources]({{< ref howto-bindings.md >}})
- [Bindings API reference]({{< ref bindings_api.md >}})
Loading

0 comments on commit 84e9dc1

Please sign in to comment.