operations

package
v21.11.1 Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2022 License: Apache-2.0 Imports: 89 Imported by: 0

Documentation

Overview

Package operations contains the implementations of resources interfaces

Index

Constants

View Source
const (
	// MinimumMetadataVersion defines the version of the metadata recognized by the release
	// Must be incremented each time a new release requires upgrade of metadata (hopefully not for all new releases)
	// By convention, it corresponds to the SafeScale release that introduced the new format
	MinimumMetadataVersion = "v21.05.0"

	// FirstMetadataVersion corresponds to the first metadata format version
	FirstMetadataVersion = "v20.06.0"

	// MustUpgradeMessage  = "the current version of SafeScale binaries cannot use safely the current tenant metadata; you should consider upgrading the metadata using the command 'safescale tenant metadata upgrade %s'. Note that previous version of binaries would not be able to read safely the newly upgraded metadata and should be upgraded everywhere to at least version %s."
	MustUpgradeMessage  = "" /* 189-byte string literal not displayed */
	MustUpgradeBinaries = "" /* 129-byte string literal not displayed */
)
View Source
const NOTFOUND = unix.ENOENT

NOTFOUND Not found

View Source
const (
	NullMetadataKind = "nil"
)

Variables

View Source
var (
	CurrentNetworkAbstractContextKey   = "current_network_abstract"
	CurrentNetworkPropertiesContextKey = "current_network_properties"
)
View Source
var (
	// WithoutReloadOption is used as option to LoadXXX() to disable reloading from metadata and/or local instance caching (that may lead to deadlock sometimes)
	WithoutReloadOption = data.NewImmutableKeyValue(optionWithoutReloadKeyword, true)
	// WithReloadOption is used as option to LoadXXX() to enable reloading from metadata
	WithReloadOption = data.NewImmutableKeyValue(optionWithoutReloadKeyword, false)
)
View Source
var (
	// Trace contains what to trace during debug log
	Trace = struct {
		Cluster bool
		Host    bool
		Network bool
		Share   bool
		Tenant  bool
		Volume  bool
		Feature struct {
			Action bool
			Step   bool
		}
	}{}
)

Functions

func ActionFromError

func ActionFromError(err error) string

func CheckMetadataVersion

func CheckMetadataVersion(svc iaas.Service) (string, fail.Error)

CheckMetadataVersion checks if the content of /version in metadata bucket is equal to MetadataVersion

func ExtractFeatureParameters added in v21.11.1

func ExtractFeatureParameters(params []string) data.Map

ExtractFeatureParameters convert a slice of string in format a=b into a map index on 'a' with value 'b'

func FreeCIDRForSingleHost

func FreeCIDRForSingleHost(network resources.Network, index uint) fail.Error

FreeCIDRForSingleHost frees the CIDR index inside the Network 'Network'

func ListSubnets

func ListSubnets(ctx context.Context, svc iaas.Service, networkID string, all bool) (_ []*abstract.Subnet, ferr fail.Error)

ListSubnets returns a list of available subnets

func LoadBucket

func LoadBucket(ctx context.Context, svc iaas.Service, name string) (b resources.Bucket, ferr fail.Error)

LoadBucket instantiates a bucket struct and fill it with Provider metadata of Object Storage ObjectStorageBucket

func LoadCluster

func LoadCluster(ctx context.Context, svc iaas.Service, name string) (_ resources.Cluster, ferr fail.Error)

LoadCluster loads cluster information from metadata

func LoadHost

func LoadHost(ctx context.Context, svc iaas.Service, ref string) (_ resources.Host, ferr fail.Error)

LoadHost ...

func LoadNetwork

func LoadNetwork(ctx context.Context, svc iaas.Service, ref string, options ...data.ImmutableKeyValue) (networkInstance resources.Network, ferr fail.Error)

LoadNetwork loads the metadata of a subnet if 'options' contains WithReloadOption, the instance is refreshed from metadata

func LoadShare

func LoadShare(ctx context.Context, svc iaas.Service, ref string) (_ resources.Share, ferr fail.Error)

LoadShare returns the name of the host owing the Share 'ref', read from Object Storage logic: try to read until success.

If error is fail.ErrNotFound return this error
In case of any other error, abort the retry to propagate the error
If retry times out, return fail.ErrTimeout

func LoadVolume

func LoadVolume(ctx context.Context, svc iaas.Service, ref string) (_ resources.Volume, ferr fail.Error)

LoadVolume loads the metadata of a subnet

func NewBucket

func NewBucket(svc iaas.Service) (resources.Bucket, fail.Error)

NewBucket instantiates bucket struct

func NewEmbeddedFeature

func NewEmbeddedFeature(ctx context.Context, svc iaas.Service, name string) (_ resources.Feature, ferr fail.Error)

NewEmbeddedFeature searches for an embedded featured named 'name' and initializes a new Feature object with its content

func NewFeature

func NewFeature(ctx context.Context, svc iaas.Service, name string) (_ resources.Feature, ferr fail.Error)

NewFeature searches for a spec file name 'name' and initializes a new Feature object with its content error contains :

  • fail.ErrNotFound if no Feature is found by its name
  • fail.ErrSyntax if Feature found contains syntax error

func NewNetwork

func NewNetwork(svc iaas.Service) (resources.Network, fail.Error)

NewNetwork creates an instance of Networking

func NewShare

func NewShare(svc iaas.Service) (resources.Share, fail.Error)

NewShare creates an instance of Share

func NewVolume

func NewVolume(svc iaas.Service) (_ resources.Volume, ferr fail.Error)

NewVolume creates an instance of Volume

func ReserveCIDRForSingleHost

func ReserveCIDRForSingleHost(networkInstance resources.Network) (_ string, _ uint, ferr fail.Error)

ReserveCIDRForSingleHost returns the first available CIDR and its index inside the Network 'network'

func SetCurrentTenant

func SetCurrentTenant(tenantName string) error

SetCurrentTenant sets the tenant to use for upcoming commands

func StartFeatureFileWatcher added in v21.11.1

func StartFeatureFileWatcher()

StartFeatureFileWatcher inits the watcher of Feature File changes

Types

type Cluster

type Cluster struct {
	*MetadataCore
	// contains filtered or unexported fields
}

Cluster is the implementation of resources.Cluster interface

func NewCluster

func NewCluster(ctx context.Context, svc iaas.Service) (_ *Cluster, ferr fail.Error)

NewCluster is the constructor of resources.Cluster struct

func (*Cluster) AddFeature

func (instance *Cluster) AddFeature(ctx context.Context, name string, vars data.Map, settings resources.FeatureSettings) (resources.Results, fail.Error)

AddFeature installs a feature on the Cluster

func (*Cluster) AddNodes

func (instance *Cluster) AddNodes(ctx context.Context, count uint, def abstract.HostSizingRequirements, parameters data.Map, keepOnFailure bool) (_ []resources.Host, ferr fail.Error)

AddNodes adds several nodes

func (*Cluster) Browse

func (instance *Cluster) Browse(ctx context.Context, callback func(*abstract.ClusterIdentity) fail.Error) (ferr fail.Error)

Browse walks through Cluster MetadataFolder and executes a callback for each entry FIXME: adds a Cluster status check to prevent operations on removed clusters

func (*Cluster) CheckFeature

func (instance *Cluster) CheckFeature(ctx context.Context, name string, vars data.Map, settings resources.FeatureSettings) (resources.Results, fail.Error)

CheckFeature tells if a feature is installed on the Cluster

func (*Cluster) ComplementFeatureParameters

func (instance *Cluster) ComplementFeatureParameters(ctx context.Context, v data.Map) fail.Error

ComplementFeatureParameters configures parameters that are implicitly defined, based on target satisfies interface resources.Targetable

func (*Cluster) CountNodes

func (instance *Cluster) CountNodes(ctx context.Context) (count uint, ferr fail.Error)

CountNodes counts the nodes of the Cluster

func (*Cluster) Create

func (instance *Cluster) Create(ctx context.Context, req abstract.ClusterRequest) (ferr fail.Error)

