Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Console support for gateways #26

Closed
11 tasks done
johanstokking opened this issue Jan 29, 2019 · 1 comment
Closed
11 tasks done

Console support for gateways #26

johanstokking opened this issue Jan 29, 2019 · 1 comment
Assignees
Labels
c/console This is related to the Console umbrella This issue needs actionable issues referenced

Comments

@johanstokking
Copy link
Member

johanstokking commented Jan 29, 2019

Summary:

The console should provide functionality to manage gateways, namely:

  • listing gateways (paginated)
    • list all gateways the caller has access to
    • list all gateways for a user
    • list all users for an organization
  • getting a single gateway
  • creating (adding) gateways
  • deleting (removing) gateways
  • updating gateways
  • display connection statistics per gateway (if the gateway_server_address matches the Gateway Server API config of the current console)

What is already there? What do you see now?

The Gateway entity:

  • Standard fields ids, created_at, updated_at, name, description, attributes, contact_info
  • version_ids: optional object with identifiers of the gateway's hardware and firmware
  • gateway_server_address: string with the hostname of the GS the gateway should connect to
  • auto_update: boolean to indicate whether to automatically update the gateway firmware
  • update_channel: string of the update channel for the gateway, can be URL or identifier (stable, beta, ...)
  • frequency_plan_id: string of the frequency plan that the gateway uses. For now manually entered, but in the future we should add some API for getting a list of possible values for this and turn this into a dropdown.
  • antennas: optional (@johanstokking?) list of objects representing gateway antennas and their locations
  • status_public: boolean indicating whether the status of this gateway is publicly visible
  • location_public: boolean indicating whether the locations of this gateway's antennas are publicly visible
  • schedule_downlink_late: boolean indicating whether downlinks should be queued by the gateway server; needed if the gateway does not have a JIT queue
  • enforce_duty_cycle: boolean indicating whether regulatory duty cycles should be enforced for this gateway. Typically true.

The Identity Server's Gateway Registry API:

  • Create(CreateGatewayRequest)
    POST /api/v3/users/{collaborator.user_ids.user_id}/gateways
    POST /api/v3/organizations/{collaborator.organization_ids.organization_id}/gateways
  • Get(GetGatewayRequest)
    GET /api/v3/gateways/{gateway_ids.gateway_id}
  • List(ListGatewaysRequest)
    GET /api/v3/gateways
    GET /api/v3/users/{collaborator.user_ids.user_id}/gateways
    GET /api/v3/organizations/{collaborator.organization_ids.organization_id}/gateways
  • Update(UpdateGatewayRequest)
    PUT /api/v3/gateways/{gateway.ids.gateway_id}
  • Delete(GatewayIdentifiers)
    DELETE /api/v3/gateways/{gateway_id}

The Identity Server's Gateway Access API:

  • CreateAPIKey(CreateGatewayAPIKeyRequest)
    POST /api/v3/gateways/{gateway_ids.gateway_id}/api-keys
  • ListAPIKeys(GatewayIdentifiers)
    GET /api/v3/gateways/{gateway_id}/api-keys
  • UpdateAPIKey(UpdateGatewayAPIKeyRequest)
    PUT /api/v3/gateways/{gateway_ids.gateway_id}/api-keys/{api_key.id}
  • SetCollaborator(SetGatewayCollaboratorRequest)
    PUT /api/v3/gateways/{gateway_ids.gateway_id}/collaborators
  • ListCollaborators(GatewayIdentifiers)
    GET /api/v3/gateways/{gateway_id}/collaborators

The Gateway Server's API:

GetGatewayConnectionStats(GatewayIdentifiers)
GET /api/v3/gs/gateways/{gateway_id}/connection/stats

and the connection stats object containing information about the current connection of the gateway (this changes often):

  • connected_at timestamp
  • protocol string
  • last_status_received_at timestamp
  • last_status object
  • last_uplink_received_at timestamp
  • uplink_count number
  • last_downlink_received_at timestamp
  • downlink_count number

What is missing? What do you want to see?


Original issue: https://github.com/TheThingsIndustries/lorawan-stack/issues/1068 by @bafonins

@johanstokking johanstokking added c/console This is related to the Console l/open source labels Jan 29, 2019
@johanstokking johanstokking added this to the Backlog milestone Feb 6, 2019
@johanstokking johanstokking added the umbrella This issue needs actionable issues referenced label Mar 4, 2019
@kschiffer kschiffer mentioned this issue May 3, 2019
48 tasks
@kschiffer
Copy link
Member

Closed via last remainder issue: #818

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c/console This is related to the Console umbrella This issue needs actionable issues referenced
Projects
None yet
Development

No branches or pull requests

3 participants