An independent high-level Go SDK for OpenStack, built on Gophercloud.
Connection, service facades, resource collections, and workflows provide consistent authentication, explicit name/ID references, pagination, waits, concrete request options, and preserved partial results. The SDK is under development; native API bindings and Python openstacksdk behavior coverage are tracked separately.
Requires Go 1.25 or later and Gophercloud v2.15.0. The module is github.com/JSYoo5B/go-openstacksdk. This project is independent of OpenStack, the OpenInfra Foundation, and Gophercloud; no affiliation, endorsement, or sponsorship is implied.
go get github.com/JSYoo5B/go-openstacksdk@latestConfigure authentication using standard OpenStack environment variables or a selected clouds.yaml cloud. The installation guide and connection configuration describe the available options.
package main
import (
"context"
"fmt"
sdk "github.com/JSYoo5B/go-openstacksdk"
"github.com/JSYoo5B/go-openstacksdk/resource"
)
func main() {
ctx := context.Background()
conn, err := sdk.Connect(ctx)
if err != nil { panic(err) }
service, err := conn.Compute(ctx)
if err != nil { panic(err) }
server, err := service.Servers.Find(ctx, resource.Name("example-server"))
if err != nil { panic(err) }
fmt.Println(server.ID, server.Status)
}This example performs authenticated reads. Create-server demonstrates explicit mutation inputs and partial results when a wait fails.
- Shared provider authentication, service caching, endpoint selection, TLS, and explicit or negotiated microversions.
- Generated Gophercloud facades with concrete options and SDK-owned request builders; SDK-owned APIs extend selected services absent from the pinned dependency.
- Resource collections with exact name matching, duplicate detection, missing-resource policies, context cancellation, lazy pagination, and resource-specific waits. Waits poll at a fixed interval by default; a per-call wait strategy selects a linear or exponential schedule with optional jitter.
- Parent scopes for child resources, quotas, metadata, and compound identities.
- Selected compute/network/storage/image workflows with ordered requests and partial-success evidence.
- Owned record APIs preserve declared views, actual wire values, raw bodies, headers, and status according to each operation's contract.
The SDK does not claim complete Python Resource, descriptor, session, cache, or cloud-helper equivalence. Supported inputs, accepted statuses, encoding profiles, ownership, and microversion behavior vary by operation. Mock HTTP and source-comparison tests do not establish authenticated cloud acceptance. Consult the support ledger, operation reviews, and current coverage.
- API reference and Python source inventory
- Design, identity lookup, listing, parent scopes, waits, and microversions
- Installation, testing, release criteria, and service priorities
make check
make smoke
make generatemake check covers licensing, vet, race tests, support-reference consistency, generated progress, and formatting. make smoke runs bounded HTTP fixture workflows. Generation reads pinned upstream source and may access the network. See testing for source-backed generator checks and reproducibility.
Project code is licensed under Apache-2.0. Preserve NOTICE, third-party notices, and the license texts. See licensing for component attribution and contribution rules.