Create creates the necessary infrastructure of the Cluster

func (*Cluster) Delete

func (instance *Cluster) Delete(ctx context.Context, force bool) (ferr fail.Error)

Delete deletes the Cluster

func (*Cluster) DeleteSpecificNode

func (instance *Cluster) DeleteSpecificNode(ctx context.Context, hostID string, selectedMasterID string) (ferr fail.Error)

DeleteSpecificNode deletes a node identified by its ID

func (*Cluster) Deserialize

func (instance *Cluster) Deserialize(buf []byte) (ferr fail.Error)

Deserialize reads json code and recreates Cluster metadata

func (*Cluster) ExecuteScript

func (instance *Cluster) ExecuteScript(ctx context.Context, tmplName string, variables data.Map, host resources.Host) (_ int, _ string, _ string, ferr fail.Error)

ExecuteScript executes the script template with the parameters on target Host

func (*Cluster) FindAvailableMaster

func (instance *Cluster) FindAvailableMaster(ctx context.Context) (master resources.Host, ferr fail.Error)

FindAvailableMaster returns ID of the first master available to execute order satisfies interface Cluster.Cluster.Controller

func (*Cluster) FindAvailableNode

func (instance *Cluster) FindAvailableNode(ctx context.Context) (node resources.Host, ferr fail.Error)

FindAvailableNode returns node instance of the first node available to execute order

func (*Cluster) GetAdminPassword

func (instance *Cluster) GetAdminPassword() (adminPassword string, ferr fail.Error)

GetAdminPassword returns the password of the Cluster admin account satisfies interface Cluster.Controller

func (*Cluster) GetComplexity

func (instance *Cluster) GetComplexity() (_ clustercomplexity.Enum, ferr fail.Error)

GetComplexity returns the complexity of the Cluster

func (*Cluster) GetFlavor

func (instance *Cluster) GetFlavor() (flavor clusterflavor.Enum, ferr fail.Error)

GetFlavor returns the flavor of the Cluster

func (*Cluster) GetIdentity

func (instance *Cluster) GetIdentity() (clusterIdentity abstract.ClusterIdentity, ferr fail.Error)

GetIdentity returns the identity of the Cluster

func (*Cluster) GetKeyPair

func (instance *Cluster) GetKeyPair() (keyPair *abstract.KeyPair, ferr fail.Error)

GetKeyPair returns the key pair used in the Cluster

func (*Cluster) GetNetworkConfig

func (instance *Cluster) GetNetworkConfig() (config *propertiesv3.ClusterNetwork, ferr fail.Error)

GetNetworkConfig returns subnet configuration of the Cluster

func (*Cluster) GetNodeByID

func (instance *Cluster) GetNodeByID(ctx context.Context, hostID string) (hostInstance resources.Host, ferr fail.Error)

GetNodeByID returns a node based on its ID

func (*Cluster) GetState

func (instance *Cluster) GetState() (state clusterstate.Enum, ferr fail.Error)

GetState returns the current state of the Cluster Uses the "maker" ForceGetState

func (*Cluster) InstallMethods

func (instance *Cluster) InstallMethods() (map[uint8]installmethod.Enum, fail.Error)

InstallMethods returns a list of installation methods usable on the target, ordered from upper to lower preference (1 = the highest preference) satisfies resources.Targetable interface

func (*Cluster) InstalledFeatures

func (instance *Cluster) InstalledFeatures() []string

InstalledFeatures returns a list of installed features

func (*Cluster) IsFeatureInstalled

func (instance *Cluster) IsFeatureInstalled(ctx context.Context, name string) (found bool, ferr fail.Error)

IsFeatureInstalled tells if a Feature identified by name is installed on Cluster, using only metadata

func (*Cluster) IsNull

func (instance *Cluster) IsNull() bool

IsNull tells if the instance should be considered as a null value

func (*Cluster) ListEligibleFeatures added in v21.11.1

func (instance *Cluster) ListEligibleFeatures(ctx context.Context) (_ []resources.Feature, ferr fail.Error)

ListEligibleFeatures returns a slice of features eligible to Cluster

func (*Cluster) ListInstalledFeatures

func (instance *Cluster) ListInstalledFeatures(ctx context.Context) (_ []resources.Feature, ferr fail.Error)

ListInstalledFeatures returns a slice of installed features

func (*Cluster) ListMasterIDs

func (instance *Cluster) ListMasterIDs(ctx context.Context) (list data.IndexedListOfStrings, ferr fail.Error)

ListMasterIDs lists the IDs of masters (if there is such masters in the flavor...)

func (*Cluster) ListMasterIPs

func (instance *Cluster) ListMasterIPs(ctx context.Context) (list data.IndexedListOfStrings, ferr fail.Error)

ListMasterIPs lists the IPs of masters (if there is such masters in the flavor...)

func (*Cluster) ListMasterNames

func (instance *Cluster) ListMasterNames(ctx context.Context) (list data.IndexedListOfStrings, ferr fail.Error)

ListMasterNames lists the names of the master nodes in the Cluster

func (*Cluster) ListMasters

func (instance *Cluster) ListMasters(ctx context.Context) (list resources.IndexedListOfClusterNodes, ferr fail.Error)

ListMasters lists the node instances corresponding to masters (if there is such masters in the flavor...)

func (*Cluster) ListNodeIDs

func (instance *Cluster) ListNodeIDs(ctx context.Context) (list data.IndexedListOfStrings, ferr fail.Error)

ListNodeIDs lists IDs of the nodes in the Cluster

func (*Cluster) ListNodeIPs

func (instance *Cluster) ListNodeIPs(ctx context.Context) (list data.IndexedListOfStrings, ferr fail.Error)

ListNodeIPs lists the IPs of the nodes in the Cluster

func (*Cluster) ListNodeNames

func (instance *Cluster) ListNodeNames(ctx context.Context) (list data.IndexedListOfStrings, ferr fail.Error)

ListNodeNames lists the names of the nodes in the Cluster

func (*Cluster) ListNodes

func (instance *Cluster) ListNodes(ctx context.Context) (list resources.IndexedListOfClusterNodes, ferr fail.Error)

ListNodes lists node instances corresponding to the nodes in the Cluster satisfies interface Cluster.Controller

func (*Cluster) LookupNode

func (instance *Cluster) LookupNode(ctx context.Context, ref string) (found bool, ferr fail.Error)

LookupNode tells if the ID of the master passed as parameter is a node

func (*Cluster) RegisterFeature

func (instance *Cluster) RegisterFeature(feat resources.Feature, requiredBy resources.Feature, _ bool) (ferr fail.Error)

RegisterFeature registers an installed Feature in metadata of a Cluster satisfies interface resources.Targetable

func (*Cluster) Released

func (instance *Cluster) Released() error

Released tells cache handler the instance is no more used, giving a chance to free this instance from cache

func (*Cluster) RemoveFeature

func (instance *Cluster) RemoveFeature(ctx context.Context, name string, vars data.Map, settings resources.FeatureSettings) (resources.Results, fail.Error)

RemoveFeature uninstalls a feature from the Cluster

func (*Cluster) Sdump added in v21.11.1

func (instance *Cluster) Sdump() (_ string, ferr fail.Error)

func (*Cluster) Shrink

func (instance *Cluster) Shrink(ctx context.Context, count uint) (_ []*propertiesv3.ClusterNode, ferr fail.Error)

Shrink reduces cluster size by 'count' nodes

func (*Cluster) Start

func (instance *Cluster) Start(ctx context.Context) (ferr fail.Error)

Start starts the Cluster

func (*Cluster) Stop

func (instance *Cluster) Stop(ctx context.Context) (ferr fail.Error)

Stop stops the Cluster

func (*Cluster) TargetType

func (instance *Cluster) TargetType() featuretargettype.Enum

TargetType returns the type of the target

satisfies resources.Targetable interface

func (*Cluster) ToProtocol

func (instance *Cluster) ToProtocol() (_ *protocol.ClusterResponse, ferr fail.Error)

