openstack

package
v0.0.0-...-b9bb202 Latest Latest
Warning

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

Go to latest
Published: Dec 20, 2024 License: AGPL-3.0 Imports: 67 Imported by: 0

Documentation

Overview

Package openstack implements the OpenStack provider, registered with environs under the name "openstack".

Index

Constants

View Source
const (
	ExternalNetworkKey    = "external-network"
	NetworkKey            = "network"
	PolicyTargetGroupKey  = "policy-target-group"
	UseDefaultSecgroupKey = "use-default-secgroup"
	UseOpenstackGBPKey    = "use-openstack-gbp"
)
View Source
const (
	CredAttrTenantName        = "tenant-name"
	CredAttrTenantID          = "tenant-id"
	CredAttrUserName          = "username"
	CredAttrPassword          = "password"
	CredAttrDomainName        = "domain-name"
	CredAttrProjectDomainName = "project-domain-name"
	CredAttrUserDomainName    = "user-domain-name"
	CredAttrAccessKey         = "access-key"
	CredAttrSecretKey         = "secret-key"
	CredAttrVersion           = "version"
)
View Source
const (
	CinderProviderType = storage.ProviderType("cinder")
)
View Source
const (
	GroupControllerPattern = `^(?P<prefix>juju-)(?P<controllerUUID>` + validUUID + `)(?P<suffix>-.*)$`
)

Variables

This section is empty.

Functions

func AcceptAllFlavors

func AcceptAllFlavors(nova.FlavorDetail) bool

AcceptAllFlavors is a function that returns true for any input, and can be assigned to a value of type FlavorFilterFunc.

func IsAuthorisationFailure

func IsAuthorisationFailure(err error) bool

IsAuthorisationFailure determines if the given error has an authorisation failure.

func IsNotFoundError

func IsNotFoundError(err error) bool

Types

type AuthMode

type AuthMode string

type ClientFactory

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

ClientFactory creates various goose (openstack) clients. TODO (stickupkid): This should be moved into goose and the factory should accept a configuration returning back goose clients.

func NewClientFactory

func NewClientFactory(spec environscloudspec.CloudSpec, sslHostnameConfig SSLHostnameConfig) *ClientFactory

NewClientFactory creates a new ClientFactory from the CloudSpec and environ config arguments.

func (*ClientFactory) AuthClient

func (c *ClientFactory) AuthClient() client.AuthenticatingClient

AuthClient returns a goose AuthenticatingClient.

func (*ClientFactory) Init

func (c *ClientFactory) Init() error

Init the client factory, returns an error if the initialization fails.

func (*ClientFactory) Neutron

func (c *ClientFactory) Neutron() (*neutron.Client, error)

Neutron creates a new Neutron client from the auth mode (v3 or falls back to v2) and the updated credentials. Note: we override the http.Client headers with specific neutron client headers.

func (*ClientFactory) Nova

func (c *ClientFactory) Nova() (*nova.Client, error)

Nova creates a new Nova client from the auth mode (v3 or falls back to v2) and the updated credentials.

type ClientFunc

type ClientFunc = func(cred identity.Credentials,
	authMode identity.AuthMode,
	options ...ClientOption) (client.AuthenticatingClient, error)

ClientFunc is used to create a goose client.

type ClientOption

type ClientOption func(*clientOptions)

ClientOption to be passed into the transport construction to customize the default transport.

func WithCACertificates

func WithCACertificates(value ...string) ClientOption

WithCACertificates contains Authority certificates to be used to validate certificates of cloud infrastructure components. The contents are Base64 encoded x.509 certs.

func WithHTTPClient

func WithHTTPClient(value *http.Client) ClientOption

WithHTTPClient allows to define the http.Client to use.

func WithHTTPHeadersFunc

func WithHTTPHeadersFunc(httpHeadersFunc goosehttp.HeadersFunc) ClientOption

WithHTTPHeadersFunc allows passing in a new HTTP headers func for the client to execute for each request.

func WithSkipHostnameVerification

func WithSkipHostnameVerification(value bool) ClientOption

WithSkipHostnameVerification will skip hostname verification on the TLS/SSL certificates.

type Environ

type Environ struct {
	environs.NoSpaceDiscoveryEnviron
	// contains filtered or unexported fields
}

func (*Environ) AdoptResources

func (e *Environ) AdoptResources(ctx envcontext.ProviderCallContext, controllerUUID string, fromVersion version.Number) error

