client

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 20, 2021 License: Apache-2.0 Imports: 23 Imported by: 29

README

Quick Start for Learning How OpenSDS Client Works

To better learn how opensds client works for connecting with OpenSDS service, here is a three-step example showing how to use the client.

Before these three steps, you have to make sure client package has been imported in your local repo.

Step 1: Initialize Client object

It's a simple and easy step for user to create a new Client object like below:

package main

import (
	"fmt"
	
	"github.com/sodafoundation/api/client"
)

func main() {
	c1, _ := client.NewClient(&client.Config{})
	c2, _ := client.NewClient(&client.Config{
		Endpoint: ":50040",
	})
	
	fmt.Printf("c1 is %v, c2 is %v\n", c1, c2)
}

As you can see from code above, user has two ways to create Client object: parsing Config object or fetching the endpoint from environment variable (os.Getenv("OPENSDS_ENDPOINT")), you can choose one with your reference.

Step 2: Call method in Client object

In the second step, you can just call method in Client object which is created in step 1 like this:

package main

import (
	"fmt"

	"github.com/sodafoundation/api/client"
	"github.com/sodafoundation/api/pkg/model"
)

func main() {
	c, _ := client.NewClient(&client.Config{
		Endpoint:    ":50040",
		AuthOptions: client.LoadNoAuthOptionsFromEnv(),
	})

	vol, err := c.CreateVolume(&model.VolumeSpec{
		Name:        "test",
		Description: "This is a volume for test",
		Size:        int64(1),
	})
	if err != nil {
		fmt.Println(err)
	}

	result, err := c.GetVolume(vol.Id)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("Volume created, get result:", result)

	if err = c.DeleteVolume(vol.Id, nil); err != nil {
		fmt.Println(err)
	}
}

Step 3: Destory Client object

If you want to reset the Client object, just run c.Reset() and it will clear all data in it and return a empty object.

Documentation

Index

Constants

View Source
const (
	//Opensds Auth ENVs
	OpensdsAuthStrategy = "OPENSDS_AUTH_STRATEGY"
	OpensdsTenantId     = "OPENSDS_TENANT_ID"

	// Keystone Auth ENVs
	OsAuthUrl       = "OS_AUTH_URL"
	OsUsername      = "OS_USERNAME"
	OsPassword      = "OS_PASSWORD"
	OsTenantName    = "OS_TENANT_NAME"
	OsProjectName   = "OS_PROJECT_NAME"
	OsUserDomainId  = "OS_USER_DOMAIN_ID"
	PwdEncrypter    = "PASSWORD_ENCRYPTER"
	EnableEncrypted = "ENABLE_ENCRYPTED"
	Keystone        = "keystone"
	Noauth          = "noauth"
)
View Source
const (
	OpensdsEndpoint = "OPENSDS_ENDPOINT"
)

Variables

View Source
var (
	TestEp = "TestEndPoint"
)

Functions

func NewHttpError added in v0.1.4

func NewHttpError(code int, msg string) error

Types

type AuthOptions added in v0.1.4

type AuthOptions interface {
	GetTenantId() string
}

type Client

type Client struct {
	*ProfileMgr
	*DockMgr
	*PoolMgr
	*VolumeMgr
	*VersionMgr
	*ReplicationMgr
	*FileShareMgr
	*HostMgr
	// contains filtered or unexported fields
}

Client is a struct for exposing some operations of opensds resources.

func NewClient

func NewClient(c *Config) (*Client, error)

NewClient method creates a new Client.

func NewFakeClient added in v0.3.1

func NewFakeClient(config *Config) *Client

func (*Client) Reset

func (c *Client) Reset() *Client

Reset method is defined to clean Client struct.

type Config

type Config struct {
	Endpoint    string
	AuthOptions AuthOptions
}

Config is a struct that defines some options for calling the Client.

type CustomBuilder added in v0.3.1

type CustomBuilder *model.CustomPropertiesSpec

CustomBuilder contains request body of handling a profile customized properties request. Currently it's assigned as the pointer of CustomPropertiesSpec struct, but it could be discussed if it's better to define an interface.

type DockMgr

type DockMgr struct {
	Receiver
	Endpoint string
	TenantId string
}

