示例#1
0
def api_status():
  try:
    from scorpion.util import Status
    rid = int(request.args.get('requestid'))

    status = Status(rid)
    ret = status.latest_status()
    label_rules = status.get_rules()
    status.close()

    partial_rules = []
    for label, rules in label_rules:
      partial_rules.extend(rules)
    rules_hash = hash(str(partial_rules))

    return {
      'status': ret,
      'results': partial_rules,
      'hash': rules_hash
    }
  except Exception as e:
    return {
      'status': str(e),
      'results': []
    }
示例#2
0
def requestid():
  try:
    from scorpion.util import Status
    status = Status()
    requestid = status.reqid
    status.close()
    return {'requestid': requestid}
  except Exception as e:
    return {'error': str(e)}
示例#3
0
def requestid(request):
  if not has_scorpion():
    return {'error': "Scorpion not installed"}

  from scorpion.util import Status
  status = Status()
  requestid = status.reqid
  status.close()
  print "requestid", requestid
  return {'requestid': requestid}
示例#4
0
def requestid(request):
    if not has_scorpion():
        return {'error': "Scorpion not installed"}

    from scorpion.util import Status
    status = Status()
    requestid = status.reqid
    status.close()
    print "requestid", requestid
    return {'requestid': requestid}
示例#5
0
def api_status(request):
    if not has_scorpion():
        return {'error': "Scorpion not installed"}

    from scorpion.util import Status
    rid = int(request.GET.get('requestid'))

    status = Status(rid)
    ret = status.latest_status()
    label_rules = status.get_rules()
    status.close()

    partial_rules = []
    for label, rules in label_rules:
        partial_rules.extend(rules)
    rules_hash = hash(str(partial_rules))

    return {'status': ret, 'results': partial_rules, 'hash': rules_hash}
示例#6
0
def api_status(request):
    if not has_scorpion():
        return {"error": "Scorpion not installed"}

    from scorpion.util import Status

    rid = int(request.GET.get("requestid"))

    status = Status(rid)
    ret = status.latest_status()
    label_rules = status.get_rules()
    status.close()

    partial_rules = []
    for label, rules in label_rules:
        partial_rules.extend(rules)
    rules_hash = hash(str(partial_rules))

    return {"status": ret, "results": partial_rules, "hash": rules_hash}
示例#7
0
def scorpion(request):
  if not has_scorpion():
    print >>sys.stderr, "Could not load scorpionutil.  Maybe scorpion has not been installed?"
    return {'status': "error: could not load scorpion"}

  try:
    data =  json.loads(str(request.GET.get('json')))
    username = request.GET.get('username')
    fake = request.GET.get('fake', False)
    requestid = request.GET.get('requestid')
    if not fake or fake == 'false':

      import core.db.backend.pg as pg
      qjson = data.get('query', {})
      repo = qjson['db']
      qjson['db'] = username
      qjson['table'] = "%s.%s" % (repo, qjson['table'])
      tablename = qjson['table']
      host = pg.host
      port = pg.port
      dburl = "postgresql://%s@%s:%s/%s" % (username,host, port, username)
      engine = create_engine(dburl)
      db = engine.connect()
      import scorpionutil

      try:
        results = scorpionutil.scorpion_run(db, data, requestid)
        return results
      except:
        traceback.print_exc()
        return {}
      finally:
        try:
          db.close()
        except:
          pass
        try:
          engine.dispose()
        except:
          pass


  except:
    traceback.print_exc()
    return {}

  ret = {}
  results = [
    {
      'score': 0.2,
      'c_range': [0, 1],
      'count': 100,
      'clauses': [
        {'col': 'sensor', 'type': 'str', 'vals': map(str, [18])}
      ],
      'alt_rules': [
        [ {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]}]
      ]
    },
    {
      'score': 0.2,
      'c_range': [0, 1],
      'count': 100,
      'clauses': [
        {'col': 'voltage', 'type': 'num', 'vals': [0, 2.15]},
        {'col': 'sensor', 'type': 'str', 'vals': ['18']}
      ],
      'alt_rules': [
        [ {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]},
          {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]} ],
        [ {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]},
          {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]} ]
      ]
    }
  ]

  top_k = [
    {
      'c': 0,
      'score': 0.2,
      'c_range': [0, 0],
      'count': 100,
      'clauses': [
        {'col': 'sensor', 'type': 'str', 'vals': map(str, [18])}
      ]
    },
    {
      'c': 0,
      'score': 0.2,
      'c_range': [0, 0],
      'count': 100,
      'clauses': [
        {'col': 'voltage', 'type': 'num', 'vals': [0, 2.15]},
        {'col': 'sensor', 'type': 'str', 'vals': ['18']}
      ]
    },
    {
      'c': 0.5,
      'score': 0.2,
      'c_range': [0.5, .5],
      'count': 100,
      'clauses': [
        {'col': 'sensor', 'type': 'str', 'vals': map(str, [18, 15])}
      ]
    },
    {
      'c': 0.5,
      'score': 0.2,
      'c_range': [0.5, .5],
      'count': 100,
      'clauses': [
        {'col': 'voltage', 'type': 'num', 'vals': [-5, 2.5]},
        {'col': 'sensor', 'type': 'str', 'vals': ['18', '15']}
      ]
    },
    {
      'c': 1.0,
      'score': 0.2,
      'c_range': [1.0, 1.0],
      'count': 100,
      'clauses': [
        {'col': 'sensor', 'type': 'str', 'vals': map(str, [18, 30, 35])}
      ]
    },
    {
      'c': 1.0,
      'score': 0.2,
      'c_range': [1.0, 1.0],
      'count': 100,
      'clauses': [
        {'col': 'humidity', 'type': 'num', 'vals': [-100, 40]},
        {'col': 'sensor', 'type': 'str', 'vals': ['18', '19']}
      ]
    }

  ]

  from scorpion.util import Status
  status = Status(requestid)
  status.update_rules('label', results)
  status.close()

  time.sleep(1)

  ret['results'] = results
  ret['top_k_results'] = top_k
  return ret