AdoptResources is part of the Environ interface.

func (*Environ) AgentMetadataLookupParams

func (e *Environ) AgentMetadataLookupParams(region string) (*simplestreams.MetadataLookupParams, error)

AgentMetadataLookupParams returns parameters which are used to query agent simple-streams metadata.

func (*Environ) AllInstances

func (e *Environ) AllInstances(ctx envcontext.ProviderCallContext) ([]instances.Instance, error)

AllInstances returns all instances in this environment.

func (*Environ) AllRunningInstances

func (e *Environ) AllRunningInstances(ctx envcontext.ProviderCallContext) ([]instances.Instance, error)

AllRunningInstances returns all running, available instances in this environment.

func (*Environ) AllocateContainerAddresses

func (e *Environ) AllocateContainerAddresses(ctx envcontext.ProviderCallContext, hostInstanceID instance.Id, containerTag names.MachineTag, preparedInfo network.InterfaceInfos) (network.InterfaceInfos, error)

AllocateContainerAddresses is specified on environs.Networking.

func (*Environ) AvailabilityZones

AvailabilityZones returns a slice of availability zones.

func (*Environ) CloseModelPorts

func (e *Environ) CloseModelPorts(ctx envcontext.ProviderCallContext, rules firewall.IngressRules) error

func (*Environ) ClosePorts

func (*Environ) Config

func (e *Environ) Config() *config.Config

func (*Environ) ConstraintsValidator

func (e *Environ) ConstraintsValidator(ctx envcontext.ProviderCallContext) (constraints.Validator, error)

ConstraintsValidator is defined on the Environs interface.

func (*Environ) ControllerInstances

func (e *Environ) ControllerInstances(ctx envcontext.ProviderCallContext, controllerUUID string) ([]instance.Id, error)

func (*Environ) Create

Create is part of the Environ interface.

func (*Environ) DeletePorts

func (e *Environ) DeletePorts(networks []nova.ServerNetworks) error

DeletePorts goes through and attempts to delete any ports that have been created during the creation of the networks for the given instance.

func (*Environ) DeriveAvailabilityZones

func (e *Environ) DeriveAvailabilityZones(ctx envcontext.ProviderCallContext, args environs.StartInstanceParams) ([]string, error)

DeriveAvailabilityZones is part of the common.ZonedEnviron interface.

func (*Environ) Destroy

func (e *Environ) Destroy(ctx envcontext.ProviderCallContext) error

func (*Environ) DestroyController

func (e *Environ) DestroyController(ctx envcontext.ProviderCallContext, controllerUUID string) error

DestroyController implements the Environ interface.

func (*Environ) ImageMetadataLookupParams

func (e *Environ) ImageMetadataLookupParams(region string) (*simplestreams.MetadataLookupParams, error)

ImageMetadataLookupParams returns parameters which are used to query image simple-streams metadata.

func (*Environ) IngressRules

func (*Environ) InstanceAvailabilityZoneNames

func (e *Environ) InstanceAvailabilityZoneNames(ctx envcontext.ProviderCallContext, ids []instance.Id) (map[instance.Id]string, error)

InstanceAvailabilityZoneNames returns the availability zone names for each of the specified instances.

func (*Environ) Instances

func (e *Environ) Instances(ctx envcontext.ProviderCallContext, ids []instance.Id) ([]instances.Instance, error)

func (*Environ) ModelIngressRules

func (e *Environ) ModelIngressRules(ctx envcontext.ProviderCallContext) (firewall.IngressRules, error)

func (*Environ) NetworkInterfaces

func (e *Environ) NetworkInterfaces(ctx envcontext.ProviderCallContext, ids []instance.Id) ([]network.InterfaceInfos, error)

NetworkInterfaces is specified on environs.Networking.

func (*Environ) OpenModelPorts

func (e *Environ) OpenModelPorts(ctx envcontext.ProviderCallContext, rules firewall.IngressRules) error

func (*Environ) OpenPorts

func (*Environ) PrecheckInstance

PrecheckInstance is defined on the environs.InstancePrechecker interface.

func (*Environ) PrecheckUpgradeOperations

func (env *Environ) PrecheckUpgradeOperations() []environs.PrecheckJujuUpgradeOperation

PrecheckUpgradeOperations is part of the environs.JujuUpgradePrechecker interface. It returns a slice of PrecheckJujuUpgradeOperation to be used to determine if a controller can be safely upgraded.

