Пример #1
0
 def create(self):
     with database.database.atomic() as txn:
         cell = Cell()
         if not self._save_cell(cell):
             txn.rollback()
             return False
         for idx, nform in enumerate(self.nodes):
             if not self._save_cnode(nform, None, idx, cell):
                 txn.rollback()
                 return False
     try:
         cell.deploy_conf()
     except Exception as e:
         logger.exceptions(e)
     return True
Пример #2
0
 def create(self):
     with database.database.atomic() as txn:
         cell = Cell()
         if not self._save_cell(cell):
             txn.rollback()
             return False
         for idx, nform in enumerate(self.nodes):
             if not self._save_cnode(nform, None, idx, cell):
                 txn.rollback()
                 return False
     try:
         cell.deploy_conf()
     except Exception as e:
         logger.exceptions(e)
     return True
Пример #3
0
 def _cell_status(self):
     cell_name = self.target.name
     from cellconfig.model import Cell
     cell = Cell.select().where(Cell.name == cell_name).first()
     try:
         st = self._get_status(
             self.target.group.cell.name,
             '/RAS/{}/{}'.format(cell.get_appname(), cell.name), cell.nodes)
         if st['running'] == st['total']:
             status = 'running'
         elif st['running'] == 0:
             status = 'stopped'
         elif st['running'] >= (st['total'] + 1) // 2:
             status = 'warning'
         else:
             status = 'error'
         st.update({'cid': cell.id, 'name': cell.name, 'status': status})
         return st
     except Exception as e:
         logger.exception(e)
         return {
             'cid': cell.id,
             'name': cell.name,
             'status': 'unknown',
             'total': len(cell.nodes)
         }
Пример #4
0
def api_cnode_state_by_name(name, no):
    query = Cell.select().where(Cell.name == name)
    try:
        id = query[0].id
    except:
        abort(404)
    return api_cnode_state(id, no)
Пример #5
0
def api_cnode_state_by_name(name, no):
    query = Cell.select().where(Cell.name == name)
    try:
        id = query[0].id
    except:
        abort(404)
    return api_cnode_state(id, no)
Пример #6
0
def api_cell_detail_by_name(name):
    query = Cell.select().where(Cell.name == name)
    try:
        id = query[0].id
    except:
        abort(404)
    return api_cell_detail(id)
Пример #7
0
def query_cell_all_list():
    query = Cell.select().dicts()
    cell_list = []
    for cell in query:
        cell_list.append(cell)
        cell['url'] = url_for('api_cell_detail', id=cell['id'], _external=True)
    return jsonify(cell=cell_list)
Пример #8
0
 def _update_selectfield(self):
     registerd = RasTarget.select(
         RasTarget.name).where(RasTarget.type == 'cell')
     self.cell.choices = [
         (c.id, c.name)
         for c in Cell.select().where(Cell.name.not_in(registerd))
     ]
Пример #9
0
def api_cell_detail_by_name(name):
    query = Cell.select().where(Cell.name == name)
    try:
        id = query[0].id
    except:
        abort(404)
    return api_cell_detail(id)
Пример #10
0
 def obj2dict(cls, obj):
     cell = Cell.select().where(Cell.name == obj.name).first()
     logger.debug("CELL ID: {}".format(cell.id))
     return {
         'type': 'cell',
         'cell': cell.id,
         'comment': obj.comment,
     }
Пример #11
0
 def obj2dict(cls, obj):
     cell = Cell.select().where(Cell.name == obj.name).first()
     logger.debug("CELL ID: {}".format(cell.id))
     return {
         'type': 'cell',
         'cell': cell.id,
         'comment': obj.comment,
     }
Пример #12
0
def query_cell_all_list():
    query = Cell.select().dicts()
    cell_list = []
    for cell in query:
        cell_list.append(cell)
        cell['url'] = url_for('api_cell_detail', id=cell['id'],
                              _external=True)
    return jsonify(cell=cell_list)
