openstack

package
v0.0.0-...-8ff1004 Latest Latest
Warning

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

Go to latest
Published: Feb 15, 2019 License: AGPL-3.0 Imports: 59 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ExternalNetworkKey    = "external-network"
	NetworkKey            = "network"
	PolicyTargetGroupKey  = "policy-target-group"
	UseDefaultSecgroupKey = "use-default-secgroup"
	UseOpenstackGBPKey    = "use-openstack-gbp"
	UseFloatingIPKey      = "use-floating-ip"
)
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.

Types

type AuthMode

type AuthMode string
const (
	AuthKeyPair  AuthMode = "keypair"
	AuthLegacy   AuthMode = "legacy"
	AuthUserPass AuthMode = "userpass"
)

type Environ

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

func (*Environ) AdoptResources

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

AdoptResources is part of the Environ interface.

func (*Environ) AllInstances

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

AllInstances returns all instances in this environment.

func (*Environ) AllocateContainerAddresses

func (e *Environ) AllocateContainerAddresses(ctx context.ProviderCallContext, hostInstanceID instance.Id, containerTag names.MachineTag, preparedInfo []network.InterfaceInfo) ([]network.InterfaceInfo, error)

AllocateContainerAddresses is specified on environs.Networking.

func (*Environ) AreSpacesRoutable

func (*Environ) AreSpacesRoutable(ctx context.ProviderCallContext, space1, space2 *environs.ProviderSpaceInfo) (bool, error)

AreSpacesRoutable is specified on environs.NetworkingEnviron.

func (*Environ) AvailabilityZones

func (e *Environ) AvailabilityZones(ctx context.ProviderCallContext) ([]common.AvailabilityZone, error)

AvailabilityZones returns a slice of availability zones.

func (*Environ) ClosePorts

func (e *Environ) ClosePorts(ctx context.ProviderCallContext, rules []network.IngressRule) error

func (*Environ) Config

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

func (*Environ) ConstraintsValidator

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

ConstraintsValidator is defined on the Environs interface.

func (*Environ) ControllerInstances

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

func (*Environ) Create

Create is part of the Environ interface.

func (*Environ) DeriveAvailabilityZones

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

DeriveAvailabilityZones is part of the common.ZonedEnviron interface.

func (*Environ) Destroy

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

func (*Environ) DestroyController

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

DestroyController implements the Environ interface.

func (*Environ) DistributeInstances

func (e *Environ) DistributeInstances(
	ctx context.ProviderCallContext, candidates, distributionGroup []instance.Id, limitZones []string,
) ([]instance.Id, error)

DistributeInstances implements the state.InstanceDistributor policy.

func (*Environ) IngressRules

func (e *Environ) IngressRules(ctx context.ProviderCallContext) ([]network.IngressRule, error)

func (*Environ) InstanceAvailabilityZoneNames

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

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

func (*Environ) Instances

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

func (*Environ) MaintainInstance

MaintainInstance is specified in the InstanceBroker interface.

func (*Environ) MetadataLookupParams

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

MetadataLookupParams returns parameters which are used to query simplestreams metadata.

func (*Environ) NetworkInterfaces

func (e *Environ) NetworkInterfaces(ctx context.ProviderCallContext, instId instance.Id) ([]network.InterfaceInfo, error)

NetworkInterfaces is specified on environs.Networking.

func (*Environ) OpenPorts

func (e *Environ) OpenPorts(ctx context.ProviderCallContext, rules []network.IngressRule) error

func (*Environ) PrecheckInstance

PrecheckInstance is defined on the environs.InstancePrechecker interface.

func (*Environ) PrepareForBootstrap

func (e *Environ) PrepareForBootstrap(ctx environs.BootstrapContext) error

PrepareForBootstrap is part of the Environ interface.

func (*Environ) Provider

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

func (*Environ) ProviderSpaceInfo

ProviderSpaceInfo is specified on environs.NetworkingEnviron.

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 context.ProviderCallContext, interfaces []network.ProviderInterfaceInfo) error

ReleaseContainerAddresses is specified on environs.Networking.

func (*Environ) SSHAddresses

func (*Environ) SSHAddresses(ctx context.ProviderCallContext, addresses []network.Address) ([]network.Address, error)

SSHAddresses is specified on environs.SSHAddresses.

func (*Environ) SetClock

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

func (*Environ) SetConfig

func (e *Environ) SetConfig(cfg *config.Config) error

func (*Environ) Spaces

Spaces is specified on environs.Networking.

func (*Environ) StartInstance

StartInstance is specified in the InstanceBroker interface.

func (*Environ) StopInstances

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

func (*Environ) StorageProvider

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

StorageProvider implements storage.ProviderRegistry.

func (*Environ) StorageProviderTypes

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

StorageProviderTypes implements storage.ProviderRegistry.

func (*Environ) Subnets

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

Subnets is specified on environs.Networking.

func (*Environ) SuperSubnets

func (e *Environ) SuperSubnets(ctx context.ProviderCallContext) ([]string, error)

SuperSubnets is specified on environs.Networking

func (*Environ) SupportsContainerAddresses

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

SupportsContainerAddresses is specified on environs.Networking.

func (*Environ) SupportsSpaceDiscovery

func (e *Environ) SupportsSpaceDiscovery(ctx context.ProviderCallContext) (bool, error)