func NewDockMgr

func NewDockMgr(r Receiver, edp string, tenantId string) *DockMgr

func (*DockMgr) GetDock

func (d *DockMgr) GetDock(dckID string) (*model.DockSpec, error)

func (*DockMgr) ListDocks

func (d *DockMgr) ListDocks(args ...interface{}) ([]*model.DockSpec, error)

type ExtendVolumeBuilder added in v0.1.1

type ExtendVolumeBuilder *model.ExtendVolumeSpec

ExtendVolumeBuilder contains request body of handling a extend volume request. Currently it's assigned as the pointer of ExtendVolumeSpec struct, but it could be discussed if it's better to define an interface.

type FailoverReplicationBuilder added in v0.1.8

type FailoverReplicationBuilder *model.FailoverReplicationSpec

type FileShareAclBuilder added in v0.5.3

type FileShareAclBuilder *model.FileShareAclSpec

FileShareAclBuilder contains request body of handling a fileshare acl request. Currently it's assigned as the pointer of FileShareAclSpec struct, but it could be discussed if it's better to define an interface.

type FileShareBuilder added in v0.5.3

type FileShareBuilder *model.FileShareSpec

FileShareBuilder contains request body of handling a fileshare request. Currently it's assigned as the pointer of FileShareSpec struct, but it could be discussed if it's better to define an interface.

type FileShareMgr added in v0.5.3

type FileShareMgr struct {
	Receiver
	Endpoint string
	TenantID string
}

FileShareMgr implementation

func NewFileShareMgr added in v0.5.3

func NewFileShareMgr(r Receiver, edp string, tenantID string) *FileShareMgr

NewFileShareMgr implementation

func (*FileShareMgr) CreateFileShare added in v0.5.3

func (v *FileShareMgr) CreateFileShare(body FileShareBuilder) (*model.FileShareSpec, error)

CreateFileShare implementation

func (*FileShareMgr) CreateFileShareAcl added in v0.5.3

func (v *FileShareMgr) CreateFileShareAcl(body FileShareAclBuilder) (*model.FileShareAclSpec, error)

CreateFileShareAcl implementation

func (*FileShareMgr) CreateFileShareSnapshot added in v0.5.3

func (v *FileShareMgr) CreateFileShareSnapshot(body FileShareSnapshotBuilder) (*model.FileShareSnapshotSpec, error)

CreateFileShareSnapshot implementation

func (*FileShareMgr) DeleteFileShare added in v0.5.3

func (v *FileShareMgr) DeleteFileShare(ID string) error

DeleteFileShare implementation

func (*FileShareMgr) DeleteFileShareAcl added in v0.5.3

func (v *FileShareMgr) DeleteFileShareAcl(ID string) error

DeleteFileShareAcl implementation

func (*FileShareMgr) DeleteFileShareSnapshot added in v0.5.3

func (v *FileShareMgr) DeleteFileShareSnapshot(ID string) error

DeleteFileShareSnapshot implementation

func (*FileShareMgr) GetFileShare added in v0.5.3

func (v *FileShareMgr) GetFileShare(ID string) (*model.FileShareSpec, error)

GetFileShare implementation

func (*FileShareMgr) GetFileShareAcl added in v0.5.3

func (v *FileShareMgr) GetFileShareAcl(ID string) (*model.FileShareAclSpec, error)

GetFileShareAcl implementation

func (*FileShareMgr) GetFileShareSnapshot added in v0.5.3

func (v *FileShareMgr) GetFileShareSnapshot(ID string) (*model.FileShareSnapshotSpec, error)

GetFileShareSnapshot implementation

func (*FileShareMgr) ListFileShareSnapshots added in v0.5.3

func (v *FileShareMgr) ListFileShareSnapshots(args ...interface{}) ([]*model.FileShareSnapshotSpec, error)

ListFileShareSnapshots implementation

func (*FileShareMgr) ListFileShares added in v0.5.3

func (v *FileShareMgr) ListFileShares(args ...interface{}) ([]*model.FileShareSpec, error)

ListFileShares implementation

func (*FileShareMgr) ListFileSharesAcl added in v0.5.3