示例#8
0
def scorpion(request):
    if not has_scorpion():
        print >> sys.stderr, "Could not load scorpionutil.  Maybe scorpion has not been installed?"
        return {'status': "error: could not load scorpion"}

    try:
        data = json.loads(str(request.GET.get('json')))
        username = request.GET.get('username')
        fake = request.GET.get('fake', False)
        requestid = request.GET.get('requestid')
        if not fake or fake == 'false':

            import core.db.backend.pg as pg
            qjson = data.get('query', {})
            repo = qjson['db']
            qjson['db'] = username
            qjson['table'] = "%s.%s" % (repo, qjson['table'])
            tablename = qjson['table']
            host = pg.host
            port = pg.port
            dburl = "postgresql://%s@%s:%s/%s" % (username, host, port,
                                                  username)
            engine = create_engine(dburl)
            db = engine.connect()
            import scorpionutil

            try:
                results = scorpionutil.scorpion_run(db, data, requestid)
                return results
            except:
                traceback.print_exc()
                return {}
            finally:
                try:
                    db.close()
                except:
                    pass
                try:
                    engine.dispose()
                except:
                    pass

    except:
        traceback.print_exc()
        return {}

    ret = {}
    results = [{
        'score':
        0.2,
        'c_range': [0, 1],
        'count':
        100,
        'clauses': [{
            'col': 'sensor',
            'type': 'str',
            'vals': map(str, [18])
        }],
        'alt_rules': [[{
            'col': 'humidity',
            'type': 'num',
            'vals': [0, 1.4]
        }]]
    }, {
        'score':
        0.2,
        'c_range': [0, 1],
        'count':
        100,
        'clauses': [{
            'col': 'voltage',
            'type': 'num',
            'vals': [0, 2.15]
        }, {
            'col': 'sensor',
            'type': 'str',
            'vals': ['18']
        }],
        'alt_rules': [[{
            'col': 'humidity',
            'type': 'num',
            'vals': [0, 1.4]
        }, {
            'col': 'humidity',
            'type': 'num',
            'vals': [0, 1.4]
        }],
                      [{
                          'col': 'humidity',
                          'type': 'num',
                          'vals': [0, 1.4]
                      }, {
                          'col': 'humidity',
                          'type': 'num',
                          'vals': [0, 1.4]
                      }]]
    }]

    top_k = [{
        'c':
        0,
        'score':
        0.2,
        'c_range': [0, 0],
        'count':
        100,
        'clauses': [{
            'col': 'sensor',
            'type': 'str',
            'vals': map(str, [18])
        }]
    }, {
        'c':
        0,
        'score':
        0.2,
        'c_range': [0, 0],
        'count':
        100,
        'clauses': [{
            'col': 'voltage',
            'type': 'num',
            'vals': [0, 2.15]
        }, {
            'col': 'sensor',
            'type': 'str',
            'vals': ['18']
        }]
    }, {
        'c':
        0.5,
        'score':
        0.2,
        'c_range': [0.5, .5],
        'count':
        100,
        'clauses': [{
            'col': 'sensor',
            'type': 'str',
            'vals': map(str, [18, 15])
        }]
    }, {
        'c':
        0.5,
        'score':
        0.2,
        'c_range': [0.5, .5],
        'count':
        100,
        'clauses': [{
            'col': 'voltage',
            'type': 'num',
            'vals': [-5, 2.5]
        }, {
            'col': 'sensor',
            'type': 'str',
            'vals': ['18', '15']
        }]
    }, {
        'c':
        1.0,
        'score':
        0.2,
        'c_range': [1.0, 1.0],
        'count':
        100,
        'clauses': [{
            'col': 'sensor',
            'type': 'str',
            'vals': map(str, [18, 30, 35])
        }]
    }, {
        'c':
        1.0,
        'score':
        0.2,
        'c_range': [1.0, 1.0],
        'count':
        100,
        'clauses': [{
            'col': 'humidity',
            'type': 'num',
            'vals': [-100, 40]
        }, {
            'col': 'sensor',
            'type': 'str',
            'vals': ['18', '19']
        }]
    }]

    from scorpion.util import Status
    status = Status(requestid)
    status.update_rules('label', results)
    status.close()

    time.sleep(1)

    ret['results'] = results
    ret['top_k_results'] = top_k
    return ret