func (*Environ) PrepareForBootstrap

func (e *Environ) PrepareForBootstrap(_ environs.BootstrapContext, _ string) error

PrepareForBootstrap is part of the Environ interface.

func (*Environ) PreparePrechecker

func (e *Environ) PreparePrechecker() error

PreparePrechecker is part of the environs.JujuUpgradePrechecker interface. It is called to to give an Environ a chance to perform interactive operations that are required for prechecking an upgrade.

func (*Environ) Provider

func (e *Environ) Provider() environs.EnvironProvider

func (*Environ) Region

func (e *Environ) Region() (simplestreams.CloudSpec, error)

Region is specified in the HasRegion interface.

func (*Environ) ReleaseContainerAddresses

func (e *Environ) ReleaseContainerAddresses(ctx envcontext.ProviderCallContext, interfaces []network.ProviderInterfaceInfo) error

ReleaseContainerAddresses is specified on environs.Networking.

func (*Environ) SetClock

func (e *Environ) SetClock(clock clock.Clock)

func (*Environ) SetCloudSpec

func (e *Environ) SetCloudSpec(_ stdcontext.Context, spec environscloudspec.CloudSpec) error

SetCloudSpec is specified in the environs.Environ interface.

func (*Environ) SetConfig

func (e *Environ) SetConfig(ctx context.Context, cfg *config.Config) error

func (*Environ) StartInstance

StartInstance is specified in the InstanceBroker interface.

func (*Environ) StopInstances

func (e *Environ) StopInstances(ctx envcontext.ProviderCallContext, ids ...instance.Id) error

func (*Environ) StorageProvider

func (e *Environ) StorageProvider(t storage.ProviderType) (storage.Provider, error)

StorageProvider implements storage.ProviderRegistry.

func (*Environ) StorageProviderTypes

func (e *Environ) StorageProviderTypes() ([]storage.ProviderType, error)

StorageProviderTypes implements storage.ProviderRegistry.

func (*Environ) Subnets

func (e *Environ) Subnets(
	ctx envcontext.ProviderCallContext, instId instance.Id, subnetIds []network.Id,
) ([]network.SubnetInfo, error)

Subnets is specified on environs.Networking.

func (*Environ) SupportsContainerAddresses

func (e *Environ) SupportsContainerAddresses(envcontext.ProviderCallContext) (bool, error)

SupportsContainerAddresses is specified on environs.Networking.

func (*Environ) SupportsRulesWithIPV6CIDRs

func (e *Environ) SupportsRulesWithIPV6CIDRs(ctx envcontext.ProviderCallContext) (bool, error)

SupportsRulesWithIPV6CIDRs returns true if the environment supports ingress rules containing IPV6 CIDRs. It is part of the FirewallFeatureQuerier interface.

func (*Environ) SupportsSpaces

func (e *Environ) SupportsSpaces() (bool, error)

SupportsSpaces is specified on environs.Networking.

func (*Environ) TagInstance

func (e *Environ) TagInstance(ctx envcontext.ProviderCallContext, id instance.Id, tags map[string]string) error

TagInstance implements environs.InstanceTagger.

func (*Environ) ValidateCloudEndpoint

func (env *Environ) ValidateCloudEndpoint(ctx envcontext.ProviderCallContext) error

ValidateCloudEndpoint returns nil if the current model can talk to the openstack endpoint. Used as validation during model upgrades. Implements environs.CloudEndpointChecker

type EnvironProvider

type EnvironProvider struct {
	environs.ProviderCredentials
	Configurator      ProviderConfigurator
	FirewallerFactory FirewallerFactory
	FlavorFilter      FlavorFilter

	// ClientFromEndpoint returns an Openstack client for the given endpoint.
	ClientFromEndpoint func(endpoint string) client.AuthenticatingClient
}

func (EnvironProvider) AgentMetadataLookupParams

func (p EnvironProvider) AgentMetadataLookupParams(region string) (*simplestreams.MetadataLookupParams, error)

AgentMetadataLookupParams returns parameters which are used to query agent metadata to find matching image information.

func (EnvironProvider) CloudSchema

func (p EnvironProvider) CloudSchema() *jsonschema.Schema

CloudSchema returns the schema for adding new clouds of this type.

func (EnvironProvider) ConfigDefaults

func (p EnvironProvider) ConfigDefaults() schema.Defaults

