This project is no longer maintained here. The current maintained version is at https://github.com/dell/goscaleio.
The Goscaleio project represents API bindings that can be used to provide ScaleIO functionality into other Go applications.
Any application written in Go can take advantage of these bindings. Specifically, things that are involved in monitoring, management, and more specifically infrastructrue as code would find these bindings relevant.
Early build-out and pre-documentation stages. The basics around authentication and object models are there.
client, err := goscaleio.NewClient()
if err != nil {
log.Fatalf("err: %v", err)
}
_, err = client.Authenticate(&goscaleio.ConfigConnect{endpoint, username, password})
if err != nil {
log.Fatalf("error authenticating: %v", err)
}
fmt.Println("Successfuly logged in to ScaleIO Gateway at", client.SIOEndpoint.String())
Once a client struct is created via the NewClient()
function, you can replace the Token
with the saved token.
client, err := goscaleio.NewClient()
if err != nil {
log.Fatalf("error with NewClient: %s", err)
}
client.SetToken(oldToken)
Retrieving systems is the first step after authentication which enables you to work with other necessary methods.
systems, err := client.GetInstance()
if err != nil {
log.Fatalf("err: problem getting instance %v", err)
}
system, err := client.FindSystem(systemid,"","")
if err != nil {
log.Fatalf("err: problem getting instance %v", err)
}
Once you have a System
struct you can then get other things like Protection Domains
.
protectiondomains, err := system.GetProtectionDomain()
if err != nil {
log.Fatalf("error getting protection domains: %v", err)
}
Two environment variables can be set to aid in debugging
Env Var | Default Value |
---|---|
GOSCALEIO_DEBUG |
false |
GOSCALEIO_SHOWHTTP |
false |
Setting GOSCALEIO_DEBUG
well enable logging to stdout
.
Setting GOSCALEIO_SHOWHTTP
will log all HTTP requests and responses to stdout
.
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Please file bugs and issues on the Github issues page for this project. This is to help keep track and document everything related to this repo. For general discussions and further support you can join the {code} Community slack channel. The code and documentation are released with no warranties or SLAs and are intended to be supported through a community driven process.