goscaleio/Open Source Project

Goscaleio

The Goscaleio project represents API bindings that can be used to provide ScaleIO functionality into other Go applications.

Use Cases

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.

Current State

Early build-out and pre-documentation stages. The basics around authentication and object models are there.

Usage

Logging in

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())

Reusing the authentication token

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)

Get Systems

Retrieving systems is the first step after authentication which enables you to work with other necessary methods.

All Systems

systems, err := client.GetInstance()
if err != nil {
  log.Fatalf("err: problem getting instance %v", err)
}

Find a System

system, err := client.FindSystem(systemid,"","")
if err != nil {
  log.Fatalf("err: problem getting instance %v", err)
}

Get Protection Domains

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)
}

Debugging

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.

Licensing

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 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.

Support

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.

Information

  • 11 Stars
  • 10 Forks
  • 11 Contributors
  • Go
  • API Binding
  • go / ScaleIO / SDK
  • From the {code} Blog

    • Go: A Highly Performant, Case-Insensitive String Sort

      While the Go standard library makes sorting slices of strings in a case-sensitive manner a trivial operation, what does a developer do when case-insensitivity is required? This blog post outlines why the common approach ...
      October 24, 2017
    • Golang Dependency Tool and Line Endings

      The Golang dependency tool dep is awesome, but it has this habit of marking files as changed when the only difference is related to line-endings. This blog post highlights the issue and provides a ...
      October 10, 2017
    • Say Hello to Goodbye

      Ask a developer to discuss one of Go’s many features and there are no shortages from which to choose. Yet the catalyst for some of the most in depth discussions is often not what ...
      October 2, 2017
    More related posts on the {code} Blog

    Goscaleio

    The Goscaleio project represents API bindings that can be used to provide ScaleIO functionality into other Go applications.

    Use Cases

    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.

    Current State

    Early build-out and pre-documentation stages. The basics around authentication and object models are there.

    Usage

    Logging in

    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())
    

    Reusing the authentication token

    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)
    

    Get Systems

    Retrieving systems is the first step after authentication which enables you to work with other necessary methods.

    All Systems

    systems, err := client.GetInstance()
    if err != nil {
      log.Fatalf("err: problem getting instance %v", err)
    }
    

    Find a System

    system, err := client.FindSystem(systemid,"","")
    if err != nil {
      log.Fatalf("err: problem getting instance %v", err)
    }
    

    Get Protection Domains

    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)
    }
    

    Debugging

    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.

    Licensing

    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 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.

    Support

    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.

    From the {code} Blog

    • Go: A Highly Performant, Case-Insensitive String Sort

      While the Go standard library makes sorting slices of strings in a case-sensitive manner a trivial operation, what does a developer do when case-insensitivity is required? This blog post outlines why the common approach ...
      October 24, 2017
    • Golang Dependency Tool and Line Endings

      The Golang dependency tool dep is awesome, but it has this habit of marking files as changed when the only difference is related to line-endings. This blog post highlights the issue and provides a ...
      October 10, 2017
    • Say Hello to Goodbye

      Ask a developer to discuss one of Go’s many features and there are no shortages from which to choose. Yet the catalyst for some of the most in depth discussions is often not what ...
      October 2, 2017
    More related posts on the {code} Blog

    From the {code} Blog

    • Go: A Highly Performant, Case-Insensitive String Sort

      While the Go standard library makes sorting slices of strings in a case-sensitive manner a trivial operation, what does a developer do when case-insensitivity is required? This blog post outlines why the common approach ...
      October 24, 2017
    • Golang Dependency Tool and Line Endings

      The Golang dependency tool dep is awesome, but it has this habit of marking files as changed when the only difference is related to line-endings. This blog post highlights the issue and provides a ...
      October 10, 2017
    • Say Hello to Goodbye

      Ask a developer to discuss one of Go’s many features and there are no shortages from which to choose. Yet the catalyst for some of the most in depth discussions is often not what ...
      October 2, 2017
    More related posts on the {code} Blog