ccv2

package
v6.24.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Feb 10, 2017 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package ccv2 represents a Cloud Controller V2 client.

These sets of packages are still under development/pre-pre-pre...alpha. Use at your own risk! Functionality and design may change without warning.

It is currently designed to support Cloud Controller API 2.23.0. However, it may include features and endpoints of later API versions.

For more information on the Cloud Controller API see https://apidocs.cloudfoundry.org/

Method Naming Conventions

The client takes a '<Action Name><Top Level Endpoint><Return Value>' approach to method names. If the <Top Level Endpoint> and <Return Value> are similar, they do not need to be repeated. If a GUID is required for the <Top Level Endpoint>, the pluralization is removed from said endpoint in the method name.

For Example:

Method Name: GetApplication
Endpoint: /v2/applications/:guid
Action Name: Get
Top Level Endpoint: applications
Return Value: Application

Method Name: GetServiceInstances
Endpoint: /v2/service_instances
Action Name: Get
Top Level Endpoint: service_instances
Return Value: []ServiceInstance

Method Name: GetSpaceServiceInstances
Endpoint: /v2/spaces/:guid/service_instances
Action Name: Get
Top Level Endpoint: spaces
Return Value: []ServiceInstance

Use the following table to determine which HTTP Command equates to which Action Name:

HTTP Command -> Action Name
POST -> New
GET -> Get
PUT -> Update
DELETE -> Delete

Method Locations

Methods exist in the same file as their return type, regardless of which endpoint they use.

Error Handling

All error handling that requires parsing the error_code/code returned back from the Cloud Controller should be placed in the errorWrapper. Everything else can be handled in the individual operations. All parsed cloud controller errors should exist in errors.go, all generic HTTP errors should exist in the cloudcontroller's errors.go. Errors related to the individaul operation should exist at the top of that operation's file.

No inline-relations-depth And summary Endpoints

This package will not use ever use 'inline-relations-depth' or the '/summary' endpoints for any operations. These requests can be extremely taxing on the Cloud Controller and are avoided at all costs. Additionally, the objects returned back from these requests can become extremely inconsistant across versions and are problematic to deal with in general.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FormatQueryParameters

func FormatQueryParameters(queries []Query) url.Values

FormatQueryParameters converts a Query object into a collection that cloudcontroller.Request can accept.

Types

type APIInformation

type APIInformation struct {
	APIVersion                   string `json:"api_version"`
	AuthorizationEndpoint        string `json:"authorization_endpoint"`
	DopplerEndpoint              string `json:"doppler_logging_endpoint"`
	MinCLIVersion                string `json:"min_cli_version"`
	MinimumRecommendedCLIVersion string `json:"min_recommended_cli_version"`
	Name                         string `json:"name"`
	RoutingEndpoint              string `json:"routing_endpoint"`
	TokenEndpoint                string `json:"token_endpoint"`
}

APIInformation represents the information returned back from /v2/info

type AppStoppedStatsError

type AppStoppedStatsError struct {
	Message string
}

AppStoppedStatsError is returned when requesting instance information from a stopped app.

func (AppStoppedStatsError) Error

func (e AppStoppedStatsError) Error() string

type Application

type Application struct {
	// Buildpack is the buildpack set by the user.
	Buildpack string `json:"-"`

	// DetectedBuildpack is the buildpack automatically detected.
	DetectedBuildpack string `json:"-"`

	// DetectedStartCommand is the command used to start the application.
	DetectedStartCommand string `json:"-"`

	// DiskQuota is the disk given to each instance, in megabytes.
	DiskQuota int `json:"-"`

	// GUID is the unique application identifier.
	GUID string `json:"-"`

	// HealthCheckType is the type of health check that will be done to the app.
	HealthCheckType string `json:"health_check_type,omitempty"`

	// HealthCheckHTTPEndpoint is the url of the http health check endpoint.
	HealthCheckHTTPEndpoint string `json:"health_check_http_endpoint,omitempty"`

	// Instances is the total number of app instances.
	Instances int `json:"-"`

	// Memory is the memory given to each instance, in megabytes.
	Memory int `json:"-"`

	// Name is the name given to the application.
	Name string `json:"-"`

	// PackageState represents the staging state of the application bits.
	PackageState ApplicationPackageState `json:"-"`

	// PackageUpdatedAt is the last time the app bits were updated. In RFC3339.
	PackageUpdatedAt time.Time `json:"-"`

	// StackGUID is the GUID for the Stack the application is running on.
	StackGUID string `json:"-"`

	// StagingFailedReason is the reason why the package failed to stage.
	StagingFailedReason string `json:"-"`

	// State is the desired state of the application.
	State ApplicationState `json:"-"`
}

