Documentation ¶
Overview ¶
Package configurator contains the Configurator service which manages configuration of and relationships between logical network entities.
Index ¶
- Constants
- func ClearMconfigBuilders(_ *testing.T)
- func CreateMconfig(networkID string, gatewayID string, graph *storage.EntityGraph, ...) (*protos.GatewayConfigs, error)
- func CreateNetwork(network Network) error
- func CreateOrUpdateEntityConfig(networkID string, entityType string, entityKey string, config interface{}) error
- func CreateOrUpdateEntityConfigAndAssoc(networkID string, entityType string, entityKey string, config interface{}, ...) error
- func DeleteEntities(networkID string, ids []storage2.TypeAndKey) error
- func DeleteEntity(networkID string, entityType string, entityKey string) error
- func DeleteEntityConfig(networkID, entityType, entityKey string) error
- func DeleteInternalEntity(entityType, entityKey string) error
- func DeleteNetwork(networkID string) error
- func DeleteNetworkConfig(networkID, configType string) error
- func DeleteNetworks(networkIDs []string) error
- func DoEntitiesExist(networkID string, ids []storage2.TypeAndKey) (bool, error)
- func DoesEntityExist(networkID, entityType, entityKey string) (bool, error)
- func DoesInternalEntityExist(entityType, entityKey string) (bool, error)
- func DoesNetworkExist(networkID string) (bool, error)
- func GetMconfigFor(hardwareID string) (*protos.GetMconfigResponse, error)
- func GetNetworkAndEntityIDForPhysicalID(physicalID string) (string, string, error)
- func GetNetworkConfigsByType(networkID string, configType string) (interface{}, error)
- func GetPhysicalIDOfEntity(networkID, entityType, entityKey string) (string, error)
- func ListEntityKeys(networkID string, entityType string) ([]string, error)
- func ListInternalEntityKeys(entityType string) ([]string, error)
- func ListNetworkIDs() ([]string, error)
- func ListNetworksOfType(networkType string) ([]string, error)
- func LoadEntityConfig(networkID, entityType, entityKey string) (interface{}, error)
- func LoadNetworkConfig(networkID, configType string) (interface{}, error)
- func NewNetworkConfigSerde(configType string, modelPtr serde.BinaryConvertible) serde.Serde
- func NewNetworkEntityConfigSerde(configType string, modelPtr serde.BinaryConvertible) serde.Serde
- func RegisterMconfigBuilders(builders ...MconfigBuilder)
- func UpdateEntities(networkID string, updates []EntityUpdateCriteria) (map[string]NetworkEntity, error)
- func UpdateNetworkConfig(networkID, configType string, config interface{}) error
- func UpdateNetworks(updates []NetworkUpdateCriteria) error
- func WriteEntities(networkID string, writes ...EntityWriteOperation) error
- type EntityGraph
- func (eg EntityGraph) FromStorageProto(protoGraph *storage.EntityGraph) (EntityGraph, error)
- func (eg *EntityGraph) GetAllChildrenOfType(parent NetworkEntity, targetType string) ([]NetworkEntity, error)
- func (eg *EntityGraph) GetEntitiesOfType(entType string) []NetworkEntity
- func (eg *EntityGraph) GetEntity(entType string, key string) (NetworkEntity, error)
- func (eg *EntityGraph) GetEntityByTK(id storage.TypeAndKey) (NetworkEntity, error)
- func (eg *EntityGraph) GetFirstAncestorOfType(start NetworkEntity, targetType string) (NetworkEntity, error)
- func (eg EntityGraph) ToStorageProto() (*storage.EntityGraph, error)
- type EntityLoadCriteria
- type EntityLoadFilter
- type EntityLoadResult
- type EntityUpdateCriteria
- type EntityWriteOperation
- type GraphEdge
- type MconfigBuilder
- type Network
- func CreateNetworks(networks []Network) ([]Network, error)
- func LoadNetwork(networkID string, loadMetadata bool, loadConfigs bool) (Network, error)
- func LoadNetworks(networks []string, loadMetadata bool, loadConfigs bool) ([]Network, []string, error)
- func LoadNetworksByType(typeVal string, loadMetadata bool, loadConfigs bool) ([]Network, error)
- type NetworkEntities
- type NetworkEntity
- func CreateEntities(networkID string, entities []NetworkEntity) ([]NetworkEntity, error)
- func CreateEntity(networkID string, entity NetworkEntity) (NetworkEntity, error)
- func CreateInternalEntity(entity NetworkEntity) (NetworkEntity, error)
- func LoadAllEntitiesInNetwork(networkID string, entityType string, criteria EntityLoadCriteria) ([]NetworkEntity, error)
- func LoadEntity(networkID string, entityType string, entityKey string, ...) (NetworkEntity, error)
- func LoadEntityForPhysicalID(physicalID string, criteria EntityLoadCriteria) (NetworkEntity, error)
- func LoadInternalEntity(entityType string, entityKey string, criteria EntityLoadCriteria) (NetworkEntity, error)
- func UpdateEntity(networkID string, update EntityUpdateCriteria) (NetworkEntity, error)
- func UpdateInternalEntity(update EntityUpdateCriteria) (NetworkEntity, error)
- type NetworkUpdateCriteria
Constants ¶
const ( // ServiceName is the name of this service ServiceName = "CONFIGURATOR" // NetworkConfigSerdeDomain is the Serde domain for network configs NetworkConfigSerdeDomain = "configurator_network_configs" // NetworkEntitySerdeDomain is the Serde domain for network entity configs NetworkEntitySerdeDomain = "configurator_entity_configs" GatewayEntityType = "gateway" )
Variables ¶
This section is empty.
Functions ¶
func ClearMconfigBuilders ¶
ClearMconfigBuilders exists ONLY for testing - this the required but unused *testing.T parameter. DO NOT USE IN ANYTHING BUT TESTS
func CreateMconfig ¶
func CreateMconfig(networkID string, gatewayID string, graph *storage.EntityGraph, network *storage.Network) (*protos.GatewayConfigs, error)
func CreateNetwork ¶
func DeleteEntities ¶
func DeleteEntities(networkID string, ids []storage2.TypeAndKey) error
DeleteEntity deletes the entity specified by networkID, type, key We also have cascading deletes to delete foreign keys for assocs
func DeleteEntityConfig ¶
func DeleteInternalEntity ¶
DeleteInternalEntity is a loose wrapper around DeleteEntities to delete an entity in the internal network structure
func DeleteNetworkConfig ¶
func DeleteNetworks ¶
DeleteNetworks deletes the network specified by networkID
func DoEntitiesExist ¶
func DoEntitiesExist(networkID string, ids []storage2.TypeAndKey) (bool, error)
DoEntitiesExist returns a boolean that indicated whether all entities specified exist in the network
func DoesEntityExist ¶
DoesEntityExist returns a boolean that indicated whether the entity specified exists in the network
func DoesInternalEntityExist ¶
DoesInternalEntityExist calls DoesEntityExist with the internal networkID
func DoesNetworkExist ¶
DoesNetworkExist returns a boolean that indicates whether the networkID
func GetMconfigFor ¶
func GetMconfigFor(hardwareID string) (*protos.GetMconfigResponse, error)
func GetNetworkAndEntityIDForPhysicalID ¶
GetNetworkAndEntityIDForPhysicalID gets the network ID and entity ID for the associated physical ID. If not found, returns ErrNotFound from "github.com/go-magma/magma/lib/go/errors.
func GetNetworkConfigsByType ¶
func GetPhysicalIDOfEntity ¶
GetPhysicalIDOfEntity gets the physicalID associated with the entity identified by (networkID, entityType, entityKey) If not found, returns ErrNotFound from "github.com/go-magma/magma/lib/go/errors.
func ListEntityKeys ¶
ListEntityKeys returns all keys for an entity type in a network.
func ListInternalEntityKeys ¶
ListInternalEntityKeys calls ListEntityKeys with the internal networkID
func ListNetworkIDs ¶
ListNetworkIDs loads a list of all networkIDs registered
func ListNetworksOfType ¶
ListNetworksOfType returns a list of all network IDs which match the given type
func LoadEntityConfig ¶
LoadEntityConfig loads the config for the entity identified by (network ID, entity type, entity key). If not found, returns ErrNotFound from "github.com/go-magma/magma/lib/go/errors.
func LoadNetworkConfig ¶
LoadNetworkConfig loads network config of type configType registered under the network ID. If not found, returns ErrNotFound from "github.com/go-magma/magma/lib/go/errors.
func NewNetworkConfigSerde ¶
func NewNetworkConfigSerde(configType string, modelPtr serde.BinaryConvertible) serde.Serde
NewNetworkConfigSerde returns a network config domain Serde implementation for a pointer to a structure implementing both BinaryMarshaler and BinaryUnmarshaler. If the modelPtr argument is not a pointer to a struct matching those requirements, this function will panic.
func NewNetworkEntityConfigSerde ¶
func NewNetworkEntityConfigSerde(configType string, modelPtr serde.BinaryConvertible) serde.Serde
NewNetworkEntityConfigSerde returns a network entity config domain Serde implementation/ for a pointer to a structure implementing both BinaryMarshaler and BinaryUnmarshaler. If the modelPtr argument is not a pointer to a struct matching those requirements, this function will panic.
func RegisterMconfigBuilders ¶
func RegisterMconfigBuilders(builders ...MconfigBuilder)
RegisterMconfigBuilders registers a collection of MconfigBuilders to make available to the southbound configurator servicer to call when gateways request mconfigs.
func UpdateEntities ¶
func UpdateEntities(networkID string, updates []EntityUpdateCriteria) (map[string]NetworkEntity, error)
UpdateEntities updates the registered entities and returns the updated entities
func UpdateNetworkConfig ¶
func UpdateNetworks ¶
func UpdateNetworks(updates []NetworkUpdateCriteria) error
UpdateNetworks updates the specified networks and returns the updated networks
func WriteEntities ¶
func WriteEntities(networkID string, writes ...EntityWriteOperation) error
WriteEntities executes a series of entity writes (creation or update) to be executed in order within a single transaction. This function is all-or-nothing - any failure or error encountered during any operation will rollback the entire batch.
Types ¶
type EntityGraph ¶
type EntityGraph struct { Entities []NetworkEntity RootEntities []storage2.TypeAndKey Edges []GraphEdge // contains filtered or unexported fields }
EntityGraph represents a DAG of associated network entities
func (EntityGraph) FromStorageProto ¶
func (eg EntityGraph) FromStorageProto(protoGraph *storage.EntityGraph) (EntityGraph, error)
FromStorageProto converts a proto EntityGraph to it's go struct format.
func (*EntityGraph) GetAllChildrenOfType ¶
func (eg *EntityGraph) GetAllChildrenOfType(parent NetworkEntity, targetType string) ([]NetworkEntity, error)
func (*EntityGraph) GetEntitiesOfType ¶
func (eg *EntityGraph) GetEntitiesOfType(entType string) []NetworkEntity
func (*EntityGraph) GetEntity ¶
func (eg *EntityGraph) GetEntity(entType string, key string) (NetworkEntity, error)
func (*EntityGraph) GetEntityByTK ¶
func (eg *EntityGraph) GetEntityByTK(id storage.TypeAndKey) (NetworkEntity, error)
func (*EntityGraph) GetFirstAncestorOfType ¶
func (eg *EntityGraph) GetFirstAncestorOfType(start NetworkEntity, targetType string) (NetworkEntity, error)
func (EntityGraph) ToStorageProto ¶
func (eg EntityGraph) ToStorageProto() (*storage.EntityGraph, error)
ToStorageProto converts an EntityGraph struct to it's proto representation.
type EntityLoadCriteria ¶
type EntityLoadCriteria struct { // Set LoadMetadata to true to load the metadata fields (name, description) LoadMetadata bool LoadConfig bool LoadAssocsToThis bool LoadAssocsFromThis bool }
EntityLoadCriteria specifies how much of an entity to load
func FullEntityLoadCriteria ¶
func FullEntityLoadCriteria() EntityLoadCriteria
FullEntityLoadCriteria returns an EntityLoadCriteria that loads everything possible on an entity
type EntityLoadFilter ¶
type EntityLoadFilter struct { // If TypeFilter is provided, the query will return all entities matching // the given type. TypeFilter *string // If KeyFilter is provided, the query will return all entities matching the // given ID. KeyFilter *string // If IDs is provided, the query will return all entities matching the // provided TypeAndKeys. TypeFilter and KeyFilter are ignored if IDs is // provided. IDs []storage2.TypeAndKey // If PhysicalID is provided, the query will return all entities matching // the provided ID value. PhysicalID *string }
EntityLoadFilter specifies which entities to load from storage
type EntityLoadResult ¶
type EntityLoadResult struct { // Loaded entities Entities []NetworkEntity // Entities which were not found EntitiesNotFound []storage2.TypeAndKey }
EntityLoadResult encapsulates the result of a LoadEntities call
type EntityUpdateCriteria ¶
type EntityUpdateCriteria struct { // (Type, Key) of the entity to update Type string Key string // Set DeleteEntity to true to mark the entity for deletion DeleteEntity bool NewName *string NewDescription *string NewPhysicalID *string // A nil value here indicates no update. NewConfig interface{} // Set to true to clear the entity's config DeleteConfig bool // IMPORTANT: Setting AssociationsToSet to an empty, non-nil array value // specifies an intent to clear all associations originating from this // entity. // A nil field value will be ignored. AssociationsToSet []storage2.TypeAndKey AssociationsToAdd []storage2.TypeAndKey AssociationsToDelete []storage2.TypeAndKey }
EntityUpdateCriteria specifies a patch operation on a network entity.
func (EntityUpdateCriteria) GetTypeAndKey ¶
func (euc EntityUpdateCriteria) GetTypeAndKey() storage2.TypeAndKey
type EntityWriteOperation ¶
type EntityWriteOperation interface {
// contains filtered or unexported methods
}
EntityWriteOperation is an interface around entity creation/update for the generic multi-operation configurator endpoint.
type GraphEdge ¶
type GraphEdge struct { From storage2.TypeAndKey To storage2.TypeAndKey }
type MconfigBuilder ¶
type MconfigBuilder interface { // Build fills the mconfigOut parameter with parts of the gateway mconfig // that this mconfig builder is responsible for. // The whole entity graph associated with the gateway to build the mconfig // for is provided in the graph parameter, as well as the network that // the gateway belongs to. Both the graph and network will be loaded with // all fields. // mconfigOut is an output parameter - all updates should be made in-place // to this parameter. Build(networkID string, gatewayID string, graph EntityGraph, network Network, mconfigOut map[string]proto.Message) error }
MconfigBuilder fills in a partial mconfig for a given gateway within a network.
type Network ¶
type Network struct { ID string // Specifies the type of network. (lte, wifi, etc) Type string Name string Description string // Configs maps between a type value and a generic configuration blob. // The map key will point to the Serde implementation which can // serialize the associated value. Configs map[string]interface{} Version uint64 }
A network represents a tenant. Networks can be configured in a hierarchical manner - network-level configurations are assumed to apply across multiple entities within the network.
func CreateNetworks ¶
CreateNetworks registers the given list of Networks and returns the created networks
func LoadNetwork ¶
LoadNetwork loads the network identified by the network ID. If not found, returns ErrNotFound from "github.com/go-magma/magma/lib/go/errors.
func LoadNetworks ¶
func LoadNetworks(networks []string, loadMetadata bool, loadConfigs bool) ([]Network, []string, error)
LoadNetworks loads networks specified by networks according to criteria specified and returns the result
func LoadNetworksByType ¶
func (Network) FromStorageProto ¶
FromStorageProto converts a Network proto to it's internal go struct format.
type NetworkEntities ¶
type NetworkEntities []NetworkEntity
func LoadEntities ¶
func LoadEntities( networkID string, typeFilter *string, keyFilter *string, physicalID *string, ids []storage2.TypeAndKey, criteria EntityLoadCriteria, ) (NetworkEntities, []storage2.TypeAndKey, error)
LoadEntities loads entities specified by the parameters. typeFilter, keyFilter, physicalID, and ids are all used to define a filter to filter out results - if they are all nil, it will return all network entities
func (NetworkEntities) ToEntitiesByID ¶
func (ne NetworkEntities) ToEntitiesByID() map[storage2.TypeAndKey]NetworkEntity
type NetworkEntity ¶
type NetworkEntity struct { // Network that the entity belongs to. This is a READ-ONLY field and will // be ignored if provided to write APIs. NetworkID string // (Type, Key) forms a unique identifier for the network entity within its // network. Type string Key string Name string Description string // PhysicalID will be non-empty if the entity corresponds to a physical // asset. PhysicalID string Config interface{} // GraphID is a mostly-internal field to designate the DAG that this // network entity belongs to. This field is system-generated and will be // ignored if set during entity creation. GraphID string // Associations are the directed edges originating from this entity. Associations []storage2.TypeAndKey // ParentAssociations are the directed edges ending at this entity. // This is a read-only field and will be ignored if set during entity // creation. ParentAssociations []storage2.TypeAndKey Version uint64 }
NetworkEntity is the storage representation of a logical component of a network. Networks are partitioned into DAGs of entities.
func CreateEntities ¶
func CreateEntities(networkID string, entities []NetworkEntity) ([]NetworkEntity, error)
CreateEntities registers the given entities and returns the created network entities
func CreateEntity ¶
func CreateEntity(networkID string, entity NetworkEntity) (NetworkEntity, error)
func CreateInternalEntity ¶
func CreateInternalEntity(entity NetworkEntity) (NetworkEntity, error)
CreateInternalEntity is a loose wrapper around CreateEntity to create an entity in the internal network structure
func LoadAllEntitiesInNetwork ¶
func LoadAllEntitiesInNetwork(networkID string, entityType string, criteria EntityLoadCriteria) ([]NetworkEntity, error)
LoadAllEntitiesInNetwork fetches all entities of specified type in a network
func LoadEntity ¶
func LoadEntity(networkID string, entityType string, entityKey string, criteria EntityLoadCriteria) (NetworkEntity, error)
LoadEntity loads the network entity identified by (network ID, entity type, entity key). If not found, returns ErrNotFound from "github.com/go-magma/magma/lib/go/errors.
func LoadEntityForPhysicalID ¶
func LoadEntityForPhysicalID(physicalID string, criteria EntityLoadCriteria) (NetworkEntity, error)
LoadEntityForPhysicalID loads the network entity identified by the physical ID. If not found, returns ErrNotFound from "github.com/go-magma/magma/lib/go/errors.
func LoadInternalEntity ¶
func LoadInternalEntity(entityType string, entityKey string, criteria EntityLoadCriteria) (NetworkEntity, error)
LoadInternalEntity calls LoadEntity with the internal network ID. If not found, returns ErrNotFound from "github.com/go-magma/magma/lib/go/errors.
func UpdateEntity ¶
func UpdateEntity(networkID string, update EntityUpdateCriteria) (NetworkEntity, error)
func UpdateInternalEntity ¶
func UpdateInternalEntity(update EntityUpdateCriteria) (NetworkEntity, error)
UpdateInternalEntity is a loose wrapper around UpdateEntity to update an entity in the internal network structure
func (NetworkEntity) GetFirstParentOfType ¶
func (ent NetworkEntity) GetFirstParentOfType(target string) (storage.TypeAndKey, error)
GetFirstParentOfType iterates through the parent associations of the entity and returns the TypeAndKey of first association that matches the target type. Returns ErrNotFound if no such association is found.
func (NetworkEntity) GetTypeAndKey ¶
func (ent NetworkEntity) GetTypeAndKey() storage2.TypeAndKey
type NetworkUpdateCriteria ¶
type NetworkUpdateCriteria struct { // ID of the network to update ID string // Set DeleteNetwork to true to delete the network DeleteNetwork bool // Set NewType, NewName or NewDescription to nil to indicate that no update is // desired. To clear the value of name or description, set these fields to // a pointer to an empty string. NewType *string NewName *string NewDescription *string // New config values to add or existing ones to update ConfigsToAddOrUpdate map[string]interface{} // Config values to delete ConfigsToDelete []string }
NetworkUpdateCriteria specifies how to update a network
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package storage defines the storage interfaces and implementations for the configurator service.
|
Package storage defines the storage interfaces and implementations for the configurator service. |