client

package
v0.0.0-...-295c363 Latest Latest
Warning

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

Go to latest
Published: May 9, 2019 License: Apache-2.0 Imports: 23 Imported by: 0

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/opensds/opensds/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/opensds/opensds/client"
	"github.com/opensds/opensds/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

func NewHttpError(code int, msg string) error

Types

type AuthOptions

type AuthOptions interface {
	GetTenantId() string
}

type Client

type Client struct {
	*ProfileMgr
	*DockMgr
	*PoolMgr
	*VolumeMgr
	*VersionMgr
	*ReplicationMgr
	// 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

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

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

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

type FailoverReplicationBuilder *model.FailoverReplicationSpec

type HeaderOption

type HeaderOption map[string]string

ParamOption

type HttpError

type HttpError struct {
	Code int
	Msg  string
}

func (*HttpError) Decode

func (e *HttpError) Decode()

func (*HttpError) Error

func (e *HttpError) Error() string

type KeystoneAuthOptions

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

func LoadKeystoneAuthOptionsFromEnv() (*KeystoneAuthOptions, error)

func NewKeystoneAuthOptions

func NewKeystoneAuthOptions() *KeystoneAuthOptions

func (*KeystoneAuthOptions) GetTenantId

func (k *KeystoneAuthOptions) GetTenantId() string

type KeystoneReceiver

type KeystoneReceiver struct {
	Auth *KeystoneAuthOptions
}

func (*KeystoneReceiver) GetToken

func (k *KeystoneReceiver) GetToken() error

func (*KeystoneReceiver) Recv

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

type NoAuthOptions

type NoAuthOptions struct {
	TenantID string
}

func LoadNoAuthOptionsFromEnv

func LoadNoAuthOptionsFromEnv() *NoAuthOptions

func NewNoauthOptions

func NewNoauthOptions(tenantId string) *NoAuthOptions

func (*NoAuthOptions) GetTenantId

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

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

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

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

RemoveCustomProperty

func (*ProfileMgr) UpdateProfile

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

func NewFakeDockReceiver() Receiver

func NewFakePoolReceiver

func NewFakePoolReceiver() Receiver

func NewFakeProfileReceiver

func NewFakeProfileReceiver() Receiver

func NewFakeReplicationReceiver

func NewFakeReplicationReceiver() Receiver

func NewFakeVersionReceiver

func NewFakeVersionReceiver() Receiver

func NewFakeVolumeReceiver

func NewFakeVolumeReceiver() Receiver

func NewKeystoneReceiver

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

func NewReceiver

func NewReceiver() Receiver

NewReceiver

type ReplicationBuilder

type ReplicationBuilder *model.ReplicationSpec

type ReplicationMgr

type ReplicationMgr struct {
	Receiver
	Endpoint string
	TenantId string
}

ReplicationMgr

func NewReplicationMgr

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

NewReplicationMgr

func (*ReplicationMgr) CreateReplication

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

CreateReplication

func (*ReplicationMgr) DeleteReplication

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

DeleteReplication

func (*ReplicationMgr) DisableReplication

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

EnableReplication

func (*ReplicationMgr) EnableReplication

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

EnableReplication

func (*ReplicationMgr) FailoverReplication

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

EnableReplication

func (*ReplicationMgr) GetReplication

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

GetReplication

func (*ReplicationMgr) ListReplications

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

ListReplications

func (*ReplicationMgr) UpdateReplication

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

UpdateReplication

type VersionBuilder

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

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

VersionMgr ...

func NewVersionMgr

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

NewVersionMgr ...

func (*VersionMgr) GetVersion

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

GetVersion ...

func (*VersionMgr) ListVersions

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

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

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

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

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

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

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

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