{"id":23054029,"url":"https://github.com/emcecs/ecs-cf-service-broker","last_synced_at":"2026-02-28T21:30:59.861Z","repository":{"id":188275095,"uuid":"678405970","full_name":"EMCECS/ecs-cf-service-broker","owner":"EMCECS","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-16T20:41:52.000Z","size":1367,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-26T05:02:32.515Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EMCECS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-08-14T13:31:10.000Z","updated_at":"2025-05-16T20:41:56.000Z","dependencies_parsed_at":"2025-10-26T05:02:34.449Z","dependency_job_id":"b999c297-21d1-4bc6-9952-9d92c5268a95","html_url":"https://github.com/EMCECS/ecs-cf-service-broker","commit_stats":null,"previous_names":["emcecs/ecs-cf-service-broker"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/EMCECS/ecs-cf-service-broker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fecs-cf-service-broker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fecs-cf-service-broker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fecs-cf-service-broker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fecs-cf-service-broker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EMCECS","download_url":"https://codeload.github.com/EMCECS/ecs-cf-service-broker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fecs-cf-service-broker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29952239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T18:42:55.706Z","status":"ssl_error","status_checked_at":"2026-02-28T18:42:48.811Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-16T00:32:33.026Z","updated_at":"2026-02-28T21:30:59.814Z","avatar_url":"https://github.com/EMCECS.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ECS Open Service Broker\n\n## NOTICE\n\n***[v2.3.3](https://github.com/EMCECS/ecs-cf-service-broker/releases/tag/2.3.3) is the last release of the ECS Service Broker, no further versions will be released.  Support for the broker will end on May 25, 2025. No support will be provided after this date.***\n\n## Description\n\nThis service broker enables Kubernetes \u0026 Cloud Foundry applications to create,\ndelete and modify Dell EMC [ECS](https://www.delltechnologies.com/en-us/storage/ecs/index.htm) (Elastic Cloud Storage) \nand Dell [Objectscale](https://www.dell.com/en-us/dt/storage/objectscale.htm) object storage buckets \u0026 namespaces; \nand bind multiple applications to the same resources.\n\n## Features\n\nThis service broker supports a number of Cloud Foundry and ECS features\nincluding:\n * Create and Delete Object Storage Buckets\n * Create and Delete Object Storage Namespaces\n * Bind one or more Cloud Foundry applications to a bucket or namespace, with unique credentials and permissions for each application\n * Support quota enforced plans for buckets to limit the amount of capacity\n * Support for encryption and retention of namespaces\n * Change plans of an existing bucket\n * Browse Cloud Foundry instance and binding metadata through an internal bucket\n * Specify an ECS namespace and replication group for provisioning\n * Provide a string prefix for bucket and user names\n * Support a self-signed SSL certificate for the ECS management API\n * Configure offered services \u0026 plans through a YAML based configuration\n * Support file system mounts of file access enabled buckets via NFS\n * Support for multiple PCF instances to share data through ECS buckets and namespaces\n\n## Build\n\nTo build, make sure you have a Java 11 runtime environment, and use Gradle.\n\n```\n# The ecs-simulator starts automatically when the test-suite is run\n./gradlew test\n\n# Then build the project\n./gradlew assemble\n```\n\n## Configuration\n\n### ECS Configuration\n\nThe service broker supports a number of configuration parameters that are available as environment variables or through\nSpring configuration.  All parameters are prefixed with the `broker-config.` string.  Default parameters point to the\nbundled ECS simulator.  For more info, check the\n[example config](https://github.com/emcecs/ecs-cf-service-broker/blob/master/src/test/resources/application-test.yml).\n\n| Parameter          | Default Value  | Required | Description                                        |\n| ------------------ |:--------------:| -------- | -------------------------------------------------- |\n| managementEndpoint | -              | true     | ECS management API URI (https://\u003cip\u003e:\u003cport\u003e)       |\n| replicationGroup   | -              | true     | Name (not ID) of replication group                 |\n| namespace          | -              | true     | Default ECS Namespace name                         |\n| baseUrl            | -              | false    | ECS Base URL name (DefaultBaseUrl is picked if value is not provided) | \n| useSsl             | false          | false    | Whether to use HTTPS for object endpoint connections (when base url is provided) | \n| objectEndpoint     | -              | false    | Override endpoint for the object endpoint          |\n| repositoryEndpoint | objectEndpoint | false    | Override endpoint for broker metadata storage      |\n| repositoryUser     | user           | false    | Username to authenticate to intenal bucket         |\n| username           | root           | false    | Username to authenticate to ECS management API     |\n| password           | ChangeMe       | false    | Password to authenticate to ECS management API     |\n| repositoryBucket   | repository     | false    | Internal bucket for metadata storage               |\n| prefix             | ecs-cf-broker- | false    | Prefix to prepend to ECS buckets and users         |\n| brokerApiVersion   | *              | false    | Version of the CF broker API to advertise          |\n| certificate        | -              | false    | ECS SSL public key cert file                       |\n| ignoreSslValidation | -             | false    | Allows to ignore SSL validation errors             |\n\nIf running within IDE, you can set the environment variables within \"Run Configuration\".\n\n### Objectscale Configuration\n\nWhen connecting to Objectscale, Service Broker requires different set of parameters:  \n\n| Parameter          | Default Value  | Required | Description                                        |\n| ------------------ |:--------------:| -------- | -------------------------------------------------- |\n| apiType            | objectscale    | true     | Storage API type (ECS or Objectscale)              |\n| username           | root           | true     | Objectscale management user name                   |\n| password           | ChangeMe       | true     | Objectscale management user password               |\n| objectscaleId      | -              | true     | Objectscale ID                                     |\n| objectscaleGatewayEndpoint  | -     | true     | Objectscale Gateway endpoint url                   |\n| objectstoreId      | -              | true     | Objectstore ID                                     |\n| objectstoreName    | -              | true     | Objectstore name                                   |\n| objectstoreManagementEndpoint | -   | true     | Objectstore management endpoint url                |\n| objectstoreS3Endpoint   | -         | true     | Objectstore S3 endpoint url                        |\n| accountId          | -              | true     | Account ID                                         |\n| accessKey          | -              | true     | Access key of a pre-created IAM user with S3 access |\n| secretKey          | -              | true     | Secret key of a pre-created IAM user with S3 access |\n| repositoryBucket   | repository     | false    | Internal bucket name for metadata storage          |\n| prefix             | ecs-cf-broker- | false    | Prefix to prepend to ECS buckets and users         |\n| brokerApiVersion   | *              | false    | Version of the CF broker API to advertise          |\n| certificate        | -              | false    | ECS SSL public key cert file                       |\n| ignoreSslValidation | -             | false    | Allows to ignore SSL validation errors             |   \n\n### The ECS Simulator\n\nThe ECS Simulator is helpful for ensuring that the application starts up, without actually having an ECS cluster\naccessible.  You'll find the\n[simulator in the test-suite](https://github.com/emcecs/ecs-cf-service-broker/tree/master/src/test/java/com/emc/ecs/management/simulator/Server.java).\nJust run this file as a Java program, and the broker will be able to initialize against the\n\"mocked\" API calls.\n\nYou can also start the simulator from the command-line:\n\n```yaml\n./gradlew simulate\n```\n\nThe simulator is also useful when running certain JUnit tests outside of the TestSuite provided.  To run an individual test that references the ECS API, just start the simulator, and then execute a test. \n\n### Self-signed certificates\n\nTo load a self-signed certificate for an ECS system, just provide a PEM formatted certificate file named `localhost.pem`\ninto the `src/main/resources` directory.\n\n## Deploying your broker\n\nFollow the [documentation](http://docs.cloudfoundry.org/services/managing-service-brokers.html) to register the broker\nto Cloud Foundry.\n\n#### Install using the PCF Tile\n\nDownload the [ECS Service Broker tile from Broadcom Support portal](https://support.broadcom.com/group/ecx/productdownloads?subfamily=ECS%20Service%20Broker%20for%20VMware%20Tanzu), and\nand follow the [installation instructions](https://emcecs.github.io/ecs-broker-tile/installing.html) found there.\n\n#### End-user Broker Usage\n\nCloud Foundry end-users can create and bind services to their applications using the `cf` CLI application.\n\n```\ncf create-service ecs-bucket unlimited my_bucket\n```\n\nThis creates a bucket of the `ecs-bucket` service with the `unlimited` plan and the name: `my-bucket`.  To bind\nan application to this bucket:\n\n```\ncf bind-service my-app my-bucket\n```\n\nThe default will give `my-app` \"full control\" of the bucket.  To give a reduced set of permissions, you can provide\nadditional configuration parameters with the `-c` flag:\n\n```\ncf bind-service my-app my-bucket -c '{\"permissions\": [\"read\", \"write\"]}'\n```\n\nValid permissions include:\n * read\n * read_acl\n * write\n * write_acl\n * execute\n * full_control\n * privileged_write\n * delete\n * none\n\nService plan can be changed using `update-service` command. Only a subset of service attributes are applied:\n* Buckets: quota and default retention\n* Namespaces: bucket quota, retention policies, ADO, compliance and domain group admins \n\nMore detailed instructions for using the broker in Cloud Foundry can be found in the\n[ECS broker documentation](https://emcecs.github.io/ecs-broker-tile/usage.html).\n\n### Broker Catalog and Plan Configuration\n\nThe service broker catalog can be configured through YAML based configuration.  You can create the file manually,\nvia PCF or another build tool.  Just add a `catalog` section to the `src/main/resources/application.yml` file:\n\nThe following feature flags are supported by the bucket \u0026 namespace. All parameters are optional, and can be set at the service or plan level in the `service-settings` block. Parameters are observed with the following precedence:  service-definition (in the catalog), plan and then in command-line parameters.\n\n| Resource          | Parameter            | Default | Type     | Description                                                                   |\n|:------------------|:---------------------|:-------:| :------- |:------------------------------------------------------------------------------|\n| bucket            | namespace            |  false  | String   | Namespace where bucket will be created                                        |\n| bucket            | replication-group    |  false  | String   | Replication group for bucket                                                  |\n| bucket            | encrypted            |  false  | Boolean  | Enable encryption of bucket                                                   |\n| bucket            | access-during-outage |  false  | Boolean  | Enable potentially stale data during outage                                   |\n| bucket            | ado-read-only        |  false  | Boolean  | Only allow read access during outage (requires ADO to be enabled)             |\n| bucket            | file-accessible      |  false  | Boolean  | Enable file-access (NFS, HDFS) for bucket                                     |\n| bucket            | head-type            |   s3    | String   | Specify object type (s3, swift) for bucket                                    |\n| bucket            | default-retention    |    -    | Int      | Number of seconds to prevent object deletion/modification                     |\n| bucket            | quota*               |   -     | JSON Map | Quota applied to bucket                                                       |\n| bucket            | remote_connection*** |    -    | JSON Map | Remote connection details for previously created bucket                       |\n| bucket            | name                 |    -    | String   | String to add to bucket name after the broker prefix (prefix-name-id)         |\n| bucket            | tags****             |    -    | JSON List| List of tags that are key-value pairs associated with a bucket                |\n| bucket            | search-metadata***** |    -    | JSON List| List of search metadata that are used for bucket indexing                     |\n| bucket binding    | base-url             |    -    | String   | Base URL name for object URI                                                  |\n| bucket binding    | permissions          |    -    | JSON List| List of permissions for user in bucket ACL                                    |\n| bucket binding    | path-style-access    |  true   | Boolean  | Use path style access for S3 URL, the alternative is to use host style access |\n| bucket binding    | name                 |    -    | String   | String to add to binding name after the broker prefix (prefix-name-id)        |\n| namespace         | replication-group    |  false  | String   | Replication group of namespace                                                |\n| namespace         | domain-group-admins  |    -    | JSON List| List of domain admins to be added to namespace                                |\n| namespace         | encrypted            |  false  | Boolean  | Enable encryption of namespace                                                |\n| namespace         | compliance-enabled   |  false  | Boolean  | Enable compliance adhearance of retention                                     |\n| namespace         | access-during-outage |  false  | Boolean  | Enable potentially stale data during outage                                   |\n| namespace         | default-bucket-quota |   -1    | Integer  | Default quota applied to bucket (-1 for none)                                 |            \n| namespace         | quota*               |    -    | JSON Map | Quota applied to namespace                                                    |            \n| namespace         | retention**          |    -    | JSON Map | Retention policies applied to namespace                                       |\n| namespace         | default-retention    |    -    | Int      | Number of seconds to prevent object deletion/modification                     |\n| namespace         | remote_connection*** |    -    | JSON Map | Remote connection details for previously created namespace                    |\n| namespace         | name                 |    -    | String   | String to add to namespace name after the broker prefix (prefix-name-id)      |\n| namespace binding | base-url             |    -    | String   | Base URL name for object URI                                                  |\n| namespace binding | use-ssl              |  false  | Boolean  | Use SSL for object endpoint                                                   |\n| namespace binding | name                 |    -    | String   | String to add to binding name after the broker prefix (prefix-name-id)        |\n\nNOTE: When working with Objectstore, Service Broker does not support Namespace services!\n\n\\* Quotas are defined with the following format: `{quota: {limit: \u003cint\u003e, warn: \u003cint\u003e}}`\n\n\\*\\* Retention policies are defined with the following format: `{retention: {\u003cpolicy name\u003e: \u003cseconds retained\u003e}}` \n\n\\*\\*\\* Remote connection details are describe below in _remote connections_\n\n\\*\\*\\*\\* Tags are defined with the following format: `{tags:[{\"key\": \u003cstr\u003e,\"value\": \u003cstr\u003e}, ...]}`.\nDetails about bucket tagging could be found below in _Bucket Tags_ section \n\n\\*\\*\\*\\*\\* List of search metadata is defined with following format: `{\"search_metadata\": [{\"type\": \u003cstr\u003e,\"name\": \u003cstr\u003e,\"datatype\": \u003cstr\u003e\u003e}, ...]}` \nDetails about search metadata definition are described below in _Search metadata_ section \n\nFor more info, check the\n[example config](https://github.com/emcecs/ecs-cf-service-broker/blob/master/src/test/resources/application-test.yml).\n\n### Broker security\n\nBy default the broker is secured with a dynamically generated password ala Spring Security. In order to register with\nCloud Foundry, a user would need to view the output logs, and grab the password with each restart.\n\nTo statically set a broker password, simple add the following to the `src/main/resources/application.yml` file:\n\n```yaml\n...\nsecurity:\n  user:\n    password: \u003cpassword\u003e\n...\n```\n### Volume Services\n\nVolume services allow bucket contents to be mounted into Cloud Foundry application containers as a file system.  This\nenables applications to interact with bucket contents as though they are ordinary files.\n\n#### Prerequisites\nThere are a few prerequisites you must set up in your Cloud Foundry deployment in order to take advantage of volume\n services.\n\n1) In your Cloud Foundry deployment, the property `cc.volume_services_enabled` must be set to `true`.\n\n2) The `nfsv3driver` job from [nfs-volume-release]() must be running and colocated on your diego cells.  See the README for details.\n\n3) The `ecs-bucket` service in your catalog must be configured to require volume mounts.  The example application.yml\nprovided in this repo is already set up with this property:\n\n```yaml\n...\ncatalog:\n  services:\n    - name: ecs-file-bucket\n      type: bucket\n      requires:\n      - volume_mount\n...\n```\n\n#### File system enabled service instances\nIn order to use volume services once the prerequisites above are satisfied, your service instances must be created with\n`file-accessible` set to true.  This can be set either in the service or service plan exposed from your service catalog,\nor manually by the user during service instance creation:\n\n```bash\ncf create-service ecs-bucket 5gb mybucket -c '{\"file-accessible\":true}'\n```\n\nBuckets created in this manner will have file system access enabled, and file shares exposed.  When application bindings\nare created, new bucket users will be created to correspond to those bindings, and uid mappings will ensure that traffic\ncoming from the application operates as the correct user.\n\nInformation provided in response of binding creation request includes s3 URL, secret credentials and user Unix ID.\n\nThe application mount point defaults to `/var/vcap/data/{binding-id-guid}` so that is where the file system will appear\nwithin the application container.  You can find this path and corresponding uid from within your application programmatically \nby parsing it from the VCAP_SERVICES environment variable.  If you prefer to have the volume mounted to a specific path \nin your application container, you can use the `mount` key from within your bind configuration:\n\n```bash\ncf bind-service myapp mybucket -c '{\"mount\":\"/var/something\"}'\n```\n\n### Remote Connections to Service Instances\n\nA common use case for object storage, in general, and ECS specifically, is to share\ndata across data-centers, platforms, Cloud Foundry instances, or clouds using a shared\nobject-storage bucket. The ECS Service Broker supports with with a specialized feature,\ncalled _\"remote connections\"_. This features allows you to share services across Cloud\nFoundry, or other service-broker-enabled platforms securely, and without user-provided-services,\nwhich can be error-prone.\n\nTo share a bucket or namespaces between Cloud Foundry instances, use the following steps:\n\n1. Create the ECS service at the original site or CF instance:\n\n```bash\npcf-1$ cf create-service ecs-bucket 5gb mybucket\n```\n\nAfter creating the services, you may bind it to local applications as described above.\n\n2. Create a \"remote connection\" service-key\n\n```bash\npcf-1$ cf create-service-key mybucket pcf2Key -c '{\"remote_connection\": true}'\n```\n\n3. List the remote connection service key details:\n\n```bash\npcf-1$ cf service-key mybucket pcf2Key\nGetting key pcf2Key for service instance mybucket as user...\n{\n  \"accessKey\": \"...\",\n  \"instanceId\": \"...\",\n  \"secretKey\": \"...\"\n}\n```\n\nThese service keys can be used by administrators to connect the service instance to any\nnumber of Cloud Foundry instances or other service broker enabled platforms, such as\nPivotal Container Service.\n\n4. Connect to a separate Cloud Foundry instance, and create the remote instance of the\nservice:\n\n```bash\npcf-2$ cf create-service ecs-bucket 5gb mybucket -c '{\"remote_connection\": {\"accessKey\": \"...\", \"instanceId\": \"...\", \"secretKey\": \"...\"}}'\n```\n\nWhen using multiple service-brokers, ensure that the service and plan definitions\n(defined in the broker catalog) are the same between the deployed brokers. If the catalog\ndefinitions differ between the two, the broker will return an error to the user, and\ndecline to remotely connect the service instance.\n\nAt this point, the service is created at the remote instance, and can be bound to\napps.\n\n#### Service Deletions with Remote Connections\n\nWhen deleting a service instance through a Cloud Foundry command such as:\n\n```bash\n$ cf delete-service mybucket\n```\n\nThe broker will only delete the actual service instance (bucket or namespace) once all\nremote connections have been removed. Prior to that, the service instance will be removed\nfrom the Cloud Foundry database, and the remote connection will be removed from the ECS\nbroker metadata for that instance.\n\n#### Changing Plans with Remote Connections\n\nChanging/upgrading plans with remote connections is currently disabled, as it would leave\none of the Cloud Foundry instances out of date.\n\n### Search Metadata\n\nSearch metadata is used for ECS Object Storage bucket indexing and allows to lookup objects without iterating through bucket contents.\n\nMetadata fields number is limited to 30, and must be defined when bucket is created.\n_Note:_ plan changes will disable metadata search if plans defines different metadata field sets! \n\nEach metadata field definition consists of three fields: type, name and datatype.\n\n```yaml\n...\nsearch-metadata: \n- type: \u003ctype\u003e\n  name: \u003cname\u003e\n  datatype: \u003cdatatype\u003e\n...\n```\nThere are two types of search metadata provided in the ECS buckets: _System_ and _User_.\n\n#### System search metadata\n\nECS Documentation provides following system metadata:\n\n| Name (Alias)    | Data Type | Description                                           |\n| :-------------- | :---------| :---------------------------------------------------- |\n| ObjectName      | String    |  Name of the object.                                  |\n| Owner           | String    |  Identify the owner of the object.                    |\n| Size            | Integer   |  Size of the object.                                  |\n| CreateTime      | DateTime  |  Time at which the object was created.                |\n| LastModified    | DateTime  |  Time and date at which the object was last modified. |\n\nSystem search metadata provided in `service-settings` block should be tagged with _System_ type, existing name and corresponding datatype.\n\n#### User search metadata\n\nUser defined search metadata should be tagged with _User_ type, existing datatype and name starting with prefix `x-amz-meta-`.\nPrefix will be added to field name if it is not already there. \n\n#### Metadata Search Datatypes\nWhen writing metadata to objects, client should provide data in format appropriate for each fields' datatype.\nECS supports 4 types of datatype: _String_, _Integer_, _DateTime_ and _Decimal_.\n\n| Datatype | Description |\n|:---------|:------------|\n| String    | Search comparisons are done over plaintext. |\n| Integer   | String should contain only digits, and is converted to integer in search comparisons. |\n| Decimal   | Decimal value with \".\" character treates as decimap point. |\n| Datetime  | Expected string format is _yyyy-MM-ddTHH:mm:ssZ_ |\n\n#### Example\n\nExample of `service-settings` block part describing Search Metadata is presented in the listing:\n\n```yaml\n...\nsearch-metadata:\n- type: System\n  name: Expiration\n  datatype: DateTime\n- type: System\n  name: Size\n  datatype: Integer\n- type: User\n  name: x-amz-meta-my-meta\n  datatype: Decimal\n...\n```\n\n### Reclaim policies while deleting bucket service instances\n\nReclaim policy decides what happens when a bucket service instance is deleted.\n\nBy default reclaim policy is set to `Fail`. Below is a list of supported reclaim policies:\n\n| Reclaim Policy | Description                                                                           |\n|:---------------|:--------------------------------------------------------------------------------------|\n| Fail           | Attempt to delete bucket but fail with error if the bucket isn't empty                |\n| Delete         | Delete all objects and versions (if versioning is enabled) before deleting the bucket |\n| Detach         | Delete the service instance but leave the bucket as is                                |\n\n#### Override the reclaim policy\n\nReclaim policy can be overridden while creating or updating the service instance by providing additional configuration parameters in following format:\n\n```json\n{\n  \"reclaim-policy\":\"Delete\",\n  \"allowed-reclaim-policies\":\"Delete,Detach,Fail\"\n}\n```\n\n### Bucket Tags\n\nWhen specified in service definition or in request parameters, tags are defined with the following format: `{tags:[{\"key\": \u003cstr\u003e,\"value\": \u003cstr\u003e}, ...]}`\n\nTag value could contain a special placeholder, which will be replaced by request context value.\nSupported placeholder values are listed below:\n  \n| Placeholder       | Platform                  | Property          | Comment |\n|:------------------|---------------------------|:------------------|---------|\n| $CF_ORG_GUID      | Cloud Foundry             | organization_guid | The GUID of the organization that a Service Instance is associated with        |\n| $CF_ORG_NAME      | Cloud Foundry             | organization_name | The name of the organization that a Service Instance is associated with.         |\n| $CF_SPACE_GUID    | Cloud Foundry             | space_guid        | The GUID of the space that a Service Instance is associated with.        |\n| $CF_SPACE_NAME    | Cloud Foundry             | space_name        | The name of the space that a Service Instance is associated with.        |\n| $CF_INSTANCE_NAME | Cloud Foundry, Kubernetes | instance_name     | The name of the Service Instance.        |\n| $CTX_NAMESPACE    | Kubernetes                | namespace         | The name of the Kubernetes namespace in which the Service Instance will be visible.        |\n| $CTX_CLUSTER_ID   | Kubernetes                | clusterid         | The unique identifier for the Kubernetes cluster from which the request was sent.        | \n\nFor additional details, see Open Service Broker API documentation for request context object: \nhttps://github.com/openservicebrokerapi/servicebroker/blob/master/profile.md#context-object\n\n####  Example\nTag Placeholders usage example:\n\n```json\n{ \"tags\":\n    [\n        {\"key\":\"org_guid\",\"value\":\"$CF_ORG_GUID\"},\n        {\"key\":\"org_name\",\"value\":\"$CF_ORG_NAME\"},\n        {\"key\":\"org_space\",\"value\":\"$CF_SPACE_GUID\"},\n        {\"key\":\"space_name\",\"value\":\"$CF_SPACE_NAME\"},\n        {\"key\":\"instance_name\",\"value\":\"$CF_INSTANCE_NAME\"}\n    ]\n}\n```\n## Testing\n\nLocal test suite can be run with either a live ECS platform, or using the included simulator.  Configuration variables\ncan be found and/or changed via the\n[EcsActionTest class](https://github.com/emcecs/ecs-cf-service-broker/blob/master/src/test/java/com/emc/ecs/common/EcsActionTest.java).\n\nYou can then run the test-suite with gradle:\n\n```\n./gradlew test\n```\n\n## TODOs\n\nUp to date tasks are on our [Github issues](https://github.com/emcecs/ecs-cf-service-broker/issues) page.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femcecs%2Fecs-cf-service-broker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femcecs%2Fecs-cf-service-broker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femcecs%2Fecs-cf-service-broker/lists"}