ConfigDefaults returns the default values for the provider specific config attributes.

func (EnvironProvider) ConfigSchema

func (p EnvironProvider) ConfigSchema() schema.Fields

ConfigSchema returns extra config attributes specific to this provider only.

func (EnvironProvider) DetectRegions

func (EnvironProvider) DetectRegions() ([]cloud.Region, error)

DetectRegions implements environs.CloudRegionDetector.

func (EnvironProvider) ImageMetadataLookupParams

func (p EnvironProvider) ImageMetadataLookupParams(region string) (*simplestreams.MetadataLookupParams, error)

ImageMetadataLookupParams returns parameters which are used to query image metadata to find matching image information.

func (EnvironProvider) ModelConfigDefaults

func (p EnvironProvider) ModelConfigDefaults(_ context.Context) (map[string]any, error)

ModelConfigDefaults provides a set of default model config attributes that should be set on a models config if they have not been specified by the user.

func (EnvironProvider) Open

func (EnvironProvider) Ping

Ping tests the connection to the cloud, to verify the endpoint is valid.

func (EnvironProvider) PrepareConfig

PrepareConfig is specified in the EnvironProvider interface.

func (EnvironProvider) Schema

Schema returns the configuration schema for an environment.

func (EnvironProvider) Validate

func (p EnvironProvider) Validate(ctx context.Context, cfg, old *config.Config) (valid *config.Config, err error)

func (EnvironProvider) Version

func (EnvironProvider) Version() int

Version is part of the EnvironProvider interface.

type Firewaller

type Firewaller interface {
	// OpenPorts opens the given port ranges for the whole environment.
	OpenPorts(ctx envcontext.ProviderCallContext, rules firewall.IngressRules) error

	// ClosePorts closes the given port ranges for the whole environment.
	ClosePorts(ctx envcontext.ProviderCallContext, rules firewall.IngressRules) error

	// IngressRules returns the ingress rules applied to the whole environment.
	// It is expected that there be only one ingress rule result for a given
	// port range - the rule's SourceCIDRs will contain all applicable source
	// address rules for that port range.
	IngressRules(ctx envcontext.ProviderCallContext) (firewall.IngressRules, error)

	// OpenModelPorts opens the given port ranges on the model firewall
	OpenModelPorts(ctx envcontext.ProviderCallContext, rules firewall.IngressRules) error

	// CloseModelPorts Closes the given port ranges on the model firewall
	CloseModelPorts(ctx envcontext.ProviderCallContext, rules firewall.IngressRules) error

	// ModelIngressRules returns the set of ingress rules on the model firewall.
	// The rules are returned as sorted by network.SortIngressRules().
	// It is expected that there be only one ingress rule result for a given
	// port range - the rule's SourceCIDRs will contain all applicable source
	// address rules for that port range.
	// If the model security group doesn't exist, return a NotFound error
	ModelIngressRules(ctx envcontext.ProviderCallContext) (firewall.IngressRules, error)

	// DeleteMachineGroup delete's the security group specific to the provided machine.
	// When in 'instance' firewall mode, each instance in a model is assigned its own
	// security group, with a lifecycle matching that of the instance itself.
	// In 'global' mode, all security groups are model scoped, and have lifecycles
	// matching the model, so this method will remove no groups.
	DeleteMachineGroup(ctx envcontext.ProviderCallContext, machineId string) error

	// DeleteAllModelGroups deletes all security groups for the
	// model.
	DeleteAllModelGroups(ctx envcontext.ProviderCallContext) error

	// DeleteAllControllerGroups deletes all security groups for the
	// controller, ie those for all hosted models.
	DeleteAllControllerGroups(ctx envcontext.ProviderCallContext, controllerUUID string) error

	// DeleteGroups deletes the security groups with the specified names.
	DeleteGroups(ctx envcontext.ProviderCallContext, names ...string) error

	// UpdateGroupController updates all of the security groups for
	// this model to refer to the specified controller, such that
	// DeleteAllControllerGroups will remove them only when called
	// with the specified controller ID.
	UpdateGroupController(ctx envcontext.ProviderCallContext, controllerUUID string) error

	// GetSecurityGroups returns a list of the security groups that
	// belong to given instances.
	GetSecurityGroups(ctx envcontext.ProviderCallContext, ids ...instance.Id) ([]string, error)

	// SetUpGroups sets up initial security groups, if any, and returns
	// their names.
	SetUpGroups(ctx envcontext.ProviderCallContext, controllerUUID, machineID string) ([]string, error)

	// OpenInstancePorts opens the given port ranges for the specified  instance.
	OpenInstancePorts(ctx envcontext.ProviderCallContext, inst instances.Instance, machineID string, rules firewall.IngressRules) error

	// CloseInstancePorts closes the given port ranges for the specified  instance.
	CloseInstancePorts(ctx envcontext.ProviderCallContext, inst instances.Instance, machineID string, rules firewall.IngressRules) error

	// InstanceIngressRules returns the ingress rules applied to the specified  instance.
	InstanceIngressRules(ctx envcontext.ProviderCallContext, inst instances.Instance, machineID string) (firewall.IngressRules, error)
}

