AETHER-592 Handle all day calendar events
Change-Id: I3184b627ba4f330487e63b136f00ba4280bc7667
diff --git a/edge-monitoring/VERSION b/edge-monitoring/VERSION
index 0d91a54..9e11b32 100644
--- a/edge-monitoring/VERSION
+++ b/edge-monitoring/VERSION
@@ -1 +1 @@
-0.3.0
+0.3.1
diff --git a/edge-monitoring/edge_monitoring_server.py b/edge-monitoring/edge_monitoring_server.py
index 29d66f5..8ac3ea5 100755
--- a/edge-monitoring/edge_monitoring_server.py
+++ b/edge-monitoring/edge_monitoring_server.py
@@ -62,6 +62,19 @@
return True
return False
+def is_naive_datetime(d):
+ return d.tzinfo is None or d.tzinfo.utcoffset(d) is None
+
+def process_all_day_events(es):
+ for event in es:
+ if event.all_day:
+ # All day events have naive datetimes, which breaks comparisons
+ pacific = pytz.timezone('US/Pacific')
+ if is_naive_datetime(event.start):
+ event.start = pacific.localize(event.start)
+ if is_naive_datetime(event.end):
+ event.end = pacific.localize(event.end)
+
def in_maintenance_window(events, name, now):
for event in events:
if event.start < now and event.end > now:
@@ -76,6 +89,7 @@
now = datetime.datetime.now(pytz.utc)
try:
es = events(SECRET_ICAL_URL, start = now)
+ process_all_day_events(es)
except Exception as e:
print(e)
else:
diff --git a/edge-monitoring/edge_monitoring_server_k8s.yaml b/edge-monitoring/edge_monitoring_server_k8s.yaml
deleted file mode 100644
index 1041cfe..0000000
--- a/edge-monitoring/edge_monitoring_server_k8s.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-apiVersion: v1
-kind: Namespace
-metadata:
- name: edge-monitoring
-spec:
- finalizers:
- - kubernetes
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: edge-monitoring-server
- labels:
- app: edge-monitoring-server
- namespace: edge-monitoring
-spec:
- selector:
- matchLabels:
- app: edge-monitoring-server
- replicas: 1
- strategy:
- type: RollingUpdate
- template:
- metadata:
- labels:
- app: edge-monitoring-server
- annotations:
- field.cattle.io/workloadMetrics: '[{"path":"/edges/metrics","port":80,"schema":"HTTP"}]'
- spec:
- containers:
- - name: server
- image: docker.io/omecproject/edge-monitoring-server:0.3.0
- imagePullPolicy: Always
- command: ["python", "edge_monitoring_server.py"]
- env:
- - name: SECRET_ICAL_URL
- valueFrom:
- secretKeyRef:
- name: calendar-secret
- key: iCalUrl
- livenessProbe:
- httpGet:
- path: /edges/healthz
- port: 80
- initialDelaySeconds: 3
- periodSeconds: 3
----
-apiVersion: v1
-kind: Service
-metadata:
- name: edge-monitoring-server
- namespace: edge-monitoring
-spec:
- selector:
- app: edge-monitoring-server
- ports:
- - port: 80
- targetPort: 80
- protocol: TCP
- name: server
----
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: edge-monitoring-server
- namespace: edge-monitoring
-spec:
- rules:
- - host: aether.onlab.us
- http:
- paths:
- - backend:
- serviceName: edge-monitoring-server
- servicePort: 80
- path: /edges
diff --git a/edge-monitoring/test_edge_monitoring_server.py b/edge-monitoring/test_edge_monitoring_server.py
index c6a6e03..cf26f88 100755
--- a/edge-monitoring/test_edge_monitoring_server.py
+++ b/edge-monitoring/test_edge_monitoring_server.py
@@ -21,12 +21,13 @@
class MyEvent:
- def __init__ (self, location = "", description = "", summary = "", start = None, end = None):
+ def __init__ (self, location = "", description = "", summary = "", start = None, end = None, all_day = False):
self.location = location
self.description = description
self.summary = summary
self.start = start
self.end = end
+ self.all_day = all_day
class MyEventNoLoc:
def __init__ (self, description = "", summary = ""):
@@ -81,6 +82,22 @@
now = datetime.datetime.now(pytz.utc)
self.assertFalse(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
+ def test_all_day_events(self):
+ events = []
+ events.append(MyEvent(location = "production-edge-onf-menlo",
+ start = datetime.datetime(2020, 9, 2, 0, 0),
+ end = datetime.datetime(2020, 9, 3, 0, 0),
+ all_day = True))
+
+ ems.process_all_day_events(events)
+
+ now = datetime.datetime(2020, 9, 2, 12, 0, tzinfo=pytz.utc)
+ self.assertTrue(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
+
+ now = datetime.datetime(2020, 9, 3, 12, 0, tzinfo=pytz.utc)
+ self.assertFalse(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
+
+
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(TestEdgeMonitoringServer)