ToProtocol converts instance to protocol.ClusterResponse message

func (*Cluster) UnregisterFeature

func (instance *Cluster) UnregisterFeature(feat string) (ferr fail.Error)

UnregisterFeature unregisters a Feature from Cluster metadata satisfies interface resources.Targetable

type ConditionedFeatureParameter added in v21.11.1

type ConditionedFeatureParameter struct {
	FeatureParameter
	// contains filtered or unexported fields
}

ConditionedFeatureParameter describes a Feature prepared for use on a Target

func NewConditionedFeatureParameter added in v21.11.1

func NewConditionedFeatureParameter(parameter FeatureParameter, value *string) (ConditionedFeatureParameter, fail.Error)

NewConditionedFeatureParameter creates an instance of ConditionedFeatureParameter from FeatureParameter and sets the current value

func (ConditionedFeatureParameter) Value added in v21.11.1

func (cfp ConditionedFeatureParameter) Value() string

Value returns the current value of the parameter

type ConditionedFeatureParameters added in v21.11.1

type ConditionedFeatureParameters map[string]ConditionedFeatureParameter

func (ConditionedFeatureParameters) ToMap added in v21.11.1

ToMap converts a ConditionedFeatureParameters to a data.Map (to be used in template)

type Feature

type Feature struct {
	// contains filtered or unexported fields
}

Feature contains the information about a FeatureFile to be installed

func (*Feature) Add

func (instance *Feature) Add(ctx context.Context, target resources.Targetable, v data.Map, s resources.FeatureSettings) (_ resources.Results, ferr fail.Error)

Add installs the Feature on the target Installs succeeds if error == nil and Results.Successful() is true

func (*Feature) Applicable added in v21.11.1

func (instance *Feature) Applicable(t resources.Targetable) (bool, fail.Error)

Applicable tells if the Feature is installable on the target

func (*Feature) Check

func (instance *Feature) Check(ctx context.Context, target resources.Targetable, v data.Map, s resources.FeatureSettings) (_ resources.Results, ferr fail.Error)

Check if Feature is installed on target Check is ok if error is nil and Results.Successful() is true

func (*Feature) Clone

func (instance *Feature) Clone() (data.Clonable, error)

Clone ... satisfies interface data.Clonable

func (*Feature) ClusterSizingRequirements added in v21.11.1

func (instance *Feature) ClusterSizingRequirements() (map[string]interface{}, fail.Error)

ClusterSizingRequirements returns the cluster sizing requirements for all flavors FIXME: define a type to return instead of a map[string]interface{}

func (*Feature) ClusterSizingRequirementsForFlavor added in v21.11.1

func (instance *Feature) ClusterSizingRequirementsForFlavor(flavor string) (map[string]interface{}, fail.Error)

ClusterSizingRequirementsForFlavor returns the cluster sizing requirements for specified flavors returns:

  • nil, nil: no sizing requirements defined for the flavor
  • map[string]interface{}, nil: sizing requirements defined for the flavor
  • nil, *fail.ErrInvalidInstance: called from a null valued instance

FIXME: define a type to return instead of a map[string]interface{}

func (*Feature) Dependencies added in v21.11.1

func (instance *Feature) Dependencies() (map[string]struct{}, fail.Error)

Dependencies returns a list of features needed as dependencies

func (*Feature) GetDisplayFilename

func (instance *Feature) GetDisplayFilename() string

GetDisplayFilename returns the filename of the Feature definition, beautifulled, with error handling

func (*Feature) GetFilename

func (instance *Feature) GetFilename() string

GetFilename returns the filename of the Feature definition, with error handling

func (*Feature) GetID

func (instance *Feature) GetID() string

GetID ...

func (*Feature) GetName

func (instance *Feature) GetName() string

GetName returns the display name of the Feature, with error handling

func (*Feature) InstanciateInstallerOfMethod added in v21.11.1

func (instance *Feature) InstanciateInstallerOfMethod(m installmethod.Enum) Installer

InstanciateInstallerOfMethod instanciates the right installer corresponding to the method

func (*Feature) IsNull

func (instance *Feature) IsNull() bool

IsNull tells if the instance represents a null value

func (Feature) ListParametersWithControl added in v21.11.1

func (instance Feature) ListParametersWithControl() []string

ListParametersWithControl returns a slice of parameter names that have control script

func (*Feature) Remove

func (instance *Feature) Remove(ctx context.Context, target resources.Targetable, v data.Map, s resources.FeatureSettings) (_ resources.Results, ferr fail.Error)

Remove uninstalls the Feature from the target

func (*Feature) Replace

func (instance *Feature) Replace(p data.Clonable) (data.Clonable, error)

Replace ... satisfies interface data.Clonable may panic

func (*Feature) Specs

func (instance *Feature) Specs() *viper.Viper