Application represents a Cloud Controller Application.

func (*Application) UnmarshalJSON

func (application *Application) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Application response.

type ApplicationInstance

type ApplicationInstance struct {
	// Details are arbitrary information about the instance.
	Details string

	// ID is the instance ID.
	ID int

	// Since is the Unix time stamp that represents the time the instance was
	// created.
	Since float64

	// State is the instance's state.
	State ApplicationInstanceState
}

ApplicationInstance represents a Cloud Controller Application Instance.

func (*ApplicationInstance) UnmarshalJSON

func (instance *ApplicationInstance) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller application instance response.

type ApplicationInstanceState

type ApplicationInstanceState string

ApplicationInstanceState reflects the state of the individual app instance.

const (
	ApplicationInstanceCrashed  ApplicationInstanceState = "CRASHED"
	ApplicationInstanceDown     ApplicationInstanceState = "DOWN"
	ApplicationInstanceFlapping ApplicationInstanceState = "FLAPPING"
	ApplicationInstanceRunning  ApplicationInstanceState = "RUNNING"
	ApplicationInstanceStarting ApplicationInstanceState = "STARTING"
	ApplicationInstanceUnknown  ApplicationInstanceState = "UNKNOWN"
)

type ApplicationInstanceStatus

type ApplicationInstanceStatus struct {
	// CPU is the instance's CPU utilization percentage.
	CPU float64

	// Disk is the instance's disk usage in bytes.
	Disk int

	// DiskQuota is the instance's allowed disk usage in bytes.
	DiskQuota int

	// ID is the instance ID.
	ID int

	// Memory is the instance's memory usage in bytes.
	Memory int

	// MemoryQuota is the instance's allowed memory usage in bytes.
	MemoryQuota int

	// State is the instance's state.
	State ApplicationInstanceState

	// Uptime is the number of seconds the instance has been running.
	Uptime int
}

ApplicationInstanceStatus represents a Cloud Controller Application Instance.

func (*ApplicationInstanceStatus) UnmarshalJSON

func (instance *ApplicationInstanceStatus) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller application instance response.

type ApplicationPackageState

type ApplicationPackageState string

ApplicationPackageState is the staging state of application bits.

const (
	ApplicationPackageStaged  ApplicationPackageState = "STAGED"
	ApplicationPackagePending ApplicationPackageState = "PENDING"
	ApplicationPackageFailed  ApplicationPackageState = "FAILED"
	ApplicationPackageUnknown ApplicationPackageState = "UNKNOWN"
)

type ApplicationState

type ApplicationState string

ApplicationState is the running state of an application.

const (
	ApplicationStarted ApplicationState = "STARTED"
	ApplicationStopped ApplicationState = "STOPPED"
)

type CCErrorResponse

type CCErrorResponse struct {
	Code        int    `json:"code"`
	Description string `json:"description"`
	ErrorCode   string `json:"error_code"`
}

CCErrorResponse represents a generic Cloud Controller V2 error response.

type Client

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

Client is a client that can be used to talk to a Cloud Controller's V2 Endpoints.

func NewClient

func NewClient(config Config) *Client

NewClient returns a new Cloud Controller Client.

func (*Client) API

func (client *Client) API() string

API returns the Cloud Controller API URL for the targeted Cloud Controller.

func (*Client) APIVersion

func (client *Client) APIVersion() string

APIVersion returns Cloud Controller API Version for the targeted Cloud Controller.

func (*Client) AuthorizationEndpoint

func (client *Client) AuthorizationEndpoint() string

AuthorizationEndpoint returns the authorization endpoint for the targeted Cloud Controller.

func (*Client) DeleteOrganization

func (client *Client) DeleteOrganization(orgGUID string) (Job, Warnings, error)

DeleteOrganization deletes the Organization associated with the provided GUID. It will return the Cloud Controller job that is assigned to the organization deletion.

func (*Client) DeleteRoute

func (client *Client) DeleteRoute(routeGUID string) (Warnings, error)

DeleteRoute deletes the Route associated with the provided Route GUID.

func (*Client) DeleteServiceBinding

func (client *Client) DeleteServiceBinding(serviceBindingGUID string) (Warnings, error)

DeleteServiceBinding will destroy the requested Service Binding.

