Zoom Keyhole

Documentation Status

A simple web application that displays Zoom rooms participants on Miro boards.

Created for PI8 planning in the IP sprint. Updated to a web application in the PI9 IP sprint.

Quick-start

Required environment variables

Zoom Keyhole requires that the following environment variables are set:

  • ZOOM_KEYHOLE_MIRO_API_TOKEN: Miro API token to use. A semi-colon separated list can be used to specify more than one token. If multiple tokens are provided, Miro API calls are shared between them.

  • ZOOM_KEYHOLE_ZOOM_CLIENT_ID: Client ID for the Zoom OAuth app. Needed for polling the Zoom API for room participants. Used when getting initial room list and periodically for updating participants.

  • ZOOM_KEYHOLE_ZOOM_CLIENT_SECRET: Client secret for the Zoom OAuth app. Used in combination with the Zoom Client ID and Account ID.

  • ZOOM_KEYHOLE_ZOOM_ACCOUNT_ID: Zoom Account ID. Used in combination with the Zoom Client ID and Client secret.

  • ZOOM_KEYHOLE_GSHEET_KEY: API Key for google sheets. Used to load google sheets configuration.

  • ZOOM_KEYHOLE_GSHEET_ID: Google sheet ID where the configuration is found.

Configuration file

It also requires a YAML configuration file which describes the location of the miro board being updated, as well as ….

An example file is:

---
# List of boards to update (NOTE: Replace with actual board ids!)
miro_board_ids:
    - o9J_x......=
    - o9J_x......=
header_particpant_list: Currently in the room
symbol:
    mode: random
    position: left
    default: "\\U00002795"
    show_default: false
    show_bullet_point: true

Deployment with Kubernetes

The included chart requires the all of the sensitive environment variable values and the YAML configuration file to be passed in at runtime. This can be done by providing a values.yaml file:

$ helm install zoom ./charts/ska-zoom-keyhole --values values.yaml

An example (redacted) file is:

---
zoomKeyholeConfig: |
  # Common Zoom Keyhole config
  miro_boards:
    - name: PI19 Program of Programs
      id: <some id>=
      url: https://miro.com/app/board/<some id>=/
    ...

  header_participant_list: Currently in the room
  symbol:
    mode: random
    position: left
    default: "\\U00002795"
    show_default: false
    show_bullet_point: true
  group_team_by_art: true  # Not used

env:
  ZOOM_KEYHOLE_MIRO_API_TOKEN: "<a token>"
  ZOOM_KEYHOLE_ZOOM_CLIENT_ID: <client id>
  ZOOM_KEYHOLE_ZOOM_CLIENT_SECRET: <secret>
  ZOOM_KEYHOLE_ZOOM_ACCOUNT_ID: <account id>
  ZOOM_KEYHOLE_GSHEET_KEY: <key>
  ZOOM_KEYHOLE_GSHEET_ID: <id>

Ingress URI

The default ingress URI is /ska/zoom-keyhole (values .ingress.*), so if this were deployed in STFC TechOps the the URL would be https://k8s.stfc.skao.int/ska/zoom-keyhole (Note: in TechOps a rule is required in the reverse proxy to enable unauthenticated access to this resource).

Vault Secret Integration

The Vault secrets are maintained at: https://vault.skao.int/ui/vault/secrets/stfc/show/ska-zoom-keyhole .

These cover the key/values:

  • zoomKeyholeConfig

  • ZOOM_KEYHOLE_MIRO_API_TOKEN

  • ZOOM_KEYHOLE_ZOOM_CLIENT_ID

  • ZOOM_KEYHOLE_ZOOM_CLIENT_SECRET

  • ZOOM_KEYHOLE_ZOOM_ACCOUNT_ID

  • ZOOM_KEYHOLE_GSHEET_KEY

  • ZOOM_KEYHOLE_GSHEET_ID

Identical to the values.yaml file settings.