func (v *FileShareMgr) ListFileSharesAcl(args ...interface{}) ([]*model.FileShareAclSpec, error)

ListFileSharesAcl implementation

func (*FileShareMgr) UpdateFileShare added in v0.5.3

func (v *FileShareMgr) UpdateFileShare(ID string, body FileShareBuilder) (*model.FileShareSpec, error)

UpdateFileShare implementation

func (*FileShareMgr) UpdateFileShareSnapshot added in v0.5.3

func (v *FileShareMgr) UpdateFileShareSnapshot(ID string, body FileShareSnapshotBuilder) (*model.FileShareSnapshotSpec, error)

UpdateFileShareSnapshot implementation

type FileShareSnapshotBuilder added in v0.5.3

type FileShareSnapshotBuilder *model.FileShareSnapshotSpec

FileShareSnapshotBuilder contains request body of handling a fileshare snapshot request. Currently it's assigned as the pointer of FileShareSnapshotSpec struct, but it could be discussed if it's better to define an interface.

type HeaderOption added in v0.1.4

type HeaderOption map[string]string

ParamOption

type HostBuilder added in v0.12.0

type HostBuilder *model.HostSpec

HostBuilder contains request body of handling a host request.

type HostMgr added in v0.12.0

type HostMgr struct {
	Receiver
	Endpoint string
	TenantID string
}

HostMgr implementation

func NewHostMgr added in v0.12.0

func NewHostMgr(r Receiver, edp string, tenantID string) *HostMgr

NewHostMgr implementation

func (*HostMgr) CreateHost added in v0.12.0

func (h *HostMgr) CreateHost(body HostBuilder) (*model.HostSpec, error)

CreateHost implementation

func (*HostMgr) DeleteHost added in v0.12.0

func (h *HostMgr) DeleteHost(ID string) error

DeleteHost implementation

func (*HostMgr) GetHost added in v0.12.0

func (h *HostMgr) GetHost(ID string) (*model.HostSpec, error)

GetHost implementation

func (*HostMgr) ListHosts added in v0.12.0

func (h *HostMgr) ListHosts(args ...interface{}) ([]*model.HostSpec, error)

ListHosts implementation

func (*HostMgr) UpdateHost added in v0.12.0

func (h *HostMgr) UpdateHost(ID string, body HostBuilder) (*model.HostSpec, error)

UpdateHost implementation

type HttpError added in v0.1.4

type HttpError struct {
	Code int
	Msg  string
}

func (*HttpError) Decode added in v0.1.5

func (e *HttpError) Decode()

func (*HttpError) Error added in v0.1.4

func (e *HttpError) Error() string

type KeystoneAuthOptions added in v0.1.4

type KeystoneAuthOptions struct {
	IdentityEndpoint string
	Username         string
	UserID           string
	Password         string
	PwdEncrypter     string
	EnableEncrypted  bool
	DomainID         string
	DomainName       string
	TenantID         string
	TenantName       string
	AllowReauth      bool
	TokenID          string
}

func LoadKeystoneAuthOptionsFromEnv added in v0.1.10

func LoadKeystoneAuthOptionsFromEnv() (*KeystoneAuthOptions, error)

func NewKeystoneAuthOptions added in v0.1.4

func NewKeystoneAuthOptions() *KeystoneAuthOptions

func (*KeystoneAuthOptions) GetTenantId added in v0.1.4

func (k *KeystoneAuthOptions) GetTenantId() string

type KeystoneReceiver added in v0.5.2

type KeystoneReceiver struct {
	Auth *KeystoneAuthOptions
}

func (*KeystoneReceiver) GetToken added in v0.5.2

func (k *KeystoneReceiver) GetToken() error

func (*KeystoneReceiver) Recv added in v0.5.2

func (k *KeystoneReceiver) Recv(url string, method string, body interface{}, output interface{}) error

type NoAuthOptions added in v0.1.4

type NoAuthOptions struct {
	TenantID string
}

func LoadNoAuthOptionsFromEnv added in v0.1.10

func LoadNoAuthOptionsFromEnv() *NoAuthOptions

func NewNoauthOptions added in v0.1.4

func NewNoauthOptions(tenantId string) *NoAuthOptions