func (*Client) DopplerEndpoint

func (client *Client) DopplerEndpoint() string

DopplerEndpoint returns the Doppler endpoint for the targetd Cloud Controller.

func (*Client) GetApplicationInstanceStatusesByApplication

func (client *Client) GetApplicationInstanceStatusesByApplication(guid string) (map[int]ApplicationInstanceStatus, Warnings, error)

GetApplicationInstanceStatusesByApplication returns a list of ApplicationInstance for a given application. Given the state of an application, it might skip some application instances.

func (*Client) GetApplicationInstancesByApplication

func (client *Client) GetApplicationInstancesByApplication(guid string) (map[int]ApplicationInstance, Warnings, error)

GetApplicationInstancesByApplication returns a list of ApplicationInstance for a given application. Given the state of an application, it might skip some application instances.

func (*Client) GetApplicationRoutes

func (client *Client) GetApplicationRoutes(appGUID string, queryParams []Query) ([]Route, Warnings, error)

GetApplicationRoutes returns a list of Routes associated with the provided Application GUID, and filtered by the provided queries.

func (*Client) GetApplications

func (client *Client) GetApplications(queries []Query) ([]Application, Warnings, error)

GetApplications returns back a list of Applications based off of the provided queries.

func (*Client) GetJob

func (client *Client) GetJob(jobGUID string) (Job, Warnings, error)

GetJob returns a job for the provided GUID.

func (*Client) GetOrganizations

func (client *Client) GetOrganizations(queries []Query) ([]Organization, Warnings, error)

GetOrganizations returns back a list of Organizations based off of the provided queries.

func (*Client) GetPrivateDomain

func (client *Client) GetPrivateDomain(domainGUID string) (Domain, Warnings, error)

GetPrivateDomain returns the Private Domain associated with the provided Domain GUID.

func (*Client) GetRouteApplications

func (client *Client) GetRouteApplications(routeGUID string, queryParams []Query) ([]Application, Warnings, error)

GetRouteApplications returns a list of Applications associated with a route GUID, filtered by provided queries.

func (*Client) GetServiceBindings

func (client *Client) GetServiceBindings(queries []Query) ([]ServiceBinding, Warnings, error)

GetServiceBindings returns back a list of Service Bindings based off of the provided queries.

func (*Client) GetServiceInstances

func (client *Client) GetServiceInstances(queries []Query) ([]ServiceInstance, Warnings, error)

GetServiceInstances returns back a list of *managed* Service Instances based off of the provided queries.

func (*Client) GetSharedDomain

func (client *Client) GetSharedDomain(domainGUID string) (Domain, Warnings, error)

GetSharedDomain returns the Shared Domain associated with the provided Domain GUID.

func (*Client) GetSpaceRoutes

func (client *Client) GetSpaceRoutes(spaceGUID string, queryParams []Query) ([]Route, Warnings, error)

GetSpaceRoutes returns a list of Routes associated with the provided Space GUID, and filtered by the provided queries.

func (*Client) GetSpaceServiceInstances

func (client *Client) GetSpaceServiceInstances(spaceGUID string, includeUserProvidedServices bool, queries []Query) ([]ServiceInstance, Warnings, error)

GetSpaceServiceInstances returns back a list of Service Instances based off of the space and queries provided. User provided services will be included if includeUserProvidedServices is set to true.

func (*Client) GetSpaces

func (client *Client) GetSpaces(queries []Query) ([]Space, Warnings, error)

GetSpaces returns back a list of Spaces based off of the provided queries.

func (*Client) GetStack

func (client *Client) GetStack(guid string) (Stack, Warnings, error)

GetStack returns the requested stack.

func (*Client) Info

func (client *Client) Info() (APIInformation, Warnings, error)

Info returns back endpoint and API information from /v2/info.

func (*Client) MinCLIVersion

func (client *Client) MinCLIVersion() string

MinCLIVersion returns the minimum CLI version required for the targeted Cloud Controller

func (*Client) NewUser

func (client *Client) NewUser(uaaUserID string) (User, Warnings, error)

NewUser creates a new Cloud Controller User from the provided UAA user ID.

func (*Client) PollJob

func (client *Client) PollJob(job Job) (Warnings, error)

PollJob will keep polling the given job until the job has terminated, an error is encountered, or config.OverallPollingTimeout is reached. In the last case, a JobTimeoutError is returned.

func (*Client) RoutingEndpoint

func (client *Client) RoutingEndpoint() string