示例#9
0
def scorpion():
  try:
    import scorpionutil
  except:
    print >>sys.stderr, "Could not load scorpionutil.  Maybe scorpion has not been installed?"
    traceback.print_exc()
    return {}

  try:
    data =  json.loads(str(request.form['json']))
    fake = request.form.get('fake', False)
    requestid = request.form.get('requestid')
    if not fake or fake == 'false':
      results = scorpionutil.scorpion_run(g.db, data, requestid)
      return results
  except:
    return {}

  ret = {}
  results = [
    {
      'score': 0.2,
      'c_range': [0, 1],
      'count': 100,
      'clauses': [
        {'col': 'sensor', 'type': 'str', 'vals': map(str, [18])}
      ],
      'alt_rules': [
        [ {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]}]
      ]
    },
    {
      'score': 0.2,
      'c_range': [0, 1],
      'count': 100,
      'clauses': [
        {'col': 'voltage', 'type': 'num', 'vals': [0, 2.15]},
        {'col': 'sensor', 'type': 'str', 'vals': ['18']}
      ],
      'alt_rules': [
        [ {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]},
          {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]} ],
        [ {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]},
          {'col': 'humidity', 'type': 'num', 'vals': [0, 1.4]} ]
      ]
    }
  ]

  top_k = [
    {
      'c': 0,
      'score': 0.2,
      'c_range': [0, 0],
      'count': 100,
      'clauses': [
        {'col': 'sensor', 'type': 'str', 'vals': map(str, [18])}
      ]
    },
    {
      'c': 0,
      'score': 0.2,
      'c_range': [0, 0],
      'count': 100,
      'clauses': [
        {'col': 'voltage', 'type': 'num', 'vals': [0, 2.15]},
        {'col': 'sensor', 'type': 'str', 'vals': ['18']}
      ]
    },
    {
      'c': 0.5,
      'score': 0.2,
      'c_range': [0.5, .5],
      'count': 100,
      'clauses': [
        {'col': 'sensor', 'type': 'str', 'vals': map(str, [18, 15])}
      ]
    },
    {
      'c': 0.5,
      'score': 0.2,
      'c_range': [0.5, .5],
      'count': 100,
      'clauses': [
        {'col': 'voltage', 'type': 'num', 'vals': [-5, 2.5]},
        {'col': 'sensor', 'type': 'str', 'vals': ['18', '15']}
      ]
    },
    {
      'c': 1.0,
      'score': 0.2,
      'c_range': [1.0, 1.0],
      'count': 100,
      'clauses': [
        {'col': 'sensor', 'type': 'str', 'vals': map(str, [18, 30, 35])}
      ]
    },
    {
      'c': 1.0,
      'score': 0.2,
      'c_range': [1.0, 1.0],
      'count': 100,
      'clauses': [
        {'col': 'humidity', 'type': 'num', 'vals': [-100, 40]},
        {'col': 'sensor', 'type': 'str', 'vals': ['18', '19']}
      ]
    }

  ]

  from scorpion.util import Status
  status = Status(requestid)
  status.update_rules('label', results)
  status.close()

  time.sleep(1)

  ret['results'] = results
  ret['top_k_results'] = top_k
  return ret
