{"id":20111420,"url":"https://github.com/openstack/charm-swift-proxy","last_synced_at":"2025-08-21T02:07:42.160Z","repository":{"id":66174702,"uuid":"52858929","full_name":"openstack/charm-swift-proxy","owner":"openstack","description":"Juju Charm - Swift proxy. Mirror of code maintained at opendev.org.","archived":false,"fork":false,"pushed_at":"2025-04-22T09:02:19.000Z","size":2861,"stargazers_count":16,"open_issues_count":0,"forks_count":14,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-06T10:45:46.824Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://opendev.org/openstack/charm-swift-proxy","language":"Python","has_issues":false,"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/openstack.png","metadata":{"files":{"readme":"README.Swift_ring_management","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}},"created_at":"2016-03-01T07:57:22.000Z","updated_at":"2025-04-22T09:02:24.000Z","dependencies_parsed_at":"2023-09-28T14:50:49.982Z","dependency_job_id":"9dbb1c22-a8a0-46eb-a575-436caa402d6d","html_url":"https://github.com/openstack/charm-swift-proxy","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/openstack/charm-swift-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-swift-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-swift-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-swift-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-swift-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openstack","download_url":"https://codeload.github.com/openstack/charm-swift-proxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-swift-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271415496,"owners_count":24755639,"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-08-21T02:00:08.990Z","response_time":74,"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-11-13T18:16:01.587Z","updated_at":"2025-08-21T02:07:42.128Z","avatar_url":"https://github.com/openstack.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"== Swift Charm Ring Management ==\n\nSwift uses rings and builders to manage data distribution across storage devices\nin the cluster. More information on this can be found in the upstream\ndocumentation [0].\n\nIn order to function correctly, the rings and builders need to be the same\nacross all swift proxy units and the rings need to be distributed to storage\nunits. The swift proxy charm achieves this by electing a leader unit and having\nthat unit manage ring and builder files by updating them when new nodes or\ndevices are added to the cluster and distributing those files to other nodes in\nthe cluster.\n\nSince over time the leader may change, rings syncs use acknowledgements from\npeer units to determine whether a synchronisation has completed. This way if\nthe leader switches to another unit, we are able to know that the new leader\nhas up-to-date ring and builder files.\n\nWhen new devices are added to storage units, the leader proxy unit is notified\nand adds them to the ring. Once complete, the leader unit will broadcast a\nnotification that rings and builders are ready to be synced across the cluster\n(only proxy units get builders) and each unit in the cluster should then begin\nsyncing from the leader and acknowledge receipt.\n\nDuring synchronisation, swift-proxy services are stopped in order to avoid\nhaving requests being handled while rings are being updated.\n\n\n[0] http://docs.openstack.org/developer/swift/overview_ring.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fcharm-swift-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenstack%2Fcharm-swift-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fcharm-swift-proxy/lists"}