brokerapi

package
v0.2.3 Latest Latest
Warning

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

Go to latest
Published: May 19, 2020 License: Apache-2.0 Imports: 0 Imported by: 0

Documentation

Overview

Package brokerapi contains types that are used exclusively to talk to a backing open service broker API compatible API

Index

Constants

View Source
const (
	StateInProgress = "in progress"
	StateSucceeded  = "succeeded"
	StateFailed     = "failed"
)

Defines the possible states of an asynchronous request to a broker

View Source
const (
	// InstanceType is a string constant representation of the instance type
	InstanceType = "instanceType"
	// BindingType is a string constant representation of the binding type
	BindingType = "bindingType"
)
View Source
const ContextProfilePlatformKubernetes string = "kubernetes"

ContextProfilePlatformKubernetes is a constant to send when the client is representing a kubernetes style ecosystem.

Variables

This section is empty.

Functions

This section is empty.

Types

type BindingClient

type BindingClient interface {
	// CreateServiceBinding creates a service binding in the respective broker.
	// This method handles all asynchronous request handling.
	CreateServiceBinding(instanceID, bindingID string, req *BindingRequest) (*CreateServiceBindingResponse, error)

	// DeleteServiceBinding deletes an existing service binding in the respective
	// broker. This method handles all asynchronous request handling.
	DeleteServiceBinding(instanceID, bindingID, serviceID, planID string) error
}

BindingClient defines the interface for managing service bindings with a broker.

type BindingRequest

type BindingRequest struct {
	AppGUID      string                 `json:"app_guid,omitempty"`
	PlanID       string                 `json:"plan_id,omitempty"`
	ServiceID    string                 `json:"service_id,omitempty"`
	BindResource map[string]interface{} `json:"bind_resource,omitempty"`
	Parameters   map[string]interface{} `json:"parameters,omitempty"`
}

BindingRequest represents a request to bind to a service instance

type BrokerClient

type BrokerClient interface {
	CatalogClient
	InstanceClient
	BindingClient
}

BrokerClient defines the interface for interacting with a broker for catalog retrieval, service instance management, and service binding management.

