broker

package
v0.0.0-...-dc8ed20 Latest Latest
Warning

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

Go to latest
Published: May 21, 2021 License: Apache-2.0, Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KymaServiceID   = "47c9dcbf-ff30-448e-ab36-d3bad66ba281"
	KymaServiceName = "kymaruntime"
)
View Source
const (
	AllPlansSelector = "all_plans"

	GCPPlanID         = "ca6e5357-707f-4565-bbbd-b3ab732597c6"
	GCPPlanName       = "gcp"
	AWSPlanID         = "361c511f-f939-4621-b228-d0fb79a1fe15"
	AWSPlanName       = "aws"
	AzurePlanID       = "4deee563-e5ec-4731-b9b1-53b42d855f0c"
	AzurePlanName     = "azure"
	AzureLitePlanID   = "8cb22518-aa26-44c5-91a0-e669ec9bf443"
	AzureLitePlanName = "azure_lite"
	AzureHAPlanID     = "f2951649-02ca-43a5-9188-9c07fb612491"
	AzureHAPlanName   = "azure_ha"
	TrialPlanID       = "7d55d31d-35ae-4438-bf13-6ffdfa107d9f"
	TrialPlanName     = "trial"
	OpenStackPlanID   = "03b812ac-c991-4528-b5bd-08b303523a63"
	OpenStackPlanName = "openstack"
	FreemiumPlanID    = "b1a5764e-2ea1-4f95-94c0-2b4538b37b55"
	FreemiumPlanName  = "free"
)

Variables

Functions

func AWSRegions

func AWSRegions() []string

func AWSSchema

func AWSSchema(machineTypes []string) []byte

func AttachRoutes

func AttachRoutes(router *mux.Router, serviceBroker domain.ServiceBroker, logger lager.Logger) *mux.Router

copied from github.com/pivotal-cf/brokerapi/api.go

func AzureHASchema

func AzureHASchema(machineTypes []string) []byte

func AzureLiteSchema

func AzureLiteSchema(machineTypes []string) []byte

func AzureRegions

func AzureRegions() []string

func AzureSchema

func AzureSchema(machineTypes []string) []byte

func DefaultControlsOrder

func DefaultControlsOrder() []string

func FreemiumSchema

func FreemiumSchema(provider internal.CloudProvider) []byte

func GCPRegions

func GCPRegions() []string

func GCPSchema

func GCPSchema(machineTypes []string) []byte

func IsAzurePlan

func IsAzurePlan(planID string) bool

func IsTrialPlan

func IsTrialPlan(planID string) bool

func OpenStackRegions

func OpenStackRegions() []string

func OpenStackSchema

func OpenStackSchema(machineTypes []string) []byte

func Plans

func Plans(plans PlansConfig, provider internal.CloudProvider) map[string]Plan

plans is designed to hold plan defaulting logic keep internal/hyperscaler/azure/config.go in sync with any changes to available zones

func ToInterfaceSlice

func ToInterfaceSlice(input []string) []interface{}

func TrialSchema

func TrialSchema() []byte

Types

type BindEndpoint

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

func NewBind

func NewBind(log logrus.FieldLogger) *BindEndpoint

func (*BindEndpoint) Bind

func (b *BindEndpoint) Bind(ctx context.Context, instanceID, bindingID string, details domain.BindDetails, asyncAllowed bool) (domain.Binding, error)

Bind creates a new service binding

PUT /v2/service_instances/{instance_id}/service_bindings/{binding_id}

type Client

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

func NewClient

func NewClient(ctx context.Context, config ClientConfig) *Client

func (*Client) Deprovision

func (c *Client) Deprovision(instance internal.Instance) (string, error)

Deprovision requests Runtime deprovisioning in KEB with given details

type ClientConfig

type ClientConfig struct {
	URL          string
	TokenURL     string
	ClientID     string
	ClientSecret string
	Scope        string
}

type Config

type Config struct {
	EnablePlans          EnablePlans `envconfig:"default=azure"`
	OnlySingleTrialPerGA bool        `envconfig:"default=true"`
}

Config represents configuration for broker

type ContextUpdateHandler

type ContextUpdateHandler interface {
	Handle(instance *internal.Instance, newCtx internal.ERSContext) error
}

type DeprovisionEndpoint

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

func NewDeprovision