RoutingEndpoint returns the Routing endpoint for the targeted Cloud Controller.

func (*Client) TargetCF

func (client *Client) TargetCF(settings TargetSettings) (Warnings, error)

TargetCF sets the client to use the Cloud Controller specified in the configuration. Any other configuration is also applied to the client.

func (*Client) TokenEndpoint

func (client *Client) TokenEndpoint() string

TokenEndpoint returns the Token endpoint for the targeted Cloud Controller.

func (*Client) UpdateApplication

func (client *Client) UpdateApplication(app Application) (Application, Warnings, error)

func (*Client) WrapConnection

func (client *Client) WrapConnection(wrapper ConnectionWrapper)

WrapConnection wraps the current Client connection in the wrapper.

type Config

type Config struct {
	// AppName is the name of the application/process using the client.
	AppName string

	// AppVersion is the version of the application/process using the client.
	AppVersion string

	// JobPollingTimeout is the maximum amount of time a job polls for.
	JobPollingTimeout time.Duration

	// JobPollingInterval is the wait time between job polls.
	JobPollingInterval time.Duration
}

Config allows the Client to be configured

type ConnectionWrapper

type ConnectionWrapper interface {
	cloudcontroller.Connection
	Wrap(innerconnection cloudcontroller.Connection) cloudcontroller.Connection
}

ConnectionWrapper can wrap a given connection allowing the wrapper to modify all requests going in and out of the given connection.

type Domain

type Domain struct {
	GUID string
	Name string
}

Domain represents a Cloud Controller Domain.

func (*Domain) UnmarshalJSON

func (domain *Domain) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Domain response.

type InstancesError

type InstancesError struct {
	Message string
}

InstancesError is returned when requesting instance information encounters an error.

func (InstancesError) Error

func (e InstancesError) Error() string

type Job

type Job struct {
	Error  string
	GUID   string
	Status JobStatus
}

Job represents a Cloud Controller Job.

func (Job) Failed

func (job Job) Failed() bool

Failed returns true when the job has completed with an error/failure.

func (Job) Finished

func (job Job) Finished() bool

Finished returns true when the job has completed successfully.

func (*Job) UnmarshalJSON

func (job *Job) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Job response.

type JobFailedError

type JobFailedError struct {
	JobGUID string
	Message string
}

JobFailedError represents a failed Cloud Controller Job. It wraps the error returned back from the Cloud Controller.

func (JobFailedError) Error

func (e JobFailedError) Error() string

type JobStatus

type JobStatus string

JobStatus is the current state of a job.

const (
	// JobStatusFailed is when the job is no longer running due to a failure.
	JobStatusFailed JobStatus = "failed"

	// JobStatusFinished is when the job is no longer and it was successful.
	JobStatusFinished JobStatus = "finished"

	// JobStatusQueued is when the job is waiting to be run.
	JobStatusQueued JobStatus = "queued"

	// JobStatusRunning is when the job is running.
	JobStatusRunning JobStatus = "running"
)

type JobTimeoutError

type JobTimeoutError struct {
	JobGUID string
	Timeout time.Duration
}

JobTimeoutError is returned from PollJob when the OverallPollingTimeout has been reached.

func (JobTimeoutError) Error

func (e JobTimeoutError) Error() string

type NotStagedError

type NotStagedError struct {
	Message string
}

NotStagedError is returned when requesting instance information from a not staged app.

func (NotStagedError) Error

func (e NotStagedError) Error() string

type Organization

type Organization struct {
	GUID string
	Name string
}

Organization represents a Cloud Controller Organization.

func (*Organization) UnmarshalJSON

func (org *Organization) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Organization response.

type PaginatedResources

type PaginatedResources struct {
	NextURL        string          `json:"next_url"`
	ResourcesBytes json.RawMessage `json:"resources"`
	// contains filtered or unexported fields
}

PaginatedResources represents a page of resources returned by the Cloud Controller.

func NewPaginatedResources

func NewPaginatedResources(exampleResource interface{}) PaginatedResources

NewPaginatedResources returns a new PaginatedResources struct with the given resource type.

func (PaginatedResources) Resources

func (pr PaginatedResources) Resources() ([]interface{}, error)

Resources unmarshals JSON representing a page of resources and returns a slice of the given resource type.

type Params

type Params map[string]string

Params represents URI parameters for a request.

type Query

type Query struct {
	Filter   QueryFilter
	Operator QueryOperator
	Value    string
}

Query is a type of filter that can be passed to specific request to narrow down the return set.

