summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorParker Berberian <pberberian@iol.unh.edu>2017-12-20 13:30:31 -0500
committerParker Berberian <pberberian@iol.unh.edu>2017-12-20 13:30:31 -0500
commit6f052614f99b9d98731a86d72c67d5dc4dc3e22d (patch)
tree0a37ccce2a474d305759312e7cc2285f0f31725c
parentb8c13cecb4a8a4eff301c6cbc1ffa4d181aae410 (diff)
Allows for manual addition of bookings
JIRA: None The added action takes a booking id from the dashboard and manually adds it to the list of bookings it tracks. This allows us to have a much easier transition to using a fully automated system after manually tracking all bookings. Change-Id: I83ebe2a4aabad2ce7d59b3d80659fc6438fda7f4 Signed-off-by: Parker Berberian <pberberian@iol.unh.edu>
-rw-r--r--laas-fog/pharoslaas/actions/add_booking.py61
-rw-r--r--laas-fog/pharoslaas/actions/add_booking.yaml26
2 files changed, 87 insertions, 0 deletions
diff --git a/laas-fog/pharoslaas/actions/add_booking.py b/laas-fog/pharoslaas/actions/add_booking.py
new file mode 100644
index 0000000..b34c23d
--- /dev/null
+++ b/laas-fog/pharoslaas/actions/add_booking.py
@@ -0,0 +1,61 @@
+##############################################################################
+# Copyright 2017 Parker Berberian and Others #
+# #
+# Licensed under the Apache License, Version 2.0 (the "License"); #
+# you may not use this file except in compliance with the License. #
+# You may obtain a copy of the License at #
+# #
+# http://www.apache.org/licenses/LICENSE-2.0 #
+# #
+# Unless required by applicable law or agreed to in writing, software #
+# distributed under the License is distributed on an "AS IS" BASIS, #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
+# See the License for the specific language governing permissions and #
+# limitations under the License. #
+##############################################################################
+import json
+import requests
+import time
+import calendar
+from st2actions.runners.pythonrunner import Action
+
+
+class Add_Booking_Action(Action):
+
+ def run(self, booking_id):
+ dashboard = self.action_service.get_value(name="dashboard_url")
+ url = dashboard + "api/bookings/" + str(booking_id)
+ try:
+ booking = requests.get(url).json()
+ booking['start'] = self.convert_time(booking['start'])
+ booking['end'] = self.convert_time(booking['end'])
+ booking['status'] = 1
+
+ # add booking id to bookings list
+ bookings = json.loads(
+ self.action_service.get_value(name="bookings", local=False)
+ )
+ if booking['id'] in bookings:
+ return
+ bookings.append(booking['id'])
+ self.action_service.set_value(
+ name="bookings",
+ value=json.dumps(bookings),
+ local=False
+ )
+
+ # add booking to datastore
+ name = "booking_" + str(booking['id'])
+ self.action_service.set_value(
+ name=name,
+ value=json.dumps(booking),
+ local=False
+ )
+
+ except Exception:
+ pass
+
+ def convert_time(self, timestr):
+ time_struct = time.strptime(timestr, '%Y-%m-%dT%H:%M:%SZ')
+ epoch_time = calendar.timegm(time_struct)
+ return epoch_time
diff --git a/laas-fog/pharoslaas/actions/add_booking.yaml b/laas-fog/pharoslaas/actions/add_booking.yaml
new file mode 100644
index 0000000..0851599
--- /dev/null
+++ b/laas-fog/pharoslaas/actions/add_booking.yaml
@@ -0,0 +1,26 @@
+---
+##############################################################################
+# Copyright 2017 Parker Berberian and Others #
+# #
+# Licensed under the Apache License, Version 2.0 (the "License"); #
+# you may not use this file except in compliance with the License. #
+# You may obtain a copy of the License at #
+# #
+# http://www.apache.org/licenses/LICENSE-2.0 #
+# #
+# Unless required by applicable law or agreed to in writing, software #
+# distributed under the License is distributed on an "AS IS" BASIS, #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
+# See the License for the specific language governing permissions and #
+# limitations under the License. #
+##############################################################################
+
+name: add_booking
+enabled: true
+runner_type: python-script
+entry_point: add_booking.py
+parameters:
+ booking:
+ type: string
+ required: true
+ description: "id of booking to add"