cloud

package
v1.2.3 Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2024 License: MPL-2.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	VksClusterIdTagKey     = "vks-cluster-id"
	VksPvcNamespaceTagKey  = "vks-namespace"
	VksPvNameTagKey        = "vks-pv-name"
	VksPvcNameTagKey       = "vks-pvc-name"
	VksSnapshotIdTagKey    = "vks-snapshot-id"
	VksReclaimPolicyTagKey = "vks-reclaim-policy"
)
View Source
const (
	VolumeAvailableStatus = "AVAILABLE"
	VolumeInUseStatus     = "IN-USE"
	VolumeCreatingStatus  = "CREATING"
	VolumeErrorStatus     = "ERROR"

	SnapshotActiveStatus = "ACTIVE"
)
View Source
const (
	// DefaultVolumeSize represents the default volume size.
	DefaultVolumeSize int64 = 5 * lsutil.GiB
)

Variables

View Source
var (
	ErrDeviceVolumeIdNotFound = lerr.New("device volume id not found")
	ErrInvalidArgument        = lerr.New("invalid argument")
	ErrSnapshotNotFound       = lerr.New("snapshot not found")
)
View Source
var (
	ErrBadMetadata   = errors.New("invalid vServer metadata because of got empty uuid")
	ErrMetadataEmpty = errors.New("metadata is empty")
)
View Source
var DefaultEventRecorder = func(pclient lk8s.Interface) (lk8srecord.EventBroadcaster, lk8srecord.EventRecorder, error) {
	broadcaster := lk8srecord.NewBroadcaster()
	broadcaster.StartRecordingToSink(&lcoreV1.EventSinkImpl{Interface: pclient.CoreV1().Events("")})
	eventRecorder := broadcaster.NewRecorder(lk8sscheme.Scheme, lk8score.EventSource{Component: "vngcloud-blockstorage-csi-driver"})
	return broadcaster, eventRecorder, nil
}
View Source
var DefaultKubernetesAPIClient = func() (lk8s.Interface, error) {

	config, err := lk8srest.InClusterConfig()
	if err != nil {
		return nil, err
	}

	clientset, err := lk8s.NewForConfig(config)
	if err != nil {
		return nil, err
	}
	return clientset, nil
}
View Source
var DefaultVServerMetadataClient = func() (IVServerMetadata, error) {

	metadataURL := getMetadataURL(defaultMetadataVersion)
	resp, err := noProxyHTTPClient().Get(metadataURL)
	if err != nil {
		return nil, fmt.Errorf("getFromMetadataService; error fetching metadata from URL %s; ERR: %v", metadataURL, err)
	}
	defer resp.Body.Close()

	if resp.StatusCode != http.StatusOK {
		err = fmt.Errorf("getFromMetadataService; unexpected status code when reading metadata from %s with response status code %s", metadataURL, resp.Status)
		return nil, err
	}

	return parseMetadata(resp.Body)
}

Functions

This section is empty.

Types

type Cloud

type Cloud interface {
	EitherCreateResizeVolume(preq lsdkVolumeV2.ICreateBlockVolumeRequest) (*lsentity.Volume, lserr.IError)
	GetVolumeByName(pvolName string) (*lsentity.Volume, lserr.IError)
	GetVolume(volumeID string) (*lsentity.Volume, lserr.IError)
	DeleteVolume(volID string) lserr.IError
	AttachVolume(instanceID, volumeID string) (*lsentity.Volume, lserr.IError)
	DetachVolume(instanceID, volumeID string) lserr.IError
	ModifyVolumeType(pvolumeId, pvolumeType string, psize int) lserr.IError
	ResizeOrModifyDisk(volumeID string, newSizeBytes int64, options *ModifyDiskOptions) (newSize int64, err error)
	ExpandVolume(volumeID, volumeTypeID string, newSize uint64) error
	GetDeviceDiskID(pvolID string) (string, error)
	GetVolumeSnapshotByName(pvolID, psnapshotName string) (*lsentity.Snapshot, error)
	CreateSnapshotFromVolume(pclusterId, pvolId, psnapshotName string) (*lsentity.Snapshot, error)
	DeleteSnapshot(psnapshotID string) error
	ListSnapshots(pvolID string, ppage int, ppageSize int) (*lsentity.ListSnapshots, lserr.IError)
	GetVolumeTypeById(pvolTypeId string) (*lsentity.VolumeType, lserr.IError)
	GetDefaultVolumeType() (*lsentity.VolumeType, lserr.IError)
}

func NewCloud

func NewCloud(iamURL, vserverUrl, clientID, clientSecret string, metadataSvc MetadataService) (Cloud, error)

type DeviceMetadata

type DeviceMetadata struct {
	Type    string `json:"type"`
	Bus     string `json:"bus,omitempty"`
	Serial  string `json:"serial,omitempty"`
	Address string `json:"address,omitempty"`
}

type IVServerMetadata

type IVServerMetadata interface {
	GetMetadata() *VServerMetadata
}

type KubernetesAPIClient

type KubernetesAPIClient func() (lk8s.Interface, error)

KubernetesAPIClient is a function that returns a Kubernetes client

type Meta

type Meta struct {
	Product    string `json:"product,omitempty"`
	PortalUUID string `json:"portal_uuid,omitempty"`
	ProjectID  string `json:"project_id,omitempty"`
}

type Metadata

type Metadata struct {
	UUID             string           `json:"uuid"`
	Name             string           `json:"name"`
	ProjectID        string           `json:"project_id"`
	AvailabilityZone string           `json:"availability_zone"`
	Devices          []DeviceMetadata `json:"devices,omitempty"`
}

func (*Metadata) GetAvailabilityZone

func (s *Metadata) GetAvailabilityZone() string

func (*Metadata) GetInstanceID

func (s *Metadata) GetInstanceID() string

func (*Metadata) GetProjectID

func (s *Metadata) GetProjectID() string

type MetadataService

type MetadataService interface {
	GetInstanceID() string
	GetProjectID() string
	GetAvailabilityZone() string
}

func NewMetadataService

func NewMetadataService(vserverMetadataClient VServerMetadataClient) (MetadataService, error)

func VServerMetadataInstanceInfo

func VServerMetadataInstanceInfo(psvc IVServerMetadata) (MetadataService, error)

type ModifyDiskOptions

type ModifyDiskOptions struct {
	VolumeType string
}

ModifyDiskOptions represents parameters to modify a volume

type VServerMetadata

type VServerMetadata struct {
	UUID             string           `json:"uuid"`
	Name             string           `json:"name"`
	AvailabilityZone string           `json:"availability_zone"`
	ProjectID        string           `json:"project_id"`
	Devices          []DeviceMetadata `json:"devices,omitempty"`
	Meta             Meta             `json:"meta,omitempty"`
}

func (*VServerMetadata) GetMetadata

func (s *VServerMetadata) GetMetadata() *VServerMetadata

type VServerMetadataClient

type VServerMetadataClient func() (IVServerMetadata, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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