https://github.com/selectel/dbaas-go
[Official] Go SDK for Managed Databases Service
https://github.com/selectel/dbaas-go
dbaas go official
Last synced: 10 months ago
JSON representation
[Official] Go SDK for Managed Databases Service
- Host: GitHub
- URL: https://github.com/selectel/dbaas-go
- Owner: selectel
- License: apache-2.0
- Created: 2021-05-17T08:24:12.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2025-07-21T10:31:54.000Z (11 months ago)
- Last Synced: 2025-07-21T12:27:18.307Z (11 months ago)
- Topics: dbaas, go, official
- Language: Go
- Homepage:
- Size: 99.6 KB
- Stars: 3
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dbaas-go: Go SDK for Selectel DBaaS
[](https://pkg.go.dev/github.com/selectel/dbaas-go/)
[](https://goreportcard.com/report/github.com/selectel/dbaas-go)
Package dbaas-go provides Go SDK to work with Selectel DBaaS
## Documentation
The Go library documentation is available at [go.dev](https://pkg.go.dev/github.com/selectel/dbaas-go).
## What this library is capable of
You can use this library to work with the following objects of the Selectel Managed Databases Service:
* acl
* available extension
* configuration parameter
* database
* datastore
* datastore type
* extension
* flavor
* grant
* logical replication slots
* prometheus metrics tokens
* topic
* user
## Getting started
### Instalation
You can install `dbaas-go` package via `go get` command:
```bash
go get github.com/selectel/dbaas-go
```
### Authentication
To work with the Selectel Managed Databases Service API you first need to:
* Create a Selectel account: [registration page](https://my.selectel.ru/registration).
* Create a project in Selectel Cloud Platform [projects](https://my.selectel.ru/vpc/projects).
* Retrieve a token for your project via API or [go-selvpcclient](https://github.com/selectel/go-selvpcclient).
### Endpoints
Selectel Managed Databases Service currently has the following API endpoint:
| URL | Region |
|-----------------------------------|--------|
| https://ru-1.dbaas.selcloud.ru/v1 | ru-1 |
| https://ru-2.dbaas.selcloud.ru/v1 | ru-2 |
| https://ru-3.dbaas.selcloud.ru/v1 | ru-3 |
| https://ru-7.dbaas.selcloud.ru/v1 | ru-7 |
| https://ru-8.dbaas.selcloud.ru/v1 | ru-8 |
| https://ru-9.dbaas.selcloud.ru/v1 | ru-9 |
| https://uz-1.dbaas.selcloud.ru/v1 | uz-1 |
| https://kz-1.dbaas.selcloud.ru/v1 | kz-1 |
You can also retrieve all available API endpoints from the Identity
catalog.
### Docs
You can use Godoc to view methods and signatures
```shell
go install golang.org/x/tools/cmd/godoc@latest
export PATH="$PATH:$HOME/go/bin/"
godoc -http=localhost:6060
```
View
http://localhost:6060/pkg/github.com/selectel/dbaas-go/
### Usage example
```go
package main
import (
"context"
"log"
"fmt"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/openstack"
"github.com/gophercloud/gophercloud/openstack/networking/v2/subnets"
"github.com/selectel/dbaas-go"
)
func main() {
// Token to work with Selectel Cloud project.
token := "TOKEN"
// DBaaS endpoint to work with.
endpoint := "https://ru-2.dbaas.selcloud.ru/v1"
openstackEndpoint := "https://api.selvpc.ru/identity/v3/"
openstackRegion := "ru-2"
// Initialize the DBaaS v1 client.
dbaasClient, err := dbaas.NewDBAASClient(token, endpoint)
if err != nil {
log.Fatal(err)
}
// Prepare empty context.
ctx := context.Background()
// Get available datastore types.
datastoreTypes, err := dbaasClient.DatastoreTypes(ctx)
if err != nil {
log.Fatal(err)
}
// Auth options for openstack to get all subnets.
devopts := gophercloud.AuthOptions{
IdentityEndpoint: openstackEndpoint,
TokenID: token,
}
provider, err := openstack.AuthenticatedClient(devopts)
if err != nil {
log.Fatal(err)
}
// Create a new network client.
networkClient, err := openstack.NewNetworkV2(provider, gophercloud.EndpointOpts{Region: openstackRegion})
if err != nil {
log.Fatal(err)
}
// Get a list of available subnets.
listOpts := subnets.ListOpts{
IPVersion: 4,
}
allPages, err := subnets.List(networkClient, listOpts).AllPages()
if err != nil {
log.Fatal(err)
}
allSubnets, err := subnets.ExtractSubnets(allPages)
if err != nil {
log.Fatal(err)
}
// Create options for a new datastore.
datastoreCreateOpts := dbaas.DatastoreCreateOpts{
Name: "go_cluster",
TypeID: datastoreTypes[0].ID,
NodeCount: 1,
SubnetID: allSubnets[0].ID,
Flavor: &dbaas.Flavor{Vcpus: 2, RAM: 4096, Disk: 32},
}
// Create a new datastore.
newDatastore, err := dbaasClient.CreateDatastore(ctx, datastoreCreateOpts)
if err != nil {
log.Fatal(err)
}
// Print datastores fields.
fmt.Printf("Created datastore: %+v\n", newDatastore)
}
```