Documentation ¶
Index ¶
- Constants
- func GetMapFromStruct(s interface{}) (map[string]interface{}, error)
- func GetStructFromMap(m map[string]interface{}, s interface{}) error
- type ArrayPropertySchema
- type Binding
- type BindingDetails
- type BindingParameters
- type BindingSchemas
- type Catalog
- type CatalogConfig
- type Credentials
- type CustomArrayPropertyValidator
- type CustomFloatPropertyValidator
- type CustomIntPropertyValidator
- type CustomObjectPropertyValidator
- type CustomStringPropertyValidator
- type Deprovisioner
- type DeprovisioningStep
- type DeprovisioningStepFunction
- type FloatPropertySchema
- type InputParametersSchema
- type Instance
- type InstanceDetails
- type InstanceSchemas
- type IntPropertySchema
- type KeyedPropertySchemaContainer
- type Module
- type ObjectPropertySchema
- type Parameters
- func (p *Parameters) GetFloat64(key string) float64
- func (p *Parameters) GetFloat64Array(key string) []float64
- func (p *Parameters) GetInt64(key string) int64
- func (p *Parameters) GetInt64Array(key string) []int64
- func (p *Parameters) GetObject(key string) Parameters
- func (p *Parameters) GetObjectArray(key string) []Parameters
- func (p *Parameters) GetString(key string) string
- func (p *Parameters) GetStringArray(key string) []string
- func (p Parameters) MarshalJSON() ([]byte, error)
- func (p *Parameters) UnmarshalJSON(bytes []byte) error
- type Plan
- type PlanProperties
- type PlanSchemas
- type PropertySchema
- type Provisioner
- type ProvisioningParameters
- type ProvisioningStep
- type ProvisioningStepFunction
- type SecureString
- type Service
- type ServiceManager
- type ServiceMetadata
- type ServicePlanMetadata
- type ServiceProperties
- type Stability
- type StringPropertySchema
- type Updater
- type UpdatingStep
- type UpdatingStepFunction
- type ValidationError
Constants ¶
const ( // InstanceStateProvisioningDeferred represents the state where service // instance provisioning has been requested and deferred pending the // completion of some other action InstanceStateProvisioningDeferred = "PROVISIONING_DEFERRED" // InstanceStateProvisioning represents the state where service instance // provisioning is in progress InstanceStateProvisioning = "PROVISIONING" // InstanceStateProvisioned represents the state where service instance // provisioning has completed successfully InstanceStateProvisioned = "PROVISIONED" // InstanceStateProvisioningFailed represents the state where service instance // provisioning has failed InstanceStateProvisioningFailed = "PROVISIONING_FAILED" // InstanceStateUpdating represents the state where service instance // updating is in progress InstanceStateUpdating = "UPDATING" // InstanceStateUpdatingFailed represents the state where service instance // updating has failed InstanceStateUpdatingFailed = "UPDATING_FAILED" // InstanceStateDeprovisioningDeferred represents the state where service // instance deprovisioning has been requested and deferred pending the // completion of some other action InstanceStateDeprovisioningDeferred = "DEPROVISIONING_DEFERRED" // InstanceStateDeprovisioning represents the state where service instance // deprovisioning is in progress InstanceStateDeprovisioning = "DEPROVISIONING" // InstanceStateDeprovisioningFailed represents the state where service // instance deprovisioning has failed InstanceStateDeprovisioningFailed = "DEPROVISIONING_FAILED" // BindingStateBound represents the state where service binding has completed // successfully BindingStateBound = "BOUND" // BindingStateBindingFailed represents the state where service binding has // failed BindingStateBindingFailed = "BINDING_FAILED" // BindingStateUnbindingFailed represents the state where service unbinding // has failed BindingStateUnbindingFailed = "UNBINDING_FAILED" )
const ( // MigrationTag is the tag of migration services. It can be used for tag // filter to filter out migration services. MigrationTag string = "Migration" // DRTag is the tag of DR services. It can be used for tag filter to // filter out DR services. DRTag string = "Disaster Recovery" )
Variables ¶
This section is empty.
Functions ¶
func GetMapFromStruct ¶ added in v0.10.0
GetMapFromStruct is a utility function that extracts values from the provided struct into a map[string]interface{}. Maps form the input and output to all ServiceManager functions. This utility function offers ServiceManager implementors the option of working with firendlier, service-specific structs then easily extracting information from those structs into maps.
func GetStructFromMap ¶ added in v0.10.0
GetStructFromMap is a utility function that extracts values from a map[string]interface{} to the provided struct. Maps form the input and output to all ServiceManager functions. This utility function offers ServiceManager implementors the option of working with firendlier, service-specific structs by easily extracting information from maps into thos structs.
Types ¶
type ArrayPropertySchema ¶ added in v0.12.0
type ArrayPropertySchema struct { Title string `json:"title,omitempty"` // nolint: lll Description string `json:"description,omitempty"` // nolint: lll MinItems *int `json:"minItems,omitempty"` // nolint: lll MaxItems *int `json:"maxItems,omitempty"` // nolint: lll ItemsSchema PropertySchema `json:"items,omitempty"` CustomPropertyValidator CustomArrayPropertyValidator `json:"-"` DefaultValue []interface{} `json:"-"` }
ArrayPropertySchema represents the attributes of an array type
func (ArrayPropertySchema) MarshalJSON ¶ added in v0.12.0
func (a ArrayPropertySchema) MarshalJSON() ([]byte, error)
MarshalJSON provides functionality to marshal an ArrayPropertySchema to JSON
type Binding ¶
type Binding struct { BindingID string `json:"bindingId"` InstanceID string `json:"instanceId"` ServiceID string `json:"serviceId"` BindingParameters *BindingParameters `json:"bindingParameters"` Status string `json:"status"` StatusReason string `json:"statusReason"` Details BindingDetails `json:"details"` Created time.Time `json:"created"` }
Binding represents a binding to a service
func NewBindingFromJSON ¶
func NewBindingFromJSON( jsonBytes []byte, emptyBindingDetails BindingDetails, schema *InputParametersSchema, ) (Binding, error)
NewBindingFromJSON returns a new Binding unmarshalled from the provided JSON []byte
type BindingDetails ¶ added in v0.10.0
type BindingDetails interface{}
BindingDetails is an alias for the empty interface. It exists only to improve the clarity of function signatures and documentation.
type BindingParameters ¶
type BindingParameters struct {
Parameters
}
BindingParameters wraps a map containing binding parameters.
type BindingSchemas ¶ added in v0.12.0
type BindingSchemas struct {
BindingParametersSchema InputParametersSchema `json:"create,omitempty"`
}
BindingSchemas encapsulates all plan-related schemas for validating input parameters to all service binding operations.
type Catalog ¶
Catalog is an interface to be implemented by types that represents the service/plans offered by a service module or by the entire broker.
func NewCatalog ¶
NewCatalog initializes and returns a new Catalog
type CatalogConfig ¶ added in v0.10.0
type CatalogConfig struct { MinStability Stability EnableMigrationServices bool EnableDRServices bool }
CatalogConfig represents details re: which modules' services should be included or excluded from the catalog
func GetCatalogConfigFromEnvironment ¶ added in v0.10.0
func GetCatalogConfigFromEnvironment() (CatalogConfig, error)
GetCatalogConfigFromEnvironment returns catalog configuration
func NewCatalogConfigWithDefaults ¶ added in v0.10.0
func NewCatalogConfigWithDefaults() CatalogConfig
NewCatalogConfigWithDefaults returns a CatalogConfig object with default values already applied. Callers are then free to set custom values for the remaining fields and/or override default values.
type Credentials ¶
type Credentials interface{}
Credentials is an interface to be implemented by service-specific types that represent service credentials. This interface doesn't require any functions to be implemented. It exists to improve the clarity of function signatures and documentation.
type CustomArrayPropertyValidator ¶ added in v0.12.0
CustomArrayPropertyValidator is a function type that describes the signature for functions that provide custom validation logic for array properties.
type CustomFloatPropertyValidator ¶ added in v0.12.0
CustomFloatPropertyValidator is a function type that describes the signature for functions that provide custom validation logic for float properties.
type CustomIntPropertyValidator ¶ added in v0.12.0
CustomIntPropertyValidator is a function type that describes the signature for functions that provide custom validation logic for integer properties.
type CustomObjectPropertyValidator ¶ added in v0.12.0
CustomObjectPropertyValidator is a function type that describes the signature for functions that provide custom validation logic for object properties.
type CustomStringPropertyValidator ¶ added in v0.12.0
CustomStringPropertyValidator is a function type that describes the signature for functions that provide custom validation logic for string properties.
type Deprovisioner ¶
type Deprovisioner interface { GetFirstStepName() (string, bool) GetStep(name string) (DeprovisioningStep, bool) GetNextStepName(name string) (string, bool) }
Deprovisioner is an interface to be implemented by types that model a declared chain of tasks used to asynchronously deprovision a service
func NewDeprovisioner ¶
func NewDeprovisioner(steps ...DeprovisioningStep) (Deprovisioner, error)
NewDeprovisioner returns a new deprovisioner
type DeprovisioningStep ¶
type DeprovisioningStep interface { GetName() string Execute( ctx context.Context, instance Instance, ) (InstanceDetails, error) }
DeprovisioningStep is an interface to be implemented by types that represent a single step in a chain of steps that defines a deprovisioning process
func NewDeprovisioningStep ¶
func NewDeprovisioningStep( name string, fn DeprovisioningStepFunction, ) DeprovisioningStep
NewDeprovisioningStep returns a new DeprovisioningStep
type DeprovisioningStepFunction ¶
type DeprovisioningStepFunction func( ctx context.Context, instance Instance, ) (InstanceDetails, error)
DeprovisioningStepFunction is the signature for functions that implement a deprovisioning step
type FloatPropertySchema ¶ added in v0.12.0
type FloatPropertySchema struct { Title string `json:"title,omitempty"` Description string `json:"description,omitempty"` MinValue *float64 `json:"minimum,omitempty"` MaxValue *float64 `json:"maximum,omitempty"` AllowedValues []float64 `json:"enum,omitempty"` // krancour: AllowedIncrement is for the schema consumer's benefit only. // Validation vis-a-vis AllowedIncrement is not currently supported because of // floating point division errors. If you need this, write a custom property // validator instead, test it well, and avoid floating-point division if you // can. AllowedIncrement *float64 `json:"multipleOf,omitempty"` // nolint: lll CustomPropertyValidator CustomFloatPropertyValidator `json:"-"` DefaultValue *float64 `json:"default,omitempty"` // nolint: lll }
FloatPropertySchema represents schema for a single floating point property
func (FloatPropertySchema) MarshalJSON ¶ added in v0.12.0
func (f FloatPropertySchema) MarshalJSON() ([]byte, error)
MarshalJSON provides functionality to marshal a FloatPropertySchema to JSON
type InputParametersSchema ¶ added in v0.12.0
type InputParametersSchema struct { RequiredProperties []string `json:"required,omitempty"` SecureProperties []string `json:"-"` PropertySchemas map[string]PropertySchema `json:"properties,omitempty"` }
InputParametersSchema encapsulates schema for validating input parameters to any single operation.
func (InputParametersSchema) GetAdditionalPropertySchema ¶ added in v0.12.0
func (i InputParametersSchema) GetAdditionalPropertySchema() PropertySchema
GetAdditionalPropertySchema returns the "additional" property schema-- the schema that defines and allows for arbitrary properties on an object
func (InputParametersSchema) GetPropertySchemas ¶ added in v0.12.0
func (i InputParametersSchema) GetPropertySchemas() map[string]PropertySchema
GetPropertySchemas returns a map of subordinate property schemas
func (InputParametersSchema) MarshalJSON ¶ added in v0.12.0
func (i InputParametersSchema) MarshalJSON() ([]byte, error)
MarshalJSON defines custom JSON marshaling for InputParametersSchema and introduces an intermediate "parameters" property which is required by the OSB spec.
func (InputParametersSchema) Validate ¶ added in v0.12.0
func (i InputParametersSchema) Validate(valMap map[string]interface{}) error
Validate validates the given map[string]interface{} again this schema
type Instance ¶
type Instance struct { InstanceID string `json:"instanceId"` Alias string `json:"alias"` ServiceID string `json:"serviceId"` Service Service `json:"-"` PlanID string `json:"planId"` Plan Plan `json:"-"` ProvisioningParameters *ProvisioningParameters `json:"provisioningParameters"` UpdatingParameters *ProvisioningParameters `json:"updatingParameters"` Status string `json:"status"` StatusReason string `json:"statusReason"` Parent *Instance `json:"-"` ParentAlias string `json:"parentAlias"` Details InstanceDetails `json:"details"` Created time.Time `json:"created"` }
Instance represents an instance of a service
func NewInstanceFromJSON ¶
func NewInstanceFromJSON( jsonBytes []byte, emptyInstanceDetails InstanceDetails, provisioningParametersSchema *InputParametersSchema, ) (Instance, error)
NewInstanceFromJSON returns a new Instance unmarshalled from the provided JSON []byte
type InstanceDetails ¶ added in v0.10.0
type InstanceDetails interface{}
InstanceDetails is an alias for the emoty interface. It exists only to improve the clarity of function signatures and documentation.
type InstanceSchemas ¶ added in v0.12.0
type InstanceSchemas struct { ProvisioningParametersSchema InputParametersSchema `json:"create,omitempty"` UpdatingParametersSchema InputParametersSchema `json:"update,omitempty"` }
InstanceSchemas encapsulates all plan-related schemas for validating input parameters to all service instance operations.
type IntPropertySchema ¶ added in v0.12.0
type IntPropertySchema struct { Title string `json:"title,omitempty"` // nolint: lll Description string `json:"description,omitempty"` // nolint: lll MinValue *int64 `json:"minimum,omitempty"` MaxValue *int64 `json:"maximum,omitempty"` AllowedValues []int64 `json:"enum,omitempty"` AllowedIncrement *int64 `json:"multipleOf,omitempty"` // nolint: lll CustomPropertyValidator CustomIntPropertyValidator `json:"-"` DefaultValue *int64 `json:"default,omitempty"` }
IntPropertySchema represents schema for a single integer property
func (IntPropertySchema) MarshalJSON ¶ added in v0.12.0
func (i IntPropertySchema) MarshalJSON() ([]byte, error)
MarshalJSON provides functionality to marshal an IntPropertySchema to JSON
type KeyedPropertySchemaContainer ¶ added in v0.12.0
type KeyedPropertySchemaContainer interface { GetPropertySchemas() map[string]PropertySchema GetAdditionalPropertySchema() PropertySchema }
KeyedPropertySchemaContainer is an interface for any PropertySchema that contains an map of subordinate PropertySchemas. The existence of this interface alllows Params to treat InputParametersSchema and ObjectPropertySchema the same even though there are some differences between the two that are unimportant from Params' perspective.
type Module ¶
type Module interface { // GetName returns a module's name GetName() string // GetCatalog returns a Catalog of service/plans offered by a module GetCatalog() (Catalog, error) }
Module is an interface to be implemented by the broker's modules
type ObjectPropertySchema ¶ added in v0.12.0
type ObjectPropertySchema struct { Title string `json:"title,omitempty"` // nolint: lll Description string `json:"description,omitempty"` // nolint: lll RequiredProperties []string `json:"required,omitempty"` // nolint: lll PropertySchemas map[string]PropertySchema `json:"properties,omitempty"` // nolint: lll Additional PropertySchema `json:"additionalProperties,omitempty"` // nolint: lll CustomPropertyValidator CustomObjectPropertyValidator `json:"-"` DefaultValue map[string]interface{} `json:"-"` }
ObjectPropertySchema represents the attributes of a complicated schema type that can have nested properties
func (ObjectPropertySchema) GetAdditionalPropertySchema ¶ added in v0.12.0
func (o ObjectPropertySchema) GetAdditionalPropertySchema() PropertySchema
GetAdditionalPropertySchema returns the "additional" property schema-- the schema that defines and allows for arbitrary properties on an object
func (ObjectPropertySchema) GetPropertySchemas ¶ added in v0.12.0
func (o ObjectPropertySchema) GetPropertySchemas() map[string]PropertySchema
GetPropertySchemas returns a map of subordinate property schemas
func (ObjectPropertySchema) MarshalJSON ¶ added in v0.12.0
func (o ObjectPropertySchema) MarshalJSON() ([]byte, error)
MarshalJSON provides functionality to marshal an ObjectPropertySchema to JSON
type Parameters ¶ added in v0.12.0
type Parameters struct { Schema KeyedPropertySchemaContainer Data map[string]interface{} }
Parameters is a wrapper for a map that uses a schema to inform data access, marshaling, and unmarshaling with seamless encryption and decryption of sensitive string fields using the globally configured codec.
func (*Parameters) GetFloat64 ¶ added in v0.12.0
func (p *Parameters) GetFloat64(key string) float64
GetFloat64 retrieves a float64 by key from the Parameters' underlying map. If the key does not exist in the schema, 0 is returned. If the key does exist in the schema, also exists in the map, and that value from the map can be coerced to a float64, it will be returned. If, however, the key does not exist in the map or its value cannot be coerced to a float64, any default value specified for that field in the schema will be returned. If no default is defined, 0 is returned.
func (*Parameters) GetFloat64Array ¶ added in v0.12.0
func (p *Parameters) GetFloat64Array(key string) []float64
GetFloat64Array retrieves a []float64 by key from the Parameters' underlying map. If the key does not exist in the schema, nil is returned. If the key does exist in the schema, also exists in the map, and that value from the map can be coerced to a []float64, it will be returned. If, however, the key does not exist in the map or its value cannot be coerced to a []float64, any default value specified for that field in the schema will be returned. If no default is defined, nil is returned.
func (*Parameters) GetInt64 ¶ added in v0.12.0
func (p *Parameters) GetInt64(key string) int64
GetInt64 retrieves an int64 by key from the Parameters' underlying map. If the key does not exist in the schema, 0 is returned. If the key does exist in the schema, also exists in the map, and that value from the map can be coerced to an int64, it will be returned. If, however, the key does not exist in the map or its value cannot be coerced to an int64, any default value specified for that field in the schema will be returned. If no default is defined, 0 is returned.
func (*Parameters) GetInt64Array ¶ added in v0.12.0
func (p *Parameters) GetInt64Array(key string) []int64
GetInt64Array retrieves an []int64 by key from the Parameters' underlying map. If the key does not exist in the schema, nil is returned. If the key does exist in the schema, also exists in the map, and that value from the map can be coerced to an []int64, it will be returned. If, however, the key does not exist in the map or its value cannot be coerced to an []int64, any default value specified for that field in the schema will be returned. If no default is defined, nil is returned.
func (*Parameters) GetObject ¶ added in v0.12.0
func (p *Parameters) GetObject(key string) Parameters
GetObject retrieves a map[string]interface{} by key from the Parameters' underlying map wrapped in a new Parameters object. If the key does not exist in the schema, a Parameters object with no underlying map is returned. If the key does exist in the schema, also exists in the map, and that value from the map can be coerced to a map[string]interface{}, it will be wrapped and returned. If, however, the key does not exist in the map or its value cannot be coerced to a map[string]interface{}, any default value specified for that field in the schema will be wrapped and returned. If no default is defined, a Parameters object with no underlying map is returned. GetObject calls can be chained to "drill down" into a complex set of parameters.
func (*Parameters) GetObjectArray ¶ added in v0.12.0
func (p *Parameters) GetObjectArray(key string) []Parameters
GetObjectArray retrieves a []map[string]interface{} by key from the Parameters' underlying map, wraps each element in a new Parameters object and returns []Parameters containing those wrapped []map[string]interface{}. If the key does not exist in the schema, nil is returned. If the key does exist in the schema, also exists in the map, and that value from the map can be coerced to a []map[string]interface{}, each element will be wrapped in a new Parameters object and []Parameters will be returned. If, however, the key does not exist in the map or its value cannot be coerced to a []map[string]interface{}, any default value specified for that field in the schema will have each of its elements wrapped and []Parameters will be returned. If no default is defined, nil is returned.
func (*Parameters) GetString ¶ added in v0.12.0
func (p *Parameters) GetString(key string) string
GetString retrieves a string by key from the Parameters' underlying map. If the key does not exist in the schema, an empty string is returned. If the key does exist in the schema, also exists in the map, and that value from the map can be coerced to a string, it will be returned. If, however, the key does not exist in the map or its value cannot be coerced to a string, any default value specified for that field in the schema will be returned. If no default is defined, an empty string is returned.
func (*Parameters) GetStringArray ¶ added in v0.12.0
func (p *Parameters) GetStringArray(key string) []string
GetStringArray retrieves a []string by key from the Parameters' underlying map. If the key does not exist in the schema, nil is returned. If the key does exist in the schema, also exists in the map, and that value from the map can be coerced to a []string, it will be returned. If, however, the key does not exist in the map or its value cannot be coerced to a []string, any default value specified for that field in the schema will be returned. If no default is defined, nil is returned.
func (Parameters) MarshalJSON ¶ added in v0.12.0
func (p Parameters) MarshalJSON() ([]byte, error)
MarshalJSON marshals Parameters to JSON
func (*Parameters) UnmarshalJSON ¶ added in v0.12.0
func (p *Parameters) UnmarshalJSON(bytes []byte) error
UnmarshalJSON umarshals JSON to a Parameters objects
type Plan ¶
type Plan interface { GetID() string GetName() string GetProperties() PlanProperties IsEndOfLife() bool GetSchemas() PlanSchemas GetStability() Stability }
Plan is an interface to be implemented by types that represent a single variant or "sku" of a service
func NewPlan ¶
func NewPlan(planProperties PlanProperties) Plan
NewPlan initializes and returns a new Plan
type PlanProperties ¶
type PlanProperties struct { ID string `json:"id"` Name string `json:"name"` Description string `json:"description"` Free bool `json:"free"` Metadata ServicePlanMetadata `json:"metadata,omitempty"` // nolint: lll Extended map[string]interface{} `json:"-"` EndOfLife bool `json:"-"` Schemas PlanSchemas `json:"schemas,omitempty"` Stability Stability `json:"-"` }
PlanProperties represent the properties of a Plan that can be directly instantiated and passed to the NewPlan() constructor function which will carry out all necessary initialization.
type PlanSchemas ¶ added in v0.12.0
type PlanSchemas struct { ServiceInstances InstanceSchemas `json:"service_instance,omitempty"` ServiceBindings BindingSchemas `json:"service_binding,omitempty"` }
PlanSchemas is the root of a tree that encapsulates all plan-related schemas for validating input parameters to all service instance and service binding operations.
func (*PlanSchemas) AddCommonSchema ¶ added in v1.0.1
func (p *PlanSchemas) AddCommonSchema(sp ServiceProperties)
AddCommonSchema annotates a PlanSchema object with common attributes based on the given ServiceProperties
type PropertySchema ¶ added in v0.12.0
type PropertySchema interface {
// contains filtered or unexported methods
}
PropertySchema is an interface for the schema of any kind of property.
type Provisioner ¶
type Provisioner interface { GetFirstStepName() (string, bool) GetStep(name string) (ProvisioningStep, bool) GetNextStepName(name string) (string, bool) }
Provisioner is an interface to be implemented by types that model a declared chain of tasks used to asynchronously provision a service
func NewProvisioner ¶
func NewProvisioner(steps ...ProvisioningStep) (Provisioner, error)
NewProvisioner returns a new provisioner
type ProvisioningParameters ¶
type ProvisioningParameters struct {
Parameters
}
ProvisioningParameters wraps a map containing provisioning parameters.
type ProvisioningStep ¶
type ProvisioningStep interface { GetName() string Execute( ctx context.Context, instance Instance, ) (InstanceDetails, error) }
ProvisioningStep is an interface to be implemented by types that represent a single step in a chain of steps that defines a provisioning process
func NewProvisioningStep ¶
func NewProvisioningStep( name string, fn ProvisioningStepFunction, ) ProvisioningStep
NewProvisioningStep returns a new ProvisioningStep
type ProvisioningStepFunction ¶
type ProvisioningStepFunction func( ctx context.Context, instance Instance, ) (InstanceDetails, error)
ProvisioningStepFunction is the signature for functions that implement a provisioning step
type SecureString ¶ added in v0.12.0
type SecureString string
SecureString is a string that is seamlessly encrypted and decrypted when it is, respectively, marshaled or unmarshaled
func (SecureString) MarshalJSON ¶ added in v0.12.0
func (s SecureString) MarshalJSON() ([]byte, error)
MarshalJSON converts a SecureString to JSON, encrypting it in the process
func (*SecureString) UnmarshalJSON ¶ added in v0.12.0
func (s *SecureString) UnmarshalJSON(bytes []byte) error
UnmarshalJSON converts JSON to a SecureString, decrypting it in the process
type Service ¶
type Service interface { GetID() string GetName() string IsBindable() bool GetServiceManager() ServiceManager GetPlans() []Plan GetPlan(planID string) (Plan, bool) GetParentServiceID() string GetChildServiceID() string GetProperties() ServiceProperties GetTags() []string IsEndOfLife() bool }
Service is an interface to be implemented by types that represent a single type of service with one or more plans
func NewService ¶
func NewService( serviceProperties ServiceProperties, serviceManager ServiceManager, plans ...Plan, ) Service
NewService initialized and returns a new Service
type ServiceManager ¶ added in v0.10.0
type ServiceManager interface { // GetEmptyInstanceDetails returns an "empty" service-specific object that // can be populated with data during unmarshaling of JSON to an Instance GetEmptyInstanceDetails() InstanceDetails // GetProvisioner returns a provisioner that defines the steps a module must // execute asynchronously to provision a service. GetProvisioner(Plan) (Provisioner, error) // ValidateUpdatingParameters validates the provided // updating parameters against current instance state // and returns an error if there is any problem ValidateUpdatingParameters(Instance) error // GetUpdater returns a updater that defines the steps a module must // execute asynchronously to update a service. GetUpdater(Plan) (Updater, error) // GetEmptyBindingDetails returns an "empty" service-specific object that // can be populated with data during unmarshaling of JSON to a Binding GetEmptyBindingDetails() BindingDetails // Bind synchronously binds to a service Bind(Instance, BindingParameters) (BindingDetails, error) // GetCredentials returns service-specific credentials populated from instance // and binding details GetCredentials(Instance, Binding) (Credentials, error) // Unbind synchronously unbinds from a service Unbind(Instance, Binding) error // GetDeprovisioner returns a deprovisioner that defines the steps a module // must execute asynchronously to deprovision a service GetDeprovisioner(Plan) (Deprovisioner, error) }
ServiceManager is an interface to be implemented by module components responsible for managing the lifecycle of services and plans thereof
type ServiceMetadata ¶ added in v0.10.0
type ServiceMetadata struct { DisplayName string `json:"displayName,omitempty"` ImageURL string `json:"imageUrl,omitempty"` LongDescription string `json:"longDescription,omitempty"` ProviderDisplayName string `json:"providerDisplayName,omitempty"` DocumentationURL string `json:"documentationUrl,omitempty"` SupportURL string `json:"supportUrl,omitempty"` }
ServiceMetadata contains metadata about the service classes
type ServicePlanMetadata ¶ added in v0.10.0
type ServicePlanMetadata struct { DisplayName string `json:"displayName,omitempty"` Bullets []string `json:"bullets,omitempty"` }
ServicePlanMetadata contains metadata about the service plans
type ServiceProperties ¶
type ServiceProperties struct { Name string `json:"name"` ID string `json:"id"` Description string `json:"description"` Metadata ServiceMetadata `json:"metadata,omitempty"` Tags []string `json:"tags"` Bindable bool `json:"bindable"` PlanUpdatable bool `json:"plan_updateable"` // Misspelling is // deliberate to match the spec ParentServiceID string `json:"-"` ChildServiceID string `json:"-"` Extended map[string]interface{} `json:"-"` EndOfLife bool `json:"-"` }
ServiceProperties represent the properties of a Service that can be directly instantiated and passed to the NewService() constructor function which will carry out all necessary initialization.
type Stability ¶
type Stability int
Stability is a type that represents the relative stability of a service module
const ( // StabilityExperimental represents relative stability of the most immature // service modules. At this level of stability, we're not even certain we've // built the right thing! StabilityExperimental Stability = iota // StabilityPreview represents relative stability of modules we believe are // approaching a stable state. StabilityPreview // StabilityStable represents relative stability of the mature, production- // ready service modules. StabilityStable )
type StringPropertySchema ¶ added in v0.12.0
type StringPropertySchema struct { Title string `json:"title,omitempty"` // nolint: lll Description string `json:"description,omitempty"` // nolint: lll MinLength *int `json:"minLength,omitempty"` // nolint: lll MaxLength *int `json:"maxLength,omitempty"` // nolint: lll AllowedValues []string `json:"enum,omitempty"` AllowedPattern string `json:"pattern,omitempty"` // nolint: lll CustomPropertyValidator CustomStringPropertyValidator `json:"-"` DefaultValue string `json:"default,omitempty"` // nolint: lll }
StringPropertySchema represents schema for a single string property
func (StringPropertySchema) MarshalJSON ¶ added in v0.12.0
func (s StringPropertySchema) MarshalJSON() ([]byte, error)
MarshalJSON provides functionality to marshal a StringPropertySchema to JSON
type Updater ¶
type Updater interface { GetFirstStepName() (string, bool) GetStep(name string) (UpdatingStep, bool) GetNextStepName(name string) (string, bool) }
Updater is an interface to be implemented by types that model a declared chain of tasks used to asynchronously update a service
func NewUpdater ¶
func NewUpdater(steps ...UpdatingStep) (Updater, error)
NewUpdater returns a new updater
type UpdatingStep ¶
type UpdatingStep interface { GetName() string Execute( ctx context.Context, instance Instance, ) (InstanceDetails, error) }
UpdatingStep is an interface to be implemented by types that represent a single step in a chain of steps that defines a updating process
func NewUpdatingStep ¶
func NewUpdatingStep( name string, fn UpdatingStepFunction, ) UpdatingStep
NewUpdatingStep returns a new UpdatingStep
type UpdatingStepFunction ¶
type UpdatingStepFunction func( ctx context.Context, instance Instance, ) (InstanceDetails, error)
UpdatingStepFunction is the signature for functions that implement a updating step
type ValidationError ¶
ValidationError represents an error validating requestParameters. This specific error type should be used to allow the broker's framework to differentiate between validation errors and other common, unexpected errors.
func NewValidationError ¶
func NewValidationError(field, issue string) *ValidationError
NewValidationError returns a new ValidationError for the given field and issue
func (*ValidationError) Error ¶
func (e *ValidationError) Error() string