Documentation
¶
Index ¶
- Variables
- type Destination
- type DeviceProfile
- type EventConfigDoc
- type ExportedServiceProfile
- type ExportedWirelessDevice
- type FuotaTask
- type GatewayTask
- type GatewayTaskDefinition
- type Handler
- func (h *Handler) ChaosOperations() []string
- func (h *Handler) ChaosRegions() []string
- func (h *Handler) ChaosServiceName() string
- func (h *Handler) ExtractOperation(c *echo.Context) string
- func (h *Handler) ExtractResource(c *echo.Context) string
- func (h *Handler) GetSupportedOperations() []string
- func (h *Handler) Handler() echo.HandlerFunc
- func (h *Handler) MatchPriority() int
- func (h *Handler) Name() string
- func (h *Handler) Reset()
- func (h *Handler) Restore(ctx context.Context, data []byte) error
- func (h *Handler) RouteMatcher() service.Matcher
- func (h *Handler) Snapshot(ctx context.Context) []byte
- type InMemoryBackend
- func (b *InMemoryBackend) AddDestinationInternal(accountID, region string, dest *Destination)
- func (b *InMemoryBackend) AddDeviceProfileInternal(accountID, region string, dp *DeviceProfile)
- func (b *InMemoryBackend) AddFuotaTaskInternal(accountID, region string, ft *FuotaTask)
- func (b *InMemoryBackend) AddServiceProfileInternal(accountID, region string, sp *ServiceProfile)
- func (b *InMemoryBackend) AddWirelessDeviceInternal(accountID, region string, d *WirelessDevice)
- func (b *InMemoryBackend) AddWirelessGatewayInternal(accountID, region string, gw *WirelessGateway)
- func (b *InMemoryBackend) AssociateAwsAccountWithPartnerAccount(accountID, region, partnerAccountID string, tags map[string]string) (string, error)
- func (b *InMemoryBackend) AssociateMulticastGroupWithFuotaTask(fuotaTaskID, multicastGroupID string) error
- func (b *InMemoryBackend) AssociateWirelessDeviceWithFuotaTask(fuotaTaskID, wirelessDeviceID string) error
- func (b *InMemoryBackend) AssociateWirelessDeviceWithMulticastGroup(multicastGroupID, wirelessDeviceID string) error
- func (b *InMemoryBackend) AssociateWirelessDeviceWithThing(accountID, region, wirelessDeviceID, thingArn string) error
- func (b *InMemoryBackend) AssociateWirelessGatewayWithCertificate(accountID, region, gatewayID, iotCertificateID string) (string, error)
- func (b *InMemoryBackend) AssociateWirelessGatewayWithThing(accountID, region, gatewayID, thingArn string) error
- func (b *InMemoryBackend) CancelMulticastGroupSession(multicastGroupID string) error
- func (b *InMemoryBackend) CreateDestination(...) (*Destination, error)
- func (b *InMemoryBackend) CreateDeviceProfile(accountID, region, name string, loRaWAN, sidewalk map[string]any, ...) (*DeviceProfile, error)
- func (b *InMemoryBackend) CreateFuotaTask(...) (*FuotaTask, error)
- func (b *InMemoryBackend) CreateMulticastGroup(accountID, region, name, description string, loRaWAN map[string]any, ...) (*MulticastGroup, error)
- func (b *InMemoryBackend) CreateNetworkAnalyzerConfig(accountID, region, name, description string, ...) (*NetworkAnalyzerConfig, error)
- func (b *InMemoryBackend) CreateServiceProfile(accountID, region, name string, loRaWAN map[string]any, tags map[string]string) (*ServiceProfile, error)
- func (b *InMemoryBackend) CreateWirelessDevice(...) (*WirelessDevice, error)
- func (b *InMemoryBackend) CreateWirelessGateway(accountID, region, name, description string, loRaWAN map[string]any, ...) (*WirelessGateway, error)
- func (b *InMemoryBackend) CreateWirelessGatewayTask(gatewayID, taskDefID string) (*GatewayTask, error)
- func (b *InMemoryBackend) CreateWirelessGatewayTaskDefinition(accountID, region, name string, autoCreateTasks bool, update map[string]any) (*GatewayTaskDefinition, error)
- func (b *InMemoryBackend) DeleteDestination(accountID, region, name string) error
- func (b *InMemoryBackend) DeleteDeviceProfile(accountID, region, id string) error
- func (b *InMemoryBackend) DeleteFuotaTask(accountID, region, id string) error
- func (b *InMemoryBackend) DeleteMulticastGroup(accountID, region, id string) error
- func (b *InMemoryBackend) DeleteNetworkAnalyzerConfig(accountID, region, name string) error
- func (b *InMemoryBackend) DeleteQueuedMessages(wirelessDeviceID string) error
- func (b *InMemoryBackend) DeleteServiceProfile(accountID, region, id string) error
- func (b *InMemoryBackend) DeleteWirelessDevice(accountID, region, id string) error
- func (b *InMemoryBackend) DeleteWirelessDeviceImportTask(id string) error
- func (b *InMemoryBackend) DeleteWirelessGateway(accountID, region, id string) error
- func (b *InMemoryBackend) DeleteWirelessGatewayTask(gatewayID string) error
- func (b *InMemoryBackend) DeleteWirelessGatewayTaskDefinition(id string) error
- func (b *InMemoryBackend) DisassociateAwsAccountFromPartnerAccount(partnerAccountID string) error
- func (b *InMemoryBackend) DisassociateMulticastGroupFromFuotaTask(fuotaTaskID, multicastGroupID string) error
- func (b *InMemoryBackend) DisassociateWirelessDeviceFromFuotaTask(fuotaTaskID, wirelessDeviceID string) error
- func (b *InMemoryBackend) DisassociateWirelessDeviceFromMulticastGroup(multicastGroupID, wirelessDeviceID string) error
- func (b *InMemoryBackend) DisassociateWirelessDeviceFromThing(accountID, region, wirelessDeviceID string) error
- func (b *InMemoryBackend) DisassociateWirelessGatewayFromCertificate(accountID, region, gatewayID string) error
- func (b *InMemoryBackend) DisassociateWirelessGatewayFromThing(accountID, region, gatewayID string) error
- func (b *InMemoryBackend) EnqueueMessage(wirelessDeviceID string, msg QueuedMessage)
- func (b *InMemoryBackend) GetDestination(accountID, region, name string) (*Destination, error)
- func (b *InMemoryBackend) GetDeviceProfile(accountID, region, id string) (*DeviceProfile, error)
- func (b *InMemoryBackend) GetEventConfigurationByResourceTypes() *EventConfigDoc
- func (b *InMemoryBackend) GetFuotaTask(accountID, region, id string) (*FuotaTask, error)
- func (b *InMemoryBackend) GetLogLevelsByResourceTypes() LogLevelsConfig
- func (b *InMemoryBackend) GetMetricConfigurationStatus() string
- func (b *InMemoryBackend) GetMulticastGroup(accountID, region, id string) (*MulticastGroup, error)
- func (b *InMemoryBackend) GetMulticastGroupSession(multicastGroupID string) (time.Time, error)
- func (b *InMemoryBackend) GetNetworkAnalyzerConfig(accountID, region, name string) (*NetworkAnalyzerConfig, error)
- func (b *InMemoryBackend) GetPartnerAccount(partnerAccountID string) (string, error)
- func (b *InMemoryBackend) GetPosition(resourceID string) map[string]any
- func (b *InMemoryBackend) GetPositionConfiguration(resourceID string) (*PositionConfigEntry, bool)
- func (b *InMemoryBackend) GetResourceEventConfiguration(identifier string) (*ResourceEventConfigEntry, bool)
- func (b *InMemoryBackend) GetResourceLogLevel(resourceID string) string
- func (b *InMemoryBackend) GetServiceProfile(accountID, region, id string) (*ServiceProfile, error)
- func (b *InMemoryBackend) GetWirelessDevice(accountID, region, id string) (*WirelessDevice, error)
- func (b *InMemoryBackend) GetWirelessDeviceImportTask(id string) (*WirelessDeviceImportTask, error)
- func (b *InMemoryBackend) GetWirelessDeviceThingArn(wirelessDeviceID string) string
- func (b *InMemoryBackend) GetWirelessGateway(accountID, region, id string) (*WirelessGateway, error)
- func (b *InMemoryBackend) GetWirelessGatewayCertificate(accountID, region, gatewayID string) (string, error)
- func (b *InMemoryBackend) GetWirelessGatewayTask(gatewayID string) (*GatewayTask, error)
- func (b *InMemoryBackend) GetWirelessGatewayTaskDefinition(id string) (*GatewayTaskDefinition, error)
- func (b *InMemoryBackend) GetWirelessGatewayThingArn(gatewayID string) string
- func (b *InMemoryBackend) ListDestinations(accountID, region string) []*Destination
- func (b *InMemoryBackend) ListDeviceProfiles(accountID, region string) []*DeviceProfile
- func (b *InMemoryBackend) ListEventConfigurations(resourceType string) []*ResourceEventConfigEntry
- func (b *InMemoryBackend) ListFuotaTaskDeviceIDs(fuotaTaskID string) []string
- func (b *InMemoryBackend) ListFuotaTasks(accountID, region string) []*FuotaTask
- func (b *InMemoryBackend) ListMulticastGroupDeviceIDs(multicastGroupID string) []string
- func (b *InMemoryBackend) ListMulticastGroups(accountID, region string) []*MulticastGroup
- func (b *InMemoryBackend) ListMulticastGroupsByFuotaTask(accountID, region, fuotaTaskID string) []*MulticastGroup
- func (b *InMemoryBackend) ListNetworkAnalyzerConfigs(accountID, region string) []*NetworkAnalyzerConfig
- func (b *InMemoryBackend) ListPartnerAccounts() map[string]string
- func (b *InMemoryBackend) ListPositionConfigurations(resourceType string) []*PositionConfigEntry
- func (b *InMemoryBackend) ListQueuedMessages(wirelessDeviceID string) []QueuedMessage
- func (b *InMemoryBackend) ListServiceProfiles(accountID, region string) []*ServiceProfile
- func (b *InMemoryBackend) ListTagsForResource(arn string) (map[string]string, error)
- func (b *InMemoryBackend) ListWirelessDeviceImportTasks() []*WirelessDeviceImportTask
- func (b *InMemoryBackend) ListWirelessDevices(accountID, region string) []*WirelessDevice
- func (b *InMemoryBackend) ListWirelessGatewayTaskDefinitions() []*GatewayTaskDefinition
- func (b *InMemoryBackend) ListWirelessGateways(accountID, region string) []*WirelessGateway
- func (b *InMemoryBackend) PutPositionConfiguration(resourceID, resourceType, destination string, solvers map[string]any) error
- func (b *InMemoryBackend) PutResourceLogLevel(resourceID, logLevel string) error
- func (b *InMemoryBackend) Reset()
- func (b *InMemoryBackend) ResetAllResourceLogLevels() error
- func (b *InMemoryBackend) ResetResourceLogLevel(resourceID string) error
- func (b *InMemoryBackend) Restore(ctx context.Context, data []byte) error
- func (b *InMemoryBackend) Snapshot(ctx context.Context) []byte
- func (b *InMemoryBackend) StartBulkAssociateWirelessDeviceWithMulticastGroup(accountID, region, multicastGroupID string) error
- func (b *InMemoryBackend) StartBulkDisassociateWirelessDeviceFromMulticastGroup(multicastGroupID string) error
- func (b *InMemoryBackend) StartFuotaTask(accountID, region, id string) error
- func (b *InMemoryBackend) StartMulticastGroupSession(multicastGroupID string) error
- func (b *InMemoryBackend) StartSingleWirelessDeviceImportTask(accountID, region, destinationName string) (*SingleWirelessDeviceImportTask, error)
- func (b *InMemoryBackend) StartWirelessDeviceImportTask(accountID, region, destinationName string) (*WirelessDeviceImportTask, error)
- func (b *InMemoryBackend) TagResource(arn string, tags map[string]string) error
- func (b *InMemoryBackend) UntagResource(arn string, tagKeys []string) error
- func (b *InMemoryBackend) UpdateDestination(...) error
- func (b *InMemoryBackend) UpdateEventConfigurationByResourceTypes(doc *EventConfigDoc)
- func (b *InMemoryBackend) UpdateFuotaTask(accountID, region, id, name, description string) error
- func (b *InMemoryBackend) UpdateLogLevelsByResourceTypes(cfg LogLevelsConfig) error
- func (b *InMemoryBackend) UpdateMetricConfigurationStatus(status string) error
- func (b *InMemoryBackend) UpdateMulticastGroup(accountID, region, id, name, description string) error
- func (b *InMemoryBackend) UpdateNetworkAnalyzerConfig(accountID, region, name, description string, ...) error
- func (b *InMemoryBackend) UpdatePosition(resourceID string, position map[string]any) error
- func (b *InMemoryBackend) UpdateResourceEventConfiguration(identifier, identifierType, partnerType string, doc *EventConfigDoc)
- func (b *InMemoryBackend) UpdateWirelessDevice(accountID, region, id, name, description, destinationName, positioning string, ...) error
- func (b *InMemoryBackend) UpdateWirelessDeviceImportTask(id, destinationName string) error
- func (b *InMemoryBackend) UpdateWirelessGateway(accountID, region, id, name, description string, loRaWANUpdates map[string]any) error
- type LogLevelsConfig
- type MulticastGroup
- type NetworkAnalyzerConfig
- type PositionConfigEntry
- type Provider
- type QueuedMessage
- type Resettable
- type ResourceEventConfigEntry
- type ServiceProfile
- type SingleWirelessDeviceImportTask
- type Snapshottable
- type StorageBackend
- type WirelessDevice
- type WirelessDeviceImportTask
- type WirelessGateway
Constants ¶
This section is empty.
Variables ¶
var ( // ErrDeviceNotFound is returned when a wireless device does not exist. ErrDeviceNotFound = errors.New("ResourceNotFoundException: Wireless device not found") // ErrGatewayNotFound is returned when a wireless gateway does not exist. ErrGatewayNotFound = errors.New("ResourceNotFoundException: Wireless gateway not found") // ErrServiceProfileNotFound is returned when a service profile does not exist. ErrServiceProfileNotFound = errors.New("ResourceNotFoundException: Service profile not found") // ErrDestinationNotFound is returned when a destination does not exist. ErrDestinationNotFound = errors.New("ResourceNotFoundException: Destination not found") // ErrDeviceProfileNotFound is returned when a device profile does not exist. ErrDeviceProfileNotFound = errors.New("ResourceNotFoundException: Device profile not found") // ErrFuotaTaskNotFound is returned when a FUOTA task does not exist. ErrFuotaTaskNotFound = errors.New("ResourceNotFoundException: FUOTA task not found") // ErrMulticastGroupNotFound is returned when a multicast group does not exist. ErrMulticastGroupNotFound = errors.New("ResourceNotFoundException: Multicast group not found") // ErrNetworkAnalyzerConfigNotFound is returned when a network analyzer configuration does not exist. ErrNetworkAnalyzerConfigNotFound = errors.New("ResourceNotFoundException: Network analyzer configuration not found") // ErrValidation is returned when a request contains invalid parameters. ErrValidation = errors.New("ValidationException: invalid request parameters") )
Sentinel errors for IoT Wireless backend operations.
var ( // ErrPartnerAccountNotFound is returned when a partner account does not exist. ErrPartnerAccountNotFound = errors.New("ResourceNotFoundException: Partner account not found") // ErrImportTaskNotFound is returned when a wireless device import task does not exist. ErrImportTaskNotFound = errors.New("ResourceNotFoundException: Wireless device import task not found") // ErrGatewayTaskNotFound is returned when a wireless gateway task does not exist. ErrGatewayTaskNotFound = errors.New( "ResourceNotFoundException: Wireless gateway task not found", ) // ErrGatewayTaskDefNotFound is returned when a wireless gateway task definition does not exist. ErrGatewayTaskDefNotFound = errors.New( "ResourceNotFoundException: Wireless gateway task definition not found", ) // ErrMulticastGroupSessionNotFound is returned when a multicast group has no active session. ErrMulticastGroupSessionNotFound = errors.New( "ResourceNotFoundException: Multicast group session not found", ) )
Sentinel errors for new backend operations.
var ErrNilAppContext = errors.New("iotwireless: nil AppContext")
ErrNilAppContext is returned by Init when a nil AppContext is provided.
Functions ¶
This section is empty.
Types ¶
type Destination ¶
type Destination struct {
CreatedAt time.Time `json:"createdAt"`
Tags map[string]string `json:"tags,omitempty"`
Name string `json:"name"`
ARN string `json:"arn"`
Expression string `json:"expression,omitempty"`
ExpressionType string `json:"expressionType,omitempty"`
RoleArn string `json:"roleArn,omitempty"`
Description string `json:"description,omitempty"`
// AccountID and Region exist purely for store.Table's keyFn; see the
// identical comment on WirelessDevice above.
AccountID string `json:"-"`
Region string `json:"-"`
}
Destination routes messages from a device to AWS services.
type DeviceProfile ¶
type DeviceProfile struct {
CreatedAt time.Time `json:"createdAt"`
Tags map[string]string `json:"tags,omitempty"`
// LoRaWAN and Sidewalk hold the LoRaWANDeviceProfile /
// SidewalkGetDeviceProfile configuration objects supplied at creation
// time, echoed back verbatim on Get -- see the identical comment on
// WirelessDevice.LoRaWAN above.
LoRaWAN map[string]any `json:"loRaWAN,omitempty"`
Sidewalk map[string]any `json:"sidewalk,omitempty"`
Name string `json:"name"`
ID string `json:"id"`
ARN string `json:"arn"`
// AccountID and Region exist purely for store.Table's keyFn; see the
// identical comment on WirelessDevice above.
AccountID string `json:"-"`
Region string `json:"-"`
}
DeviceProfile contains LoRaWAN device profile settings.
type EventConfigDoc ¶
type EventConfigDoc struct {
ConnectionStatus map[string]any `json:"ConnectionStatus,omitempty"`
DeviceRegistrationState map[string]any `json:"DeviceRegistrationState,omitempty"`
Join map[string]any `json:"Join,omitempty"`
MessageDeliveryStatus map[string]any `json:"MessageDeliveryStatus,omitempty"`
Proximity map[string]any `json:"Proximity,omitempty"`
}
EventConfigDoc is an event-notification configuration document keyed by AWS's five event-type fields. Each value is stored and echoed back exactly as submitted by the client (real mutate/read state, not fabricated).
type ExportedServiceProfile ¶
type ExportedServiceProfile = ServiceProfile
ExportedServiceProfile is a compatibility alias used by the dashboard package.
type ExportedWirelessDevice ¶
type ExportedWirelessDevice = WirelessDevice
ExportedWirelessDevice is a compatibility alias used by the dashboard package.
type FuotaTask ¶
type FuotaTask struct {
CreatedAt time.Time `json:"createdAt"`
Tags map[string]string `json:"tags,omitempty"`
// LoRaWAN holds the LoRaWANFuotaTask configuration object supplied at
// creation time, echoed back verbatim on Get -- see the identical
// comment on WirelessDevice.LoRaWAN above.
LoRaWAN map[string]any `json:"loRaWAN,omitempty"`
Name string `json:"name"`
ID string `json:"id"`
ARN string `json:"arn"`
Description string `json:"description,omitempty"`
FirmwareUpdateImage string `json:"firmwareUpdateImage,omitempty"`
FirmwareUpdateRole string `json:"firmwareUpdateRole,omitempty"`
// Descriptor is the base64-encoded firmware metadata blob.
Descriptor string `json:"descriptor,omitempty"`
// Status tracks the FUOTA task lifecycle (Pending, FuotaSession_Waiting,
// In_FuotaSession, FuotaDone, Delete_Waiting), matching
// types.FuotaTaskStatus. Set to "Pending" at creation and advanced by
// StartFuotaTask; previously this was fabricated by overwriting
// FirmwareUpdateRole, corrupting that field -- see StartFuotaTask.
Status string `json:"status,omitempty"`
// AccountID and Region exist purely for store.Table's keyFn; see the
// identical comment on WirelessDevice above.
AccountID string `json:"-"`
Region string `json:"-"`
FragmentIntervalMS int32 `json:"fragmentIntervalMs,omitempty"`
FragmentSizeBytes int32 `json:"fragmentSizeBytes,omitempty"`
RedundancyPercent int32 `json:"redundancyPercent,omitempty"`
}
FuotaTask represents a Firmware Update Over the Air (FUOTA) task.
type GatewayTask ¶
type GatewayTask struct {
CreatedAt time.Time
WirelessGatewayID string
TaskDefID string
Status string
}
GatewayTask represents a wireless gateway task.
type GatewayTaskDefinition ¶
type GatewayTaskDefinition struct {
Update map[string]any
ID string
ARN string
Name string
AutoCreateTasks bool
}
GatewayTaskDefinition represents a wireless gateway task definition.
type Handler ¶
type Handler struct {
Backend StorageBackend
AccountID string
DefaultRegion string
}
Handler is the HTTP handler for the IoT Wireless REST API.
func NewHandler ¶
func NewHandler(backend StorageBackend) *Handler
NewHandler creates a new IoT Wireless handler.
func (*Handler) ChaosOperations ¶
ChaosOperations returns all operations that can be fault-injected.
func (*Handler) ChaosRegions ¶
ChaosRegions returns all regions this IoT Wireless instance handles.
func (*Handler) ChaosServiceName ¶
ChaosServiceName returns the lowercase AWS service name for fault rule matching.
func (*Handler) ExtractOperation ¶
ExtractOperation extracts the IoT Wireless operation name from the request.
func (*Handler) ExtractResource ¶
ExtractResource extracts the resource ID from the URL path. Tag operations are the one exception: their resource ARN travels as the "resourceArn" query parameter rather than a path segment (see parseIoTWirelessPath's "tags" case), so it's read from the query here for CloudTrail capture.
func (*Handler) GetSupportedOperations ¶
GetSupportedOperations returns the list of supported IoT Wireless operations.
func (*Handler) Handler ¶
func (h *Handler) Handler() echo.HandlerFunc
Handler returns the Echo handler function for IoT Wireless requests.
func (*Handler) MatchPriority ¶
MatchPriority returns the routing priority.
func (*Handler) Reset ¶
func (h *Handler) Reset()
Reset clears the handler's backend state, returning it to a pristine condition.
func (*Handler) Restore ¶
Restore implements persistence.Persistable by delegating to the backend when it implements Snapshottable. Non-snapshottable backends are skipped.
func (*Handler) RouteMatcher ¶
RouteMatcher returns a function that matches IoT Wireless REST API requests. All paths are disambiguated via the SigV4 credential-scope service name to prevent mis-routing with other REST-JSON services that share similar paths.
type InMemoryBackend ¶
type InMemoryBackend struct {
// contains filtered or unexported fields
}
InMemoryBackend is the in-memory backend for IoT Wireless.
func NewInMemoryBackend ¶
func NewInMemoryBackend() *InMemoryBackend
NewInMemoryBackend creates a new in-memory IoT Wireless backend.
func (*InMemoryBackend) AddDestinationInternal ¶
func (b *InMemoryBackend) AddDestinationInternal(accountID, region string, dest *Destination)
AddDestinationInternal inserts a Destination directly into the backend, bypassing ID generation. Intended for test setup only.
func (*InMemoryBackend) AddDeviceProfileInternal ¶
func (b *InMemoryBackend) AddDeviceProfileInternal(accountID, region string, dp *DeviceProfile)
AddDeviceProfileInternal inserts a DeviceProfile directly into the backend, bypassing ID generation. Intended for test setup only.
func (*InMemoryBackend) AddFuotaTaskInternal ¶
func (b *InMemoryBackend) AddFuotaTaskInternal(accountID, region string, ft *FuotaTask)
AddFuotaTaskInternal inserts a FuotaTask directly into the backend, bypassing ID generation. Intended for test setup only.
func (*InMemoryBackend) AddServiceProfileInternal ¶
func (b *InMemoryBackend) AddServiceProfileInternal(accountID, region string, sp *ServiceProfile)
AddServiceProfileInternal inserts a ServiceProfile directly into the backend, bypassing ID generation. Intended for test setup only.
func (*InMemoryBackend) AddWirelessDeviceInternal ¶
func (b *InMemoryBackend) AddWirelessDeviceInternal(accountID, region string, d *WirelessDevice)
AddWirelessDeviceInternal inserts a WirelessDevice directly into the backend, bypassing ID generation. Intended for test setup only.
func (*InMemoryBackend) AddWirelessGatewayInternal ¶
func (b *InMemoryBackend) AddWirelessGatewayInternal(accountID, region string, gw *WirelessGateway)
AddWirelessGatewayInternal inserts a WirelessGateway directly into the backend, bypassing ID generation. Intended for test setup only.
func (*InMemoryBackend) AssociateAwsAccountWithPartnerAccount ¶
func (b *InMemoryBackend) AssociateAwsAccountWithPartnerAccount( accountID, region, partnerAccountID string, tags map[string]string, ) (string, error)
AssociateAwsAccountWithPartnerAccount stores a partner account association and returns its ARN.
func (*InMemoryBackend) AssociateMulticastGroupWithFuotaTask ¶
func (b *InMemoryBackend) AssociateMulticastGroupWithFuotaTask(fuotaTaskID, multicastGroupID string) error
AssociateMulticastGroupWithFuotaTask records the association of a multicast group with a FUOTA task. A FUOTA task can have several associated multicast groups (ListMulticastGroupsByFuotaTask returns a list), so this adds to a per-task set rather than overwriting a single slot.
func (*InMemoryBackend) AssociateWirelessDeviceWithFuotaTask ¶
func (b *InMemoryBackend) AssociateWirelessDeviceWithFuotaTask(fuotaTaskID, wirelessDeviceID string) error
AssociateWirelessDeviceWithFuotaTask records the association of a wireless device with a FUOTA task. A FUOTA task can have several associated devices (ListWirelessDevices' FuotaTaskId filter implies more than one), so this adds to a per-task set rather than overwriting a single slot.
func (*InMemoryBackend) AssociateWirelessDeviceWithMulticastGroup ¶
func (b *InMemoryBackend) AssociateWirelessDeviceWithMulticastGroup(multicastGroupID, wirelessDeviceID string) error
AssociateWirelessDeviceWithMulticastGroup records the association of a wireless device with a multicast group. A multicast group can have many associated devices, so this adds to a per-group set rather than overwriting a single slot.
func (*InMemoryBackend) AssociateWirelessDeviceWithThing ¶
func (b *InMemoryBackend) AssociateWirelessDeviceWithThing( accountID, region, wirelessDeviceID, thingArn string, ) error
AssociateWirelessDeviceWithThing associates a wireless device with an IoT Thing. Returns ErrDeviceNotFound when the device does not exist.
func (*InMemoryBackend) AssociateWirelessGatewayWithCertificate ¶
func (b *InMemoryBackend) AssociateWirelessGatewayWithCertificate( accountID, region, gatewayID, iotCertificateID string, ) (string, error)
AssociateWirelessGatewayWithCertificate associates a wireless gateway with an IoT certificate and returns the certificate ARN. Returns ErrGatewayNotFound when the gateway does not exist.
func (*InMemoryBackend) AssociateWirelessGatewayWithThing ¶
func (b *InMemoryBackend) AssociateWirelessGatewayWithThing( accountID, region, gatewayID, thingArn string, ) error
AssociateWirelessGatewayWithThing associates a wireless gateway with an IoT Thing. Returns ErrGatewayNotFound when the gateway does not exist.
func (*InMemoryBackend) CancelMulticastGroupSession ¶
func (b *InMemoryBackend) CancelMulticastGroupSession(multicastGroupID string) error
CancelMulticastGroupSession marks the multicast group session as cancelled. If no session is active, the call is a no-op (idempotent).
func (*InMemoryBackend) CreateDestination ¶
func (b *InMemoryBackend) CreateDestination( accountID, region, name, expression, expressionType, roleArn, description string, tags map[string]string, ) (*Destination, error)
CreateDestination creates a new destination.
func (*InMemoryBackend) CreateDeviceProfile ¶
func (b *InMemoryBackend) CreateDeviceProfile( accountID, region, name string, loRaWAN, sidewalk map[string]any, tags map[string]string, ) (*DeviceProfile, error)
CreateDeviceProfile creates a new device profile.
func (*InMemoryBackend) CreateFuotaTask ¶
func (b *InMemoryBackend) CreateFuotaTask( accountID, region, name, description, firmwareUpdateImage, firmwareUpdateRole, descriptor string, fragmentIntervalMS, fragmentSizeBytes, redundancyPercent int32, loRaWAN map[string]any, tags map[string]string, ) (*FuotaTask, error)
CreateFuotaTask creates a new FUOTA task.
func (*InMemoryBackend) CreateMulticastGroup ¶
func (b *InMemoryBackend) CreateMulticastGroup( accountID, region, name, description string, loRaWAN map[string]any, tags map[string]string, ) (*MulticastGroup, error)
CreateMulticastGroup creates a new multicast group.
func (*InMemoryBackend) CreateNetworkAnalyzerConfig ¶
func (b *InMemoryBackend) CreateNetworkAnalyzerConfig( accountID, region, name, description string, wirelessDevices, wirelessGateways, multicastGroups []string, traceContent map[string]any, tags map[string]string, ) (*NetworkAnalyzerConfig, error)
CreateNetworkAnalyzerConfig creates a new network analyzer configuration.
func (*InMemoryBackend) CreateServiceProfile ¶
func (b *InMemoryBackend) CreateServiceProfile( accountID, region, name string, loRaWAN map[string]any, tags map[string]string, ) (*ServiceProfile, error)
CreateServiceProfile creates a new service profile.
func (*InMemoryBackend) CreateWirelessDevice ¶
func (b *InMemoryBackend) CreateWirelessDevice( accountID, region, name, devType, destinationName, description, positioning string, loRaWAN, sidewalk map[string]any, tags map[string]string, ) (*WirelessDevice, error)
CreateWirelessDevice creates a new wireless device.
func (*InMemoryBackend) CreateWirelessGateway ¶
func (b *InMemoryBackend) CreateWirelessGateway( accountID, region, name, description string, loRaWAN map[string]any, tags map[string]string, ) (*WirelessGateway, error)
CreateWirelessGateway creates a new wireless gateway.
func (*InMemoryBackend) CreateWirelessGatewayTask ¶
func (b *InMemoryBackend) CreateWirelessGatewayTask( gatewayID, taskDefID string, ) (*GatewayTask, error)
CreateWirelessGatewayTask creates a task for a wireless gateway.
func (*InMemoryBackend) CreateWirelessGatewayTaskDefinition ¶
func (b *InMemoryBackend) CreateWirelessGatewayTaskDefinition( accountID, region, name string, autoCreateTasks bool, update map[string]any, ) (*GatewayTaskDefinition, error)
CreateWirelessGatewayTaskDefinition creates a new gateway task definition.
func (*InMemoryBackend) DeleteDestination ¶
func (b *InMemoryBackend) DeleteDestination(accountID, region, name string) error
DeleteDestination deletes a destination by name.
func (*InMemoryBackend) DeleteDeviceProfile ¶
func (b *InMemoryBackend) DeleteDeviceProfile(accountID, region, id string) error
DeleteDeviceProfile deletes a device profile by ID.
func (*InMemoryBackend) DeleteFuotaTask ¶
func (b *InMemoryBackend) DeleteFuotaTask(accountID, region, id string) error
DeleteFuotaTask deletes a FUOTA task by ID.
func (*InMemoryBackend) DeleteMulticastGroup ¶
func (b *InMemoryBackend) DeleteMulticastGroup(accountID, region, id string) error
DeleteMulticastGroup deletes a multicast group by ID, cascading the cleanup to its wireless-device association set so no ghost entry survives the group's deletion.
func (*InMemoryBackend) DeleteNetworkAnalyzerConfig ¶
func (b *InMemoryBackend) DeleteNetworkAnalyzerConfig(accountID, region, name string) error
DeleteNetworkAnalyzerConfig deletes a network analyzer configuration by name.
func (*InMemoryBackend) DeleteQueuedMessages ¶
func (b *InMemoryBackend) DeleteQueuedMessages(wirelessDeviceID string) error
DeleteQueuedMessages clears the message queue for a wireless device.
func (*InMemoryBackend) DeleteServiceProfile ¶
func (b *InMemoryBackend) DeleteServiceProfile(accountID, region, id string) error
DeleteServiceProfile deletes a service profile.
func (*InMemoryBackend) DeleteWirelessDevice ¶
func (b *InMemoryBackend) DeleteWirelessDevice(accountID, region, id string) error
DeleteWirelessDevice deletes a wireless device.
func (*InMemoryBackend) DeleteWirelessDeviceImportTask ¶
func (b *InMemoryBackend) DeleteWirelessDeviceImportTask(id string) error
DeleteWirelessDeviceImportTask removes a wireless device import task.
func (*InMemoryBackend) DeleteWirelessGateway ¶
func (b *InMemoryBackend) DeleteWirelessGateway(accountID, region, id string) error
DeleteWirelessGateway deletes a wireless gateway.
func (*InMemoryBackend) DeleteWirelessGatewayTask ¶
func (b *InMemoryBackend) DeleteWirelessGatewayTask(gatewayID string) error
DeleteWirelessGatewayTask removes the task for a wireless gateway.
func (*InMemoryBackend) DeleteWirelessGatewayTaskDefinition ¶
func (b *InMemoryBackend) DeleteWirelessGatewayTaskDefinition(id string) error
DeleteWirelessGatewayTaskDefinition removes a gateway task definition.
func (*InMemoryBackend) DisassociateAwsAccountFromPartnerAccount ¶
func (b *InMemoryBackend) DisassociateAwsAccountFromPartnerAccount(partnerAccountID string) error
DisassociateAwsAccountFromPartnerAccount removes a partner account association.
func (*InMemoryBackend) DisassociateMulticastGroupFromFuotaTask ¶
func (b *InMemoryBackend) DisassociateMulticastGroupFromFuotaTask(fuotaTaskID, multicastGroupID string) error
DisassociateMulticastGroupFromFuotaTask removes a single multicast group from a FUOTA task's association set. multicastGroupID is the {MulticastGroupId} path segment of DELETE /fuota-tasks/{Id}/multicast-groups/{MulticastGroupId}; an empty value falls back to clearing every group associated with the task, preserving the prior behavior.
func (*InMemoryBackend) DisassociateWirelessDeviceFromFuotaTask ¶
func (b *InMemoryBackend) DisassociateWirelessDeviceFromFuotaTask(fuotaTaskID, wirelessDeviceID string) error
DisassociateWirelessDeviceFromFuotaTask removes a single device from a FUOTA task's association set. wirelessDeviceID is the {WirelessDeviceId} path segment of DELETE /fuota-tasks/{Id}/wireless-devices/{WirelessDeviceId}; an empty value falls back to clearing every device associated with the task, preserving the prior behavior.
func (*InMemoryBackend) DisassociateWirelessDeviceFromMulticastGroup ¶
func (b *InMemoryBackend) DisassociateWirelessDeviceFromMulticastGroup( multicastGroupID, wirelessDeviceID string, ) error
DisassociateWirelessDeviceFromMulticastGroup removes a single device from a multicast group's association set. wirelessDeviceID is the {WirelessDeviceId} path segment of DELETE /multicast-groups/{Id}/wireless-devices/{WirelessDeviceId}; an empty value (e.g. from a caller that can't recover it) falls back to clearing every device associated with the group, preserving the prior behavior.
func (*InMemoryBackend) DisassociateWirelessDeviceFromThing ¶
func (b *InMemoryBackend) DisassociateWirelessDeviceFromThing( accountID, region, wirelessDeviceID string, ) error
DisassociateWirelessDeviceFromThing clears the thing association for a wireless device.
func (*InMemoryBackend) DisassociateWirelessGatewayFromCertificate ¶
func (b *InMemoryBackend) DisassociateWirelessGatewayFromCertificate( accountID, region, gatewayID string, ) error
DisassociateWirelessGatewayFromCertificate clears the certificate association for a gateway.
func (*InMemoryBackend) DisassociateWirelessGatewayFromThing ¶
func (b *InMemoryBackend) DisassociateWirelessGatewayFromThing( accountID, region, gatewayID string, ) error
DisassociateWirelessGatewayFromThing clears the thing association for a gateway.
func (*InMemoryBackend) EnqueueMessage ¶
func (b *InMemoryBackend) EnqueueMessage(wirelessDeviceID string, msg QueuedMessage)
EnqueueMessage appends a downlink message to a wireless device's message queue, so that a subsequent ListQueuedMessages reflects messages sent via SendDataToWirelessDevice.
func (*InMemoryBackend) GetDestination ¶
func (b *InMemoryBackend) GetDestination(accountID, region, name string) (*Destination, error)
GetDestination returns a destination by name.
func (*InMemoryBackend) GetDeviceProfile ¶
func (b *InMemoryBackend) GetDeviceProfile(accountID, region, id string) (*DeviceProfile, error)
GetDeviceProfile returns a device profile by ID.
func (*InMemoryBackend) GetEventConfigurationByResourceTypes ¶
func (b *InMemoryBackend) GetEventConfigurationByResourceTypes() *EventConfigDoc
GetEventConfigurationByResourceTypes returns the account-wide default event configuration. Returns an empty (zero-value) document if never configured.
func (*InMemoryBackend) GetFuotaTask ¶
func (b *InMemoryBackend) GetFuotaTask(accountID, region, id string) (*FuotaTask, error)
GetFuotaTask returns a FUOTA task by ID.
func (*InMemoryBackend) GetLogLevelsByResourceTypes ¶
func (b *InMemoryBackend) GetLogLevelsByResourceTypes() LogLevelsConfig
GetLogLevelsByResourceTypes returns the account-wide default log-level configuration. Defaults to DefaultLogLevel "INFO" with empty option lists when never explicitly configured.
func (*InMemoryBackend) GetMetricConfigurationStatus ¶
func (b *InMemoryBackend) GetMetricConfigurationStatus() string
GetMetricConfigurationStatus returns the account's summary metric aggregation status. Defaults to "Enabled" (AWS's documented default) when never explicitly configured.
func (*InMemoryBackend) GetMulticastGroup ¶
func (b *InMemoryBackend) GetMulticastGroup(accountID, region, id string) (*MulticastGroup, error)
GetMulticastGroup returns a multicast group by ID.
func (*InMemoryBackend) GetMulticastGroupSession ¶
func (b *InMemoryBackend) GetMulticastGroupSession(multicastGroupID string) (time.Time, error)
GetMulticastGroupSession returns the start time of a multicast group's active session. Returns ErrMulticastGroupSessionNotFound if no session has been started (or it has since been cancelled), matching real AWS's ResourceNotFoundException for a group with no active session.
func (*InMemoryBackend) GetNetworkAnalyzerConfig ¶
func (b *InMemoryBackend) GetNetworkAnalyzerConfig(accountID, region, name string) (*NetworkAnalyzerConfig, error)
GetNetworkAnalyzerConfig returns a network analyzer configuration by name.
func (*InMemoryBackend) GetPartnerAccount ¶
func (b *InMemoryBackend) GetPartnerAccount(partnerAccountID string) (string, error)
GetPartnerAccount returns the ARN for a partner account.
func (*InMemoryBackend) GetPosition ¶
func (b *InMemoryBackend) GetPosition(resourceID string) map[string]any
GetPosition returns the position data for a resource.
func (*InMemoryBackend) GetPositionConfiguration ¶
func (b *InMemoryBackend) GetPositionConfiguration(resourceID string) (*PositionConfigEntry, bool)
GetPositionConfiguration returns the stored position configuration for a resource, if any.
func (*InMemoryBackend) GetResourceEventConfiguration ¶
func (b *InMemoryBackend) GetResourceEventConfiguration(identifier string) (*ResourceEventConfigEntry, bool)
GetResourceEventConfiguration returns the stored event configuration for a specific resource identifier, if any.
func (*InMemoryBackend) GetResourceLogLevel ¶
func (b *InMemoryBackend) GetResourceLogLevel(resourceID string) string
GetResourceLogLevel returns the log level for a specific resource.
func (*InMemoryBackend) GetServiceProfile ¶
func (b *InMemoryBackend) GetServiceProfile(accountID, region, id string) (*ServiceProfile, error)
GetServiceProfile returns a service profile by ID.
func (*InMemoryBackend) GetWirelessDevice ¶
func (b *InMemoryBackend) GetWirelessDevice(accountID, region, id string) (*WirelessDevice, error)
GetWirelessDevice returns a wireless device by ID.
func (*InMemoryBackend) GetWirelessDeviceImportTask ¶
func (b *InMemoryBackend) GetWirelessDeviceImportTask(id string) (*WirelessDeviceImportTask, error)
GetWirelessDeviceImportTask returns a wireless device import task by ID.
func (*InMemoryBackend) GetWirelessDeviceThingArn ¶
func (b *InMemoryBackend) GetWirelessDeviceThingArn(wirelessDeviceID string) string
GetWirelessDeviceThingArn returns the ARN of the IoT Thing associated with a wireless device, or "" if AssociateWirelessDeviceWithThing was never called (or the association was since cleared).
func (*InMemoryBackend) GetWirelessGateway ¶
func (b *InMemoryBackend) GetWirelessGateway(accountID, region, id string) (*WirelessGateway, error)
GetWirelessGateway returns a wireless gateway by ID.
func (*InMemoryBackend) GetWirelessGatewayCertificate ¶
func (b *InMemoryBackend) GetWirelessGatewayCertificate( accountID, region, gatewayID string, ) (string, error)
GetWirelessGatewayCertificate returns the certificate ID associated with a gateway.
func (*InMemoryBackend) GetWirelessGatewayTask ¶
func (b *InMemoryBackend) GetWirelessGatewayTask(gatewayID string) (*GatewayTask, error)
GetWirelessGatewayTask returns the task for a wireless gateway.
func (*InMemoryBackend) GetWirelessGatewayTaskDefinition ¶
func (b *InMemoryBackend) GetWirelessGatewayTaskDefinition( id string, ) (*GatewayTaskDefinition, error)
GetWirelessGatewayTaskDefinition returns a gateway task definition by ID.
func (*InMemoryBackend) GetWirelessGatewayThingArn ¶
func (b *InMemoryBackend) GetWirelessGatewayThingArn(gatewayID string) string
GetWirelessGatewayThingArn returns the ARN of the IoT Thing associated with a wireless gateway, or "" if AssociateWirelessGatewayWithThing was never called (or the association was since cleared).
func (*InMemoryBackend) ListDestinations ¶
func (b *InMemoryBackend) ListDestinations(accountID, region string) []*Destination
ListDestinations returns all destinations for the given account and region. ListDestinations returns all destinations for the given account and region, sorted by name for deterministic output.
func (*InMemoryBackend) ListDeviceProfiles ¶
func (b *InMemoryBackend) ListDeviceProfiles(accountID, region string) []*DeviceProfile
ListDeviceProfiles returns all device profiles for the given account and region, sorted by name for deterministic output.
func (*InMemoryBackend) ListEventConfigurations ¶
func (b *InMemoryBackend) ListEventConfigurations(resourceType string) []*ResourceEventConfigEntry
ListEventConfigurations returns all stored per-resource event configurations, optionally filtered by resource type (matched as a prefix against the stored IdentifierType, e.g. "WirelessDevice" matches "WirelessDeviceId").
func (*InMemoryBackend) ListFuotaTaskDeviceIDs ¶ added in v1.2.0
func (b *InMemoryBackend) ListFuotaTaskDeviceIDs(fuotaTaskID string) []string
ListFuotaTaskDeviceIDs returns the IDs of wireless devices currently associated with a FUOTA task, sorted for deterministic output.
func (*InMemoryBackend) ListFuotaTasks ¶
func (b *InMemoryBackend) ListFuotaTasks(accountID, region string) []*FuotaTask
ListFuotaTasks returns all FUOTA tasks for the given account and region, sorted by name for deterministic output.
func (*InMemoryBackend) ListMulticastGroupDeviceIDs ¶ added in v1.2.0
func (b *InMemoryBackend) ListMulticastGroupDeviceIDs(multicastGroupID string) []string
ListMulticastGroupDeviceIDs returns the IDs of wireless devices currently associated with a multicast group, sorted for deterministic output.
func (*InMemoryBackend) ListMulticastGroups ¶
func (b *InMemoryBackend) ListMulticastGroups(accountID, region string) []*MulticastGroup
ListMulticastGroups returns all multicast groups for the given account and region, sorted by name for deterministic output.
func (*InMemoryBackend) ListMulticastGroupsByFuotaTask ¶
func (b *InMemoryBackend) ListMulticastGroupsByFuotaTask( accountID, region, fuotaTaskID string, ) []*MulticastGroup
ListMulticastGroupsByFuotaTask returns every multicast group associated with a FUOTA task.
func (*InMemoryBackend) ListNetworkAnalyzerConfigs ¶
func (b *InMemoryBackend) ListNetworkAnalyzerConfigs(accountID, region string) []*NetworkAnalyzerConfig
ListNetworkAnalyzerConfigs returns all network analyzer configurations for the given account and region, sorted by name for deterministic output.
func (*InMemoryBackend) ListPartnerAccounts ¶
func (b *InMemoryBackend) ListPartnerAccounts() map[string]string
ListPartnerAccounts returns all partner account ARNs.
func (*InMemoryBackend) ListPositionConfigurations ¶
func (b *InMemoryBackend) ListPositionConfigurations(resourceType string) []*PositionConfigEntry
ListPositionConfigurations returns all stored position configurations, optionally filtered by resource type.
func (*InMemoryBackend) ListQueuedMessages ¶
func (b *InMemoryBackend) ListQueuedMessages(wirelessDeviceID string) []QueuedMessage
ListQueuedMessages returns queued messages for a wireless device.
func (*InMemoryBackend) ListServiceProfiles ¶
func (b *InMemoryBackend) ListServiceProfiles(accountID, region string) []*ServiceProfile
ListServiceProfiles returns all service profiles for the given account and region, sorted by name for deterministic output.
func (*InMemoryBackend) ListTagsForResource ¶
func (b *InMemoryBackend) ListTagsForResource(arn string) (map[string]string, error)
ListTagsForResource returns all tags for a resource identified by ARN.
func (*InMemoryBackend) ListWirelessDeviceImportTasks ¶
func (b *InMemoryBackend) ListWirelessDeviceImportTasks() []*WirelessDeviceImportTask
ListWirelessDeviceImportTasks returns all wireless device import tasks.
func (*InMemoryBackend) ListWirelessDevices ¶
func (b *InMemoryBackend) ListWirelessDevices(accountID, region string) []*WirelessDevice
ListWirelessDevices returns all wireless devices for the given account and region, sorted by name for deterministic output.
func (*InMemoryBackend) ListWirelessGatewayTaskDefinitions ¶
func (b *InMemoryBackend) ListWirelessGatewayTaskDefinitions() []*GatewayTaskDefinition
ListWirelessGatewayTaskDefinitions returns all gateway task definitions.
func (*InMemoryBackend) ListWirelessGateways ¶
func (b *InMemoryBackend) ListWirelessGateways(accountID, region string) []*WirelessGateway
ListWirelessGateways returns all wireless gateways for the given account and region, sorted by name for deterministic output.
func (*InMemoryBackend) PutPositionConfiguration ¶
func (b *InMemoryBackend) PutPositionConfiguration( resourceID, resourceType, destination string, solvers map[string]any, ) error
PutPositionConfiguration stores the position solver configuration for a resource.
func (*InMemoryBackend) PutResourceLogLevel ¶
func (b *InMemoryBackend) PutResourceLogLevel(resourceID, logLevel string) error
PutResourceLogLevel sets the log level for a specific resource.
func (*InMemoryBackend) Reset ¶
func (b *InMemoryBackend) Reset()
Reset clears all in-memory state, returning the backend to a pristine condition.
func (*InMemoryBackend) ResetAllResourceLogLevels ¶
func (b *InMemoryBackend) ResetAllResourceLogLevels() error
ResetAllResourceLogLevels clears all resource-level log level overrides.
func (*InMemoryBackend) ResetResourceLogLevel ¶
func (b *InMemoryBackend) ResetResourceLogLevel(resourceID string) error
ResetResourceLogLevel clears the log level override for a specific resource.
func (*InMemoryBackend) Restore ¶
func (b *InMemoryBackend) Restore(ctx context.Context, data []byte) error
Restore loads backend state from a JSON snapshot. It implements persistence.Persistable.
func (*InMemoryBackend) Snapshot ¶
func (b *InMemoryBackend) Snapshot(ctx context.Context) []byte
Snapshot serialises the backend state to JSON. It implements persistence.Persistable.
func (*InMemoryBackend) StartBulkAssociateWirelessDeviceWithMulticastGroup ¶ added in v1.2.0
func (b *InMemoryBackend) StartBulkAssociateWirelessDeviceWithMulticastGroup( accountID, region, multicastGroupID string, ) error
StartBulkAssociateWirelessDeviceWithMulticastGroup associates every wireless device in the account/region with the multicast group. Real AWS filters candidates by the request's QueryString search expression against device attributes; this backend has no query-expression evaluator, so it emulates the "all qualifying devices" semantics by associating the full device corpus, matching this package's existing convention for List* ops that accept-but-can't-honor a narrowing filter (see PARITY.md gaps).
func (*InMemoryBackend) StartBulkDisassociateWirelessDeviceFromMulticastGroup ¶ added in v1.2.0
func (b *InMemoryBackend) StartBulkDisassociateWirelessDeviceFromMulticastGroup(multicastGroupID string) error
StartBulkDisassociateWirelessDeviceFromMulticastGroup disassociates every wireless device in the account/region from the multicast group -- the bulk-disassociate counterpart of StartBulkAssociateWirelessDeviceWithMulticastGroup.
func (*InMemoryBackend) StartFuotaTask ¶
func (b *InMemoryBackend) StartFuotaTask(accountID, region, id string) error
StartFuotaTask transitions the FUOTA task's Status to "FuotaSession_Waiting" (types.FuotaTaskStatusFuotaSessionWaiting), matching real AWS's lifecycle for a task moved out of "Pending" by StartFuotaTask. Previously this corrupted FirmwareUpdateRole by overwriting it with a fabricated status string instead of tracking status as its own field.
func (*InMemoryBackend) StartMulticastGroupSession ¶
func (b *InMemoryBackend) StartMulticastGroupSession(multicastGroupID string) error
StartMulticastGroupSession marks a multicast group session as active, recording its start time so GetMulticastGroupSession can report it back.
func (*InMemoryBackend) StartSingleWirelessDeviceImportTask ¶
func (b *InMemoryBackend) StartSingleWirelessDeviceImportTask( accountID, region, destinationName string, ) (*SingleWirelessDeviceImportTask, error)
StartSingleWirelessDeviceImportTask creates a single wireless device import task.
func (*InMemoryBackend) StartWirelessDeviceImportTask ¶
func (b *InMemoryBackend) StartWirelessDeviceImportTask( accountID, region, destinationName string, ) (*WirelessDeviceImportTask, error)
StartWirelessDeviceImportTask creates a bulk wireless device import task.
func (*InMemoryBackend) TagResource ¶
func (b *InMemoryBackend) TagResource(arn string, tags map[string]string) error
TagResource adds or updates tags on a resource identified by ARN.
func (*InMemoryBackend) UntagResource ¶
func (b *InMemoryBackend) UntagResource(arn string, tagKeys []string) error
UntagResource removes tags from a resource identified by ARN. If all tags are removed the empty map entry is cleaned up to prevent memory leaks.
func (*InMemoryBackend) UpdateDestination ¶
func (b *InMemoryBackend) UpdateDestination( accountID, region, name, expression, expressionType, roleArn, description string, ) error
UpdateDestination updates mutable fields on an existing destination.
func (*InMemoryBackend) UpdateEventConfigurationByResourceTypes ¶
func (b *InMemoryBackend) UpdateEventConfigurationByResourceTypes(doc *EventConfigDoc)
UpdateEventConfigurationByResourceTypes replaces the account-wide default event configuration.
func (*InMemoryBackend) UpdateFuotaTask ¶
func (b *InMemoryBackend) UpdateFuotaTask(accountID, region, id, name, description string) error
UpdateFuotaTask updates mutable fields on an existing FUOTA task.
func (*InMemoryBackend) UpdateLogLevelsByResourceTypes ¶
func (b *InMemoryBackend) UpdateLogLevelsByResourceTypes(cfg LogLevelsConfig) error
UpdateLogLevelsByResourceTypes replaces the account-wide default log-level configuration.
func (*InMemoryBackend) UpdateMetricConfigurationStatus ¶
func (b *InMemoryBackend) UpdateMetricConfigurationStatus(status string) error
UpdateMetricConfigurationStatus sets the account's summary metric aggregation status.
func (*InMemoryBackend) UpdateMulticastGroup ¶
func (b *InMemoryBackend) UpdateMulticastGroup(accountID, region, id, name, description string) error
UpdateMulticastGroup updates mutable fields on an existing multicast group.
func (*InMemoryBackend) UpdateNetworkAnalyzerConfig ¶
func (b *InMemoryBackend) UpdateNetworkAnalyzerConfig( accountID, region, name, description string, wirelessDevices, wirelessGateways []string, traceContent map[string]any, ) error
UpdateNetworkAnalyzerConfig updates mutable fields on an existing network analyzer configuration.
func (*InMemoryBackend) UpdatePosition ¶
func (b *InMemoryBackend) UpdatePosition(resourceID string, position map[string]any) error
UpdatePosition updates the position data for a resource.
func (*InMemoryBackend) UpdateResourceEventConfiguration ¶
func (b *InMemoryBackend) UpdateResourceEventConfiguration( identifier, identifierType, partnerType string, doc *EventConfigDoc, )
UpdateResourceEventConfiguration stores the event configuration for a specific resource identifier.
func (*InMemoryBackend) UpdateWirelessDevice ¶
func (b *InMemoryBackend) UpdateWirelessDevice( accountID, region, id, name, description, destinationName, positioning string, loRaWAN, sidewalk map[string]any, ) error
UpdateWirelessDevice updates mutable fields on an existing wireless device. loRaWAN/sidewalk are merged key-by-key into the stored configuration (rather than wholesale replaced), matching real AWS's UpdateWirelessDevice semantics of updating only the LoRaWAN/Sidewalk sub-fields the client actually supplied (e.g. LoRaWANUpdateDevice only carries DeviceProfileId/ ServiceProfileId/ABP/FPorts -- not DevEui -- so a full replace would silently drop DevEui that CreateWirelessDevice originally stored).
func (*InMemoryBackend) UpdateWirelessDeviceImportTask ¶
func (b *InMemoryBackend) UpdateWirelessDeviceImportTask(id, destinationName string) error
UpdateWirelessDeviceImportTask updates the destination name of a wireless device import task.
func (*InMemoryBackend) UpdateWirelessGateway ¶
func (b *InMemoryBackend) UpdateWirelessGateway( accountID, region, id, name, description string, loRaWANUpdates map[string]any, ) error
UpdateWirelessGateway updates mutable fields on an existing wireless gateway. UpdateWirelessGatewayInput carries JoinEuiFilters/MaxEirp/ NetIdFilters as top-level fields (not nested under LoRaWAN, unlike Create), so loRaWANUpdates merges them into the stored LoRaWAN map under their real field names.
type LogLevelsConfig ¶ added in v1.2.0
type LogLevelsConfig struct {
DefaultLogLevel string
FuotaTaskLogOptions []map[string]any
WirelessDeviceLogOptions []map[string]any
WirelessGatewayLogOptions []map[string]any
}
LogLevelsConfig is the account-wide default log-level configuration set via UpdateLogLevelsByResourceTypes. FuotaTaskLogOptions/ WirelessDeviceLogOptions/WirelessGatewayLogOptions hold the request's nested log-option-list objects verbatim (see the WirelessDevice.LoRaWAN doc comment in models.go for why opaque storage is used for these client-submitted nested configs) -- previously these three fields were silently accepted by UpdateLogLevelsByResourceTypesInput and dropped, always echoing back empty arrays regardless of what was set.
type MulticastGroup ¶
type MulticastGroup struct {
CreatedAt time.Time `json:"createdAt"`
Tags map[string]string `json:"tags,omitempty"`
// LoRaWAN holds the LoRaWANMulticast configuration object supplied at
// creation time, echoed back verbatim on Get -- see the identical
// comment on WirelessDevice.LoRaWAN above.
LoRaWAN map[string]any `json:"loRaWAN,omitempty"`
Name string `json:"name"`
ID string `json:"id"`
ARN string `json:"arn"`
Description string `json:"description,omitempty"`
Status string `json:"status"`
// AccountID and Region exist purely for store.Table's keyFn; see the
// identical comment on WirelessDevice above.
AccountID string `json:"-"`
Region string `json:"-"`
}
MulticastGroup represents an IoT Wireless multicast group.
type NetworkAnalyzerConfig ¶
type NetworkAnalyzerConfig struct {
Tags map[string]string `json:"tags,omitempty"`
Name string `json:"name"`
ARN string `json:"arn"`
Description string `json:"description,omitempty"`
AccountID string `json:"-"`
Region string `json:"-"`
// TraceContent holds the TraceContent object (LogLevel,
// MulticastFrameInfo, WirelessDeviceFrameInfo) supplied at creation or
// update time, echoed back verbatim on Get -- see the identical comment
// on WirelessDevice.LoRaWAN above.
TraceContent map[string]any `json:"traceContent,omitempty"`
WirelessDevices []string `json:"wirelessDevices,omitempty"`
WirelessGateways []string `json:"wirelessGateways,omitempty"`
MulticastGroups []string `json:"multicastGroups,omitempty"`
}
NetworkAnalyzerConfig represents an IoT Wireless network analyzer configuration.
type PositionConfigEntry ¶
type PositionConfigEntry struct {
Solvers map[string]any `json:"solvers,omitempty"`
ResourceIdentifier string `json:"resourceIdentifier"`
ResourceType string `json:"resourceType"`
Destination string `json:"destination,omitempty"`
}
PositionConfigEntry represents a stored position configuration for a wireless device or gateway resource, as set via PutPositionConfiguration.
type Provider ¶
type Provider struct{}
Provider implements service.Provider for the IoT Wireless service.
func (*Provider) Init ¶
func (p *Provider) Init(ctx *service.AppContext) (service.Registerable, error)
Init initializes the IoT Wireless service backend and handler.
type QueuedMessage ¶
type QueuedMessage struct {
ReceivedAt time.Time
MessageID string
PayloadBase64 string
TransmitMode int32
}
QueuedMessage represents a downlink message queued for a wireless device.
type Resettable ¶
type Resettable interface {
Reset()
}
Resettable is an optional interface that a StorageBackend may implement to support clearing all state (e.g. for test teardown).
type ResourceEventConfigEntry ¶
type ResourceEventConfigEntry struct {
Config EventConfigDoc `json:"config"`
Identifier string `json:"identifier"`
IdentifierType string `json:"identifierType"`
PartnerType string `json:"partnerType,omitempty"`
}
ResourceEventConfigEntry represents a stored per-resource event configuration, as set via UpdateResourceEventConfiguration.
type ServiceProfile ¶
type ServiceProfile struct {
CreatedAt time.Time `json:"createdAt"`
Tags map[string]string `json:"tags,omitempty"`
// LoRaWAN holds the LoRaWANServiceProfile configuration object supplied
// at creation time, echoed back verbatim on Get -- see the identical
// comment on WirelessDevice.LoRaWAN above.
LoRaWAN map[string]any `json:"loRaWAN,omitempty"`
Name string `json:"name"`
ID string `json:"id"`
ARN string `json:"arn"`
// AccountID and Region exist purely for store.Table's keyFn; see the
// identical comment on WirelessDevice above.
AccountID string `json:"-"`
Region string `json:"-"`
}
ServiceProfile contains settings for a LoRaWAN service profile.
type SingleWirelessDeviceImportTask ¶
type SingleWirelessDeviceImportTask struct {
CreatedAt time.Time `json:"createdAt"`
ARN string `json:"arn"`
WirelessDeviceID string `json:"wirelessDeviceId"`
DestinationName string `json:"destinationName"`
Status string `json:"status"`
}
SingleWirelessDeviceImportTask represents an IoT Wireless single-device import task.
type Snapshottable ¶
type Snapshottable interface {
Snapshot(ctx context.Context) []byte
Restore(ctx context.Context, data []byte) error
}
Snapshottable is an optional interface that a StorageBackend may implement to support state serialisation and restoration (e.g. for --persist mode). Backends that do not implement it are silently skipped during snapshot/restore.
type StorageBackend ¶
type StorageBackend interface {
Reset()
CreateWirelessDevice(
accountID, region, name, devType, destinationName, description, positioning string,
loRaWAN, sidewalk map[string]any,
tags map[string]string,
) (*WirelessDevice, error)
GetWirelessDevice(accountID, region, id string) (*WirelessDevice, error)
ListWirelessDevices(accountID, region string) []*WirelessDevice
DeleteWirelessDevice(accountID, region, id string) error
CreateWirelessGateway(
accountID, region, name, description string,
loRaWAN map[string]any,
tags map[string]string,
) (*WirelessGateway, error)
GetWirelessGateway(accountID, region, id string) (*WirelessGateway, error)
ListWirelessGateways(accountID, region string) []*WirelessGateway
DeleteWirelessGateway(accountID, region, id string) error
CreateServiceProfile(
accountID, region, name string,
loRaWAN map[string]any,
tags map[string]string,
) (*ServiceProfile, error)
GetServiceProfile(accountID, region, id string) (*ServiceProfile, error)
ListServiceProfiles(accountID, region string) []*ServiceProfile
DeleteServiceProfile(accountID, region, id string) error
CreateDestination(
accountID, region, name, expression, expressionType, roleArn, description string,
tags map[string]string,
) (*Destination, error)
GetDestination(accountID, region, name string) (*Destination, error)
ListDestinations(accountID, region string) []*Destination
DeleteDestination(accountID, region, name string) error
CreateDeviceProfile(
accountID, region, name string,
loRaWAN, sidewalk map[string]any,
tags map[string]string,
) (*DeviceProfile, error)
GetDeviceProfile(accountID, region, id string) (*DeviceProfile, error)
ListDeviceProfiles(accountID, region string) []*DeviceProfile
DeleteDeviceProfile(accountID, region, id string) error
CreateFuotaTask(
accountID, region, name, description, firmwareUpdateImage, firmwareUpdateRole, descriptor string,
fragmentIntervalMS, fragmentSizeBytes, redundancyPercent int32,
loRaWAN map[string]any,
tags map[string]string,
) (*FuotaTask, error)
GetFuotaTask(accountID, region, id string) (*FuotaTask, error)
ListFuotaTasks(accountID, region string) []*FuotaTask
DeleteFuotaTask(accountID, region, id string) error
UpdateFuotaTask(accountID, region, id, name, description string) error
UpdateWirelessGateway(accountID, region, id, name, description string, loRaWANUpdates map[string]any) error
UpdateDestination(accountID, region, name, expression, expressionType, roleArn, description string) error
CreateMulticastGroup(
accountID, region, name, description string,
loRaWAN map[string]any,
tags map[string]string,
) (*MulticastGroup, error)
GetMulticastGroup(accountID, region, id string) (*MulticastGroup, error)
ListMulticastGroups(accountID, region string) []*MulticastGroup
DeleteMulticastGroup(accountID, region, id string) error
UpdateMulticastGroup(accountID, region, id, name, description string) error
CreateNetworkAnalyzerConfig(
accountID, region, name, description string,
wirelessDevices, wirelessGateways, multicastGroups []string,
traceContent map[string]any,
tags map[string]string,
) (*NetworkAnalyzerConfig, error)
GetNetworkAnalyzerConfig(accountID, region, name string) (*NetworkAnalyzerConfig, error)
ListNetworkAnalyzerConfigs(accountID, region string) []*NetworkAnalyzerConfig
DeleteNetworkAnalyzerConfig(accountID, region, name string) error
UpdateNetworkAnalyzerConfig(
accountID, region, name, description string,
wirelessDevices, wirelessGateways []string,
traceContent map[string]any,
) error
AssociateAwsAccountWithPartnerAccount(
accountID, region, partnerAccountID string,
tags map[string]string,
) (string, error)
AssociateMulticastGroupWithFuotaTask(fuotaTaskID, multicastGroupID string) error
AssociateWirelessDeviceWithFuotaTask(fuotaTaskID, wirelessDeviceID string) error
AssociateWirelessDeviceWithMulticastGroup(multicastGroupID, wirelessDeviceID string) error
AssociateWirelessDeviceWithThing(accountID, region, wirelessDeviceID, thingArn string) error
AssociateWirelessGatewayWithCertificate(accountID, region, gatewayID, iotCertificateID string) (string, error)
AssociateWirelessGatewayWithThing(accountID, region, gatewayID, thingArn string) error
CancelMulticastGroupSession(multicastGroupID string) error
ListMulticastGroupDeviceIDs(multicastGroupID string) []string
ListFuotaTaskDeviceIDs(fuotaTaskID string) []string
StartBulkAssociateWirelessDeviceWithMulticastGroup(accountID, region, multicastGroupID string) error
StartBulkDisassociateWirelessDeviceFromMulticastGroup(multicastGroupID string) error
// GetWirelessDeviceThingArn returns the ARN of the IoT Thing associated
// with a wireless device via AssociateWirelessDeviceWithThing, or "" if
// none is associated. Used by GetWirelessDevice to surface ThingArn/
// ThingName, matching real AWS's response shape.
GetWirelessDeviceThingArn(wirelessDeviceID string) string
// GetWirelessGatewayThingArn returns the ARN of the IoT Thing associated
// with a wireless gateway via AssociateWirelessGatewayWithThing, or "" if
// none is associated. Used by GetWirelessGateway to surface ThingArn/
// ThingName, matching real AWS's response shape.
GetWirelessGatewayThingArn(gatewayID string) string
// Extended operations implemented across the various <family>.go files.
StartFuotaTask(accountID, region, id string) error
DisassociateWirelessDeviceFromFuotaTask(fuotaTaskID, wirelessDeviceID string) error
ListMulticastGroupsByFuotaTask(accountID, region, fuotaTaskID string) []*MulticastGroup
DisassociateMulticastGroupFromFuotaTask(fuotaTaskID, multicastGroupID string) error
DisassociateWirelessDeviceFromMulticastGroup(multicastGroupID, wirelessDeviceID string) error
StartMulticastGroupSession(multicastGroupID string) error
GetMulticastGroupSession(multicastGroupID string) (time.Time, error)
DisassociateWirelessGatewayFromCertificate(accountID, region, gatewayID string) error
DisassociateWirelessGatewayFromThing(accountID, region, gatewayID string) error
GetWirelessGatewayCertificate(accountID, region, gatewayID string) (string, error)
UpdateWirelessDevice(
accountID, region, id, name, description, destinationName, positioning string,
loRaWAN, sidewalk map[string]any,
) error
DisassociateWirelessDeviceFromThing(accountID, region, wirelessDeviceID string) error
GetPartnerAccount(partnerAccountID string) (string, error)
ListPartnerAccounts() map[string]string
DisassociateAwsAccountFromPartnerAccount(partnerAccountID string) error
GetLogLevelsByResourceTypes() LogLevelsConfig
UpdateLogLevelsByResourceTypes(cfg LogLevelsConfig) error
ResetAllResourceLogLevels() error
GetResourceLogLevel(resourceID string) string
PutResourceLogLevel(resourceID, logLevel string) error
ResetResourceLogLevel(resourceID string) error
CreateWirelessGatewayTask(gatewayID, taskDefID string) (*GatewayTask, error)
GetWirelessGatewayTask(gatewayID string) (*GatewayTask, error)
DeleteWirelessGatewayTask(gatewayID string) error
CreateWirelessGatewayTaskDefinition(
accountID, region, name string,
autoCreateTasks bool,
update map[string]any,
) (*GatewayTaskDefinition, error)
GetWirelessGatewayTaskDefinition(id string) (*GatewayTaskDefinition, error)
ListWirelessGatewayTaskDefinitions() []*GatewayTaskDefinition
DeleteWirelessGatewayTaskDefinition(id string) error
GetPosition(resourceID string) map[string]any
UpdatePosition(resourceID string, position map[string]any) error
PutPositionConfiguration(resourceID, resourceType, destination string, solvers map[string]any) error
GetPositionConfiguration(resourceID string) (*PositionConfigEntry, bool)
ListPositionConfigurations(resourceType string) []*PositionConfigEntry
GetEventConfigurationByResourceTypes() *EventConfigDoc
UpdateEventConfigurationByResourceTypes(doc *EventConfigDoc)
ListEventConfigurations(resourceType string) []*ResourceEventConfigEntry
GetResourceEventConfiguration(identifier string) (*ResourceEventConfigEntry, bool)
UpdateResourceEventConfiguration(identifier, identifierType, partnerType string, doc *EventConfigDoc)
GetMetricConfigurationStatus() string
UpdateMetricConfigurationStatus(status string) error
ListQueuedMessages(wirelessDeviceID string) []QueuedMessage
DeleteQueuedMessages(wirelessDeviceID string) error
EnqueueMessage(wirelessDeviceID string, msg QueuedMessage)
StartWirelessDeviceImportTask(accountID, region, destinationName string) (*WirelessDeviceImportTask, error)
StartSingleWirelessDeviceImportTask(
accountID, region, destinationName string,
) (*SingleWirelessDeviceImportTask, error)
GetWirelessDeviceImportTask(id string) (*WirelessDeviceImportTask, error)
DeleteWirelessDeviceImportTask(id string) error
UpdateWirelessDeviceImportTask(id, destinationName string) error
ListWirelessDeviceImportTasks() []*WirelessDeviceImportTask
TagResource(arn string, tags map[string]string) error
UntagResource(arn string, tagKeys []string) error
ListTagsForResource(arn string) (map[string]string, error)
}
StorageBackend is the interface for the IoT Wireless backend.
type WirelessDevice ¶
type WirelessDevice struct {
CreatedAt time.Time `json:"createdAt"`
LastUplinkReceivedAt *time.Time `json:"lastUplinkReceivedAt,omitempty"`
Tags map[string]string `json:"tags,omitempty"`
// LoRaWAN and Sidewalk hold the request's nested LoRaWAN/Sidewalk
// configuration object verbatim (whatever JSON object the client sent in
// CreateWirelessDevice/UpdateWirelessDevice), round-tripped back exactly
// on Get/List. Stored opaquely rather than as individually typed fields
// because the real shapes (types.LoRaWANDevice / SidewalkCreateWirelessDevice)
// carry many optional nested vendor sub-objects (ABP/OTAA session keys,
// FPorts, ...); this still captures real, non-fabricated client state.
LoRaWAN map[string]any `json:"loRaWAN,omitempty"`
Sidewalk map[string]any `json:"sidewalk,omitempty"`
Positioning string `json:"positioning,omitempty"`
Name string `json:"name"`
ID string `json:"id"`
ARN string `json:"arn"`
Description string `json:"description,omitempty"`
Type string `json:"type"`
DestinationName string `json:"destinationName,omitempty"`
// AccountID and Region are not part of the AWS wire shape for this
// resource; they exist purely so store.Table's keyFn (store_setup.go) can
// derive the account+region-scoped composite key this backend requires.
// Tagged json:"-" so they never leak into an API response; Snapshot/
// Restore round-trips them via the deviceSnapshot DTO instead (see
// persistence.go).
AccountID string `json:"-"`
Region string `json:"-"`
}
WirelessDevice represents a LoRaWAN or Sidewalk wireless device.
type WirelessDeviceImportTask ¶
type WirelessDeviceImportTask struct {
CreatedAt time.Time `json:"createdAt"`
ID string `json:"id"`
ARN string `json:"arn"`
DestinationName string `json:"destinationName"`
Status string `json:"status"`
StatusReason string `json:"statusReason,omitempty"`
InitializedImportedDeviceCount int64 `json:"initializedImportedDeviceCount"`
PendingImportedDeviceCount int64 `json:"pendingImportedDeviceCount"`
OnboardedImportedDeviceCount int64 `json:"onboardedImportedDeviceCount"`
FailedImportedDeviceCount int64 `json:"failedImportedDeviceCount"`
}
WirelessDeviceImportTask represents an IoT Wireless device bulk-import task.
type WirelessGateway ¶
type WirelessGateway struct {
CreatedAt time.Time `json:"createdAt"`
LastUplinkReceivedAt *time.Time `json:"lastUplinkReceivedAt,omitempty"`
Tags map[string]string `json:"tags,omitempty"`
// LoRaWAN holds the request's nested LoRaWAN gateway configuration object
// (GatewayEui, RfRegion, JoinEuiFilters, NetIdFilters, MaxEirp, SubBands,
// Beaconing, ...) verbatim -- see the identical comment on
// WirelessDevice.LoRaWAN above for why this is stored opaquely.
LoRaWAN map[string]any `json:"loRaWAN,omitempty"`
Name string `json:"name"`
ID string `json:"id"`
ARN string `json:"arn"`
Description string `json:"description,omitempty"`
ConnectionStatus string `json:"connectionStatus,omitempty"`
FirmwareVersion string `json:"firmwareVersion,omitempty"`
FirmwareModel string `json:"firmwareModel,omitempty"`
FirmwareStation string `json:"firmwareStation,omitempty"`
// AccountID and Region exist purely for store.Table's keyFn; see the
// identical comment on WirelessDevice above.
AccountID string `json:"-"`
Region string `json:"-"`
}
WirelessGateway represents a LoRaWAN gateway.
Source Files
¶
- certificates.go
- destinations.go
- errors.go
- event_configurations.go
- exports.go
- fuota_tasks.go
- handler.go
- handler_certificates.go
- handler_destinations.go
- handler_event_configurations.go
- handler_fuota_tasks.go
- handler_log_levels.go
- handler_metrics.go
- handler_multicast_groups.go
- handler_network_analyzer.go
- handler_partner_accounts.go
- handler_positioning.go
- handler_profiles.go
- handler_tags.go
- handler_wireless_devices.go
- handler_wireless_gateway_tasks.go
- handler_wireless_gateways.go
- interfaces.go
- log_levels.go
- metrics.go
- models.go
- multicast_groups.go
- network_analyzer.go
- pagination.go
- partner_accounts.go
- persistence.go
- positioning.go
- profiles.go
- provider.go
- routing.go
- store.go
- tags.go
- tags_wire.go
- wireless_devices.go
- wireless_gateway_tasks.go
- wireless_gateways.go