Documentation ¶
Overview ¶
Package bootstrap contains the domain concept definitions needed to support Magistrala bootstrap service functionality.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrThings indicates failure to communicate with Magistrala 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 Channel ¶
type Channel struct { ID string `json:"id"` Name string `json:"name,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty"` Owner string `json:"owner_id"` Parent string `json:"parent_id,omitempty"` Description string `json:"description,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at,omitempty"` UpdatedBy string `json:"updated_by,omitempty"` Status clients.Status `json:"status"` }
Channel represents Magistrala channel corresponding Magistrala Thing is connected to.
type Config ¶
type Config struct { ThingID string `json:"thing_id"` Owner string `json:"owner,omitempty"` Name string `json:"name,omitempty"` ClientCert string `json:"client_cert,omitempty"` ClientKey string `json:"client_key,omitempty"` CACert string `json:"ca_cert,omitempty"` ThingKey string `json:"thing_key"` Channels []Channel `json:"channels,omitempty"` ExternalID string `json:"external_id"` ExternalKey string `json:"external_key"` Content string `json:"content,omitempty"` State State `json:"state"` }
Config represents Configuration entity. It wraps information about external entity as well as info about corresponding Magistrala entities. MGThing represents corresponding Magistrala Thing ID. MGKey is key of corresponding Magistrala Thing. MGChannels is a list of Magistrala Channels corresponding Magistrala 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(ctx context.Context, cfg Config, chsConnIDs []string) (string, error) // RetrieveByID retrieves the Config having the provided identifier, that is owned // by the specified user. RetrieveByID(ctx context.Context, owner, id string) (Config, error) // RetrieveAll retrieves a subset of Configs that are owned // by the specific user, with given filter parameters. RetrieveAll(ctx context.Context, owner string, filter Filter, offset, limit uint64) ConfigsPage // RetrieveByExternalID returns Config for given external ID. RetrieveByExternalID(ctx context.Context, externalID string) (Config, error) // Update updates an existing Config. A non-nil error is returned // to indicate operation failure. Update(ctx context.Context, cfg Config) error // UpdateCerts updates and returns an existing Config certificate and owner. // A non-nil error is returned to indicate operation failure. UpdateCert(ctx context.Context, owner, thingID, clientCert, clientKey, caCert string) (Config, error) // UpdateConnections updates a list of Channels the Config is connected to // adding new Channels if needed. UpdateConnections(ctx context.Context, owner, id string, channels []Channel, connections []string) error // Remove removes the Config having the provided identifier, that is owned // by the specified user. Remove(ctx context.Context, owner, id string) error // ChangeState changes of the Config, that is owned by the specific user. ChangeState(ctx context.Context, owner, id string, state State) error // ListExisting retrieves those channels from the given list that exist in DB. ListExisting(ctx context.Context, owner string, ids []string) ([]Channel, error) // RemoveThing removes Config of the Thing with the given ID. RemoveThing(ctx context.Context, id string) error // UpdateChannel updates channel with the given ID. UpdateChannel(ctx context.Context, c Channel) error // RemoveChannel removes channel with the given ID. RemoveChannel(ctx context.Context, id string) error // DisconnectHandler changes state of the Config when the corresponding Thing is // disconnected from the Channel. DisconnectThing(ctx context.Context, channelID, thingID string) error }
ConfigRepository specifies a Config persistence API.
type ConfigsPage ¶
type ConfigsPage struct { Total uint64 `json:"total"` Offset uint64 `json:"offset"` Limit uint64 `json:"limit"` Configs []Config `json:"configs"` }
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) (Config, 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 magistrala.AuthServiceClient, configs ConfigRepository, sdk mgsdk.SDK, encKey []byte, idp magistrala.IDProvider) Service
New returns new Bootstrap service.
type State ¶
type State int
State represents corresponding Magistrala 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 Magistrala | | Active | Thing is able to communicate using Magistrala |.
Directories ¶
Path | Synopsis |
---|---|
Package api contains implementation of bootstrap service HTTP API.
|
Package api contains implementation of bootstrap service HTTP API. |
Package events provides the domain concept definitions needed to support bootstrap events functionality.
|
Package events provides the domain concept definitions needed to support bootstrap events functionality. |
consumer
Package consumer contains events consumer for events published by Bootstrap service.
|
Package consumer contains events consumer for events published by Bootstrap 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. |
Package mocks contains mocks for testing purposes.
|
Package mocks contains mocks for testing purposes. |
Package postgres contains repository implementations using PostgreSQL as the underlying database.
|
Package postgres contains repository implementations using PostgreSQL as the underlying database. |
Package tracing provides tracing instrumentation for Magistrala Users service.
|
Package tracing provides tracing instrumentation for Magistrala Users service. |