func (*NoAuthOptions) GetTenantId added in v0.1.4

func (n *NoAuthOptions) GetTenantId() string

type PoolMgr

type PoolMgr struct {
	Receiver
	Endpoint string
	TenantId string
}

PoolMgr

func NewPoolMgr

func NewPoolMgr(r Receiver, edp string, tenantId string) *PoolMgr

NewPoolMgr

func (*PoolMgr) GetPool

func (p *PoolMgr) GetPool(polID string) (*model.StoragePoolSpec, error)

GetPool

func (*PoolMgr) ListPools

func (p *PoolMgr) ListPools(args ...interface{}) ([]*model.StoragePoolSpec, error)

ListPools

type ProfileBuilder

type ProfileBuilder *model.ProfileSpec

ProfileBuilder contains request body of handling a profile request. Currently it's assigned as the pointer of ProfileSpec struct, but it could be discussed if it's better to define an interface.

type ProfileMgr

type ProfileMgr struct {
	Receiver
	Endpoint string
	TenantId string
}

ProfileMgr

func NewProfileMgr

func NewProfileMgr(r Receiver, edp string, tenantId string) *ProfileMgr

NewProfileMgr

func (*ProfileMgr) AddCustomProperty added in v0.3.1

func (p *ProfileMgr) AddCustomProperty(prfID string, body CustomBuilder) (*model.CustomPropertiesSpec, error)

AddCustomProperty

func (*ProfileMgr) CreateProfile

func (p *ProfileMgr) CreateProfile(body ProfileBuilder) (*model.ProfileSpec, error)

CreateProfile

func (*ProfileMgr) DeleteProfile

func (p *ProfileMgr) DeleteProfile(prfID string) error

DeleteProfile

func (*ProfileMgr) GetProfile

func (p *ProfileMgr) GetProfile(prfID string) (*model.ProfileSpec, error)

GetProfile

func (*ProfileMgr) ListCustomProperties added in v0.3.1

func (p *ProfileMgr) ListCustomProperties(prfID string) (*model.CustomPropertiesSpec, error)

ListCustomProperties

func (*ProfileMgr) ListProfiles

func (p *ProfileMgr) ListProfiles(args ...interface{}) ([]*model.ProfileSpec, error)

ListProfiles

func (*ProfileMgr) RemoveCustomProperty added in v0.3.1

func (p *ProfileMgr) RemoveCustomProperty(prfID, customKey string) error

RemoveCustomProperty

func (*ProfileMgr) UpdateProfile added in v0.1.9

func (p *ProfileMgr) UpdateProfile(prfID string, body ProfileBuilder) (*model.ProfileSpec, error)

UpdateProfile ...

type Receiver

type Receiver interface {
	Recv(url string, method string, input interface{}, output interface{}) error
}

Receiver

func NewFakeDockReceiver added in v0.3.1

func NewFakeDockReceiver() Receiver

func NewFakeFileShareReceiver added in v0.5.3

func NewFakeFileShareReceiver() Receiver

func NewFakeHostReceiver added in v0.12.0

func NewFakeHostReceiver() Receiver

func NewFakePoolReceiver added in v0.3.1

func NewFakePoolReceiver() Receiver

func NewFakeProfileReceiver added in v0.3.1

func NewFakeProfileReceiver() Receiver

func NewFakeReplicationReceiver added in v0.3.1

func NewFakeReplicationReceiver() Receiver

func NewFakeVersionReceiver added in v0.3.1

func NewFakeVersionReceiver() Receiver

func NewFakeVolumeReceiver added in v0.3.1

func NewFakeVolumeReceiver() Receiver

func NewKeystoneReceiver added in v0.5.2

func NewKeystoneReceiver(auth *KeystoneAuthOptions) (Receiver, error)

func NewReceiver

func NewReceiver() Receiver

NewReceiver

type ReplicationBuilder added in v0.1.8

type ReplicationBuilder *model.ReplicationSpec

type ReplicationMgr added in v0.1.8

type ReplicationMgr struct {
	Receiver
	Endpoint string
	TenantId string
}

ReplicationMgr

func NewReplicationMgr added in v0.1.8

func NewReplicationMgr(r Receiver, edp string, tenantId string) *ReplicationMgr