Firewaller allows custom openstack provider behaviour. This is used in other providers that embed the openstack provider.

type FirewallerFactory

type FirewallerFactory interface {
	GetFirewaller(env environs.Environ) Firewaller
}

FirewallerFactory for obtaining firewaller object.

type FlavorFilter

type FlavorFilter interface {
	// AcceptFlavor returns true iff the given flavor is acceptable.
	AcceptFlavor(nova.FlavorDetail) bool
}

FlavorFilter is an interface that can control which server flavors are acceptable.

type FlavorFilterFunc

type FlavorFilterFunc func(nova.FlavorDetail) bool

FlavorFilterFunc is a function type that implements FlavorFilter.

func (FlavorFilterFunc) AcceptFlavor

func (f FlavorFilterFunc) AcceptFlavor(d nova.FlavorDetail) bool

AcceptFlavor is part of the FlavorFilter interface.

type Networking

type Networking interface {
	// AllocatePublicIP allocates a public (floating) IP
	// to the specified instance.
	AllocatePublicIP(instance.Id) (*string, error)

	// ResolveNetworks takes either a network ID or label
	// with a string to specify whether the network is external
	// and returns the corresponding matching networks.
	ResolveNetworks(string, bool) ([]neutron.NetworkV2, error)

	// Subnets returns basic information about subnets known
	// by OpenStack for the environment.
	// Needed for Environ.Networking
	Subnets(instance.Id, []corenetwork.Id) ([]corenetwork.SubnetInfo, error)

	// CreatePort creates a port for a given network id with a subnet ID.
	CreatePort(string, string, corenetwork.Id) (*neutron.PortV2, error)

	// DeletePortByID attempts to remove a port using the given port ID.
	DeletePortByID(string) error

	// NetworkInterfaces requests information about the network
	// interfaces on the given list of instances.
	// Needed for Environ.Networking
	NetworkInterfaces(ids []instance.Id) ([]corenetwork.InterfaceInfos, error)

	// FindNetworks returns a set of internal or external network names
	// depending on the provided argument.
	FindNetworks(internal bool) (set.Strings, error)
}

Networking is an interface providing networking-related operations for an OpenStack Environ.

type NetworkingAuthenticatingClient

type NetworkingAuthenticatingClient interface {
	TenantId() string
}

NetworkingAuthenticatingClient describes the AuthenticatingClient methods needed for Networking.

type NetworkingBase

type NetworkingBase interface {
	// contains filtered or unexported methods
}

NetworkingBase describes the EnvironProvider methods needed for Networking.

type NetworkingEnvironConfig

type NetworkingEnvironConfig interface {
	// contains filtered or unexported methods
}

NetworkingEnvironConfig describes the environConfig methods needed for Networking.

type NetworkingNeutron

type NetworkingNeutron interface {
	AllocateFloatingIPV2(string) (*neutron.FloatingIPV2, error)
	CreatePortV2(neutron.PortV2) (*neutron.PortV2, error)
	DeletePortV2(string) error
	ListPortsV2(filter ...*neutron.Filter) ([]neutron.PortV2, error)
	GetNetworkV2(string) (*neutron.NetworkV2, error)
	ListFloatingIPsV2(...*neutron.Filter) ([]neutron.FloatingIPV2, error)
	ListNetworksV2(...*neutron.Filter) ([]neutron.NetworkV2, error)
	ListSubnetsV2() ([]neutron.SubnetV2, error)
}

NetworkingNeutron describes the Neutron methods needed for Networking.

type NetworkingNova

type NetworkingNova interface {
	GetServer(string) (*nova.ServerDetail, error)
}

