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)