stacks

package
v0.5.46 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2023 License: MPL-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var EnvironmentSections = map[string]bool{
	"parameters":         true,
	"parameter_defaults": true,
	"resource_registry":  true,
}

EnvironmentSections is a map containing allowed sections in a stack environment file

View Source
var TemplateFormatVersions = map[string]bool{
	"HeatTemplateFormatVersion": true,
	"heat_template_version":     true,
	"AWSTemplateFormatVersion":  true,
}

TemplateFormatVersions is a map containing allowed variations of the template format version Note that this contains the permitted variations of the _keys_ not the values.

Functions

func ExtractStacksInto

func ExtractStacksInto(r pagination.Page, v interface{}) error

func List

List all stacks

Types

type Client

type Client interface {
	Get(string) (*http.Response, error)
}

Client is an interface that expects a Get method similar to http.Get. This is needed for unit testing, since we can mock an http client. Thus, the client will usually be an http.Client EXCEPT in unit tests.

type CreateOpts

type CreateOpts struct {
	// The name of the stack. It must start with an alphabetic character.
	Name string `json:"stack_name" required:"true"`
	// A structure that contains either the template file or url. Call the
	// associated methods to extract the information relevant to send in a create request.
	TemplateOpts *Template `json:"-" required:"true"`
	// Enables or disables deletion of all stack resources when a stack
	// creation fails. Default is true, meaning all resources are not deleted when
	// stack creation fails.
	DisableRollback *bool `json:"disable_rollback,omitempty"`
	// A structure that contains details for the environment of the stack.
	EnvironmentOpts *Environment `json:"-"`
	// User-defined parameters to pass to the template.
	Parameters map[string]interface{} `json:"parameters,omitempty"`
	// The timeout for stack creation in minutes.
	Timeout int `json:"timeout_mins,omitempty"`
	// A list of tags to assosciate with the Stack
	Tags []string `json:"-"`
}

CreateOpts is the common options struct used in this package's Create operation.

func (CreateOpts) ToStackCreateMap

func (opts CreateOpts) ToStackCreateMap() (map[string]interface{}, error)

ToStackCreateMap casts a CreateOpts struct to a map.

type CreateOptsBuilder

type CreateOptsBuilder interface {
	ToStackCreateMap() (map[string]interface{}, error)
}

CreateOptsBuilder is the interface options structs have to satisfy in order to be used in the main Create operation in this package. Since many extensions decorate or modify the common logic, it is useful for them to satisfy a basic interface in order for them to be used.

type CreateResult

type CreateResult struct {
	gcorecloud.Result
}

CreateResult represents the result of a Create operation.

func Create

Create accepts a CreateOpts struct and creates a new stack using the values provided.

func (CreateResult) Extract

func (r CreateResult) Extract() (*CreatedStack, error)

Extract is a function that accepts a result and extracts a heat stack.

type CreatedStack

type CreatedStack struct {
	ID    string            `json:"id"`
	Links []gcorecloud.Link `json:"links"`
}

CreatedStack represents the object extracted from a Create operation.

type DeleteResult

type DeleteResult struct {
	gcorecloud.ErrResult
}

DeleteResult represents the result of a Delete operation.

func Delete

func Delete(c *gcorecloud.ServiceClient, stackID string) (r DeleteResult)

Delete deletes a stack based on the stack name and stack ID.

type Environment

type Environment struct {
	TE
}

Environment is a structure that represents stack environments

func (*Environment) Validate

func (e *Environment) Validate() error

Validate validates the contents of the Environment

type ErrInvalidDataFormat

type ErrInvalidDataFormat struct {
	gcorecloud.BaseError
}

func (ErrInvalidDataFormat) Error

func (e ErrInvalidDataFormat) Error() string

type ErrInvalidEnvironment

type ErrInvalidEnvironment struct {
	gcorecloud.BaseError
	Section string
}

func (ErrInvalidEnvironment) Error

func (e ErrInvalidEnvironment) Error() string

type ErrInvalidTemplateFormatVersion

type ErrInvalidTemplateFormatVersion struct {
	gcorecloud.BaseError
	Version string
}

func (ErrInvalidTemplateFormatVersion) Error

