def approveSliver (request, logger): try: jsonValidate(request.json, [("sliver_urn", (unicode,str)), ("priority", int)], logger) if (not request.json.has_key("sliver_urn")) or (not request.json.has_key("priority")): return jsonify({"exception" : "You must specify a sliver_urn and priority"}) slice_name = GeniDB.getFlowvisorSliceName(sliver_urn=request.json["sliver_urn"]) if FV.sliceExists(slice_name): return jsonify({"Fault" : "Flowvisor slice '%s' already exists" % (slice_name)}) sobj = GeniDB.getSliverObj(request.json["sliver_urn"]) GeniDB.setSliverStatus(request.json["sliver_urn"], True) GeniDB.setSliverPriority(request.json["sliver_urn"], request.json["priority"]) GeniDB.commit() foam.geni.approval.AppData.addSliver(sobj) sobj.createSlice() sobj.insertFlowspace(request.json["priority"]) sobj.insertVirtualLink() data = GeniDB.getSliverData(sobj.getURN(), True) foam.task.emailApproveSliver(data) return jsonify(None) except JSONValidationError, e: jd = e.__json__() return jsonify(jd, code = 1, msg = jd["exception"])
def deleteSliver (slice_urn = None, sliver_urn = None): slice_name = GeniDB.getFlowvisorSliceName(slice_urn=slice_urn, sliver_urn = sliver_urn) if FV.sliceExists(slice_name): # stats = FV.getCombinedStats(slice_name) # GeniDB.insertFinalStats(slice_urn, stats) FV.deleteSlice(slice_name) GeniDB.deleteSliver(slice_urn=slice_urn, sliver_urn=sliver_urn) foam.geni.approval.rebuildDB()
def getSliverStatus (sliver_urn): try: slice_name = GeniDB.getFlowvisorSliceName(sliver_urn=sliver_urn) if FV.sliceExists(slice_name): return "ready" else: return "configuring" except Exception, e: return "failed"
def deleteSliver(slice_urn=None, sliver_urn=None): slice_name = GeniDB.getFlowvisorSliceName(slice_urn=slice_urn, sliver_urn=sliver_urn) if FV.sliceExists(slice_name): # stats = FV.getCombinedStats(slice_name) # GeniDB.insertFinalStats(slice_urn, stats) FV.deleteSlice(slice_name) GeniDB.deleteSliver(slice_urn=slice_urn, sliver_urn=sliver_urn) foam.geni.approval.rebuildDB()
def getSliverStatus(sliver_urn): try: slice_name = GeniDB.getFlowvisorSliceName(sliver_urn=sliver_urn) if FV.sliceExists(slice_name): return "ready" else: return "configuring" except Exception, e: return "failed"
def getEnabled (self, sliver_urn, deleted = False): from foam.flowvisor import Connection as FV s = select([slivers], and_(slivers.c.sliver_urn==sliver_urn, slivers.c.deleted==deleted)) conn = self.connection() result = conn.execute(s) row = result.first() if not row: raise UnknownSliver(sliver_urn) return FV.sliceExists(row[slivers.c.fvslicename])
def getEnabled(self, sliver_urn, deleted=False): from foam.flowvisor import Connection as FV s = select([slivers], and_(slivers.c.sliver_urn == sliver_urn, slivers.c.deleted == deleted)) conn = self.connection() result = conn.execute(s) row = result.first() if not row: raise UnknownSliver(sliver_urn) return FV.sliceExists(row[slivers.c.fvslicename])
def makeSliverDataDict (self, row, include_obj = True): from foam.flowvisor import Connection as FV data = {"id" : row[slivers.c.id], "slice_urn" : row[slivers.c.slice_urn], "sliver_urn" : row[slivers.c.sliver_urn], "flowvisor_slice" : row[slivers.c.fvslicename], "enabled" : FV.sliceExists(row[slivers.c.fvslicename]), "expiration" : str(row[slivers.c.expiration]), "creation" : str(row[slivers.c.creation]), "status" : self.xlateSliverStatus(row[slivers.c.status]), "deleted" : str(row[slivers.c.deleted])} if include_obj: slobj = row[slivers.c.parsed_obj] if slobj: # Imported slivers don't have sliver objs objdata = slobj.getDataDict(False) data.update(objdata) return data
def makeSliverDataDict(self, row, include_obj=True): from foam.flowvisor import Connection as FV data = { "id": row[slivers.c.id], "slice_urn": row[slivers.c.slice_urn], "sliver_urn": row[slivers.c.sliver_urn], "flowvisor_slice": row[slivers.c.fvslicename], "enabled": FV.sliceExists(row[slivers.c.fvslicename]), "expiration": str(row[slivers.c.expiration]), "creation": str(row[slivers.c.creation]), "status": self.xlateSliverStatus(row[slivers.c.status]), "deleted": str(row[slivers.c.deleted]) } if include_obj: slobj = row[slivers.c.parsed_obj] if slobj: # Imported slivers don't have sliver objs objdata = slobj.getDataDict(False) data.update(objdata) return data
def rejectSliver (self): if not request.json: return try: self.validate(request.json, [("sliver_urn", (unicode,str))]) slice_name = GeniDB.getFlowvisorSliceName(sliver_urn=request.json["sliver_urn"]) sobj = GeniDB.getSliverObj(request.json["sliver_urn"]) data = GeniDB.getSliverData(sobj.getURN(), True) GeniDB.setSliverStatus(request.json["sliver_urn"], False) if FV.sliceExists(slice_name): FV.deleteSlice(slice_name) foam.task.emailRejectSliver(data) return jsonify(None) except JSONValidationError, e: jd = e.__json__() return jsonify(jd, code = 1, msg = jd["exception"])
def approveSliver(request, logger): try: jsonValidate(request.json, [("sliver_urn", (unicode, str)), ("priority", int)], logger) if (not request.json.has_key("sliver_urn")) or ( not request.json.has_key("priority")): return jsonify( {"exception": "You must specify a sliver_urn and priority"}) slice_name = GeniDB.getFlowvisorSliceName( sliver_urn=request.json["sliver_urn"]) if FV.sliceExists(slice_name): return jsonify({ "Fault": "Flowvisor slice '%s' already exists" % (slice_name) }) sobj = GeniDB.getSliverObj(request.json["sliver_urn"]) GeniDB.setSliverStatus(request.json["sliver_urn"], True) GeniDB.setSliverPriority(request.json["sliver_urn"], request.json["priority"]) GeniDB.commit() foam.geni.approval.AppData.addSliver(sobj) sobj.createSlice() sobj.insertFlowspace(request.json["priority"]) sobj.insertVirtualLink() data = GeniDB.getSliverData(sobj.getURN(), True) foam.task.emailApproveSliver(data) return jsonify(None) except JSONValidationError, e: jd = e.__json__() return jsonify(jd, code=1, msg=jd["exception"])