Skip to content

opentelekomcloud/gophertelekomcloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3,833 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GopherTelekomCloud: a OpenTelekomCloud SDK for Golang

Go Report Card Zuul Gated LICENSE

GopherTelekomCloud is a T-Cloud Public (former OpenTelekomCloud) clouds Go SDK. GopherTelekomCloud is based on Gophercloud which is an OpenStack Go SDK and has a great design. GopherTelekomCloud has added and removed some features to support OpenTelekomCloud.

Useful links

How to install

Installation with modern Go and go mod is really simple:

Just run go mod download to install all dependencies.

Getting started

Credentials

Because you'll be hitting an API, you will need to retrieve your T-Cloud Public (former OpenTelekomCloud) credentials and store them using standard Openstack approaches: either clouds.yaml file (recommended) or environment variables.

You will need to retrieve the following:

  • domain name
  • username
  • password
  • project name/id (for most of the services)
  • a valid IAM identity URL

Authentication

Once you have access to your credentials, you can begin plugging them into this sdk. The next step is authentication, and this is handled by a base "Provider" struct. To get one, you can either pass in your credentials explicitly, or tell Golangsdk to use environment variables:

Option 1: Pass in the values yourself

opts := golangsdk.AuthOptions{
    IdentityEndpoint: "https://iam.eu-de.otc.t-systems.com/v3",
    Username:         "{username}",
    Password:         "{password}",
}
client, err := openstack.AuthenticatedClient(opts)

Option 2: Use a utility function to retrieve cloud configuration from env variables and configuration files

env := openstack.NewEnv("OS_") // use OS_ prefixed env variables
client, err := env.AuthenticatedClient()

The ProviderClient is the top-level client that all of your T-Cloud Public (former OpenTelekomCloud) services derive from. The provider contains all the authentication details that allow your Go code to access the API - such as the base URL and token ID.

Provision a rds instance

Once we have a base Provider, we inject it as a dependency into each T-Cloud Public (former OpenTelekomCloud) service. In order to work with the rds API, we need a rds service client; which can be created like so:

client, err := openstack.NewRdsServiceV1(provider, golangsdk.EndpointOpts{
	Region: utils.GetRegion(ao),
})

We then use this client for any rds API operation we want. In our case, we want to provision a rds instance - so we invoke the Create method and pass in the name and the flavor ID (database specification) we're interested in:

import "github.com/opentelekomcloud/gophertelekomcloud/openstack/rds/v3/instances"

instance, err := instances.Create(client, instances.CreateOpts{
	Name:      "My new rds instance!",
	FlavorRef: "flavor_id",
})

The above code sample creates a new rds instance with the parameters, and embodies the new resource in the instance variable (ainstances.Instance struct).

Advanced Usage

Have a look at the FAQ for some tips on customizing the way Golangsdk works.

Backwards-Compatibility Guarantees

None. Vendor it and write tests covering the parts you use.

Contributing

See the contributing guide.

Help and feedback

If you're struggling with something or have spotted a potential bug, feel free to submit an issue to our bug tracker.

About

GopherTelekomCloud is an T Cloud Public (OpenTelekomCloud) clouds Go SDK

Resources

License

Contributing

Stars

22 stars

Watchers

5 watching

Forks

Contributors

Languages