Specs returns a copy of the spec file (we don't want external use to modify Feature.specs)

func (Feature) ToProtocol

func (instance Feature) ToProtocol() *protocol.FeatureResponse

ToProtocol converts a Feature to *protocol.FeatureResponse

type FeatureFile added in v21.11.1

type FeatureFile struct {
	// contains filtered or unexported fields
}

FeatureFile contains the information about an installable Feature

func LoadFeatureFile added in v21.11.1

func LoadFeatureFile(ctx context.Context, svc iaas.Service, name string, embeddedOnly bool) (_ *FeatureFile, ferr fail.Error)

LoadFeatureFile searches for a spec file named 'name' and initializes a new FeatureFile object with its content 'xerr' may contain:

  • nil: everything worked as expected
  • fail.ErrNotFound: no FeatureFile is found with the name
  • fail.ErrSyntax: FeatureFile contains syntax error

func (*FeatureFile) AddObserver added in v21.11.1

func (ff *FeatureFile) AddObserver(o observer.Observer) error

AddObserver ... satisfies interface data.Observable

func (*FeatureFile) Clone added in v21.11.1

func (ff *FeatureFile) Clone() (data.Clonable, error)

Clone ... satisfies interface data.Clonable

func (*FeatureFile) Destroyed added in v21.11.1

func (ff *FeatureFile) Destroyed() error

Destroyed is used to tell cache that the instance has been deleted and MUST be removed from cache. Note: Does nothing for now, prepared for future use satisfies interface data.Cacheable

func (*FeatureFile) DisplayFilename added in v21.11.1

func (ff *FeatureFile) DisplayFilename() string

DisplayFilename returns the filename of the Feature definition, beautifulled, with error handling

func (*FeatureFile) Filename added in v21.11.1

func (ff *FeatureFile) Filename() string

Filename returns the filename of the Feature definition, with error handling

func (*FeatureFile) GetID added in v21.11.1

func (ff *FeatureFile) GetID() string

GetID ...

func (*FeatureFile) GetName added in v21.11.1

func (ff *FeatureFile) GetName() string

GetName returns the display name of the Feature, with error handling

func (*FeatureFile) IsNull added in v21.11.1

func (ff *FeatureFile) IsNull() bool

IsNull tells if the instance represents a null value

func (*FeatureFile) NotifyObservers added in v21.11.1

func (ff *FeatureFile) NotifyObservers() error

NotifyObservers sends a signal to all registered Observers to notify change Satisfies interface data.Observable

func (*FeatureFile) Released added in v21.11.1

func (ff *FeatureFile) Released() error

Released is used to tell cache that the instance has been used and will not be anymore. Helps the cache handler to know when a cached item can be removed from cache (if needed) Note: Does nothing for now, prepared for future use satisfies interface data.Cacheable

func (*FeatureFile) RemoveObserver added in v21.11.1

func (ff *FeatureFile) RemoveObserver(name string) error

RemoveObserver ...

func (*FeatureFile) Replace added in v21.11.1

func (ff *FeatureFile) Replace(p data.Clonable) (data.Clonable, error)

Replace ... satisfies interface data.Clonable may panic

func (*FeatureFile) Specs added in v21.11.1

func (ff *FeatureFile) Specs() *viper.Viper

Specs returns a copy of the spec file (we don't want external use to modify Feature.specs)

type FeatureParameter added in v21.11.1

type FeatureParameter struct {
	// contains filtered or unexported fields
}

FeatureParameter describes a Feature parameter as defined by Feature file content

func NewFeatureParameter added in v21.11.1

func NewFeatureParameter(name, description string, hasDefault bool, defaultValue string, hasValueControl bool, valueControlCode string) (FeatureParameter, fail.Error)

NewFeatureParameter initiales an new instance of FeatureParameter

func (FeatureParameter) DefaultValue added in v21.11.1

func (fp FeatureParameter) DefaultValue() (string, bool)

DefaultValue returns the default value of the parameter

func (FeatureParameter) Description added in v21.11.1

func (fp FeatureParameter) Description() string

Description returns the description of the parameter

func (FeatureParameter) HasDefaultValue added in v21.11.1

func (fp FeatureParameter) HasDefaultValue() bool

HasDefaultValue tells if the parameter has a default value

func (FeatureParameter) HasValueControl added in v21.11.1

func (fp FeatureParameter) HasValueControl() bool

HasValueControl tells if the parameter has a value control

func (FeatureParameter) Name added in v21.11.1

func (fp FeatureParameter) Name() string

Name returns the name of the parameter

func (FeatureParameter) ValueControlCode added in v21.11.1

func (fp FeatureParameter) ValueControlCode() (string, bool)

ValueControlCode returns the bash code to control the value

type Host

type Host struct {
	*MetadataCore
	// contains filtered or unexported fields
}

Host ... follows interface resources.Host

func NewHost

func NewHost(svc iaas.Service) (_ *Host, ferr fail.Error)

NewHost ...

func (*Host) AddFeature

func (instance *Host) AddFeature(ctx context.Context, name string, vars data.Map, settings resources.FeatureSettings) (outcomes resources.Results, ferr fail.Error)

AddFeature handles 'safescale host feature add <host name or id> <feature name>'

func (*Host) BindSecurityGroup

func (instance *Host) BindSecurityGroup(ctx context.Context, sgInstance resources.SecurityGroup, enable resources.SecurityGroupActivation) (ferr fail.Error)

BindSecurityGroup binds a security group to the Host; if enabled is true, apply it immediately

func (*Host) Browse

func (instance *Host) Browse(ctx context.Context, callback func(*abstract.HostCore) fail.Error) (ferr fail.Error)

Browse walks through Host MetadataFolder and executes a callback for each entry

func (*Host) CheckFeature

func (instance *Host) CheckFeature(ctx context.Context, name string, vars data.Map, settings resources.FeatureSettings) (_ resources.Results, ferr fail.Error)

CheckFeature ...

func (*Host) ComplementFeatureParameters

func (instance *Host) ComplementFeatureParameters(ctx context.Context, v data.Map) (ferr fail.Error)

ComplementFeatureParameters configures parameters that are appropriate for the target satisfies interface install.Targetable

func (*Host) Create

func (instance *Host) Create(
	ctx context.Context, hostReq abstract.HostRequest, hostDef abstract.HostSizingRequirements,
) (_ *userdata.Content, ferr fail.Error)

Create creates a new Host and its metadata If the metadata is already carrying a Host, returns fail.ErrNotAvailable In case of error occurring after Host resource creation, 'instance' still contains ID of the Host created. This can be used to defer Host deletion in case of error

func (*Host) Delete

func (instance *Host) Delete(ctx context.Context) (ferr fail.Error)

Delete deletes a Host with its metadata and updates subnet links

func (*Host) DeleteFeature

func (instance *Host) DeleteFeature(ctx context.Context, name string, vars data.Map, settings resources.FeatureSettings) (_ resources.Results, ferr fail.Error)

DeleteFeature handles 'safescale host delete-feature <host name> <feature name>'

func (*Host) DisableSecurityGroup

func (instance *Host) DisableSecurityGroup(ctx context.Context, sgInstance resources.SecurityGroup) (ferr fail.Error)

DisableSecurityGroup disables a bound security group to Host

func (*Host) EnableSecurityGroup

func (instance *Host) EnableSecurityGroup(ctx context.Context, sg resources.SecurityGroup) (ferr fail.Error)

EnableSecurityGroup enables a bound security group to Host by applying its rules

func (*Host) ForceGetState

func (instance *Host) ForceGetState(ctx context.Context) (state hoststate.Enum, ferr fail.Error)

ForceGetState returns the current state of the provider Host then alter metadata

func (*Host) GetAccessIP

func (instance *Host) GetAccessIP(ctx context.Context) (_ string, ferr fail.Error)

GetAccessIP returns the IP to reach the Host

func (*Host) GetDefaultSubnet

func (instance *Host) GetDefaultSubnet(ctx context.Context) (subnetInstance resources.Subnet, ferr fail.Error)

GetDefaultSubnet returns the Networking instance corresponding to Host default subnet

func (*Host) GetMounts

func (instance *Host) GetMounts() (mounts *propertiesv1.HostMounts, ferr fail.Error)

GetMounts returns the information abouts the mounts of the Host

func (*Host) GetPrivateIP

func (instance *Host) GetPrivateIP(ctx context.Context) (_ string, ferr fail.Error)

GetPrivateIP returns the private IP of the Host on its default Networking

func (*Host) GetPrivateIPOnSubnet

func (instance *Host) GetPrivateIPOnSubnet(subnetID string) (ip string, ferr fail.Error)

GetPrivateIPOnSubnet returns the private IP of the Host on its default Subnet

func (*Host) GetPublicIP

func (instance *Host) GetPublicIP(ctx context.Context) (_ string, ferr fail.Error)

GetPublicIP returns the public IP address of the Host

func (*Host) GetSSHConfig

func (instance *Host) GetSSHConfig(ctx context.Context) (_ *system.SSHConfig, ferr fail.Error)

GetSSHConfig loads SSH configuration for Host from metadata

func (*Host) GetShare

func (instance *Host) GetShare(shareRef string) (_ *propertiesv1.HostShare, ferr fail.Error)

GetShare returns a clone of the propertiesv1.HostShare corresponding to share 'shareRef'

func (*Host) GetShares

func (instance *Host) GetShares() (shares *propertiesv1.HostShares, ferr fail.Error)

GetShares returns the information about the shares hosted by the Host

func (*Host) GetState

func (instance *Host) GetState() (hoststate.Enum, fail.Error)

GetState returns the last known state of the Host, without forced inspect

func (*Host) GetVolumes

func (instance *Host) GetVolumes() (_ *propertiesv1.HostVolumes, ferr fail.Error)

GetVolumes returns information about volumes attached to the Host

func (*Host) InstallMethods

func (instance *Host) InstallMethods() (map[uint8]installmethod.Enum, fail.Error)

InstallMethods returns a list of installation methods usable on the target, ordered from upper to lower preference (1 = highest preference) satisfies interface install.Targetable

func (*Host) InstalledFeatures

func (instance *Host) InstalledFeatures() []string

InstalledFeatures returns a slice of installed features satisfies interface resources.Targetable

func (*Host) IsClusterMember

func (instance *Host) IsClusterMember() (yes bool, ferr fail.Error)

IsClusterMember returns true if the Host is member of a cluster

func (*Host) IsFeatureInstalled

func (instance *Host) IsFeatureInstalled(name string) (found bool, ferr fail.Error)

IsFeatureInstalled ...

func (*Host) IsGateway

func (instance *Host) IsGateway() (_ bool, ferr fail.Error)

IsGateway tells if the Host acts as a gateway for a Subnet

func (*Host) IsNull

func (instance *Host) IsNull() bool

IsNull ...

func (*Host) IsSingle

func (instance *Host) IsSingle() (_ bool, ferr fail.Error)

IsSingle tells if the Host is single

func (*Host) ListEligibleFeatures added in v21.11.1

func (instance *Host) ListEligibleFeatures(ctx context.Context) (_ []resources.Feature, ferr fail.Error)

ListEligibleFeatures returns a slice of features eligible to Cluster

func (*Host) ListInstalledFeatures added in v21.11.1

func (instance *Host) ListInstalledFeatures(ctx context.Context) (_ []resources.Feature, ferr fail.Error)

ListInstalledFeatures returns a slice of installed features

func (*Host) ListSecurityGroups

func (instance *Host) ListSecurityGroups(state securitygroupstate.Enum) (list []*propertiesv1.SecurityGroupBond, ferr fail.Error)

ListSecurityGroups returns a slice of security groups bound to Host

func (*Host) Pull

func (instance *Host) Pull(ctx context.Context, target, source string, timeout time.Duration) (_ int, _ string, _ string, ferr fail.Error)

Pull downloads a file from Host

func (*Host) Push

func (instance *Host) Push(
	ctx context.Context, source, target, owner, mode string, timeout time.Duration,
) (_ int, _ string, _ string, ferr fail.Error)

Push uploads a file to Host

func (*Host) PushStringToFile

func (instance *Host) PushStringToFile(ctx context.Context, content string, filename string) (ferr fail.Error)

PushStringToFile creates a file 'filename' on remote 'Host' with the content 'content'

func (*Host) PushStringToFileWithOwnership

func (instance *Host) PushStringToFileWithOwnership(
	ctx context.Context, content string, filename string, owner, mode string,
) (ferr fail.Error)

PushStringToFileWithOwnership creates a file 'filename' on remote 'Host' with the content 'content', and apply ownership

func (*Host) Reboot

func (instance *Host) Reboot(ctx context.Context, soft bool) (ferr fail.Error)

Reboot reboots the Host

func (*Host) RegisterFeature

func (instance *Host) RegisterFeature(feat resources.Feature, requiredBy resources.Feature, clusterContext bool) (ferr fail.Error)

RegisterFeature registers an installed Feature in metadata of Host

func (*Host) RelaxedDeleteHost

func (instance *Host) RelaxedDeleteHost(ctx context.Context) (ferr fail.Error)

RelaxedDeleteHost is the method that really deletes a host, being a gateway or not

func (*Host) Reload

func (instance *Host) Reload() (ferr fail.Error)

Reload reloads Host from metadata and current Host state on provider state

func (*Host) Resize

func (instance *Host) Resize(ctx context.Context, hostSize abstract.HostSizingRequirements) (ferr fail.Error)

Resize ... not yet implemented

func (*Host) Run

func (instance *Host) Run(ctx context.Context, cmd string, outs outputs.Enum, connectionTimeout, executionTimeout time.Duration) (_ int, _ string, _ string, ferr fail.Error)

Run tries to execute command 'cmd' on the Host

func (*Host) Start

func (instance *Host) Start(ctx context.Context) (ferr fail.Error)

Start starts the Host

func (*Host) Stop

func (instance *Host) Stop(ctx context.Context) (ferr fail.Error)

Stop stops the Host

func (*Host) TargetType

func (instance *Host) TargetType() featuretargettype.Enum

TargetType returns the type of the target. satisfies install.Targetable interface.

func (*Host) ToProtocol

func (instance *Host) ToProtocol(ctx context.Context) (ph *protocol.Host, ferr fail.Error)

ToProtocol convert a resources.Host to protocol.Host

func (*Host) UnbindSecurityGroup

func (instance *Host) UnbindSecurityGroup(ctx context.Context, sgInstance resources.SecurityGroup) (ferr fail.Error)

UnbindSecurityGroup unbinds a security group from the Host

func (*Host) UnregisterFeature

func (instance *Host) UnregisterFeature(feat string) (ferr fail.Error)

UnregisterFeature unregisters a Feature from Cluster metadata

func (*Host) WaitSSHReady

func (instance *Host) WaitSSHReady(ctx context.Context, timeout time.Duration) (_ string, ferr fail.Error)

WaitSSHReady waits until SSH responds successfully

type Installer

type Installer interface {
	Check(context.Context, resources.Feature, resources.Targetable, data.Map, resources.FeatureSettings) (resources.Results, fail.Error)  // checks if a Feature is installed
	Add(context.Context, resources.Feature, resources.Targetable, data.Map, resources.FeatureSettings) (resources.Results, fail.Error)    // executes installation of Feature
	Remove(context.Context, resources.Feature, resources.Targetable, data.Map, resources.FeatureSettings) (resources.Results, fail.Error) // executes deletion of Feature
}

Installer defines the API of an Installer

func NewAptInstaller

func NewAptInstaller() Installer

NewAptInstaller creates a new instance of Installer using script

func NewDnfInstaller

func NewDnfInstaller() Installer

NewDnfInstaller creates a new instance of Installer using script

func NewYumInstaller

func NewYumInstaller() Installer

NewYumInstaller creates a new instance of Installer using script

type Item

type Item struct {
	Local        string
	Remote       string
	RemoteOwner  string
	RemoteRights string
}

Item is a helper struct to ease the copy of local files to remote

func (Item) RemoveRemote

func (rfc Item) RemoveRemote(ctx context.Context, host resources.Host) fail.Error

RemoveRemote deletes the remote file from host

func (Item) Upload

func (rfc Item) Upload(ctx context.Context, host resources.Host) (ferr fail.Error)

Upload transfers the local file to the hostname

func (Item) UploadString

func (rfc Item) UploadString(ctx context.Context, content string, host resources.Host) fail.Error

UploadString transfers the local file to the hostname

type KongController

type KongController struct {
	// contains filtered or unexported fields
}

KongController allows to control Kong, installed on a host

func NewKongController

func NewKongController(ctx context.Context, svc iaas.Service, subnet resources.Subnet, addressPrimaryGateway bool) (*KongController, fail.Error)

NewKongController creates a controller for Kong

func (*KongController) Apply

func (k *KongController) Apply(ctx context.Context, rule map[interface{}]interface{}, values *data.Map) (string, fail.Error)

Apply applies the rule to Kong proxy Currently, support rule types 'service', 'route' and 'upstream' Returns rule name and error

func (*KongController) GetHostname

func (k *KongController) GetHostname() string

GetHostname returns the name of the Host that corresponds to this instance

type MetadataCore

type MetadataCore struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

MetadataCore contains the core functions of a persistent object

func NewCore

func NewCore(svc iaas.Service, kind string, path string, instance data.Clonable) (_ *MetadataCore, ferr fail.Error)

NewCore creates an instance of MetadataCore

func (*MetadataCore) AddObserver

func (myself *MetadataCore) AddObserver(o observer.Observer) error

AddObserver ... satisfies interface data.Observable

func (*MetadataCore) Alter

func (myself *MetadataCore) Alter(callback resources.Callback, options ...data.ImmutableKeyValue) (ferr fail.Error)

Alter protects the data for exclusive write Valid keyvalues for options are : - "Reload": bool = allow disabling reloading from Object Storage if set to false (default is true)

func (*MetadataCore) BrowseFolder

func (myself *MetadataCore) BrowseFolder(callback func(buf []byte) fail.Error) (ferr fail.Error)

BrowseFolder walks through MetadataFolder and executes a callback for each entry

func (*MetadataCore) Carry

func (myself *MetadataCore) Carry(clonable data.Clonable) (ferr fail.Error)

Carry links metadata with real data If c is already carrying a shielded data, returns fail.NotAvailableError

errors returned : - fail.ErrInvalidInstance - fail.ErrInvalidParameter - fail.ErrNotAvailable if the MetadataCore instance already carries a data

func (*MetadataCore) Delete

func (myself *MetadataCore) Delete() (ferr fail.Error)

Delete deletes the metadata

func (*MetadataCore) Deserialize

func (myself *MetadataCore) Deserialize(buf []byte) (ferr fail.Error)

Deserialize reads json code and reinstantiates

func (*MetadataCore) Destroyed

func (myself *MetadataCore) Destroyed() error

Destroyed is used to tell cache that the instance has been deleted and MUST be removed from cache. satisfies interface data.Cacheable

func (*MetadataCore) GetID

func (myself *MetadataCore) GetID() string

GetID returns the id of the data protected satisfies interface data.Identifiable

func (*MetadataCore) GetKind

func (myself *MetadataCore) GetKind() string

GetKind returns the kind of object served

func (*MetadataCore) GetName

func (myself *MetadataCore) GetName() string

GetName returns the name of the data protected satisfies interface data.Identifiable

func (*MetadataCore) Inspect

func (myself *MetadataCore) Inspect(callback resources.Callback) (ferr fail.Error)

Inspect protects the data for shared read

func (*MetadataCore) IsNull

func (myself *MetadataCore) IsNull() bool

IsNull returns true if the MetadataCore instance represents the null value for MetadataCore

func (*MetadataCore) IsTaken added in v21.11.1

func (myself *MetadataCore) IsTaken() bool

func (*MetadataCore) NotifyObservers

func (myself *MetadataCore) NotifyObservers() error

NotifyObservers sends a signal to all registered Observers to notify change Satisfies interface data.Observable

func (*MetadataCore) Read

func (myself *MetadataCore) Read(ref string) (ferr fail.Error)

Read gets the data from Object Storage

func (*MetadataCore) ReadByID

func (myself *MetadataCore) ReadByID(id string) (ferr fail.Error)

ReadByID reads a metadata identified by ID from Object Storage

func (*MetadataCore) Released

func (myself *MetadataCore) Released() error

Released is used to tell cache that the instance has been used and will not be anymore. Helps the cache handler to know when a cached item can be removed from cache (if needed) satisfies interface data.Cacheable

func (*MetadataCore) Reload

func (myself *MetadataCore) Reload() (ferr fail.Error)

Reload reloads the content from the Object Storage

func (*MetadataCore) RemoveObserver

func (myself *MetadataCore) RemoveObserver(name string) error

RemoveObserver ...

func (*MetadataCore) Review

func (myself *MetadataCore) Review(callback resources.Callback) (ferr fail.Error)

Review allows to access data contained in the instance, without reloading from the Object Storage; it's intended to speed up operations that accept data is not up-to-date (for example, SSH configuration to access host should not change through time).

func (*MetadataCore) Sdump added in v21.11.1

func (myself *MetadataCore) Sdump() (_ string, ferr fail.Error)

func (*MetadataCore) Service added in v21.11.1

func (myself *MetadataCore) Service() iaas.Service

Service returns the iaas.Service used to create/load the persistent object

type MetadataFolder

type MetadataFolder struct {
	// contains filtered or unexported fields
}

MetadataFolder describes a metadata MetadataFolder

func NewMetadataFolder

func NewMetadataFolder(svc iaas.Service, path string) (MetadataFolder, fail.Error)

NewMetadataFolder creates a new Metadata MetadataFolder object, ready to help access the metadata inside it

func (MetadataFolder) Browse

func (instance MetadataFolder) Browse(path string, callback folderDecoderCallback) fail.Error

Browse browses the content of a specific path in Metadata and executes 'callback' on each entry

func (MetadataFolder) Delete

func (instance MetadataFolder) Delete(path string, name string) fail.Error

Delete removes metadata passed as parameter

func (MetadataFolder) GetBucket

func (instance MetadataFolder) GetBucket() (abstract.ObjectStorageBucket, fail.Error)

GetBucket returns the bucket used by the MetadataFolder to store Object Storage

func (*MetadataFolder) IsNull

func (instance *MetadataFolder) IsNull() bool

IsNull tells if the MetadataFolder instance should be considered as a null value

func (MetadataFolder) Lookup

func (instance MetadataFolder) Lookup(path string, name string) fail.Error

Lookup tells if the object named 'name' is inside the ObjectStorage MetadataFolder

func (MetadataFolder) Path

func (instance MetadataFolder) Path() string

Path returns the base path of the MetadataFolder

func (MetadataFolder) Read

func (instance MetadataFolder) Read(path string, name string, callback func([]byte) fail.Error, options ...datadef.ImmutableKeyValue) fail.Error

Read loads the content of the object stored in metadata bucket returns true, nil if the object has been found returns false, fail.Error if an error occurred (including object not found) The callback function has to know how to decode it and where to store the result

func (MetadataFolder) Service added in v21.11.1

func (instance MetadataFolder) Service() iaas.Service

Service returns the service used by the MetadataFolder

func (MetadataFolder) Write

func (instance MetadataFolder) Write(path string, name string, content []byte, options ...datadef.ImmutableKeyValue) fail.Error

Write writes the content in Object Storage, and check the write is committed. Returns nil on success (with assurance the write has been committed on remote side) May return fail.ErrTimeout if the read-after-write operation timed out. Return any other errors that can occur from the remote side

type Network

type Network struct {
	*MetadataCore
}

Network links Object Storage MetadataFolder and Networking

func (*Network) AbandonSubnet

func (instance *Network) AbandonSubnet(ctx context.Context, subnetID string) (ferr fail.Error)

AbandonSubnet unregisters a Subnet from the Network (does not imply the Subnet is deleted)

func (*Network) AdoptSubnet

func (instance *Network) AdoptSubnet(ctx context.Context, subnet resources.Subnet) (ferr fail.Error)

AdoptSubnet registers a Subnet to the Network metadata

func (*Network) Browse

func (instance *Network) Browse(ctx context.Context, callback func(*abstract.Network) fail.Error) (ferr fail.Error)

Browse walks through all the metadata objects in subnet

func (*Network) Create

func (instance *Network) Create(ctx context.Context, req abstract.NetworkRequest) (ferr fail.Error)

Create creates a Network returns:

  • *fail.ErrInvalidParameter: one parameter is invalid
  • *failErrInvalidInstance: Create() is called from bad instance (nil or null value)
  • *fail.ErrNotAvailable: a Network with the same name is currently created
  • *fail.ErrDuplicate: a Network with the same name already exist on Provider Side (managed or not by SafeScale)
  • *fail.ErrAborted: abort signal has been received

func (*Network) Delete

func (instance *Network) Delete(ctx context.Context) (ferr fail.Error)

Delete deletes subnet

func (*Network) GetCIDR

func (instance *Network) GetCIDR() (cidr string, ferr fail.Error)

GetCIDR returns the CIDR of the subnet

func (*Network) Import

func (instance *Network) Import(ctx context.Context, ref string) (ferr fail.Error)

Import imports an existing Network in SafeScale metadata

func (*Network) InspectSubnet

func (instance *Network) InspectSubnet(ctx context.Context, ref string) (_ resources.Subnet, ferr fail.Error)

InspectSubnet returns the instance of resources.Subnet corresponding to the subnet referenced by 'ref' attached to the subnet

func (*Network) IsNull

func (instance *Network) IsNull() bool

IsNull tells if the instance corresponds to subnet Null Value

func (*Network) ToProtocol

func (instance *Network) ToProtocol() (out *protocol.Network, ferr fail.Error)

ToProtocol converts resources.Network to protocol.Network

type RemoteFilesHandler

type RemoteFilesHandler struct {
	// contains filtered or unexported fields
}

RemoteFilesHandler handles the copy of files and cleanup

func (*RemoteFilesHandler) Add

func (rfh *RemoteFilesHandler) Add(file *Item)

Add adds an Item in the handler

func (*RemoteFilesHandler) Cleanup

func (rfh *RemoteFilesHandler) Cleanup(ctx context.Context, host resources.Host) fail.Error

Cleanup executes the removal of remote files. NOTE: Removal of local files is the responsibility of the caller, not the RemoteFilesHandler. TODO: allow to cleanup on many hosts

func (*RemoteFilesHandler) Count

func (rfh *RemoteFilesHandler) Count() uint

Count returns the number of files in the handler

func (*RemoteFilesHandler) Upload

func (rfh *RemoteFilesHandler) Upload(ctx context.Context, host resources.Host) fail.Error

Upload executes the copy of files TODO: allow to upload to many hosts

type SecurityGroup

type SecurityGroup struct {
	*MetadataCore
}

SecurityGroup ... follows interface resources.SecurityGroup

func LoadSecurityGroup

func LoadSecurityGroup(ctx context.Context, svc iaas.Service, ref string, options ...data.ImmutableKeyValue) (_ *SecurityGroup, ferr fail.Error)

LoadSecurityGroup ...

func NewSecurityGroup

func NewSecurityGroup(svc iaas.Service) (*SecurityGroup, fail.Error)

NewSecurityGroup ...

func (*SecurityGroup) AddRule

func (instance *SecurityGroup) AddRule(ctx context.Context, rule *abstract.SecurityGroupRule) (ferr fail.Error)

AddRule adds a rule to a security group

func (*SecurityGroup) AddRules

func (instance *SecurityGroup) AddRules(ctx context.Context, rules abstract.SecurityGroupRules) (ferr fail.Error)

AddRules adds rules to a Security Group

func (*SecurityGroup) BindToHost

func (instance *SecurityGroup) BindToHost(ctx context.Context, hostInstance resources.Host, enable resources.SecurityGroupActivation, mark resources.SecurityGroupMark) (ferr fail.Error)

BindToHost binds the security group to a host.

func (*SecurityGroup) BindToSubnet

func (instance *SecurityGroup) BindToSubnet(ctx context.Context, subnetInstance resources.Subnet, enable resources.SecurityGroupActivation, mark resources.SecurityGroupMark) (ferr fail.Error)

BindToSubnet binds the security group to a host This method assumes the Subnet is not called while the Subnet is currently locked (otherwise will deadlock...)

func (*SecurityGroup) Browse

func (instance *SecurityGroup) Browse(ctx context.Context, callback func(*abstract.SecurityGroup) fail.Error) (ferr fail.Error)

Browse walks through SecurityGroup MetadataFolder and executes a callback for each entries

func (*SecurityGroup) CheckConsistency

func (instance *SecurityGroup) CheckConsistency(_ context.Context) fail.Error

CheckConsistency checks the rules in the security group on provider side are identical to the ones registered in metadata

func (*SecurityGroup) Clear

func (instance *SecurityGroup) Clear(ctx context.Context) (ferr fail.Error)

Clear removes all rules from a security group

func (*SecurityGroup) Create

func (instance *SecurityGroup) Create(ctx context.Context, networkID, name, description string, rules abstract.SecurityGroupRules) (ferr fail.Error)

Create creates a new SecurityGroup and its metadata. If needed by Cloud Provider, the Security Group will be attached to Network identified by 'networkID' (otherwise this parameter is ignored) If the metadata is already carrying a SecurityGroup, returns fail.ErrNotAvailable

func (*SecurityGroup) Delete

func (instance *SecurityGroup) Delete(ctx context.Context, force bool) (ferr fail.Error)

Delete deletes a Security Group

func (*SecurityGroup) DeleteRule

func (instance *SecurityGroup) DeleteRule(ctx context.Context, rule *abstract.SecurityGroupRule) (ferr fail.Error)

DeleteRule deletes a rule identified by its ID from a security group If rule is not in the security group, returns *fail.ErrNotFound

func (*SecurityGroup) GetBoundHosts

func (instance *SecurityGroup) GetBoundHosts(ctx context.Context) (_ []*propertiesv1.SecurityGroupBond, ferr fail.Error)

GetBoundHosts returns the list of ID of hosts bound to the security group

func (*SecurityGroup) GetBoundSubnets

func (instance *SecurityGroup) GetBoundSubnets(ctx context.Context) (list []*propertiesv1.SecurityGroupBond, ferr fail.Error)

GetBoundSubnets returns the subnet bound to the security group

func (*SecurityGroup) IsNull

func (instance *SecurityGroup) IsNull() bool

IsNull tests if instance is nil or empty

func (*SecurityGroup) Reset

func (instance *SecurityGroup) Reset(ctx context.Context) (ferr fail.Error)

Reset clears a security group and re-adds associated rules as stored in metadata

func (*SecurityGroup) ToProtocol

func (instance *SecurityGroup) ToProtocol() (_ *protocol.SecurityGroupResponse, ferr fail.Error)

ToProtocol converts a Security Group to protobuf message

func (*SecurityGroup) UnbindFromHost

func (instance *SecurityGroup) UnbindFromHost(ctx context.Context, hostInstance resources.Host) (ferr fail.Error)

UnbindFromHost unbinds the security group from a host

func (*SecurityGroup) UnbindFromHostByReference

func (instance *SecurityGroup) UnbindFromHostByReference(ctx context.Context, hostRef string) (ferr fail.Error)

UnbindFromHostByReference unbinds the security group from a host identified by reference (id or name)

func (*SecurityGroup) UnbindFromSubnet

func (instance *SecurityGroup) UnbindFromSubnet(ctx context.Context, subnetInstance resources.Subnet) (ferr fail.Error)

UnbindFromSubnet unbinds the security group from a subnet

func (*SecurityGroup) UnbindFromSubnetByReference

func (instance *SecurityGroup) UnbindFromSubnetByReference(ctx context.Context, subnetRef string) (ferr fail.Error)

UnbindFromSubnetByReference unbinds the security group from a subnet

type Share

type Share struct {
	*MetadataCore
}

Share contains information to maintain in Object Storage a list of shared folders

func (*Share) Browse

func (instance *Share) Browse(ctx context.Context, callback func(string, string) fail.Error) (ferr fail.Error)

Browse walks through shares MetadataFolder and executes a callback for each entry

func (*Share) Create

func (instance *Share) Create(
	ctx context.Context,
	shareName string,
	server resources.Host, spath string,
	options string,

) (ferr fail.Error)

Create creates a Share on host

func (*Share) Delete

func (instance *Share) Delete(ctx context.Context) (ferr fail.Error)

Delete deletes a Share from server

func (*Share) GetServer

func (instance *Share) GetServer(ctx context.Context) (_ resources.Host, ferr fail.Error)

GetServer returns the Host acting as Share server, with error handling Note: do not forget to call .Released() on returned host when you do not use it anymore

func (*Share) IsNull

func (instance *Share) IsNull() bool

IsNull tells if the instance should be considered as a null value

func (*Share) Mount

func (instance *Share) Mount(ctx context.Context, target resources.Host, spath string, withCache bool) (_ *propertiesv1.HostRemoteMount, ferr fail.Error)

Mount mounts a Share on a local directory of a host returns a clone of the propertiesv1.HostRemoteMount created on success

func (*Share) ToProtocol

func (instance *Share) ToProtocol(ctx context.Context) (_ *protocol.ShareMountList, ferr fail.Error)

ToProtocol transforms a Share into its protobuf representation

func (*Share) Unmount

func (instance *Share) Unmount(ctx context.Context, target resources.Host) (ferr fail.Error)

Unmount unmounts a Share from local directory of a host

type ShareIdentity

type ShareIdentity struct {
	HostID    string `json:"host_id"`    // contains the ID of the host serving the Share
	HostName  string `json:"host_name"`  // contains the name of the host serving the Share
	ShareID   string `json:"share_id"`   // contains the ID of the Share
	ShareName string `json:"share_name"` // contains the name of the Share
}

ShareIdentity contains information about a Share

func (ShareIdentity) Clone

func (si ShareIdentity) Clone() (data.Clonable, error)

Clone ... satisfies interface data.Clonable

func (*ShareIdentity) Deserialize

func (si *ShareIdentity) Deserialize(buf []byte) (ferr fail.Error)

Deserialize ... satisfies interface data.Serializable

func (ShareIdentity) GetID

func (si ShareIdentity) GetID() string

GetID returns the ID of the Share satisfies interface data.Identifiable

func (ShareIdentity) GetName

func (si ShareIdentity) GetName() string

GetName returns the name of the Share satisfies interface data.Identifiable

func (*ShareIdentity) IsNull

func (si *ShareIdentity) IsNull() bool

IsNull ... satisfies interface data.Clonable

func (*ShareIdentity) Replace

func (si *ShareIdentity) Replace(p data.Clonable) (data.Clonable, error)

Replace ... satisfies interface data.Clonable may panic

func (ShareIdentity) Serialize

func (si ShareIdentity) Serialize() ([]byte, fail.Error)

Serialize ... satisfies interface data.Serializable

type Subnet

type Subnet struct {
	*MetadataCore
	// contains filtered or unexported fields
}

Subnet links Object Storage MetadataFolder and Subnet

func LoadSubnet

func LoadSubnet(ctx context.Context, svc iaas.Service, networkRef, subnetRef string, options ...data.ImmutableKeyValue) (_ *Subnet, ferr fail.Error)

LoadSubnet loads the metadata of a Subnet

func NewSubnet

func NewSubnet(svc iaas.Service) (_ *Subnet, ferr fail.Error)

NewSubnet creates an instance of Subnet used as resources.Subnet

func (*Subnet) AttachHost

func (instance *Subnet) AttachHost(ctx context.Context, host resources.Host) (ferr fail.Error)

AttachHost links Host to the Subnet

func (*Subnet) BindSecurityGroup

func (instance *Subnet) BindSecurityGroup(ctx context.Context, sgInstance resources.SecurityGroup, enabled resources.SecurityGroupActivation) (ferr fail.Error)

BindSecurityGroup binds a security group to the Subnet; if enabled is true, apply it immediately

func (*Subnet) Browse

func (instance *Subnet) Browse(ctx context.Context, callback func(*abstract.Subnet) fail.Error) (ferr fail.Error)

Browse walks through all the metadata objects in Subnet

func (*Subnet) Carry

func (instance *Subnet) Carry(ctx context.Context, clonable data.Clonable) (ferr fail.Error)

Carry wraps rv.core.Carry() to add Volume to service cache

func (*Subnet) Create

func (instance *Subnet) Create(ctx context.Context, req abstract.SubnetRequest, gwname string, gwSizing *abstract.HostSizingRequirements) (ferr fail.Error)

Create creates a Subnet

func (*Subnet) CreateSecurityGroups

func (instance *Subnet) CreateSecurityGroups(ctx context.Context, networkInstance resources.Network, keepOnFailure bool, defaultSSHPort int32) (subnetGWSG, subnetInternalSG, subnetPublicIPSG resources.SecurityGroup, ferr fail.Error)

CreateSecurityGroups ...

func (*Subnet) CreateSubnetWithoutGateway

func (instance *Subnet) CreateSubnetWithoutGateway(ctx context.Context, req abstract.SubnetRequest) (ferr fail.Error)

CreateSubnetWithoutGateway creates a Subnet named like 'singleHostName', without gateway

func (*Subnet) Delete

func (instance *Subnet) Delete(ctx context.Context) (ferr fail.Error)

Delete deletes a Subnet

func (*Subnet) DetachHost

func (instance *Subnet) DetachHost(ctx context.Context, hostID string) (ferr fail.Error)

DetachHost unlinks host ID from Subnet

func (*Subnet) DisableSecurityGroup

func (instance *Subnet) DisableSecurityGroup(ctx context.Context, sgInstance resources.SecurityGroup) (ferr fail.Error)

DisableSecurityGroup disables an already binded security group on Subnet

func (*Subnet) EnableSecurityGroup

func (instance *Subnet) EnableSecurityGroup(ctx context.Context, sgInstance resources.SecurityGroup) (ferr fail.Error)

EnableSecurityGroup enables a binded security group to Subnet

func (*Subnet) GetCIDR

func (instance *Subnet) GetCIDR() (cidr string, ferr fail.Error)

GetCIDR returns the CIDR of the Subnet

func (*Subnet) GetDefaultRouteIP

func (instance *Subnet) GetDefaultRouteIP(ctx context.Context) (ip string, ferr fail.Error)

GetDefaultRouteIP returns the IP of the LAN default route

func (*Subnet) GetEndpointIP

func (instance *Subnet) GetEndpointIP(ctx context.Context) (ip string, ferr fail.Error)

GetEndpointIP returns the internet (public) IP to reach the Subnet

func (*Subnet) GetGatewayPublicIP

func (instance *Subnet) GetGatewayPublicIP(ctx context.Context, primary bool) (_ string, ferr fail.Error)

GetGatewayPublicIP returns the Public IP of a particular gateway

func (*Subnet) GetGatewayPublicIPs

func (instance *Subnet) GetGatewayPublicIPs(ctx context.Context) (_ []string, ferr fail.Error)

GetGatewayPublicIPs returns a slice of public IP of gateways

func (*Subnet) GetState

func (instance *Subnet) GetState() (state subnetstate.Enum, ferr fail.Error)

GetState returns the current state of the Subnet

func (*Subnet) GetVirtualIP

func (instance *Subnet) GetVirtualIP() (vip *abstract.VirtualIP, ferr fail.Error)

GetVirtualIP returns an abstract.VirtualIP used by gateway HA

func (*Subnet) HasVirtualIP

func (instance *Subnet) HasVirtualIP() (bool, fail.Error)

HasVirtualIP tells if the Subnet uses a VIP a default route

func (*Subnet) InspectGateway

func (instance *Subnet) InspectGateway(ctx context.Context, primary bool) (_ resources.Host, ferr fail.Error)

InspectGateway returns the gateway related to Subnet

func (*Subnet) InspectGatewaySecurityGroup

func (instance *Subnet) InspectGatewaySecurityGroup(ctx context.Context) (_ resources.SecurityGroup, ferr fail.Error)

InspectGatewaySecurityGroup returns the instance of SecurityGroup in Subnet related to external access on gateways

func (*Subnet) InspectInternalSecurityGroup

func (instance *Subnet) InspectInternalSecurityGroup(ctx context.Context) (_ resources.SecurityGroup, ferr fail.Error)

InspectInternalSecurityGroup returns the instance of SecurityGroup for internal security inside the Subnet

func (*Subnet) InspectNetwork

func (instance *Subnet) InspectNetwork(ctx context.Context) (rn resources.Network, ferr fail.Error)

InspectNetwork returns the Network instance owning the Subnet

func (*Subnet) InspectPublicIPSecurityGroup

func (instance *Subnet) InspectPublicIPSecurityGroup(ctx context.Context) (_ resources.SecurityGroup, ferr fail.Error)

InspectPublicIPSecurityGroup returns the instance of SecurityGroup in Subnet for Hosts with Public IP (which does not apply on gateways)

func (*Subnet) IsNull

func (instance *Subnet) IsNull() bool

func (*Subnet) ListHosts

func (instance *Subnet) ListHosts(ctx context.Context) (_ []resources.Host, ferr fail.Error)

ListHosts returns the list of Hosts attached to the Subnet (excluding gateway)

func (*Subnet) ListSecurityGroups

func (instance *Subnet) ListSecurityGroups(ctx context.Context, state securitygroupstate.Enum) (list []*propertiesv1.SecurityGroupBond, ferr fail.Error)

ListSecurityGroups returns a slice of security groups bound to Subnet

func (*Subnet) Released

func (instance *Subnet) Released() error

Released overloads core.Released() to release the parent Network instance

func (*Subnet) ToProtocol

func (instance *Subnet) ToProtocol(ctx context.Context) (_ *protocol.Subnet, ferr fail.Error)

ToProtocol converts resources.Network to protocol.Network

func (*Subnet) UnbindSecurityGroup

func (instance *Subnet) UnbindSecurityGroup(ctx context.Context, sgInstance resources.SecurityGroup) (ferr fail.Error)

UnbindSecurityGroup unbinds a security group from the host

type Tenant

type Tenant struct {
	Name       string
	BucketName string
	Service    iaas.Service
}

Tenant structure to handle name and Service for a tenant

func CurrentTenant

func CurrentTenant() *Tenant

CurrentTenant returns the tenant used for commands or, if not set, set the tenant to use if it is the only one registered

Directories

Path Synopsis
boh
k8s
metadatamaintenance

Jump to

Keyboard shortcuts

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