func NewDeprovision(instancesStorage storage.Instances, operationsStorage storage.Operations, q Queue, log logrus.FieldLogger) *DeprovisionEndpoint

func (*DeprovisionEndpoint) Deprovision

func (b *DeprovisionEndpoint) Deprovision(ctx context.Context, instanceID string, details domain.DeprovisionDetails, asyncAllowed bool) (domain.DeprovisionServiceSpec, error)

Deprovision deletes an existing service instance

DELETE /v2/service_instances/{instance_id}

type EnablePlans

type EnablePlans []string

EnablePlans defines the plans that should be available for provisioning

func (*EnablePlans) Unmarshal

func (m *EnablePlans) Unmarshal(in string) error

Unmarshal provides custom parsing of enabled plans. Implements envconfig.Unmarshal interface.

type GetBindingEndpoint

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

func NewGetBinding

func NewGetBinding(log logrus.FieldLogger) *GetBindingEndpoint

func (*GetBindingEndpoint) GetBinding

func (b *GetBindingEndpoint) GetBinding(ctx context.Context, instanceID, bindingID string) (domain.GetBindingSpec, error)

GetBinding fetches an existing service binding

GET /v2/service_instances/{instance_id}/service_bindings/{binding_id}

type GetInstanceEndpoint

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

func NewGetInstance

func NewGetInstance(instancesStorage storage.Instances, log logrus.FieldLogger) *GetInstanceEndpoint

func (*GetInstanceEndpoint) GetInstance

func (b *GetInstanceEndpoint) GetInstance(ctx context.Context, instanceID string) (domain.GetInstanceDetailsSpec, error)

GetInstance fetches information about a service instance

GET /v2/service_instances/{instance_id}

type JSONSchemaValidator

type JSONSchemaValidator interface {
	ValidateString(json string) (jsonschema.ValidationResult, error)
}

type LastBindingOperationEndpoint

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

func (*LastBindingOperationEndpoint) LastBindingOperation

func (b *LastBindingOperationEndpoint) LastBindingOperation(ctx context.Context, instanceID, bindingID string, details domain.PollDetails) (domain.LastOperation, error)

LastBindingOperation fetches last operation state for a service binding

GET /v2/service_instances/{instance_id}/service_bindings/{binding_id}/last_operation

type LastOperationEndpoint

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

func (*LastOperationEndpoint) LastOperation

func (b *LastOperationEndpoint) LastOperation(ctx context.Context, instanceID string, details domain.PollDetails) (domain.LastOperation, error)

LastOperation fetches last operation state for a service instance

GET /v2/service_instances/{instance_id}/last_operation

type Plan

type Plan struct {
	PlanDefinition domain.ServicePlan
	// contains filtered or unexported fields
}

type PlanData

type PlanData struct {
	Description string       `yaml:"description"`
	Metadata    PlanMetadata `yaml:"metadata"`
}

type PlanMetadata

type PlanMetadata struct {
	DisplayName string `yaml:"displayName"`
}

type PlanValidator

type PlanValidator interface {
	IsPlanSupport(planID string) bool
}

type PlansConfig

type PlansConfig map[string]PlanData

type ProvisionEndpoint

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

func NewProvision

func NewProvision(cfg Config,
	gardenerConfig gardener.Config,
	operationsStorage storage.Operations,
	instanceStorage storage.Instances,
	queue Queue,
	builderFactory PlanValidator,
	plansConfig PlansConfig,
	kvod bool,
	log logrus.FieldLogger) *ProvisionEndpoint

func (*ProvisionEndpoint) Provision

func (b *ProvisionEndpoint) Provision(ctx context.Context, instanceID string, details domain.ProvisionDetails, asyncAllowed bool) (domain.ProvisionedServiceSpec, error)

Provision creates a new service instance

PUT /v2/service_instances/{instance_id}

type ProvisioningProperties

type ProvisioningProperties struct {
	Name          Type  `json:"name"`
	Region        *Type `json:"region,omitempty"`
	MachineType   *Type `json:"machineType,omitempty"`
	AutoScalerMin *Type `json:"autoScalerMin,omitempty"`
	AutoScalerMax *Type `json:"autoScalerMax,omitempty"`
	ZonesCount    *Type `json:"zonesCount,omitempty"`
}