type QueryFilter

type QueryFilter string

QueryFilter is the type of filter a Query uses.

const (
	// AppGUIDFilter is the name of the App GUID filter.
	AppGUIDFilter QueryFilter = "app_guid"
	// OrganizationGUIDFilter is the name of the organization GUID filter.
	OrganizationGUIDFilter QueryFilter = "organization_guid"
	// RouteGUIDFilter is the name of the route GUID filter.
	RouteGUIDFilter QueryFilter = "route_guid"
	// ServiceInstanceGUIDFilter is the name of the service instance GUID filter.
	ServiceInstanceGUIDFilter QueryFilter = "service_instance_guid"
	// SpaceGUIDFilter is the name of the space GUID filter.
	SpaceGUIDFilter QueryFilter = "space_guid"

	// NameFilter is the name of the name filter.
	NameFilter QueryFilter = "name"
)

type QueryOperator

type QueryOperator string

QueryOperator is the type of operation a Query uses.

const (
	// EqualOperator is the query equal operator.
	EqualOperator QueryOperator = ":"
)

type Route

type Route struct {
	GUID       string
	Host       string
	Path       string
	Port       int
	DomainGUID string
}

Route represents a Cloud Controller Route.

func (*Route) UnmarshalJSON

func (route *Route) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Route response.

type ServiceBinding

type ServiceBinding struct {
	GUID string
}

ServiceBinding represents a Cloud Controller Service Binding.

func (*ServiceBinding) UnmarshalJSON

func (serviceBinding *ServiceBinding) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Service Binding response.

type ServiceInstance

type ServiceInstance struct {
	GUID string
	Name string
	Type ServiceInstanceType
}

ServiceInstance represents a Cloud Controller Service Instance.

func (ServiceInstance) Managed

func (serviceInstance ServiceInstance) Managed() bool

Managed returns true if the Service Instance is a managed service.

func (*ServiceInstance) UnmarshalJSON

func (serviceInstance *ServiceInstance) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Service Instance response.

func (ServiceInstance) UserProvided

func (serviceInstance ServiceInstance) UserProvided() bool

UserProvidedService returns true if the Service Instance is a user provided service.

type ServiceInstanceType

type ServiceInstanceType string

ServiceInstanceType is the type of the Service Instance.

const (
	// UserProvidedService is a Service Instance that is created by a user.
	UserProvidedService ServiceInstanceType = "user_provided_service_instance"

	// ManagedService is a Service Instance that is managed by a service broker.
	ManagedService ServiceInstanceType = "managed_service_instance"
)

type Space

type Space struct {
	GUID     string
	Name     string
	AllowSSH bool
}

Space represents a Cloud Controller Space.

func (*Space) UnmarshalJSON

func (space *Space) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Space response.

type Stack

type Stack struct {
	GUID        string
	Name        string
	Description string
}

Stack represents a Cloud Controller Stack.

func (*Stack) UnmarshalJSON

func (stack *Stack) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller Stack response.

type TargetSettings

type TargetSettings struct {
	// DialTimeout is the DNS timeout used to make all requests to the Cloud
	// Controller.
	DialTimeout time.Duration

	// SkipSSLValidation controls whether a client verifies the server's
	// certificate chain and host name. If SkipSSLValidation is true, TLS accepts
	// any certificate presented by the server and any host name in that
	// certificate for *all* client requests going forward.
	//
	// In this mode, TLS is susceptible to man-in-the-middle attacks. This should
	// be used only for testing.
	SkipSSLValidation bool

	// URL is a fully qualified URL to the Cloud Controller API.
	URL string
}

TargetSettings represents configuration for establishing a connection to the Cloud Controller server.

type UnexpectedResponseError

type UnexpectedResponseError struct {
	CCErrorResponse

	RequestIDs   []string
	ResponseCode int
}

UnexpectedResponseError is returned when the client gets an error that has not been accounted for.

func (UnexpectedResponseError) Error

func (e UnexpectedResponseError) Error() string

type User

type User struct {
	GUID string
}

User represents a Cloud Controller User.

func (*User) UnmarshalJSON

func (user *User) UnmarshalJSON(data []byte) error

UnmarshalJSON helps unmarshal a Cloud Controller User response.

type Warnings

type Warnings []string

Warnings are a collection of warnings that the Cloud Controller can return back from an API request.

Directories

Path Synopsis
This file was generated by counterfeiter
This file was generated by counterfeiter

Jump to

Keyboard shortcuts

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