{"id":13615824,"url":"https://github.com/gophercloud/gophercloud","last_synced_at":"2026-02-28T16:33:12.623Z","repository":{"id":36368285,"uuid":"40673116","full_name":"gophercloud/gophercloud","owner":"gophercloud","description":"Gophercloud: an OpenStack SDK for Go","archived":false,"fork":false,"pushed_at":"2026-02-12T16:35:20.000Z","size":13921,"stargazers_count":980,"open_issues_count":164,"forks_count":583,"subscribers_count":32,"default_branch":"main","last_synced_at":"2026-02-12T17:46:21.113Z","etag":null,"topics":["go","openstack","sdk"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/github.com/gophercloud/gophercloud/v2","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gophercloud.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","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":"2015-08-13T17:44:17.000Z","updated_at":"2026-02-12T15:41:59.000Z","dependencies_parsed_at":"2023-07-14T00:47:57.946Z","dependency_job_id":"a04683e2-2b01-4b1e-a961-2f7c49f896d1","html_url":"https://github.com/gophercloud/gophercloud","commit_stats":{"total_commits":3985,"total_committers":345,"mean_commits":11.55072463768116,"dds":0.8271016311166876,"last_synced_commit":"c697dbb84b05feb3ccc8aa0e422306c205baf1de"},"previous_names":["gophercloud/openstack"],"tags_count":62,"template":false,"template_full_name":null,"purl":"pkg:github/gophercloud/gophercloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gophercloud%2Fgophercloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gophercloud%2Fgophercloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gophercloud%2Fgophercloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gophercloud%2Fgophercloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gophercloud","download_url":"https://codeload.github.com/gophercloud/gophercloud/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gophercloud%2Fgophercloud/sbom","scorecard":{"id":352308,"data":{"date":"2025-08-11","repo":{"name":"github.com/gophercloud/gophercloud","commit":"7c53a819fccd4ebca058e8e0dc72e3c19f87d91e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.4,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":0,"reason":"dangerous workflow patterns detected","details":["Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/label-pr.yaml:13"],"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yaml:10","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yaml:11","Info: jobLevel 'contents' permission set to 'read': .github/workflows/label-pr.yaml:83","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/unit.yaml:10","Info: jobLevel 'contents' permission set to 'read': .github/workflows/unit.yaml:11","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/unit.yaml:40","Warn: no topLevel permission defined: .github/workflows/backport.yaml:1","Warn: no topLevel permission defined: .github/workflows/check-pr-labels.yaml:1","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yaml:1","Warn: no topLevel permission defined: .github/workflows/ensure-labels.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-baremetal.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-basic.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-blockstorage.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-compute.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-containerinfra.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-dns.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-fwaas_v2.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-identity.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-image.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-keymanager.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-loadbalancer.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-messaging.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-networking.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-objectstorage.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-orchestration.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-placement.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-sharedfilesystems.yaml:1","Warn: no topLevel permission defined: .github/workflows/functional-workflow.yaml:1","Warn: no topLevel permission defined: .github/workflows/label-issue.yaml:1","Warn: no topLevel permission defined: .github/workflows/label-pr.yaml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/lint.yaml:6","Info: topLevel 'contents' permission set to 'read': .github/workflows/unit.yaml:6"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ensure-labels.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/ensure-labels.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ensure-labels.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/ensure-labels.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-baremetal.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-baremetal.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-baremetal.yaml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-baremetal.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-baremetal.yaml:102: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-baremetal.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-basic.yaml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-basic.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-basic.yaml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-basic.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-basic.yaml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-basic.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-blockstorage.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-blockstorage.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-blockstorage.yaml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-blockstorage.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-blockstorage.yaml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-blockstorage.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-compute.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-compute.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-compute.yaml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-compute.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-compute.yaml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-compute.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-containerinfra.yaml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-containerinfra.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-containerinfra.yaml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-containerinfra.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-containerinfra.yaml:97: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-containerinfra.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-dns.yaml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-dns.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-dns.yaml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-dns.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-dns.yaml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-dns.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-fwaas_v2.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-fwaas_v2.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-fwaas_v2.yaml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-fwaas_v2.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-fwaas_v2.yaml:88: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-fwaas_v2.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-identity.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-identity.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-identity.yaml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-identity.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-identity.yaml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-identity.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-image.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-image.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-image.yaml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-image.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-image.yaml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-image.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-keymanager.yaml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-keymanager.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-keymanager.yaml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-keymanager.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-keymanager.yaml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-keymanager.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-loadbalancer.yaml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-loadbalancer.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-loadbalancer.yaml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-loadbalancer.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-loadbalancer.yaml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-loadbalancer.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-messaging.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-messaging.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-messaging.yaml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-messaging.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-messaging.yaml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-messaging.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-networking.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-networking.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-networking.yaml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-networking.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-networking.yaml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-networking.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-objectstorage.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-objectstorage.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-objectstorage.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-objectstorage.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-objectstorage.yaml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-objectstorage.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-orchestration.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-orchestration.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-orchestration.yaml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-orchestration.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-orchestration.yaml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-orchestration.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-placement.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-placement.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-placement.yaml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-placement.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-placement.yaml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-placement.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-sharedfilesystems.yaml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-sharedfilesystems.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-sharedfilesystems.yaml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-sharedfilesystems.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-sharedfilesystems.yaml:89: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-sharedfilesystems.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-workflow.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-workflow.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-workflow.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-workflow.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/functional-workflow.yaml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/functional-workflow.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/label-pr.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/label-pr.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/label-pr.yaml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/label-pr.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/label-pr.yaml:87: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/label-pr.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yaml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/lint.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/lint.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit.yaml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/unit.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/unit.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit.yaml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/unit.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/unit.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/gophercloud/gophercloud/unit.yaml/main?enable=pin","Info:   0 out of  67 GitHub-owned GitHubAction dependencies pinned","Info:  23 out of  26 third-party GitHubAction dependencies pinned","Info:   1 out of   1 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":9,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 28 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T08:38:54.517Z","repository_id":36368285,"created_at":"2025-08-18T08:38:54.517Z","updated_at":"2025-08-18T08:38:54.517Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29942920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T13:49:17.081Z","status":"ssl_error","status_checked_at":"2026-02-28T13:48:50.396Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["go","openstack","sdk"],"created_at":"2024-08-01T20:01:18.590Z","updated_at":"2026-02-28T16:33:12.613Z","avatar_url":"https://github.com/gophercloud.png","language":"Go","readme":"# Gophercloud: an OpenStack SDK for Go\n[![Coverage Status](https://coveralls.io/repos/github/gophercloud/gophercloud/badge.svg?branch=main)](https://coveralls.io/github/gophercloud/gophercloud?branch=main)\n\nGophercloud is a Go SDK for OpenStack.\n\nJoin us on kubernetes slack, on [#gophercloud](https://kubernetes.slack.com/archives/C05G4NJ6P6X). Visit [slack.k8s.io](https://slack.k8s.io) for an invitation.\n\n\u003e **Note**\n\u003e This branch contains the current stable branch of Gophercloud: `v2`.\n\u003e The legacy stable version can be found in the `v1` branch.\n\n## How to install\n\nReference a Gophercloud package in your code:\n\n```go\nimport \"github.com/gophercloud/gophercloud/v2\"\n```\n\nThen update your `go.mod`:\n\n```shell\ngo mod tidy\n```\n\n## Getting started\n\n### Credentials\n\nBecause you'll be hitting an API, you will need to retrieve your OpenStack\ncredentials and either store them in a `clouds.yaml` file, as environment\nvariables, or in your local Go files. The first method is recommended because\nit decouples credential information from source code, allowing you to push the\nlatter to your version control system without any security risk.\n\nYou will need to retrieve the following:\n\n* A valid Keystone identity URL\n* Credentials. These can be a username/password combo, a set of Application\n  Credentials, a pre-generated token, or any other supported authentication\n  mechanism.\n\nFor users who have the OpenStack dashboard installed, there's a shortcut. If\nyou visit the `project/api_access` path in Horizon and click on the\n\"Download OpenStack RC File\" button at the top right hand corner, you can\ndownload either a `clouds.yaml` file or an `openrc` bash file that exports all\nof your access details to environment variables. To use the `clouds.yaml` file,\nplace it at `~/.config/openstack/clouds.yaml`. To use the `openrc` file, run\n`source openrc` and you will be prompted for your password.\n\n### Gophercloud authentication\n\nGophercloud authentication is organized into two layered abstractions:\n* `ProviderClient` holds the authentication token and can be used to build a\n  `ServiceClient`.\n* `ServiceClient` specializes against one specific OpenStack module and can\n  directly be used to make API calls.\n\nA provider client is a top-level client that all of your OpenStack service\nclients derive from. The provider contains all of the authentication details\nthat allow your Go code to access the API - such as the base URL and token ID.\n\nOne single Provider client can be used to build as many Service clients as needed.\n\n**With `clouds.yaml`**\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\n\t\"github.com/gophercloud/gophercloud/v2/openstack\"\n\t\"github.com/gophercloud/gophercloud/v2/openstack/config\"\n\t\"github.com/gophercloud/gophercloud/v2/openstack/config/clouds\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\n\t// Fetch coordinates from a `cloud.yaml` in the current directory, or\n\t// in the well-known config directories (different for each operating\n\t// system).\n\tauthOptions, endpointOptions, tlsConfig, err := clouds.Parse()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Call Keystone to get an authentication token, and use it to\n\t// construct a ProviderClient. All functions hitting the OpenStack API\n\t// accept a `context.Context` to enable tracing and cancellation.\n\tproviderClient, err := config.NewProviderClient(ctx, authOptions, config.WithTLSConfig(tlsConfig))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Use the ProviderClient and the endpoint options fetched from\n\t// `clouds.yaml` to build a service client: a compute client in this\n\t// case. Note that the contructor does accept a `context.Context`\n\t// to resolve supported API microversions.\n\tcomputeClient, err := openstack.NewComputeV2(ctx, providerClient, endpointOptions)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// use the computeClient\n}\n```\n\n**With environment variables (`openrc`)**\n\nGophercloud can parse the environment variables set by running `source openrc`:\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"os\"\n\n\t\"github.com/gophercloud/gophercloud/v2\"\n\t\"github.com/gophercloud/gophercloud/v2/openstack\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\n\topts, err := openstack.AuthOptionsFromEnv()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tproviderClient, err := openstack.AuthenticatedClient(ctx, opts)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tcomputeClient, err := openstack.NewComputeV2(ctx, providerClient, gophercloud.EndpointOpts{\n\t\tRegion: os.Getenv(\"OS_REGION_NAME\"),\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// use the computeClient\n}\n```\n\n**Manually**\n\nYou can also generate a \"Provider\" by passing in your credentials\nexplicitly:\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\n\t\"github.com/gophercloud/gophercloud/v2\"\n\t\"github.com/gophercloud/gophercloud/v2/openstack\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\n\tproviderClient, err := openstack.AuthenticatedClient(ctx, gophercloud.AuthOptions{\n\t\tIdentityEndpoint: \"https://openstack.example.com:5000/v2.0\",\n\t\tUsername:         \"username\",\n\t\tPassword:         \"password\",\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tcomputeClient, err := openstack.NewComputeV2(ctx, providerClient, gophercloud.EndpointOpts{\n\t\tRegion: \"RegionName\",\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// use the computeClient\n}\n```\n\n### Provision a server\n\nWe can use the Compute service client generated above for any Compute API\noperation we want. In our case, we want to provision a new server. To do this,\nwe invoke the `Create` method and pass in the flavor ID (hardware\nspecification) and image ID (operating system) we're interested in:\n\n```go\nimport \"github.com/gophercloud/gophercloud/v2/openstack/compute/v2/servers\"\n\nfunc main() {\n    // [...]\n\n    server, err := servers.Create(context.TODO(), computeClient, servers.CreateOpts{\n        Name:      \"My new server!\",\n        FlavorRef: \"flavor_id\",\n        ImageRef:  \"image_id\",\n    }).Extract()\n\n    // [...]\n```\n\nThe above code sample creates a new server with the parameters, and returns a\n[`servers.Server`](https://pkg.go.dev/github.com/gophercloud/gophercloud/v2/openstack/compute/v2/servers#Server).\n\n## Supported Services\n\n|        **Service**       | **Name**         |             **Module**             | **1.x** | **2.x** |\n|:------------------------:|------------------|:----------------------------------:|:-------:|:-------:|\n|         Baremetal        |      Ironic      |        `openstack/baremetal`       |    ✔    |    ✔    |\n|  Baremetal Introspection | Ironic Inspector | `openstack/baremetalintrospection` |    ✔    |    ✔    |\n|       Block Storage      |      Cinder      |      `openstack/blockstorage`      |    ✔    |    ✔    |\n|        Clustering        |      Senlin      |       `openstack/clustering`       |    ✔    |    ✘    |\n|          Compute         |       Nova       |         `openstack/compute`        |    ✔    |    ✔    |\n|         Container        |        Zun       |        `openstack/container`       |    ✔    |    ✔    |\n| Container Infrastructure |      Magnum      |     `openstack/containerinfra`     |    ✔    |    ✔    |\n|         Database         |       Trove      |           `openstack/db`           |    ✔    |    ✔    |\n|            DNS           |     Designate    |           `openstack/dns`          |    ✔    |    ✔    |\n|         Identity         |     Keystone     |        `openstack/identity`        |    ✔    |    ✔    |\n|           Image          |      Glance      |          `openstack/image`         |    ✔    |    ✔    |\n|      Key Management      |     Barbican     |       `openstack/keymanager`       |    ✔    |    ✔    |\n|      Load Balancing      |      Octavia     |      `openstack/loadbalancer`      |    ✔    |    ✔    |\n|         Messaging        |       Zaqar      |        `openstack/messaging`       |    ✔    |    ✔    |\n|        Networking        |      Neutron     |       `openstack/networking`       |    ✔    |    ✔    |\n|      Object Storage      |       Swift      |      `openstack/objectstorage`     |    ✔    |    ✔    |\n\n## Advanced Usage\n\nHave a look at the [FAQ](./docs/FAQ.md) for some tips on customizing the way Gophercloud works.\n\n## Backwards-Compatibility Guarantees\n\nGophercloud versioning follows [semver](https://semver.org/spec/v2.0.0.html).\n\nBefore `v1.0.0`, there were no guarantees. Starting with v1, there will be no breaking changes within a major release.\n\nSee the [Release instructions](./RELEASE.md).\n\n## Contributing\n\nSee the [contributing guide](./.github/CONTRIBUTING.md).\n\n## Help and feedback\n\nIf you're struggling with something or have spotted a potential bug, feel free\nto submit an issue to our [bug tracker](https://github.com/gophercloud/gophercloud/issues).\n","funding_links":[],"categories":["Go","Platform/Framework/SDK/Language"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgophercloud%2Fgophercloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgophercloud%2Fgophercloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgophercloud%2Fgophercloud/lists"}