func NewProvisioningProperties

func NewProvisioningProperties(machineTypes []string, regions []string) ProvisioningProperties

NewProvisioningProperties creates a new properties for different plans Note that the order of properties will be the same in the form on the website

type Queue

type Queue interface {
	Add(operationId string)
}

type RootSchema

type RootSchema struct {
	Schema string `json:"$schema"`
	Type
	Properties interface{} `json:"properties"`
	Required   []string    `json:"required"`

	// Specified to true enables form view on website
	ShowFormView bool `json:"_show_form_view"`
	// Specifies in what order properties will be displayed on the form
	ControlsOrder []string `json:"_controlsOrder"`
}

func NewSchema

func NewSchema(properties ProvisioningProperties, controlsOrder []string) RootSchema

type Service

type Service struct {
	Description string          `yaml:"description"`
	Metadata    ServiceMetadata `yaml:"metadata"`
	Plans       PlansConfig     `yaml:"plans"`
}

type ServiceMetadata

type ServiceMetadata struct {
	DisplayName         string `yaml:"displayName"`
	ImageUrl            string `yaml:"imageUrl"`
	LongDescription     string `yaml:"longDescription"`
	ProviderDisplayName string `yaml:"providerDisplayName"`
	DocumentationUrl    string `yaml:"documentationUrl"`
	SupportUrl          string `yaml:"supportUrl"`
}

type ServicesConfig

type ServicesConfig map[string]Service

func NewServicesConfigFromFile

func NewServicesConfigFromFile(path string) (ServicesConfig, error)

func (ServicesConfig) DefaultPlansConfig

func (s ServicesConfig) DefaultPlansConfig() (PlansConfig, error)

type ServicesEndpoint

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

func NewServices

func NewServices(cfg Config, servicesConfig ServicesConfig, log logrus.FieldLogger) *ServicesEndpoint

func (*ServicesEndpoint) Services

func (b *ServicesEndpoint) Services(ctx context.Context) ([]domain.Service, error)

Services gets the catalog of services offered by the service broker

GET /v2/catalog

type TrialCloudRegion

type TrialCloudRegion string
const (
	Europe TrialCloudRegion = "europe"
	Us     TrialCloudRegion = "us"
	Asia   TrialCloudRegion = "asia"
)

type Type

type Type struct {
	Type        string `json:"type"`
	Title       string `json:"title,omitempty"`
	Description string `json:"description,omitempty"`
	Minimum     int    `json:"minimum,omitempty"`
	Maximum     int    `json:"maximum,omitempty"`
	MinLength   int    `json:"minLength,omitempty"`
	MaxLength   int    `json:"maxLength,omitempty"`

	// Regex pattern to match against string type of fields.
	// If not specified for strings user can pass empty string with whitespaces only.
	Pattern         string        `json:"pattern,omitempty"`
	Default         interface{}   `json:"default,omitempty"`
	Example         interface{}   `json:"example,omitempty"`
	Enum            []interface{} `json:"enum,omitempty"`
	Items           []Type        `json:"items,omitempty"`
	AdditionalItems *bool         `json:"additionalItems,omitempty"`
	UniqueItems     *bool         `json:"uniqueItems,omitempty"`
}

func NameProperty

func NameProperty() Type

type UnbindEndpoint

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

func NewUnbind

func NewUnbind(log logrus.FieldLogger) *UnbindEndpoint

func (*UnbindEndpoint) Unbind

func (b *UnbindEndpoint) Unbind(ctx context.Context, instanceID, bindingID string, details domain.UnbindDetails, asyncAllowed bool) (domain.UnbindSpec, error)

Unbind deletes an existing service binding

DELETE /v2/service_instances/{instance_id}/service_bindings/{binding_id}

type UpdateEndpoint

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

func NewUpdate

func NewUpdate(instanceStorage storage.Instances, operationStorage storage.Operations, ctxUpdateHandler ContextUpdateHandler, processingEnabled bool, log logrus.FieldLogger) *UpdateEndpoint

func (*UpdateEndpoint) Update

func (b *UpdateEndpoint) Update(ctx context.Context, instanceID string, details domain.UpdateDetails, asyncAllowed bool) (domain.UpdateServiceSpec, error)

Update modifies an existing service instance

PATCH /v2/service_instances/{instance_id}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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