GoIsilon is a Go package that provides a client for the EMC Isilon OneFS HTTP API. The package provides both direct implementations of the API bindings as well as abstract, helper functionality. In addition, services such as Docker, Mesos, and REX-Ray use the GoIsilon package to integrate with the NAS storage platform.
The GoIsilon package is tested with and supports OneFS 8.1+.
The tests provide working examples for how to use the package, but here are a few code snippets to further illustrate the basic ideas:
This example shows how to initialize a new client.
client, err := NewClient(context.Background())
if err != nil {
panic(err)
}
Please note that there is no attempt to provide a host, credentials, or any
other options. The NewClient()
function relies on the following environment
variables to configure the GoIsilon client:
Name | Description |
---|---|
GOISILON_ENDPOINT |
the API endpoint, ex. https://172.17.177.230:8080 |
GOISILON_USERNAME |
the username |
GOISILON_GROUP |
the user's group |
GOISILON_PASSWORD |
the password |
GOISILON_INSECURE |
whether to skip SSL validation |
GOISILON_VOLUMEPATH |
which base path to use when looking for volume directories |
GOISILON_VOLUMEPATH_PERMISSIONS |
permissions for new volume directory |
GOISILON_AUTHTYPE |
what should be the auth type, session-based or basic |
The following example demonstrates how to explicitly specify options when creating a client:
client, err := NewClientWithArgs(
context.Background(),
"https://172.17.177.230:8080",
true,
1,
"userName",
"groupName",
"password",
"/ifs/volumes",
"0777",
0)
if err != nil {
panic(err)
}
This snippet creates a new volume named "testing" at "/ifs/volumes/testing". The volume path is generated by concatenating the client's volume path and the name of the volume.
volume, err := c.CreateVolume(context.Background(), "testing")
Enabling a volume for NFS access is fairly straight-forward.
if err := c.ExportVolume(context.Background(), "testing"); err != nil {
panic(err)
}
When a volume is no longer needed, this is how it may be removed.
if err := c.DeleteVolume(context.Background(), "testing"); err != nil {
panic(err)
}
Several, very detailed examples of the GoIsilon package in use can be found in
the package's *_test.go
files as well as in the libStorage Isilon
storage driver.
Please contribute!
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.
For any issues, questions or feedback, please follow our support process