README ¶
Datera Golang SDK ================= Building -------- .. _here: http://golang.org/dl/ Requires Go 1.8+ You can download the latest version of Go here_ :: $ make Running Tests ------------- :: $ make test Getting Started --------------- .. code:: go import ( "fmt" udc "github.com/Datera/go-udc/pkg/udc" dsdk "github.com/Datera/go-sdk/pkg/dsdk" ) func main() { // Get Universal Datera Config (UDC). See http://github.com/Datera/go-udc c, err = udc.GetConfig() if err != nil { panic(err) } // Instantiate SDK with UDC sdk, err := dsdk.NewSdk(udc, true) if err != nil { panic(err) } // Run HealthCheck if err = sdk.HealthCheck(); err != nil { panic(err) } // Get Context for future requests ctxt := sdk.NewContext() // You can also use your own context by providing one with // a "tid" key ctxt := context.Background() ctxt = context.WithValue(ctxt, "tid", "C8DF241A-FF24-4939-B8CE-987B2344FF23") ctxt = sdk.WithContext(ctxt) // NOTE: You MUST provide a valid ctxt object with each request to the // SDK. Not doing so will result in a panic. A valid ctxt object // contains the following keys: // "tid" -- A uuid or other string indicating the current transaction // for tracing purposes // "conn" -- An ApiConnection object reference. This is obtained via // the sdk.WithContext(ctxt) function // List AppInstances params := dsdk.ListParams{ Limit: maxEntries, Offset: startToken, } ais, apierr, err := r.sdk.AppInstances.List(&dsdk.AppInstancesListRequest{ Ctxt: ctxt, // This is required, see note above Params: params, // These can be omitted if uneeded }) if err != nil { panic(err) return nil, err } else if apierr != nil { panic(fmt.Errorf("%#v", apierr)) } for _, ai := range ais { fmt.Println(ai.Name) } // Get System Attributes sys, apierr, err := sdk.System.Get(&dsdk.SystemGetRequest{Ctxt: ctxt}) if err != nil { panic(err) return nil, err } else if apierr != nil { panic(fmt.Errorf("%#v", apierr)) } fmt.Printf("System: %s\n", dsdk.Pretty(sys)) } All requests made by the Datera Golang SDK are within the same tenant specified at instantiation time. If multiple tenants are desired, multiple SDK objects must be used, each with a different tenant. You can accomplish this with the following code .. code:: go import ( udc "github.com/Datera/go-udc/pkg/udc" ) c1 := &udc.UDC{ Username: "my-user" Password: "my-pass" MgmtIp: "1.1.1.1" ApiVersion: "2.2" Tenant: "tenant-A" } c2 := &udc.UDC{ Username: "my-user" Password: "my-pass" MgmtIp: "1.1.1.1" ApiVersion: "2.2" Tenant: "tenant-B" } sdkA, err := dsdk.NewSdk(c1, true) if err != nil { panic(err) } sdkB, err := dsdk.NewSdk(c2, true) if err != nil { panic(err) } Now all requests made with sdkA will go to "tenant-A", all requests with sdkB will be routed to "tenant-B". Changing the tenant for an existing SDK object is currently unsupported. Please consult the test files for more in depth API usage
Click to show internal directories.
Click to hide internal directories.