type ErrTemplateRequired

type ErrTemplateRequired struct {
	gcorecloud.BaseError
}

func (ErrTemplateRequired) Error

func (e ErrTemplateRequired) Error() string

type GetResult

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

GetResult represents the result of a get operation. Call its Extract method to interpret it as a Heat stack.

func Get

func Get(c *gcorecloud.ServiceClient, id string) (r GetResult)

Get retrieves a specific heat stack.

func (GetResult) Extract

func (r GetResult) Extract() (*Stack, error)

Extract is a function that accepts a result and extracts a heat stack.

func (GetResult) ExtractInto

func (r GetResult) ExtractInto(v interface{}) error

type ListOpts

type ListOpts struct {
	// TenantID is the UUID of the tenant. A tenant is also known as
	// a project.
	TenantID string `q:"tenant_id"`

	// ID filters the stack list by a stack ID
	ID string `q:"id"`

	// Status filters the stack list by a status.
	Status string `q:"status"`

	// Name filters the stack list by a name.
	Name string `q:"name"`

	// Marker is the ID of last-seen item.
	Marker string `q:"marker"`

	// Limit is an integer value for the limit of values to return.
	Limit int `q:"limit"`

	// SortKey allows you to sort by stack_name, stack_status, creation_time, or
	// update_time key.
	SortKey types.SortKey `q:"sort_keys"`

	// SortDir sets the direction, and is either `asc` or `desc`.
	SortDir types.SortDir `q:"sort_dir"`

	// AllTenants is a bool to show all tenants.
	AllTenants bool `q:"global_tenant"`

	// ShowDeleted set to `true` to include deleted stacks in the list.
	ShowDeleted bool `q:"show_deleted"`

	// ShowNested set to `true` to include nested stacks in the list.
	ShowNested bool `q:"show_nested"`

	// Tags lists stacks that contain one or more simple string tags.
	Tags string `q:"tags"`

	// TagsAny lists stacks that contain one or more simple string tags.
	TagsAny string `q:"tags_any"`

	// NotTags lists stacks that do not contain one or more simple string tags.
	NotTags string `q:"not_tags"`

	// NotTagsAny lists stacks that do not contain one or more simple string tags.
	NotTagsAny string `q:"not_tags_any"`
}

ListOpts allows the filtering and sorting of paginated collections through the API. Filtering is achieved by passing in struct field values that map to the network attributes you want to see returned.

func (ListOpts) ToStackListQuery

func (opts ListOpts) ToStackListQuery() (string, error)

ToStackListQuery formats a ListOpts into a query string.

type ListOptsBuilder

type ListOptsBuilder interface {
	ToStackListQuery() (string, error)
}

ListOptsBuilder allows extensions to add additional parameters to the List request.

type Stack

type Stack struct {
	*StackList
	Capabilities        []string                 `json:"capabilities"`
	DisableRollback     bool                     `json:"disable_rollback"`
	NotificationTopics  []string                 `json:"notification_topics"`
	TemplateDescription *string                  `json:"template_description"`
	TimeoutMinutes      int                      `json:"timeout_mins"`
	Outputs             []map[string]interface{} `json:"outputs"`
	Parameters          map[string]interface{}   `json:"parameters"`
}

Stack struct

type StackList

type StackList struct {
	CreationTime       time.Time         `json:"creation_time"`
	DeletionTime       *time.Time        `json:"deletion_time"`
	UpdatedTime        *time.Time        `json:"updated_time"`
	Description        string            `json:"description"`
	ID                 string            `json:"id"`
	Links              []gcorecloud.Link `json:"links"`
	Parent             *string           `json:"parent"`
	StackName          string            `json:"stack_name"`
	StackOwner         *string           `json:"stack_owner"`
	StackStatus        string            `json:"stack_status"`
	StackStatusReason  *string           `json:"stack_status_reason"`
	StackUserProjectID string            `json:"stack_user_project_id"`
	Tags               []string          `json:"tags"`
}

Stack struct

func ExtractStacks

func ExtractStacks(r pagination.Page) ([]StackList, error)

ExtractStack accepts a Page struct, specifically a StackPage struct, and extracts the elements into a slice of Stack structs. In other words, a generic collection is mapped into a relevant slice.