示例#10
0
def scorpion(request):
    if not has_scorpion():
        print >> sys.stderr, "Could not load scorpionutil.  Maybe scorpion has not been installed?"
        return {"status": "error: could not load scorpion"}

    try:
        data = json.loads(str(request.GET.get("json")))
        username = request.GET.get("username")
        fake = request.GET.get("fake", False)
        requestid = request.GET.get("requestid")
        if not fake or fake == "false":

            import core.db.backend.pg as pg

            qjson = data.get("query", {})
            repo = qjson["db"]
            qjson["db"] = username
            qjson["table"] = "%s.%s" % (repo, qjson["table"])
            tablename = qjson["table"]
            host = pg.host
            port = pg.port
            dburl = "postgresql://%s@%s:%s/%s" % (username, host, port, username)
            engine = create_engine(dburl)
            db = engine.connect()
            import scorpionutil

            try:
                results = scorpionutil.scorpion_run(db, data, requestid)
                return results
            except:
                traceback.print_exc()
                return {}
            finally:
                try:
                    db.close()
                except:
                    pass
                try:
                    engine.dispose()
                except:
                    pass

    except:
        traceback.print_exc()
        return {}

    ret = {}
    results = [
        {
            "score": 0.2,
            "c_range": [0, 1],
            "count": 100,
            "clauses": [{"col": "sensor", "type": "str", "vals": map(str, [18])}],
            "alt_rules": [[{"col": "humidity", "type": "num", "vals": [0, 1.4]}]],
        },
        {
            "score": 0.2,
            "c_range": [0, 1],
            "count": 100,
            "clauses": [
                {"col": "voltage", "type": "num", "vals": [0, 2.15]},
                {"col": "sensor", "type": "str", "vals": ["18"]},
            ],
            "alt_rules": [
                [
                    {"col": "humidity", "type": "num", "vals": [0, 1.4]},
                    {"col": "humidity", "type": "num", "vals": [0, 1.4]},
                ],
                [
                    {"col": "humidity", "type": "num", "vals": [0, 1.4]},
                    {"col": "humidity", "type": "num", "vals": [0, 1.4]},
                ],
            ],
        },
    ]

    top_k = [
        {
            "c": 0,
            "score": 0.2,
            "c_range": [0, 0],
            "count": 100,
            "clauses": [{"col": "sensor", "type": "str", "vals": map(str, [18])}],
        },
        {
            "c": 0,
            "score": 0.2,
            "c_range": [0, 0],
            "count": 100,
            "clauses": [
                {"col": "voltage", "type": "num", "vals": [0, 2.15]},
                {"col": "sensor", "type": "str", "vals": ["18"]},
            ],
        },
        {
            "c": 0.5,
            "score": 0.2,
            "c_range": [0.5, 0.5],
            "count": 100,
            "clauses": [{"col": "sensor", "type": "str", "vals": map(str, [18, 15])}],
        },
        {
            "c": 0.5,
            "score": 0.2,
            "c_range": [0.5, 0.5],
            "count": 100,
            "clauses": [
                {"col": "voltage", "type": "num", "vals": [-5, 2.5]},
                {"col": "sensor", "type": "str", "vals": ["18", "15"]},
            ],
        },
        {
            "c": 1.0,
            "score": 0.2,
            "c_range": [1.0, 1.0],
            "count": 100,
            "clauses": [{"col": "sensor", "type": "str", "vals": map(str, [18, 30, 35])}],
        },
        {
            "c": 1.0,
            "score": 0.2,
            "c_range": [1.0, 1.0],
            "count": 100,
            "clauses": [
                {"col": "humidity", "type": "num", "vals": [-100, 40]},
                {"col": "sensor", "type": "str", "vals": ["18", "19"]},
            ],
        },
    ]

    from scorpion.util import Status

    status = Status(requestid)
    status.update_rules("label", results)
    status.close()

    time.sleep(1)

    ret["results"] = results
    ret["top_k_results"] = top_k
    return ret