NetworkingNova describes the Nova methods needed for Networking.

type NeutronNetworking

type NeutronNetworking struct {
	NetworkingBase
}

NeutronNetworking is an implementation of Networking that uses the Neutron network APIs.

func (*NeutronNetworking) AllocatePublicIP

func (n *NeutronNetworking) AllocatePublicIP(id instance.Id) (*string, error)

AllocatePublicIP is part of the Networking interface.

func (*NeutronNetworking) CreatePort

func (n *NeutronNetworking) CreatePort(name, networkID string, subnetID network.Id) (*neutron.PortV2, error)

CreatePort creates a port for a given network id with a subnet ID.

func (*NeutronNetworking) DeletePortByID

func (n *NeutronNetworking) DeletePortByID(portID string) error

DeletePortByID attempts to remove a port using the given port ID.

func (*NeutronNetworking) FindNetworks

func (n *NeutronNetworking) FindNetworks(internal bool) (set.Strings, error)

FindNetworks returns a set of internal or external network names depending on the provided argument.

func (*NeutronNetworking) NetworkInterfaces

func (n *NeutronNetworking) NetworkInterfaces(instanceIDs []instance.Id) ([]network.InterfaceInfos, error)

NetworkInterfaces implements environs.NetworkingEnviron. It returns a slice where the i_th element contains the list of network interfaces for the i_th input instance ID.

If none of the provided instance IDs exist, ErrNoInstances will be returned. If only a subset of the instance IDs exist, the result will contain a nil value for the missing instances and a ErrPartialInstances error will be returned.

func (*NeutronNetworking) ResolveNetworks

func (n *NeutronNetworking) ResolveNetworks(name string, external bool) ([]neutron.NetworkV2, error)

ResolveNetworks is part of the Networking interface.

func (*NeutronNetworking) Subnets

func (n *NeutronNetworking) Subnets(instId instance.Id, subnetIds []network.Id) ([]network.SubnetInfo, error)

Subnets returns basic information about the specified subnets known by the provider for the specified instance or list of ids. subnetIds can be empty, in which case all known are returned.

type OpenstackCredentials

type OpenstackCredentials struct{}

func (OpenstackCredentials) CredentialSchemas

func (OpenstackCredentials) CredentialSchemas() map[cloud.AuthType]cloud.CredentialSchema

CredentialSchemas is part of the environs.ProviderCredentials interface.

func (OpenstackCredentials) DetectCredentials

func (c OpenstackCredentials) DetectCredentials(cloudName string) (*cloud.CloudCredential, error)

DetectCredentials is part of the environs.ProviderCredentials interface.

func (OpenstackCredentials) FinalizeCredential

FinalizeCredential is part of the environs.ProviderCredentials interface.

type OpenstackRenderer

type OpenstackRenderer struct{}

func (OpenstackRenderer) Render

type OpenstackStorage

type OpenstackStorage interface {
	GetVolume(volumeId string) (*cinder.Volume, error)
	GetVolumesDetail() ([]cinder.Volume, error)
	DeleteVolume(volumeId string) error
	CreateVolume(cinder.CreateVolumeVolumeParams) (*cinder.Volume, error)
	AttachVolume(serverId, volumeId, mountPoint string) (*nova.VolumeAttachment, error)
	DetachVolume(serverId, attachmentId string) error
	ListVolumeAttachments(serverId string) ([]nova.VolumeAttachment, error)
	SetVolumeMetadata(volumeId string, metadata map[string]string) (map[string]string, error)
	ListVolumeAvailabilityZones() ([]cinder.AvailabilityZone, error)
}

type ProviderConfigurator

type ProviderConfigurator interface {
	// GetConfigDefaults sets some configuration default values, if any
	GetConfigDefaults() schema.Defaults

	// This method allows to adjust default RunServerOptions,
	// before new server is actually created.
	ModifyRunServerOptions(options *nova.RunServerOpts)

	// This method provides default cloud config.
	// This config can be different for different providers.
	GetCloudConfig(args environs.StartInstanceParams) (cloudinit.CloudConfig, error)
}

This interface is added to allow to customize OpenStack provider behaviour. This is used in other providers, that embeds OpenStack provider.

type SSLHostnameConfig

type SSLHostnameConfig interface {
	SSLHostnameVerification() bool
}

SSLHostnameConfig defines the options for host name verification

Jump to

Keyboard shortcuts

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