{"id":15971246,"url":"https://github.com/dolph/ibm-cloud-account-pool","last_synced_at":"2025-09-02T12:48:21.495Z","repository":{"id":141850797,"uuid":"141179081","full_name":"dolph/ibm-cloud-account-pool","owner":"dolph","description":"A service for sharing access to IBM Cloud accounts ","archived":false,"fork":false,"pushed_at":"2018-07-20T21:14:57.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-04T15:52:28.171Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/dolph.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}},"created_at":"2018-07-16T18:40:15.000Z","updated_at":"2018-07-20T21:14:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"c8fa0ac2-b414-4d03-9c63-684daf1b761a","html_url":"https://github.com/dolph/ibm-cloud-account-pool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dolph/ibm-cloud-account-pool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dolph%2Fibm-cloud-account-pool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dolph%2Fibm-cloud-account-pool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dolph%2Fibm-cloud-account-pool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dolph%2Fibm-cloud-account-pool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dolph","download_url":"https://codeload.github.com/dolph/ibm-cloud-account-pool/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dolph%2Fibm-cloud-account-pool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273287604,"owners_count":25078570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-10-07T20:20:34.609Z","updated_at":"2025-09-02T12:48:16.481Z","avatar_url":"https://github.com/dolph.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IBM Cloud Account Pool\n\n[![Build Status](https://travis-ci.org/dolph/ibm-cloud-account-pool.svg?branch=master)](https://travis-ci.org/dolph/ibm-cloud-account-pool)\n\n`account-pool` is a web service for temporarily borrowing IBM Cloud accounts.\nIt works using an authenticated reservation system, where consumers can\nauthenticate themselves with `account-pool`, make a reservation request for a\nparticular type of cloud account, and a unique set of credentials will be\nreturned when a matching account is available. All reservations are\ntime-limited (but should be explicitly canceled ASAP for efficiency), and any\nresources in use after the reservation expires will be forcefully cleaned up.\n\n## Background\n\nIBM Cloud accounts carry strict quota limits, which makes automated testing\ndifficult (you need multiple accounts to test more than one deployment at a\ntime, for example). Generally, this means that test systems either need to be\nlimited to a single account (and therefore limited to running one test at a\ntime), or rotate through an array of predefined test accounts.\n\nThis project solves that limitation by allowing multiple test systems to share\na pool of single-use accounts. The solution is inspired by [OpenStack's\nnodepool](https://zuul-ci.org/docs/nodepool/).\n\n## Design\n\nThe system does not currently use an external datastore, and is designed to be\nrun as a single process. It does not currently support high availability.\nCredentials are loaded into the service at startup. Upon startup, accounts are\nverified and forcefully cleaned before making them available for reservation.\n\n## Workflow\n\n1. Obtain an API token for the service.\n\n2. Use the API token to create a reservation request for the type of cloud\n   account you need.\n\n3. Poll the reservation endpoint until credentials are available. An expiration\n   time for the reservation will be provided, as well.\n\n4. Use the credentials to consume IBM Cloud resources.\n\n5. Cancel the reservation when you're done with the cloud account. If the\n   reservation is not explicitly cancelled, it will be forcefully terminated at\n   the expiration time specified along with the credentials.\n\n## API\n\n### `GET /`\n\nReturns statistics about and status of the system. This request does not\nrequire authentication.\n\n### `POST /reservations`\n\nSuccessful requests returns a `HTTP 302 Found` redirect to a unique reservation\nURL, which can be polled until an account is available.\n\nQuery string parameters:\n\n- `token` (required): authentication token used to identify the consumer.\n\n- `duration` (optional): duration of the reservation request, in minutes.\n\n- `type` (optional): the type of account being requested (defaults to `free`),\n  but `lite` is also supported.\n\n### `GET /reservations/{reservation_id}`\n\nReturns the details of a reservation, include account credentials for the\nreservation (when available). While the reservation is pending, there will not\nbe an expiration for the reservation, and no credentials will be provided.\n\nQuery string parameters:\n\n- `token` (required): authentication token used to identify the consumer. The\n  token must be the same as the token used to create the reservation.\n\n### `DELETE /reservations/{reservation_id}`\n\nQuery string parameters:\n\n- `token` (required): authentication token used to identify the consumer. The\n  token must be the same as the token used to create the reservation.\n\n## Data model\n\nTokens:\n\n- ID\n\nAccounts:\n\n- ID\n- Credentials\n- Account Type\n- Expiration\n- Dirty\n\nRequests:\n\n- Token ID\n- Account Type\n- Duration\n- Expiration\n\nReservations:\n\n- Token ID\n- Account ID\n- Duration\n- Expiration\n\n## Recurring jobs\n\n- Clean up accounts after reservations expire.\n- Verify credentials.\n- Rotate credentials.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdolph%2Fibm-cloud-account-pool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdolph%2Fibm-cloud-account-pool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdolph%2Fibm-cloud-account-pool/lists"}