Exemple #1
0
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"])
Exemple #2
0
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()
Exemple #3
0
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"
Exemple #4
0
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()
Exemple #5
0
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"
Exemple #6
0
  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])
Exemple #7
0
    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])
Exemple #8
0
  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
Exemple #9
0
    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
Exemple #10
0
  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"])
Exemple #11
0
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"])