Documentation ¶
Overview ¶
Package bootstrap contains the domain concept definitions needed to support Mainflux bootstrap service functionality.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrThings indicates failure to communicate with Mainflux Things service. // It can be due to networking error or invalid/unauthenticated request. ErrThings = errors.New("failed to receive response from Things service") // ErrExternalKey indicates a non-existent bootstrap configuration for given external key ErrExternalKey = errors.New("failed to get bootstrap configuration for given external key") // ErrExternalKeySecure indicates error in getting bootstrap configuration for given encrypted external key ErrExternalKeySecure = errors.New("failed to get bootstrap configuration for given encrypted external key") // ErrBootstrap indicates error in getting bootstrap configuration. ErrBootstrap = errors.New("failed to read bootstrap configuration") )
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { MFThing string Owner string Name string ClientCert string ClientKey string CACert string MFKey string MFChannels []Channel ExternalID string ExternalKey string Content string State State }
Config represents Configuration entity. It wraps information about external entity as well as info about corresponding Mainflux entities. MFThing represents corresponding Mainflux Thing ID. MFKey is key of corresponding Mainflux Thing. MFChannels is a list of Mainflux Channels corresponding Mainflux Thing connects to.
type ConfigReader ¶
ConfigReader is used to parse Config into format which will be encoded as a JSON and consumed from the client side. The purpose of this interface is to provide convenient way to generate custom configuration response based on the specific Config which will be consumed by the client.
func NewConfigReader ¶
func NewConfigReader(encKey []byte) ConfigReader
NewConfigReader return new reader which is used to generate response from the config.
type ConfigRepository ¶
type ConfigRepository interface { // Save persists the Config. Successful operation is indicated by non-nil // error response. Save(cfg Config, chsConnIDs []string) (string, error) // RetrieveByID retrieves the Config having the provided identifier, that is owned // by the specified user. RetrieveByID(owner, id string) (Config, error) // RetrieveAll retrieves a subset of Configs that are owned // by the specific user, with given filter parameters. RetrieveAll(owner string, filter Filter, offset, limit uint64) ConfigsPage // RetrieveByExternalID returns Config for given external ID. RetrieveByExternalID(externalID string) (Config, error) // Update updates an existing Config. A non-nil error is returned // to indicate operation failure. Update(cfg Config) error // UpdateCerts updates an existing Config certificate and owner. // A non-nil error is returned to indicate operation failure. UpdateCert(owner, thingID, clientCert, clientKey, caCert string) error // UpdateConnections updates a list of Channels the Config is connected to // adding new Channels if needed. UpdateConnections(owner, id string, channels []Channel, connections []string) error // Remove removes the Config having the provided identifier, that is owned // by the specified user. Remove(owner, id string) error // ChangeState changes of the Config, that is owned by the specific user. ChangeState(owner, id string, state State) error // ListExisting retrieves those channels from the given list that exist in DB. ListExisting(owner string, ids []string) ([]Channel, error) // RemoveThing removes Config of the Thing with the given ID. RemoveThing(id string) error // UpdateChannel updates channel with the given ID. UpdateChannel(c Channel) error // RemoveChannel removes channel with the given ID. RemoveChannel(id string) error // DisconnectHandler changes state of the Config when the corresponding Thing is // disconnected from the Channel. DisconnectThing(channelID, thingID string) error }
ConfigRepository specifies a Config persistence API.
type ConfigsPage ¶
ConfigsPage contains page related metadata as well as list of Configs that belong to this page.
type Service ¶
type Service interface { // Add adds new Thing Config to the user identified by the provided token. Add(ctx context.Context, token string, cfg Config) (Config, error) // View returns Thing Config with given ID belonging to the user identified by the given token. View(ctx context.Context, token, id string) (Config, error) // Update updates editable fields of the provided Config. Update(ctx context.Context, token string, cfg Config) error // UpdateCert updates an existing Config certificate and token. // A non-nil error is returned to indicate operation failure. UpdateCert(ctx context.Context, token, thingID, clientCert, clientKey, caCert string) error // UpdateConnections updates list of Channels related to given Config. UpdateConnections(ctx context.Context, token, id string, connections []string) error // List returns subset of Configs with given search params that belong to the // user identified by the given token. List(ctx context.Context, token string, filter Filter, offset, limit uint64) (ConfigsPage, error) // Remove removes Config with specified token that belongs to the user identified by the given token. Remove(ctx context.Context, token, id string) error // Bootstrap returns Config to the Thing with provided external ID using external key. Bootstrap(ctx context.Context, externalKey, externalID string, secure bool) (Config, error) // ChangeState changes state of the Thing with given ID and owner. ChangeState(ctx context.Context, token, id string, state State) error // UpdateChannelHandler updates Channel with data received from an event. UpdateChannelHandler(ctx context.Context, channel Channel) error // RemoveConfigHandler removes Configuration with id received from an event. RemoveConfigHandler(ctx context.Context, id string) error // RemoveChannelHandler removes Channel with id received from an event. RemoveChannelHandler(ctx context.Context, id string) error // DisconnectHandler changes state of the Config when connect/disconnect event occurs. DisconnectThingHandler(ctx context.Context, channelID, thingID string) error }
Service specifies an API that must be fulfilled by the domain service implementation, and all of its decorators (e.g. logging & metrics).
func New ¶
func New(auth mainflux.AuthServiceClient, configs ConfigRepository, sdk mfsdk.SDK, encKey []byte) Service
New returns new Bootstrap service.
type State ¶
type State int
State represents corresponding Mainflux Thing state. The possible Config States as well as description of what that State represents are given in the table: | State | What it means | |----------+--------------------------------------------------------------------------------| | Inactive | Thing is created, but isn't able to communicate over Mainflux | | Active | Thing is able to communicate using Mainflux |
Directories ¶
Path | Synopsis |
---|---|
Package api contains implementation of bootstrap service HTTP API.
|
Package api contains implementation of bootstrap service HTTP API. |
Package postgres contains repository implementations using PostgreSQL as the underlying database.
|
Package postgres contains repository implementations using PostgreSQL as the underlying database. |
redis
|
|
consumer
Package consumer contains events consumer for events published by Things service.
|
Package consumer contains events consumer for events published by Things service. |
producer
Package producer contains the domain events needed to support event sourcing of Bootstrap service actions.
|
Package producer contains the domain events needed to support event sourcing of Bootstrap service actions. |