The broker client defines functions for the catalog, instance and binding APIs for the Open Service Broker API (https://www.openservicebrokerapi.org/, based on the Cloud Foundry Service Broker API: https://docs.cloudfoundry.org/services/api.html).

Each function accepts and returns parameters that are unique to this package. For example, the catalog API function, GetCatalog, returns a *brokerapi.Catalog data type. Most callers will need to translate this data type into a kubernetes-native type such as a series of (./pkg/apis/servicecatalog).ServiceClass data types in that specific case.

type Catalog

type Catalog struct {
	Services []*Service `json:"services"`
}

Catalog is a JSON-compatible type to be used to decode the result from a /v2/catalog call to an open service broker compatible API

type CatalogClient

type CatalogClient interface {
	GetCatalog() (*Catalog, error)
}

CatalogClient defines the interface for catalog interaction with a broker.

type ContextProfile

type ContextProfile struct {
	// Platform is always `kubernetes`
	Platform string `json:"platform,omitempty"`
	// Namespace is the Kubernetes namespace in which the service instance will be visible.
	Namespace string `json:"namespace,omitempty"`
}

ContextProfile implements the optional OSB field https://github.com/duglin/servicebroker/blob/CFisms/context-profiles.md#kubernetes

type CreateFunc

type CreateFunc func(name, url, username, password string) BrokerClient

CreateFunc is a callback function that the controller uses to create a new broker client from a given broker object

type CreateServiceBindingResponse

type CreateServiceBindingResponse struct {
	Credentials Credential `json:"credentials"`
}

CreateServiceBindingResponse represents a response to a service binding request

type CreateServiceInstanceRequest

type CreateServiceInstanceRequest struct {
	OrgID             string                 `json:"organization_guid,omitempty"`
	PlanID            string                 `json:"plan_id,omitempty"`
	ServiceID         string                 `json:"service_id,omitempty"`
	SpaceID           string                 `json:"space_guid,omitempty"`
	Parameters        map[string]interface{} `json:"parameters,omitempty"`
	AcceptsIncomplete bool                   `json:"accepts_incomplete,omitempty"`
	ContextProfile    ContextProfile         `json:"context,omitempty"`
}

CreateServiceInstanceRequest represents a request to a broker to provision an instance of a service

type CreateServiceInstanceResponse

type CreateServiceInstanceResponse struct {
	DashboardURL string `json:"dashboard_url,omitempty"`
	Operation    string `json:"operation,omitempty"`
}

CreateServiceInstanceResponse represents the response from a broker after a request to provision an instance of a service

type Credential

type Credential map[string]interface{}

Credential represents connection details, username, and password that are provisioned when a consumer binds to a service instance

type DeleteServiceInstanceRequest

type DeleteServiceInstanceRequest struct {
	ServiceID         string `json:"service_id"`
	PlanID            string `json:"plan_id"`
	AcceptsIncomplete bool   `json:"accepts_incomplete,omitempty"`
}

DeleteServiceInstanceRequest represents a request to a broker to deprovision an instance of a service

type DeleteServiceInstanceResponse

type DeleteServiceInstanceResponse struct {
	Operation string `json:"operation,omitempty"`
}

DeleteServiceInstanceResponse represents the response from a broker after a request to deprovision an instance of a service

type InputParametersSchema added in v0.1.31

type InputParametersSchema struct {
	Parameters interface{} `json:"parameters,omitempty"`
}

InputParametersSchema represents a schema for input parameters for creation or update of an API resource.

type InstanceClient

type InstanceClient interface {

	// CreateServiceInstance creates a service instance in the respective broker.
	CreateServiceInstance(ID string, req *CreateServiceInstanceRequest) (*CreateServiceInstanceResponse, int, error)

	// UpdateServiceInstance updates an existing service instance in the respective
	// broker.
	UpdateServiceInstance(ID string, req *CreateServiceInstanceRequest) (*ServiceInstance, int, error)

	// DeleteServiceInstance deletes an existing service instance in the respective
	// broker.
	DeleteServiceInstance(ID string, req *DeleteServiceInstanceRequest) (*DeleteServiceInstanceResponse, int, error)

	// PollServiceInstance polls a broker for a Service Instance Last Operation
	PollServiceInstance(ID string, req *LastOperationRequest) (*LastOperationResponse, int, error)
}

InstanceClient defines the interface for managing service instances with a broker.

type LastOperationRequest

type LastOperationRequest struct {
	ServiceID string `json:"service_id,omitempty"`
	PlanID    string `json:"plan_id,omitempty"`
	Operation string `json:"operation,omitempty"`
}

LastOperationRequest represents a request to a broker to give the state of the action it is completing asynchronously

type LastOperationResponse

type LastOperationResponse struct {
	State       string `json:"state"`
	Description string `json:"description,omitempty"`
}

LastOperationResponse represents the broker response with the state of a discrete action that the broker is completing asynchronously

type PreviousValues added in v0.1.40

type PreviousValues struct {
	OrgID     string `json:"organization_guid,omitempty"`
	PlanID    string `json:"plan_id,omitempty"`
	ServiceID string `json:"service_id,omitempty"`
	SpaceID   string `json:"space_guid,omitempty"`
}

PreviousValues represents the information about an instance of a service prior to the update the instance

type RequestResponseSchema added in v0.1.31

type RequestResponseSchema struct {
	InputParametersSchema
	Response interface{} `json:"response,omitempty"`
}

RequestResponseSchema represents a schema for both input parameters and the broker's response to the binding request

type Schemas

type Schemas struct {
	ServiceInstance *ServiceInstanceSchema `json:"service_instance,omitempty"`
	ServiceBinding  *ServiceBindingSchema  `json:"service_binding,omitempty"`
}

Schemas represents a plan's schemas for service instance and binding create and update.

type Service

type Service struct {
	Name            string        `json:"name"`
	ID              string        `json:"id"`
	Description     string        `json:"description"`
	Tags            []string      `json:"tags,omitempty"`
	Requires        []string      `json:"requires,omitempty"`
	Bindable        bool          `json:"bindable"`
	Metadata        interface{}   `json:"metadata,omitempty"`
	DashboardClient interface{}   `json:"dashboard_client"`
	PlanUpdateable  bool          `json:"plan_updateable,omitempty"`
	Plans           []ServicePlan `json:"plans"`
}

Service represents a service (of which there may be many variants-- "plans") offered by a service broker

https://github.com/openservicebrokerapi/servicebroker/blob/v2.12/spec.md#service-objects

type ServiceBinding

type ServiceBinding struct {
	ID                string                 `json:"id"`
	ServiceID         string                 `json:"service_id"`
	AppID             string                 `json:"app_id"`
	ServicePlanID     string                 `json:"service_plan_id"`
	PrivateKey        string                 `json:"private_key"`
	ServiceInstanceID string                 `json:"service_instance_id"`
	BindResource      map[string]interface{} `json:"bind_resource,omitempty"`
	Parameters        map[string]interface{} `json:"parameters,omitempty"`
}

ServiceBinding represents a binding to a service instance

type ServiceBindingSchema

type ServiceBindingSchema struct {
	Create *RequestResponseSchema `json:"create,omitempty"`
}

ServiceBindingSchema represents a plan's schemas for the parameters accepted for binding creation.

type ServiceInstance

type ServiceInstance struct {
	ID               string `json:"id"`
	DashboardURL     string `json:"dashboard_url"`
	InternalID       string `json:"internal_id,omitempty"`
	ServiceID        string `json:"service_id"`
	PlanID           string `json:"plan_id"`
	OrganizationGUID string `json:"organization_guid"`
	SpaceGUID        string `json:"space_guid"`

	LastOperation *LastOperationResponse `json:"last_operation,omitempty"`

	Parameters map[string]interface{} `json:"parameters,omitempty"`
}

ServiceInstance represents an instance of a service

type ServiceInstanceSchema

type ServiceInstanceSchema struct {
	Create *InputParametersSchema `json:"create,omitempty"`
	Update *InputParametersSchema `json:"update,omitempty"`
}

ServiceInstanceSchema represents a plan's schemas for a create and update of a service instance.

type ServicePlan

type ServicePlan struct {
	Name        string      `json:"name"`
	ID          string      `json:"id"`
	Description string      `json:"description"`
	Metadata    interface{} `json:"metadata,omitempty"`
	Free        bool        `json:"free,omitempty"`
	Bindable    *bool       `json:"bindable,omitempty"`
	Schemas     *Schemas    `json:"schemas,omitempty"`
}

ServicePlan is the Open Service API compatible struct for service plans. It comes with JSON struct tags to match the API spec

type Types

type Types struct {
	Instance string `json:"instance"`
	Binding  string `json:"binding"`
}

Types represents the types offered by a given service plan-- instances and/or bindings

type UpdateServiceInstanceRequest added in v0.1.40

type UpdateServiceInstanceRequest struct {
	ContextProfile ContextProfile         `json:"context,omitempty"`
	ServiceID      string                 `json:"service_id,omitempty"`
	PlanID         string                 `json:"plan_id,omitempty"`
	Parameters     map[string]interface{} `json:"parameters,omitempty"`
	PreviousValues PreviousValues         `json:"previous_values,omitempty"`
}

UpdateServiceInstanceRequest represents a request to a broker to update an instance of a service

type UpdateServiceInstanceResponse added in v0.1.40

type UpdateServiceInstanceResponse struct {
	DashboardURL string `json:"dashboard_url,omitempty"`
	Operation    string `json:"operation,omitempty"`
}

UpdateServiceInstanceResponse represents the response from a broker after a request to update an instance of a service

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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