aboutsummaryrefslogtreecommitdiffstats
path: root/src/workflow/models.py
diff options
context:
space:
mode:
authorParker Berberian <pberberian@iol.unh.edu>2019-01-03 16:09:13 +0000
committerGerrit Code Review <gerrit@opnfv.org>2019-01-03 16:09:13 +0000
commitfdf6f46f9c548c8e3748f32840d3af2cb3335271 (patch)
tree6db479ec0c22d98a99e07b9f0a5a14e24a303a89 /src/workflow/models.py
parentb729dd4e21e90fe6f83b31cabdcc9f74757c70bd (diff)
parentf27e25c199c3c5c9433463732b776ae9b4357cf8 (diff)
Merge "Implement Segmented Workflows"
Diffstat (limited to 'src/workflow/models.py')
-rw-r--r--src/workflow/models.py51
1 files changed, 39 insertions, 12 deletions
diff --git a/src/workflow/models.py b/src/workflow/models.py
index 73a142e..495ce07 100644
--- a/src/workflow/models.py
+++ b/src/workflow/models.py
@@ -10,6 +10,7 @@
from django.shortcuts import render
from django.contrib import messages
+from django.http import HttpResponse
import yaml
import requests
@@ -141,7 +142,6 @@ class BookingAuthManager():
class WorkflowStep(object):
-
template = 'bad_request.html'
title = "Generic Step"
description = "You were led here by mistake"
@@ -189,9 +189,11 @@ class Confirmation_Step(WorkflowStep):
description = "Does this all look right?"
def get_vlan_warning(self):
- grb = self.repo_get(self.repo.BOOKING_SELECTED_GRB, False)
+ grb = self.repo_get(self.repo.SELECTED_GRESOURCE_BUNDLE, False)
if not grb:
return 0
+ if self.repo.BOOKING_MODELS not in self.repo.el:
+ return 0
vlan_manager = grb.lab.vlan_manager
if vlan_manager is None:
return 0
@@ -233,9 +235,10 @@ class Confirmation_Step(WorkflowStep):
errors = self.flush_to_db()
if errors:
messages.add_message(request, messages.ERROR, "ERROR OCCURRED: " + errors)
- return render(request, self.template, context)
- messages.add_message(request, messages.SUCCESS, "Confirmed")
- return render(request, self.template, context)
+ else:
+ messages.add_message(request, messages.SUCCESS, "Confirmed")
+
+ return HttpResponse('')
elif data == "False":
context["bypassed"] = "true"
messages.add_message(request, messages.SUCCESS, "Canceled")
@@ -251,7 +254,7 @@ class Confirmation_Step(WorkflowStep):
pass
def translate_vlans(self):
- grb = self.repo_get(self.repo.BOOKING_SELECTED_GRB, False)
+ grb = self.repo_get(self.repo.SELECTED_GRESOURCE_BUNDLE, False)
if not grb:
return 0
vlan_manager = grb.lab.vlan_manager
@@ -285,6 +288,7 @@ class Repository():
RESOURCE_SELECT = "resource_select"
CONFIRMATION = "confirmation"
SELECTED_GRESOURCE_BUNDLE = "selected generic bundle pk"
+ SELECTED_CONFIG_BUNDLE = "selected config bundle pk"
GRESOURCE_BUNDLE_MODELS = "generic_resource_bundle_models"
GRESOURCE_BUNDLE_INFO = "generic_resource_bundle_info"
BOOKING = "booking"
@@ -292,8 +296,6 @@ class Repository():
GRB_LAST_HOSTLIST = "grb_network_previous_hostlist"
BOOKING_FORMS = "booking_forms"
SWCONF_HOSTS = "swconf_hosts"
- SWCONF_SELECTED_GRB = "swconf_selected_grb_pk"
- BOOKING_SELECTED_GRB = "booking_selected_grb_pk"
BOOKING_MODELS = "booking models"
CONFIG_MODELS = "configuration bundle models"
SESSION_USER = "session owner user account"
@@ -307,6 +309,22 @@ class Repository():
SNAPSHOT_DESC = "description of the snapshot"
BOOKING_INFO_FILE = "the INFO.yaml file for this user's booking"
+ #migratory elements of segmented workflow
+ #each of these is the end result of a different workflow.
+ HAS_RESULT = "whether or not workflow has a result"
+ RESULT_KEY = "key for target index that result will be put into in parent"
+ RESULT = "result object from workflow"
+
+ def get_child_defaults(self):
+ return_tuples = []
+ for key in [self.SELECTED_GRESOURCE_BUNDLE, self.SESSION_USER]:
+ return_tuples.append((key, self.el.get(key)))
+ return return_tuples
+
+ def set_defaults(self, defaults):
+ for key, value in defaults:
+ self.el[key] = value
+
def get(self, key, default, id):
self.add_get_history(key, id)
return self.el.get(key, default)
@@ -337,11 +355,19 @@ class Repository():
errors = self.make_generic_resource_bundle()
if errors:
return errors
+ else:
+ self.el[self.HAS_RESULT] = True
+ self.el[self.RESULT_KEY] = self.SELECTED_GRESOURCE_BUNDLE
+ return
if self.CONFIG_MODELS in self.el:
errors = self.make_software_config_bundle()
if errors:
return errors
+ else:
+ self.el[self.HAS_RESULT] = True
+ self.el[self.RESULT_KEY] = self.SELECTED_CONFIG_BUNDLE
+ return
if self.BOOKING_MODELS in self.el:
errors = self.make_booking()
@@ -434,7 +460,7 @@ class Repository():
else:
return "GRB no models given. CODE:0x0001"
- self.el[self.VALIDATED_MODEL_GRB] = bundle
+ self.el[self.RESULT] = bundle
return False
def make_software_config_bundle(self):
@@ -472,15 +498,15 @@ class Repository():
else:
pass
- self.el[self.VALIDATED_MODEL_CONFIG] = bundle
+ self.el[self.RESULT] = bundle
return False
def make_booking(self):
models = self.el[self.BOOKING_MODELS]
owner = self.el[self.SESSION_USER]
- if self.BOOKING_SELECTED_GRB in self.el:
- selected_grb = self.el[self.BOOKING_SELECTED_GRB]
+ if self.SELECTED_GRESOURCE_BUNDLE in self.el:
+ selected_grb = self.el[self.SELECTED_GRESOURCE_BUNDLE]
else:
return "BOOK, no selected resource. CODE:0x000e"
@@ -570,5 +596,6 @@ class Repository():
def __init__(self):
self.el = {}
self.el[self.CONFIRMATION] = {}
+ self.el["active_step"] = 0
self.get_history = {}
self.put_history = {}