Code Review
/
laas.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Merge "Fixed all Flake8 errors"
[laas.git]
/
src
/
workflow
/
models.py
diff --git
a/src/workflow/models.py
b/src/workflow/models.py
index
495ce07
..
7dae279
100644
(file)
--- a/
src/workflow/models.py
+++ b/
src/workflow/models.py
@@
-11,6
+11,7
@@
from django.shortcuts import render
from django.contrib import messages
from django.http import HttpResponse
from django.shortcuts import render
from django.contrib import messages
from django.http import HttpResponse
+from django.utils import timezone
import yaml
import requests
import yaml
import requests
@@
-60,15
+61,25
@@
class BookingAuthManager():
def parse_gerrit_url(self, url):
project_leads = []
try:
def parse_gerrit_url(self, url):
project_leads = []
try:
- parts = url.split("/")
+ halfs = url.split("?")
+ parts = halfs[0].split("/")
+ args = halfs[1].split(";")
if "http" in parts[0]: # the url include http(s)://
parts = parts[2:]
if "http" in parts[0]: # the url include http(s)://
parts = parts[2:]
- if "f=INFO.yaml" not in
parts[-1].split(";")
:
+ if "f=INFO.yaml" not in
args
:
return None
if "gerrit.opnfv.org" not in parts[0]:
return None
return None
if "gerrit.opnfv.org" not in parts[0]:
return None
+ try:
+ i = args.index("a=blob")
+ args[i] = "a=blob_plain"
+ except ValueError:
+ pass
+ # recreate url
+ halfs[1] = ";".join(args)
+ halfs[0] = "/".join(parts)
# now to download and parse file
# now to download and parse file
- url = "https://" + "
/".join(part
s)
+ url = "https://" + "
?".join(half
s)
info_file = requests.get(url, timeout=15).text
info_parsed = yaml.load(info_file)
ptl = info_parsed.get('project_lead')
info_file = requests.get(url, timeout=15).text
info_parsed = yaml.load(info_file)
ptl = info_parsed.get('project_lead')
@@
-137,8
+148,11
@@
class BookingAuthManager():
return True # admin override for this user
if repo.BOOKING_INFO_FILE not in repo.el:
return False # INFO file not provided
return True # admin override for this user
if repo.BOOKING_INFO_FILE not in repo.el:
return False # INFO file not provided
- ptl_info = self.parse_url(repo.BOOKING_INFO_FILE)
- return ptl_info and ptl_info == booking.owner.userprofile.email_addr
+ ptl_info = self.parse_url(repo.el.get(repo.BOOKING_INFO_FILE))
+ for ptl in ptl_info:
+ if ptl['email'] == booking.owner.userprofile.email_addr:
+ return True
+ return False
class WorkflowStep(object):
class WorkflowStep(object):
@@
-309,8
+323,8
@@
class Repository():
SNAPSHOT_DESC = "description of the snapshot"
BOOKING_INFO_FILE = "the INFO.yaml file for this user's booking"
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.
+ #
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"
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"
@@
-385,6
+399,8
@@
class Repository():
if not booking_id:
return "SNAP, No booking ID provided"
booking = Booking.objects.get(pk=booking_id)
if not booking_id:
return "SNAP, No booking ID provided"
booking = Booking.objects.get(pk=booking_id)
+ if booking.start > timezone.now() or booking.end < timezone.now():
+ return "Booking is not active"
name = self.el.get(self.SNAPSHOT_NAME)
if not name:
return "SNAP, no name provided"
name = self.el.get(self.SNAPSHOT_NAME)
if not name:
return "SNAP, no name provided"
@@
-400,6
+416,13
@@
class Repository():
image.owner = owner
image.host_type = host.profile
image.save()
image.owner = owner
image.host_type = host.profile
image.save()
+ try:
+ current_image = host.config.image
+ image.os = current_image.os
+ image.save()
+ except Exception:
+ pass
+ JobFactory.makeSnapshotTask(image, booking, host)
def make_generic_resource_bundle(self):
owner = self.el[self.SESSION_USER]
def make_generic_resource_bundle(self):
owner = self.el[self.SESSION_USER]
@@
-435,7
+458,7
@@
class Repository():
try:
interface.host = interface.host
interface.save()
try:
interface.host = interface.host
interface.save()
- except Exception
as e
:
+ except Exception:
return "GRB, saving interface " + str(interface) + " failed. CODE:0x0019"
else:
return "GRB, no interface set provided. CODE:0x001a"
return "GRB, saving interface " + str(interface) + " failed. CODE:0x0019"
else:
return "GRB, no interface set provided. CODE:0x001a"