openweathermap key

This commit is contained in:
Waylon Walker 2025-11-22 19:56:40 -06:00
parent a7014d91d2
commit 079c3cc88a
5 changed files with 142 additions and 1 deletions

View file

@ -0,0 +1,110 @@
apiVersion: v1
kind: Namespace
metadata:
name: temperature-cronjob-manifest
---
apiVersion: v1
kind: ConfigMap
metadata:
name: temperature-fetcher
namespace: temperature-cronjob-manifest
data:
temperature_fetcher.py: |
# temperature_fetcher.py
import datetime
import os
import requests
import sqlite3
print("hey im running")
city = os.getenv("CITY")
api_key = os.getenv("API_KEY")
mount_path = os.getenv("MOUNT_PATH", "/data/manifest")
try:
response = requests.get(
f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=imperial"
)
response.raise_for_status()
temp = response.json()["main"]["temp"]
db_path = f"{mount_path}/temperature.db"
conn = sqlite3.connect(db_path)
c = conn.cursor()
c.execute(
"CREATE TABLE IF NOT EXISTS temperatures (timestamp TEXT, temperature REAL)"
)
c.execute(
"INSERT INTO temperatures VALUES (?, ?)",
(datetime.datetime.now().isoformat(), temp),
)
conn.commit()
conn.close()
print(
f"Successfully stored temperature {temp}°C for {city} at {datetime.datetime.now()}"
)
except Exception as e:
print(f"An error occurred: {e}")
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: temperature-cronjob
namespace: temperature-cronjob-manifest
spec:
schedule: "*/1 * * * *"
startingDeadlineSeconds: 200 # Deadline for starting the job
concurrencyPolicy: Forbid # Prevents concurrent runs
successfulJobsHistoryLimit: 3 # Keeps last successful job
failedJobsHistoryLimit: 3 # Keeps last failed job
jobTemplate:
spec:
activeDeadlineSeconds: 180 # Limits how long a job can be active
ttlSecondsAfterFinished: 100 # Cleans up finished jobs after 100 seconds
backoffLimit: 0 # Number of retries before considering the job failed
template:
spec:
containers:
- name: temperature-fetcher
terminationMessagePath: "/sqlite-data/termination.log"
image: "python:3.9-slim"
imagePullPolicy: IfNotPresent
command: ["/bin/bash", "-c"]
args:
- |
echo "Installing dependencies" && \
pip install requests && \
echo "Fetching temperature" && \
python /scripts/temperature_fetcher.py
resources:
requests:
cpu: "25m"
memory: "8Mi"
limits:
cpu: "50m"
memory: "16Mi"
env:
- name: CITY
value: "Dunlap, US"
- name: MOUNT_PATH
value: "/data"
- name: API_KEY
valueFrom:
secretKeyRef:
name: openweathermap-api-key
key: openweathermap-api-key
volumeMounts:
- name: sqlite-data
mountPath: "/data"
- name: script-volume
mountPath: /scripts
restartPolicy: Never
volumes:
- name: sqlite-data
hostPath:
path: "/sqlite-data"
type: Directory
- name: script-volume
configMap:
name: release-name-script