SupportsSpaceDiscovery is specified on environs.Networking.

func (*Environ) SupportsSpaces

func (e *Environ) SupportsSpaces(ctx context.ProviderCallContext) (bool, error)

SupportsSpaces is specified on environs.Networking.

func (*Environ) TagInstance

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

TagInstance implements environs.InstanceTagger.

type EnvironProvider

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

	// NetworkingDecorator, if non-nil, will be used to
	// decorate the default networking implementation.
	// This can be used to override behaviour.
	NetworkingDecorator NetworkingDecorator

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

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) MetadataLookupParams

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

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

func (EnvironProvider) Open

func (EnvironProvider) Ping

func (p EnvironProvider) Ping(ctx context.ProviderCallContext, endpoint string) error

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

func (EnvironProvider) PrepareConfig

func (p EnvironProvider) PrepareConfig(args environs.PrepareConfigParams) (*config.Config, error)

PrepareConfig is specified in the EnvironProvider interface.

func (EnvironProvider) Schema

func (EnvironProvider) Schema() environschema.Fields

Schema returns the configuration schema for an environment.

func (EnvironProvider) Validate

func (p EnvironProvider) Validate(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 context.ProviderCallContext, rules []network.IngressRule) error

	// ClosePorts closes the given port ranges for the whole environment.
	ClosePorts(ctx context.ProviderCallContext, rules []network.IngressRule) 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 context.ProviderCallContext) ([]network.IngressRule, error)

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

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

	// DeleteGroups deletes the security groups with the specified names.
	DeleteGroups(ctx context.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 context.ProviderCallContext, controllerUUID string) error

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

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

	// OpenInstancePorts opens the given port ranges for the specified  instance.
	OpenInstancePorts(ctx context.ProviderCallContext, inst instances.Instance, machineId string, rules []network.IngressRule) error

	// CloseInstancePorts closes the given port ranges for the specified  instance.
	CloseInstancePorts(ctx context.ProviderCallContext, inst instances.Instance, machineId string, rules []network.IngressRule) error

	// InstanceIngressRules returns the ingress rules applied to the specified  instance.
	InstanceIngressRules(ctx context.ProviderCallContext, inst instances.Instance, machineId string) ([]network.IngressRule, 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
}

factory for obtaining firawaller 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 LegacyNovaNetworking

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

LegacyNovaNetworking is an implementation of Networking that uses the legacy Nova network APIs.

NOTE(axw) this is provided on a best-effort basis, primarily for CI testing of Juju until we are no longer dependent on an old OpenStack installation. This should not be relied on in production, and should be removed as soon as possible.

func (*LegacyNovaNetworking) AllocatePublicIP

func (n *LegacyNovaNetworking) AllocatePublicIP(instId instance.Id) (*string, error)

AllocatePublicIP is part of the Networking interface.

func (*LegacyNovaNetworking) DefaultNetworks

func (*LegacyNovaNetworking) DefaultNetworks() ([]nova.ServerNetworks, error)

DefaultNetworks is part of the Networking interface.

func (*LegacyNovaNetworking) NetworkInterfaces

func (n *LegacyNovaNetworking) NetworkInterfaces(instId instance.Id) ([]network.InterfaceInfo, error)

NetworkInterfaces is part of the Networking interface.

func (*LegacyNovaNetworking) ResolveNetwork

func (n *LegacyNovaNetworking) ResolveNetwork(name string, external bool) (string, error)

ResolveNetwork is part of the Networking interface.

func (*LegacyNovaNetworking) Subnets

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

Subnets is part of the Networking interface.

type Networking

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

	// DefaultNetworks returns the set of networks that should be
	// added by default to all new instances.
	DefaultNetworks() ([]nova.ServerNetworks, error)

	// ResolveNetwork takes either a network ID or label
	// with a string to specify whether the network is external
	// and returns the corresponding network ID.
	ResolveNetwork(string, bool) (string, error)

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

	// NetworkInterfaces requests information about the network
	// interfaces on the given instance.
	// Needed for Environ.Networking
	NetworkInterfaces(instId instance.Id) ([]network.InterfaceInfo, error)
}

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

type NetworkingDecorator

type NetworkingDecorator interface {
	// DecorateNetworking can be used to return a new Networking
	// implementation that overrides the provided, default Networking
	// implementation.
	DecorateNetworking(Networking) (Networking, error)
}

NetworkingDecorator is an interface that provides a means of overriding the default Networking implementation.

type NeutronNetworking

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

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

func (*NeutronNetworking) AllocatePublicIP

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

AllocatePublicIP is part of the Networking interface.

func (*NeutronNetworking) DefaultNetworks

func (n *NeutronNetworking) DefaultNetworks() ([]nova.ServerNetworks, error)

DefaultNetworks is part of the Networking interface.

func (*NeutronNetworking) NetworkInterfaces

func (n *NeutronNetworking) NetworkInterfaces(instId instance.Id) ([]network.InterfaceInfo, error)

func (*NeutronNetworking) ResolveNetwork

func (n *NeutronNetworking) ResolveNetwork(name string, external bool) (string, error)

ResolveNetwork 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() (*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)
}

type ProviderConfigurator

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

	// This method allows to adjust defult 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.

Jump to

Keyboard shortcuts

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