func ListAll

List all stacks

type StackPage

type StackPage struct {
	pagination.LinkedPageBase
}

StackPage is the page returned by a pager when traversing over a collection of loadbalancers.

func (StackPage) IsEmpty

func (r StackPage) IsEmpty() (bool, error)

IsEmpty checks whether a StackPage struct is empty.

func (StackPage) NextPageURL

func (r StackPage) NextPageURL() (string, error)

NextPageURL is invoked when a paginated collection of loadbalancers has reached the end of a page and the pager seeks to traverse over a new one. In order to do this, it needs to construct the next page's URL.

type TE

type TE struct {
	// Bin stores the contents of the template or environment.
	Bin []byte
	// URL stores the URL of the template. This is allowed to be a 'file://'
	// for local files.
	URL string
	// Parsed contains a parsed version of Bin. Since there are 2 different
	// fields referring to the same value, you must be careful when accessing
	// this filed.
	Parsed map[string]interface{}
	// Files contains a mapping between the urls in templates to their contents.
	Files map[string]string
	// contains filtered or unexported fields
}

TE is a base structure for both Template and Environment

func (*TE) Fetch

func (t *TE) Fetch() error

Fetch fetches the contents of a TE from its URL. Once a TE structure has a URL, call the fetch method to fetch the contents.

func (*TE) Parse

func (t *TE) Parse() error

Parse will parse the contents and then validate. The contents MUST be either JSON or YAML.

func (*TE) Validate

func (t *TE) Validate() error

Validate validates the contents of TE

type Template

type Template struct {
	TE
}

Template is a structure that represents OpenStack Heat templates

func (*Template) Validate

func (t *Template) Validate() error

Validate validates the contents of the Template

type UpdateOpts

type UpdateOpts struct {
	// A structure that contains either the template file or url. Call the
	// associated methods to extract the information relevant to send in a create request.
	TemplateOpts *Template `json:"-"`
	// A structure that contains details for the environment of the stack.
	EnvironmentOpts *Environment `json:"-"`
	// User-defined parameters to pass to the template.
	Parameters map[string]interface{} `json:"parameters,omitempty"`
	// The timeout for stack creation in minutes.
	Timeout int `json:"timeout_mins,omitempty"`
	// A list of tags to associate with the Stack
	Tags []string `json:"-"`
}

UpdateOpts contains the common options struct used in this package's Update and UpdatePatch operations.

func (UpdateOpts) ToStackUpdateMap

func (opts UpdateOpts) ToStackUpdateMap() (map[string]interface{}, error)

ToStackUpdateMap validates that a template was supplied and calls the toStackUpdateMap private function.

func (UpdateOpts) ToStackUpdatePatchMap

func (opts UpdateOpts) ToStackUpdatePatchMap() (map[string]interface{}, error)

ToStackUpdatePatchMap calls the private function toStackUpdateMap directly.

type UpdateOptsBuilder

type UpdateOptsBuilder interface {
	ToStackUpdateMap() (map[string]interface{}, error)
}

UpdateOptsBuilder is the interface options structs have to satisfy in order to be used in the Update operation in this package.

type UpdatePatchOptsBuilder

type UpdatePatchOptsBuilder interface {
	ToStackUpdatePatchMap() (map[string]interface{}, error)
}

UpdatePatchOptsBuilder is the interface options structs have to satisfy in order to be used in the UpdatePatch operation in this package

type UpdateResult

type UpdateResult struct {
	gcorecloud.ErrResult
}

UpdateResult represents the result of a Update operation.

func Update

func Update(c *gcorecloud.ServiceClient, stackID string, opts UpdateOptsBuilder) (r UpdateResult)

Update accepts an UpdateOpts struct and updates an existing stack using the http PUT verb with the values provided. opts.TemplateOpts is required.

func UpdatePatch

func UpdatePatch(c *gcorecloud.ServiceClient, stackID string, opts UpdatePatchOptsBuilder) (r UpdateResult)

Update accepts an UpdateOpts struct and updates an existing stack using the

http PATCH verb with the values provided. opts.TemplateOpts is not required.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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