Overview
Overrider Panel is a tool used to override weather data for Pinpoint. It allows editing weather data, statuses, and text forecasts for enterprise locations, WeatherWatch locations, and any valid Geos locations.
Repositories
Overrider consists of two repositories:
Admin Panel: http://panel.devops.arabiaweather.com/
Clone the repositories:
git clone https://git.wthr.ws/weathertech/Overrider
git clone https://git.wthr.ws/weathertech/overrider-api
Architecture
Components
The Overrider Panel consists of three main components, each with its own Dockerfile:
- app - Frontend application
- backend - Backend API service
- nginx - Web server/reverse proxy
Authentication
Overrider uses Atlas for authentication. Users must be registered in Atlas to access the Overrider Panel.
Data Storage
Overrides are stored in Redis on cluster-n03. For more information about Redis deployment, see Redis Infrastructure.
Important: Overrides stored in Redis have a TTL (Time To Live) of 10 days. After 10 days, overrides will expire and need to be recreated. Make sure to refresh or recreate overrides before they expire.
Deployment
Overrider is deployed via Portainer on Docker Swarm using two separate stacks.
Deployment Locations
Deployment Process
Overrider has no CI/CD pipeline. All deployments must be done manually.
Overrider API Deployment
- Make code changes in the
overrider-api repository
- Commit your changes:
git add .
git commit -m "Your commit message"
- Push to the repository:
- Tag the release:
git tag vYYYY.MM.DD-X
git push --tags
- Build the Docker image:
docker build -t registry.docker.devops.arabiaweather.com/overrider-api:vYYYY.MM.DD-X .
- Push the image to the registry:
docker push registry.docker.devops.arabiaweather.com/overrider-api:vYYYY.MM.DD-X
- Update the stack in Portainer (
wt-overrider-api2)
Overrider Panel Deployment
The Overrider Panel has three components (app, backend, nginx), each with its own Dockerfile:
- Make code changes in the
Overrider repository
- Commit and push your changes
- Tag the release
- Build each component:
# Build app
docker build -f app/Dockerfile -t registry.docker.devops.arabiaweather.com/overrider-app:vYYYY.MM.DD-X ./app
# Build backend
docker build -f backend/Dockerfile -t registry.docker.devops.arabiaweather.com/overrider-backend:vYYYY.MM.DD-X ./backend
# Build nginx
docker build -f nginx/Dockerfile -t registry.docker.devops.arabiaweather.com/overrider-nginx:vYYYY.MM.DD-X ./nginx
- Push all images:
docker push registry.docker.devops.arabiaweather.com/overrider-app:vYYYY.MM.DD-X
docker push registry.docker.devops.arabiaweather.com/overrider-backend:vYYYY.MM.DD-X
docker push registry.docker.devops.arabiaweather.com/overrider-nginx:vYYYY.MM.DD-X
- Update the stack in Portainer (
wt-ovrd-panel)
How Overrider Works
Overrider Adapter
Overrider uses an adapter that takes Pinpoint data and changes its structure to apply overrides. This adapter integrates with Pinpoint to modify weather data before it’s returned to clients.
Location and Weather IDs
Overrider depends heavily on location ID and weather ID from Geos. When querying data from Pinpoint using longitude/latitude for the same location, it will be without overrides.
Location ID
- Overrides are applied based on location ID from Geos
- Queries using longitude/latitude directly will not receive overrides
- Always use location ID when querying for overridden data
Weather ID
- Weather ID is used to apply one override for a location and all linked locations
- All locations with the same weather ID will receive the same override
- This allows bulk updates across multiple locations that share the same weather conditions
Supported Override Types
Overrider can override:
- Weather Data - Modify forecast values, temperatures, conditions, etc.
- Statuses - Change status indicators for locations
- Text Forecasts - Override text-based forecast descriptions
Supported Location Types
Overrides can be applied to:
- Enterprise locations
- WeatherWatch locations
- Any valid Geos locations
- Atlas - Authentication service used by Overrider
- Pinpoint - Weather API that Overrider modifies
- Geos - Location service providing location and weather IDs
- Redis - Storage for override data