cpu resource control via rest api + unittest including ELAN test
diff --git a/src/emuvim/api/rest/compute.py b/src/emuvim/api/rest/compute.py
index c3680a0..f0c8954 100755
--- a/src/emuvim/api/rest/compute.py
+++ b/src/emuvim/api/rest/compute.py
@@ -48,8 +48,13 @@
"""
global dcs
- def put(self, dc_label, compute_name):
+ def put(self, dc_label, compute_name, resource=None, value=None):
+ # check if resource update
+ if resource and value:
+ c = self._update_resource(dc_label, compute_name, resource, value)
+ return c.getStatus(), 200
+ # deploy new container
# check if json data is a dict
data = request.json
if data is None:
@@ -72,6 +77,20 @@
logging.exception("API error.")
return ex.message, 500
+ def _update_resource(self, dc_label, compute_name, resource, value):
+ #check if container exists
+ d = dcs.get(dc_label).net.getNodeByName(compute_name)
+ if resource == 'cpu':
+ cpu_period = int(dcs.get(dc_label).net.cpu_period)
+ cpu_quota = int(cpu_period * float(value))
+ #put default values back
+ if float(value) <= 0:
+ cpu_period = 100000
+ cpu_quota = -1
+ d.updateCpuLimit(cpu_period=cpu_period, cpu_quota=cpu_quota)
+ return d
+
+
def get(self, dc_label, compute_name):
logging.debug("API CALL: compute status")
diff --git a/src/emuvim/api/rest/rest_api_endpoint.py b/src/emuvim/api/rest/rest_api_endpoint.py
index e382f5a..a065e16 100755
--- a/src/emuvim/api/rest/rest_api_endpoint.py
+++ b/src/emuvim/api/rest/rest_api_endpoint.py
@@ -61,7 +61,9 @@
# setup endpoints
- self.api.add_resource(Compute, "/restapi/compute/<dc_label>/<compute_name>")
+ self.api.add_resource(Compute,
+ "/restapi/compute/<dc_label>/<compute_name>",
+ "/restapi/compute/<dc_label>/<compute_name>/<resource>/<value>")
self.api.add_resource(ComputeList,
"/restapi/compute",
"/restapi/compute/<dc_label>")