Пример #13
0
def api_cell_misc_data(cid, dtype):
    cell = Cell.get(Cell.id == cid)
    g = [node.get_misc_info_async(dtype) for node in cell.nodes]
    gevent.joinall(g)
    ret = []
    for x in g:
        ret.extend(x.get())
    logger.debug("RET: {}".format(ret))
    return jsonify(ret)
Пример #14
0
def api_cell_misc_data(cid, dtype):
    cell = Cell.get(Cell.id == cid)
    g = [node.get_misc_info_async(dtype) for node in cell.nodes]
    gevent.joinall(g)
    ret = []
    for x in g:
        ret.extend(x.get())
    logger.debug("RET: {}".format(ret))
    return jsonify(ret)
Пример #15
0
def cell_list():
    if request.method == 'GET':
        cells = Cell.select().where(Cell.type != 'RAS')
        return render_template('cell_list.html', cells=cells)
    elif request.method == 'POST':
        form = CellForm(request.form)
        if not (form.validate() and form.create()):
            return render_template('cell_create.html', form=form)
        return redirect(url_for('cell_list'))
Пример #16
0
def cell_list():
    if request.method == 'GET':
        cells = Cell.select().where(Cell.type != 'RAS')
        return render_template('cell_list.html', cells=cells)
    elif request.method == 'POST':
        form = CellForm(request.form)
        if not (form.validate() and form.create()):
            return render_template('cell_create.html', form=form)
        return redirect(url_for('cell_list'))
Пример #17
0
 def delete(cls, id):
     with database.database.atomic():
         cell = Cell.get(Cell.id == id)
         try:
             from .ras.forms import RasTargetForm
             RasTargetForm.delete_nonexists_target('cell', cell.name)
         except Exception as e:
             logger.exception(e)
         cell.delete_instance()
         CellNode.delete().where(CellNode.cell == id).execute()
Пример #18
0
 def delete(cls, id):
     with database.database.atomic():
         cell = Cell.get(Cell.id == id)
         try:
             from .ras.forms import RasTargetForm
             RasTargetForm.delete_nonexists_target('cell', cell.name)
         except Exception as e:
             logger.exception(e)
         cell.delete_instance()
         CellNode.delete().where(CellNode.cell == id).execute()
Пример #19
0
def rascell_list():
    if request.method == 'GET':
        cells = Cell.select().where(Cell.type == 'RAS')
        return render_template('ras/cell_list.html', cells=cells)
    elif request.method == 'POST':
        form = RasCellForm(request.form)
        if not form.validate():
            return render_template('ras/cell_create.html', form=form)
        form.create()
        return redirect(url_for('rasgrp_list'))
Пример #20
0
def rascell_list():
    if request.method == 'GET':
        cells = Cell.select().where(Cell.type == 'RAS')
        return render_template('ras/cell_list.html', cells=cells)
    elif request.method == 'POST':
        form = RasCellForm(request.form)
        if not form.validate():
            return render_template('ras/cell_create.html', form=form)
        form.create()
        return redirect(url_for('rasgrp_list'))
Пример #21
0
 def create(self, grpid):
     logger.debug("CREATE: {}".format(grpid))
     tgt = RasTarget()
     cell = Cell.get(Cell.id == self.cell.data)
     tgt.name = cell.name
     tgt.group = grpid
     tgt.type = 'cell'
     tgt.path = '{app}/{cell}'.format(app=cell.get_appname(),
                                      cell=cell.name)
     tgt.comment = self.comment.data
     tgt.save()
Пример #22
0
 def create(self, grpid):
     logger.debug("CREATE: {}".format(grpid))
     tgt = RasTarget()
     cell = Cell.get(Cell.id == self.cell.data)
     tgt.name = cell.name
     tgt.group = grpid
     tgt.type = 'cell'
     tgt.path = '{app}/{cell}'.format(
         app=cell.get_appname(), cell=cell.name)
     tgt.comment = self.comment.data
     tgt.save()
