Skip to content

Commit

Permalink
Merge pull request #264 from mpeuster/dev/emu_cmd_rest
Browse files Browse the repository at this point in the history
Added SON_EMU_CMD functionality to REST API.
  • Loading branch information
peusterm authored Nov 29, 2017
2 parents 25c5501 + 8d53c2b commit 2391503
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/emuvim/api/rest/compute.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
from flask_restful import Resource
from flask import request
import json
import threading
from copy import deepcopy

logging.basicConfig()
Expand Down Expand Up @@ -70,8 +71,30 @@ def put(self, dc_label, compute_name, resource=None, value=None):

try:
logging.debug("API CALL: compute start")
if compute_name is None or compute_name == "None":
logging.error("No compute name defined in request.")
return "No compute name defined in request.", 500, CORS_HEADER
if dc_label is None or dcs.get(dc_label) is None:
logging.error("No datacenter defined in request.")
return "No datacenter defined in request.", 500, CORS_HEADER
c = dcs.get(dc_label).startCompute(
compute_name, image=image, command=command, network=nw_list)
# (if available) trigger emu. entry point given in Dockerfile
try:
config = c.dcinfo.get("Config", dict())
env = config.get("Env", list())
for env_var in env:
var, cmd = map(str.strip, map(str, env_var.split('=', 1)))
logging.debug("%r = %r" % (var , cmd))
if var=="SON_EMU_CMD" or var=="VIM_EMU_CMD":
logging.info("Executing entry point script in %r: %r" % (c.name, cmd))
# execute command in new thread to ensure that API is not blocked by VNF
t = threading.Thread(target=c.cmdPrint, args=(cmd,))
t.daemon = True
t.start()
except Exception as ex:
logging.warning("Couldn't run Docker entry point VIM_EMU_CMD")
logging.exception("Exception:")
# return docker inspect dict
return c.getStatus(), 200, CORS_HEADER
except Exception as ex:
Expand Down

0 comments on commit 2391503

Please sign in to comment.