NewReplicationMgr

func (*ReplicationMgr) CreateReplication added in v0.1.8

func (v *ReplicationMgr) CreateReplication(body ReplicationBuilder) (*model.ReplicationSpec, error)

CreateReplication

func (*ReplicationMgr) DeleteReplication added in v0.1.8

func (v *ReplicationMgr) DeleteReplication(replicaId string, body ReplicationBuilder) error

DeleteReplication

func (*ReplicationMgr) DisableReplication added in v0.1.8

func (v *ReplicationMgr) DisableReplication(replicaId string) error

EnableReplication

func (*ReplicationMgr) EnableReplication added in v0.1.8

func (v *ReplicationMgr) EnableReplication(replicaId string) error

EnableReplication

func (*ReplicationMgr) FailoverReplication added in v0.1.8

func (v *ReplicationMgr) FailoverReplication(replicaId string, body FailoverReplicationBuilder) error

EnableReplication

func (*ReplicationMgr) GetReplication added in v0.1.8

func (v *ReplicationMgr) GetReplication(replicaId string) (*model.ReplicationSpec, error)

GetReplication

func (*ReplicationMgr) ListReplications added in v0.1.8

func (v *ReplicationMgr) ListReplications(args ...interface{}) ([]*model.ReplicationSpec, error)

ListReplications

func (*ReplicationMgr) UpdateReplication added in v0.1.8

func (v *ReplicationMgr) UpdateReplication(replicaId string, body ReplicationBuilder) (*model.ReplicationSpec, error)

UpdateReplication

type VersionBuilder added in v0.1.1

type VersionBuilder *model.VersionSpec

VersionBuilder contains request body of handling a version request. Currently it's assigned as the pointer of VersionSpec struct, but it could be discussed if it's better to define an interface.

type VersionMgr added in v0.1.1

type VersionMgr struct {
	Receiver
	Endpoint string
	// contains filtered or unexported fields
}

VersionMgr ...

func NewVersionMgr added in v0.1.1

func NewVersionMgr(r Receiver, edp string, tenantId string) *VersionMgr

NewVersionMgr ...

func (*VersionMgr) GetVersion added in v0.1.1

func (v *VersionMgr) GetVersion(apiVersion string) (*model.VersionSpec, error)

GetVersion ...

func (*VersionMgr) ListVersions added in v0.1.1

func (v *VersionMgr) ListVersions() ([]*model.VersionSpec, error)

ListVersions ...

type VolumeAttachmentBuilder

type VolumeAttachmentBuilder *model.VolumeAttachmentSpec

VolumeAttachmentBuilder contains request body of handling a volume request. Currently it's assigned as the pointer of VolumeSpec struct, but it could be discussed if it's better to define an interface.

type VolumeBuilder

type VolumeBuilder *model.VolumeSpec

VolumeBuilder contains request body of handling a volume request. Currently it's assigned as the pointer of VolumeSpec struct, but it could be discussed if it's better to define an interface.

type VolumeGroupBuilder added in v0.1.8

type VolumeGroupBuilder *model.VolumeGroupSpec

VolumeGroupBuilder contains request body of handling a volume group request. Currently it's assigned as the pointer of VolumeGroupSpec struct, but it could be discussed if it's better to define an interface.

type VolumeMgr

type VolumeMgr struct {
	Receiver
	Endpoint string
	TenantId string
}

VolumeMgr

func NewVolumeMgr

func NewVolumeMgr(r Receiver, edp string, tenantId string) *VolumeMgr

NewVolumeMgr

func (*VolumeMgr) CreateVolume

func (v *VolumeMgr) CreateVolume(body VolumeBuilder) (*model.VolumeSpec, error)

CreateVolume

func (*VolumeMgr) CreateVolumeAttachment

func (v *VolumeMgr) CreateVolumeAttachment(body VolumeAttachmentBuilder) (*model.VolumeAttachmentSpec, error)

CreateVolumeAttachment

func (*VolumeMgr) CreateVolumeGroup added in v0.1.8

func (v *VolumeMgr) CreateVolumeGroup(body VolumeGroupBuilder) (*model.VolumeGroupSpec, error)

CreateVolumeGroup