Пример #23
0
 def update(self, id):
     with database.database.atomic() as txn:
         cell = Cell().get(Cell.id == id)
         if not self._save_cell(cell):
             txn.rollback()
             return False
         for cnode in cell.nodes:
             if not self.exists_cnode(cnode):
                 cnode.delete().where(CellNode.id == cnode.id).execute()
         for idx, nform in enumerate(self.nodes):
             node_id = nform.form['node_id'].data
             nid = (int(node_id) if node_id is not None
                    and node_id.isnumeric() else None)
             if not self._save_cnode(nform, nid, idx, cell):
                 txn.rollback()
                 return False
     try:
         cell.deploy_conf()
     except Exception as e:
         logger.exceptions(e)
     return True
Пример #24
0
 def update(self, id):
     with database.database.atomic() as txn:
         cell = Cell().get(Cell.id == id)
         if not self._save_cell(cell):
             txn.rollback()
             return False
         for cnode in cell.nodes:
             if not self.exists_cnode(cnode):
                 cnode.delete().where(CellNode.id == cnode.id).execute()
         for idx, nform in enumerate(self.nodes):
             node_id = nform.form['node_id'].data
             nid = (int(node_id)
                    if node_id is not None and node_id.isnumeric()
                    else None)
             if not self._save_cnode(nform, nid, idx, cell):
                 txn.rollback()
                 return False
     try:
         cell.deploy_conf()
     except Exception as e:
         logger.exceptions(e)
     return True
Пример #25
0
def rasgrp_list():
    if request.method == 'GET':
        if Cell.select().where(Cell.type == 'RAS').count() == 0:
            return redirect(url_for('rascell_list'))
        grps = RasGroup.select()
        return render_template('ras/ras_index.html', groups=grps)
    elif request.method == 'POST':
        form = RasGroupForm(request.form)
        if not form.validate():
            return render_template('ras/group_create.html', form=form)
        logger.debug('URL: {}'.format(request.url_root))
        grp = form.create(request.url_root)
        logger.debug('GROUP: {}'.format(str(grp)))
        return redirect(url_for('rasgrp_list'))
Пример #26
0
def rasgrp_list():
    if request.method == 'GET':
        if Cell.select().where(Cell.type == 'RAS').count() == 0:
            return redirect(url_for('rascell_list'))
        grps = RasGroup.select()
        return render_template('ras/ras_index.html', groups=grps)
    elif request.method == 'POST':
        form = RasGroupForm(request.form)
        if not form.validate():
            return render_template('ras/group_create.html', form=form)
        logger.debug('URL: {}'.format(request.url_root))
        grp = form.create(request.url_root)
        logger.debug('GROUP: {}'.format(str(grp)))
        return redirect(url_for('rasgrp_list'))
Пример #27
0
def cell_event(id):
    cell = Cell.get(Cell.id == id)
    logger.debug("REQUEST: {}".format(cell.name))
    listener = EventListener('cell:status_detail', source=cell.name)
    ev = {'name': 'status_detail', 'target': cell}

    def setup(_callback):
        listener.regist(_callback)
        listener.enable(ev)

    def teardown(_callback):
        listener.unregist(_callback)
        listener.disable(ev)

    return _make_sse_response(_generator(setup, teardown))
Пример #28
0
def cell_event(id):
    cell = Cell.get(Cell.id == id)
    logger.debug("REQUEST: {}".format(cell.name))
    listener = EventListener('cell:status_detail', source=cell.name)
    ev = {'name': 'status_detail', 'target': cell}

    def setup(_callback):
        listener.regist(_callback)
        listener.enable(ev)

    def teardown(_callback):
        listener.unregist(_callback)
        listener.disable(ev)

    return _make_sse_response(_generator(setup, teardown))
Пример #29
0
def cell_detail(id):
    if request.method == 'GET':
        cell = Cell.get(Cell.id == id)
        nstatus = cell.get_node_status()
        nodes = [v for k, v in sorted(nstatus.iteritems())]
        return render_template('cell_show.html', cell=cell, nodes=nodes)
    elif request.method == 'POST':
        if request.form['operation'] == 'Update':
            form = CellForm(request.form)
            if not (form.validate() and form.update(id)):
                return render_template('cell_update.html', form=form, id=id)
        elif request.form['operation'] == 'Delete':
            CellForm.delete(id)
        else:
            abort(400)
        return redirect(url_for('cell_list'))
Пример #30
0
def cell_detail(id):
    if request.method == 'GET':
        cell = Cell.get(Cell.id == id)
        nstatus = cell.get_node_status()
        nodes = [v for k, v in sorted(nstatus.iteritems())]
        return render_template('cell_show.html', cell=cell, nodes=nodes)
    elif request.method == 'POST':
        if request.form['operation'] == 'Update':
            form = CellForm(request.form)
            if not (form.validate() and form.update(id)):
                return render_template('cell_update.html', form=form, id=id)
        elif request.form['operation'] == 'Delete':
            CellForm.delete(id)
        else:
            abort(400)
        return redirect(url_for('cell_list'))
Пример #31
0
def api_cell_op(id, op, params=None):
    cell = Cell.get(Cell.id == id)
    if op == 'start':
        cell.start(params)
        return make_response('', 204)
    elif op == 'stop':
        cell.stop(params)
        return make_response('', 204)
    elif op == 'deploy config':
        cell.deploy_conf()
        return make_response('', 204)
    elif op == 'deploy core':
        for cnode in cell.nodes:
            cnode.node.deploy()
        return make_response('', 204)
    else:
        abort(400, 'bad operation "{0}"'.format(op))
Пример #32
0
def cell_list_event():
    listener = EventListener('cell:status')
    cells = Cell.select()
    events = [{'name': 'status;{}'.format(cell.name), 'target': cell}
              for cell in cells]

    def setup(_callback):
        listener.regist(_callback)
        for ev in events:
            listener.enable(ev)

    def teardown(_callback):
        listener.unregist(_callback)
        for ev in events:
            listener.disable(ev)

    return _make_sse_response(_generator(setup, teardown))
Пример #33
0
def api_cell_op(id, op, params=None):
    cell = Cell.get(Cell.id == id)
    if op == 'start':
        cell.start(params)
        return make_response('', 204)
    elif op == 'stop':
        cell.stop(params)
        return make_response('', 204)
    elif op == 'deploy config':
        cell.deploy_conf()
        return make_response('', 204)
    elif op == 'deploy core':
        for cnode in cell.nodes:
            cnode.node.deploy()
        return make_response('', 204)
    else:
        abort(400, 'bad operation "{0}"'.format(op))
Пример #34
0
def api_cell_detail(id):
    if request.method == 'GET':
        return api_cell_get(id)
    elif request.method == 'DELETE':
        with database.database.atomic():
            cell = Cell.get(Cell.id == id)
            cell.delete_instance(recursive=True)
        return make_response('', 204)
    elif request.method == 'PUT':
        params = request.get_json()
        logger.debug("PUT: {}".format(params))
        if 'op' in params:
            return api_cell_op(id, params['op'], params)
        elif 'cell' in params:
            return api_cell_update(id, params['cell'])
        else:
            abort(400)
    else:
        abort(405)
Пример #35
0
def cell_list_event():
    listener = EventListener('cell:status')
    cells = Cell.select()
    events = [{
        'name': 'status;{}'.format(cell.name),
        'target': cell
    } for cell in cells]

    def setup(_callback):
        listener.regist(_callback)
        for ev in events:
            listener.enable(ev)

    def teardown(_callback):
        listener.unregist(_callback)
        for ev in events:
            listener.disable(ev)

    return _make_sse_response(_generator(setup, teardown))
Пример #36
0
def api_cell_detail(id):
    if request.method == 'GET':
        return api_cell_get(id)
    elif request.method == 'DELETE':
        with database.database.atomic():
            cell = Cell.get(Cell.id == id)
            cell.delete_instance(recursive=True)
        return make_response('', 204)
    elif request.method == 'PUT':
        params = request.get_json()
        logger.debug("PUT: {}".format(params))
        if 'op' in params:
            return api_cell_op(id, params['op'], params)
        elif 'cell' in params:
            return api_cell_update(id, params['cell'])
        else:
            abort(400)
    else:
        abort(405)
Пример #37
0
def api_cell_update(id, jcell):
    with database.database.atomic():
        cell = Cell.get(Cell.id == id)
        jnodes = jcell['nodes']
        del jcell['nodes']
        _update_model(Cell, cell, jcell)
        cell.save()
        cnids = [jcnode['id'] for jcnode in jnodes if 'id' in jcnode]
        for cnode in cell.nodes:
            if cnode.id not in cnids:
                cnode.delete_instance()
        for jcnode in jnodes:
            if 'id' in jcnode:
                cnode = CellNode.get(CellNode.id == jcnode['id'])
                _update_model(CellNode, cnode, jcnode)
            else:
                jcnode['cell'] = cell.id
                cnode = dict_to_model(CellNode, jcnode)
            cnode.save()
        resp = jsonify(cell=_cell_to_dict(cell))
        return resp
Пример #38
0
def api_cell_update(id, jcell):
    with database.database.atomic():
        cell = Cell.get(Cell.id == id)
        jnodes = jcell['nodes']
        del jcell['nodes']
        _update_model(Cell, cell, jcell)
        cell.save()
        cnids = [jcnode['id'] for jcnode in jnodes if 'id' in jcnode]
        for cnode in cell.nodes:
            if cnode.id not in cnids:
                cnode.delete_instance()
        for jcnode in jnodes:
            if 'id' in jcnode:
                cnode = CellNode.get(CellNode.id == jcnode['id'])
                _update_model(CellNode, cnode, jcnode)
            else:
                jcnode['cell'] = cell.id
                cnode = dict_to_model(CellNode, jcnode)
            cnode.save()
        resp = jsonify(cell=_cell_to_dict(cell))
        return resp
Пример #39
0
 def _cell_status(self):
     cell_name = self.target.name
     from cellconfig.model import Cell
     cell = Cell.select().where(Cell.name == cell_name).first()
     try:
         st = self._get_status(
             self.target.group.cell.name,
             '/RAS/{}/{}'.format(cell.get_appname(), cell.name),
             cell.nodes)
         if st['running'] == st['total']:
             status = 'running'
         elif st['running'] == 0:
             status = 'stopped'
         elif st['running'] >= (st['total'] + 1) // 2:
             status = 'warning'
         else:
             status = 'error'
         st.update({'cid': cell.id, 'name': cell.name, 'status': status})
         return st
     except Exception as e:
         logger.exception(e)
         return {'cid': cell.id, 'name': cell.name, 'status': 'unknown',
                 'total': len(cell.nodes)}
Пример #40
0
def _exists_cell(id):
    try:
        cell = Cell.get(Cell.id == id)
    except Cell.DoesNotExist:
        return False
    return True
Пример #41
0
def api_cell_get(id):
    cell = Cell.get(Cell.id == id)
    return cell_get(cell)
Пример #42
0
 def get_cell_name(self, id):
     cell = Cell.get(Cell.id == id)
     return cell.name
Пример #43
0
 def _update_select(self):
     cells = Cell.select().where(Cell.type == 'RAS')
     self.cell.choices = [(c.id, c.name) for c in cells]
Пример #44
0
def api_cell_get(id):
    cell = Cell.get(Cell.id == id)
    return cell_get(cell)
Пример #45
0
def _exists_cell(id):
    try:
        cell = Cell.get(Cell.id == id)
    except Cell.DoesNotExist:
        return False
    return True
Пример #46
0
def cell_delete(id):
    cell = Cell.get(Cell.id == id)
    form = CellForm(obj=cell)
    form.populate_cellnodes(cell.nodes)
    return render_template('cell_delete.html', form=form, id=id)
Пример #47
0
def cell_misc(id):
    cell = Cell.get(Cell.id == id)
    target = request.args['target']

    info0 = []
    if target == 'accept':
        title = (u'クライアント情報', u'クライアント一覧')
        label = [u'#', u'サーバ', u'クライアントアドレス',
                 u'クライアントポート', u'プロセスID', u'セッション番号',
                 u'リクエスト順番号', u'再接続番号', u'試行回数', u'参照数',
                 u'fd', u'接続状態', u'処理開始リクエスト順番号',
                 u'処理終了リクエスト順番号', u'応答済リクエスト順番号',
                 u'コマンド番号', u'送信待ちイベント数',
                 u'イベント即送信可能性', u'生成時刻', u'アクセス時刻']
    elif target == 'FdEvent':
        title = (u'FDイベント情報', u'FDイベント情報')
        label = [u'#', u'サーバ', u'fd', u'FDイベントフラグ']
    elif target == 'out_of_band':
        title = (u'帯域外データ情報', u'帯域外データ一覧')
        label = [u'#', u'サーバ', u'クライアントアドレス',
                 u'クライアントポート', u'プロセスID', u'セッション番号',
                 u'リクエスト順番号', u'再接続番号', u'試行回数', u'検証済',
                 u'データのメモリアドレス', u'PAXOS順番号']
    elif target == 'path':
        title = (u'ディレクトリイベント情報',
                 u'イベント受付先のクライアント一覧')
        label = [u'#', u'サーバ', u'ディレクトリ名', u'参照数',
                 u'クライアントアドレス', u'クライアントポート',
                 u'プロセスID', u'セッション番号', u'リクエスト順番号',
                 u'再接続番号', u'試行回数', u'参照数', u'fd', u'接続状態',
                 u'処理開始リクエスト順番号', u'処理終了リクエスト順番号',
                 u'応答済みリクエスト順番号', u'コマンド番号',
                 u'送信待ちイベント数', u'イベント即送信可能性',
                 u'生成時刻', u'アクセス時刻', u'FD番号', u'イベントビット']
    elif target == 'lock':
        title = (u'ロックイベント情報', u'ロックイベント一覧')
        label = [u'#', u'サーバ', u'ロック名', u'ロック保有者数',
                 u'保有/待機', u'クライアントアドレス', u'クライアントポート',
                 u'プロセスID', u'セッション番号', u'リクエスト順番号',
                 u'再接続番号', u'試行回数', u'参照数', u'fd', u'接続状態',
                 u'処理開始リクエスト順番号', u'処理終了リクエスト順番号',
                 u'応答済みリクエスト順番号', u'コマンド番号',
                 u'送信待ちイベント数', u'イベント即送信可能性',
                 u'生成時刻', u'アクセス時刻', u'FD番号', u'イベントビット']
    elif target == 'queue':
        title = (u'キューイベント一覧', u'キューデータ一覧',
                 u'待機クライアント一覧')
        label = [[u'#', u'サーバ', u'キュー名', u'キューデータ数', u'ACK待ち',
                  u'データ長'],
                 [u'#', u'サーバ', u'キュー名', u'キューデータ数', u'ACK待ち',
                  u'待機種', u'クライアントアドレス', u'クライアントポート',
                  u'プロセスID', u'セッション番号', u'リクエスト順番号',
                  u'再接続番号', u'試行回数', u'参照数', u'fd', u'接続状態',
                  u'処理開始リクエスト順番号', u'処理終了リクエスト順番号',
                  u'応答済みリクエスト順番号', u'コマンド番号',
                  u'送信待ちイベント数', u'イベント即送信可能性',
                  u'生成時刻', u'アクセス時刻', u'FD番号', u'イベントビット']]
        info0 = cell.get_misc_info(target).data
    elif target == 'meta':
        title = (u'メタデータ情報', u'メタデータ一覧')
        label = [u'#', u'サーバ', u'メモリアドレス', u'参照数',
                 u'メタデータ(ファイル)名', u'fd番号', u'ファイルサイズ']
    elif target == 'fd':
        title = (u'Fdデータ情報', u'Fdデータ一覧')
        label = [u'#', u'サーバ', u'メモリアドレス', u'参照数',
                 u'fdデータ(ファイル)名', u'実ファイルのディレクトリ名',
                 u'実ファイルのファイル名(basename)', u'fd番号']
    elif target == 'block':
        title = (u'ブロックキャッシュデータ情報',
                 u'ブロックキャッシュデータ一覧')
        label = [u'#', u'サーバ', u'メモリアドレス', u'参照数', u'ファイル名',
                 u'開始オフセット(バイト)', u'データ長(バイト)', u'フラグ']
    elif target == 'df':
        title = (u'領域空き情報', u'領域空き状態')
        label = [u'#', u'サーバ', u'ファイルシステム', u'総量', u'使用済',
                 u'未使用', u'使用%', u'マウントポイント']
    else:
        abort(400)

    if isinstance(info0, tuple):
        tbl = []
        for i, v in enumerate(info0):
            tbl.append(dict(
                title=title[i + 1],
                label=label[i],
                info=sorted(v, key=lambda x: int(x[0])),
            ))
        return render_template('cell_misc2.html', cell=cell, title=title[0],
                               table=tbl)
    else:
        info = sorted(info0, key=lambda x: int(x[0]))
        return render_template('cell_misc.html', cell=cell, title=title,
                               label=label, info=info)
Пример #48
0
 def _update_select(self):
     cells = Cell.select().where(Cell.type == 'RAS')
     self.cell.choices = [(c.id, c.name) for c in cells]
Пример #49
0
 def get_cell_name(self, id):
     cell = Cell.get(Cell.id == id)
     return cell.name
Пример #50
0
 def tearDown(self):
     CellNode.delete().execute()
     Cell.delete().execute()
     Node.delete().execute()
Пример #51
0
 def _update_selectfield(self):
     registerd = RasTarget.select(RasTarget.name).where(
         RasTarget.type == 'cell')
     self.cell.choices = [
         (c.id, c.name) for c in
         Cell.select().where(Cell.name.not_in(registerd))]
Пример #52
0
def cell_delete(id):
    cell = Cell.get(Cell.id == id)
    form = CellForm(obj=cell)
    form.populate_cellnodes(cell.nodes)
    return render_template('cell_delete.html', form=form, id=id)
Пример #53
0
def cell_misc(id):
    cell = Cell.get(Cell.id == id)
    target = request.args['target']

    info0 = []
    if target == 'accept':
        title = (u'クライアント情報', u'クライアント一覧')
        label = [
            u'#', u'サーバ', u'クライアントアドレス', u'クライアントポート', u'プロセスID', u'セッション番号',
            u'リクエスト順番号', u'再接続番号', u'試行回数', u'参照数', u'fd', u'接続状態',
            u'処理開始リクエスト順番号', u'処理終了リクエスト順番号', u'応答済リクエスト順番号', u'コマンド番号',
            u'送信待ちイベント数', u'イベント即送信可能性', u'生成時刻', u'アクセス時刻'
        ]
    elif target == 'FdEvent':
        title = (u'FDイベント情報', u'FDイベント情報')
        label = [u'#', u'サーバ', u'fd', u'FDイベントフラグ']
    elif target == 'out_of_band':
        title = (u'帯域外データ情報', u'帯域外データ一覧')
        label = [
            u'#', u'サーバ', u'クライアントアドレス', u'クライアントポート', u'プロセスID', u'セッション番号',
            u'リクエスト順番号', u'再接続番号', u'試行回数', u'検証済', u'データのメモリアドレス', u'PAXOS順番号'
        ]
    elif target == 'path':
        title = (u'ディレクトリイベント情報', u'イベント受付先のクライアント一覧')
        label = [
            u'#', u'サーバ', u'ディレクトリ名', u'参照数', u'クライアントアドレス', u'クライアントポート',
            u'プロセスID', u'セッション番号', u'リクエスト順番号', u'再接続番号', u'試行回数', u'参照数',
            u'fd', u'接続状態', u'処理開始リクエスト順番号', u'処理終了リクエスト順番号', u'応答済みリクエスト順番号',
            u'コマンド番号', u'送信待ちイベント数', u'イベント即送信可能性', u'生成時刻', u'アクセス時刻',
            u'FD番号', u'イベントビット'
        ]
    elif target == 'lock':
        title = (u'ロックイベント情報', u'ロックイベント一覧')
        label = [
            u'#', u'サーバ', u'ロック名', u'ロック保有者数', u'保有/待機', u'クライアントアドレス',
            u'クライアントポート', u'プロセスID', u'セッション番号', u'リクエスト順番号', u'再接続番号',
            u'試行回数', u'参照数', u'fd', u'接続状態', u'処理開始リクエスト順番号', u'処理終了リクエスト順番号',
            u'応答済みリクエスト順番号', u'コマンド番号', u'送信待ちイベント数', u'イベント即送信可能性', u'生成時刻',
            u'アクセス時刻', u'FD番号', u'イベントビット'
        ]
    elif target == 'queue':
        title = (u'キューイベント一覧', u'キューデータ一覧', u'待機クライアント一覧')
        label = [[u'#', u'サーバ', u'キュー名', u'キューデータ数', u'ACK待ち', u'データ長'],
                 [
                     u'#', u'サーバ', u'キュー名', u'キューデータ数', u'ACK待ち', u'待機種',
                     u'クライアントアドレス', u'クライアントポート', u'プロセスID', u'セッション番号',
                     u'リクエスト順番号', u'再接続番号', u'試行回数', u'参照数', u'fd', u'接続状態',
                     u'処理開始リクエスト順番号', u'処理終了リクエスト順番号', u'応答済みリクエスト順番号',
                     u'コマンド番号', u'送信待ちイベント数', u'イベント即送信可能性', u'生成時刻',
                     u'アクセス時刻', u'FD番号', u'イベントビット'
                 ]]
        info0 = cell.get_misc_info(target).data
    elif target == 'meta':
        title = (u'メタデータ情報', u'メタデータ一覧')
        label = [
            u'#', u'サーバ', u'メモリアドレス', u'参照数', u'メタデータ(ファイル)名', u'fd番号',
            u'ファイルサイズ'
        ]
    elif target == 'fd':
        title = (u'Fdデータ情報', u'Fdデータ一覧')
        label = [
            u'#', u'サーバ', u'メモリアドレス', u'参照数', u'fdデータ(ファイル)名',
            u'実ファイルのディレクトリ名', u'実ファイルのファイル名(basename)', u'fd番号'
        ]
    elif target == 'block':
        title = (u'ブロックキャッシュデータ情報', u'ブロックキャッシュデータ一覧')
        label = [
            u'#', u'サーバ', u'メモリアドレス', u'参照数', u'ファイル名', u'開始オフセット(バイト)',
            u'データ長(バイト)', u'フラグ'
        ]
    elif target == 'df':
        title = (u'領域空き情報', u'領域空き状態')
        label = [
            u'#', u'サーバ', u'ファイルシステム', u'総量', u'使用済', u'未使用', u'使用%',
            u'マウントポイント'
        ]
    else:
        abort(400)

    if isinstance(info0, tuple):
        tbl = []
        for i, v in enumerate(info0):
            tbl.append(
                dict(
                    title=title[i + 1],
                    label=label[i],
                    info=sorted(v, key=lambda x: int(x[0])),
                ))
        return render_template('cell_misc2.html',
                               cell=cell,
                               title=title[0],
                               table=tbl)
    else:
        info = sorted(info0, key=lambda x: int(x[0]))
        return render_template('cell_misc.html',
                               cell=cell,
                               title=title,
                               label=label,
                               info=info)
Пример #54
0
 def tearDown(self):
     CellNode.delete().execute()
     Cell.delete().execute()
     Node.delete().execute()