func (*VolumeMgr) CreateVolumeSnapshot

func (v *VolumeMgr) CreateVolumeSnapshot(body VolumeSnapshotBuilder) (*model.VolumeSnapshotSpec, error)

CreateVolumeSnapshot

func (*VolumeMgr) DeleteVolume

func (v *VolumeMgr) DeleteVolume(volID string, body VolumeBuilder) error

DeleteVolume

func (*VolumeMgr) DeleteVolumeAttachment

func (v *VolumeMgr) DeleteVolumeAttachment(atcID string, body VolumeAttachmentBuilder) error

DeleteVolumeAttachment

func (*VolumeMgr) DeleteVolumeGroup added in v0.1.8

func (v *VolumeMgr) DeleteVolumeGroup(vgId string, body VolumeGroupBuilder) error

DeleteVolumeGroup

func (*VolumeMgr) DeleteVolumeSnapshot

func (v *VolumeMgr) DeleteVolumeSnapshot(snpID string, body VolumeSnapshotBuilder) error

DeleteVolumeSnapshot

func (*VolumeMgr) ExtendVolume added in v0.1.1

func (v *VolumeMgr) ExtendVolume(volID string, body ExtendVolumeBuilder) (*model.VolumeSpec, error)

ExtendVolume ...

func (*VolumeMgr) GetVolume

func (v *VolumeMgr) GetVolume(volID string) (*model.VolumeSpec, error)

GetVolume

func (*VolumeMgr) GetVolumeAttachment

func (v *VolumeMgr) GetVolumeAttachment(atcID string) (*model.VolumeAttachmentSpec, error)

GetVolumeAttachment

func (*VolumeMgr) GetVolumeGroup added in v0.1.8

func (v *VolumeMgr) GetVolumeGroup(vgId string) (*model.VolumeGroupSpec, error)

GetVolumeGroup

func (*VolumeMgr) GetVolumeSnapshot

func (v *VolumeMgr) GetVolumeSnapshot(snpID string) (*model.VolumeSnapshotSpec, error)

GetVolumeSnapshot

func (*VolumeMgr) ListVolumeAttachments

func (v *VolumeMgr) ListVolumeAttachments(args ...interface{}) ([]*model.VolumeAttachmentSpec, error)

ListVolumeAttachments

func (*VolumeMgr) ListVolumeGroups added in v0.1.8

func (v *VolumeMgr) ListVolumeGroups(args ...interface{}) ([]*model.VolumeGroupSpec, error)

ListVolumeGroups

func (*VolumeMgr) ListVolumeSnapshots

func (v *VolumeMgr) ListVolumeSnapshots(args ...interface{}) ([]*model.VolumeSnapshotSpec, error)

ListVolumeSnapshots

func (*VolumeMgr) ListVolumes

func (v *VolumeMgr) ListVolumes(args ...interface{}) ([]*model.VolumeSpec, error)

ListVolumes

func (*VolumeMgr) UpdateVolume

func (v *VolumeMgr) UpdateVolume(volID string, body VolumeBuilder) (*model.VolumeSpec, error)

UpdateVolume

func (*VolumeMgr) UpdateVolumeAttachment

func (v *VolumeMgr) UpdateVolumeAttachment(atcID string, body VolumeAttachmentBuilder) (*model.VolumeAttachmentSpec, error)

UpdateVolumeAttachment

func (*VolumeMgr) UpdateVolumeGroup added in v0.1.8

func (v *VolumeMgr) UpdateVolumeGroup(vgId string, body VolumeGroupBuilder) (*model.VolumeGroupSpec, error)

UpdateVolumeSnapshot

func (*VolumeMgr) UpdateVolumeSnapshot

func (v *VolumeMgr) UpdateVolumeSnapshot(snpID string, body VolumeSnapshotBuilder) (*model.VolumeSnapshotSpec, error)

UpdateVolumeSnapshot

type VolumeSnapshotBuilder

type VolumeSnapshotBuilder *model.VolumeSnapshotSpec

VolumeSnapshotBuilder contains request body of handling a volume snapshot request. Currently it's assigned as the pointer of VolumeSnapshotSpec struct, but it could be discussed if it's better to define an interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL