def SettingsAction(request, action):

    post_data = request.raw_post_data
    data = json.loads(post_data)
    # TODO add cluster_id in data
    if not len(data):
        status = "error"
        msg = "No server selected"
    else:
        if action == "update":
            #vsmapi.add_servers(request, data)
            try:
                setting_value = int(data['setting_value'])
                if 0 < setting_value < 21600:
                    vsmapi.update_setting(request, data['setting_name'], data['setting_value'])
                    status = "success"
                    msg = "Update Success"
                else:
                    status = "failed"
                    msg = "Update Failed"
            except:
                status = 'failed'
                msg = "Update Failed"
        else:
            LOG.error("error in server action %s" % data)
            status = "error"
            msg = "Invalid params"

    resp = dict(message=msg, status=status, data="")
    resp = json.dumps(resp)
    return HttpResponse(resp)
Beispiel #2
0
def SettingsAction(request, action):
    data = json.loads(request.body)
    # TODO add cluster_id in data
    if not len(data):
        status = "error"
        msg = "No server selected"
    else:
        if action == "update":
            #vsmapi.add_servers(request, data)
            try:
                setting_value = int(data['keyValue'])
                if 0 < setting_value < 21600 or setting_value == 0:
                    vsmapi.update_setting(request, data['keyName'],
                                          data['keyValue'])
                    status = "success"
                    msg = "Update Success"
                else:
                    status = "failed"
                    msg = "Update Failed"
            except:
                status = 'failed'
                msg = "Update Failed"
        else:
            LOG.error("error in server action %s" % data)
            status = "error"
            msg = "Invalid params"

    resp = dict(message=msg, status=status, data="")
    resp = json.dumps(resp)
    return HttpResponse(resp)
Beispiel #3
0
def SettingsAction(request, action):
    data = json.loads(request.body)
    # TODO add cluster_id in data
    if not len(data):
        status = "error"
        msg = "No server selected"
    else:
        if action == "update":
            key_name = data['keyName']
            if key_name == 'pagination':
                response = shortcuts.redirect(request.build_absolute_uri())
                request.session['horizon_pagesize'] = data['keyValue']
                response.set_cookie('horizon_pagesize',
                                    data['keyValue'],
                                    expires=_one_year())
                status = "success"
                msg = "Update Success"
                resp = dict(message=msg, status=status, data="")
                resp = json.dumps(resp)
                return HttpResponse(resp)
            #vsmapi.add_servers(request, data)
            try:
                setting_value = int(data['keyValue'])
                if 0 < setting_value < 21600 or setting_value == 0:
                    vsmapi.update_setting(request, data['keyName'],
                                          data['keyValue'])
                    status = "success"
                    msg = "Update Success"
                else:
                    status = "failed"
                    msg = "Update Failed"
            except:
                status = 'failed'
                msg = "Update Failed"
        else:
            LOG.error("error in server action %s" % data)
            status = "error"
            msg = "Invalid params"

    resp = dict(message=msg, status=status, data="")
    resp = json.dumps(resp)
    return HttpResponse(resp)
Beispiel #4
0
def SettingsAction(request, action):
    data = json.loads(request.body)
    # TODO add cluster_id in data
    if not len(data):
        status = "error"
        msg = "No server selected"
    else:
        if action == "update":
            key_name = data['keyName']
            if key_name == 'pagination':
                response = shortcuts.redirect(request.build_absolute_uri())
                request.session['horizon_pagesize'] = data['keyValue']
                response.set_cookie('horizon_pagesize', data['keyValue'],
                                    expires=_one_year())
                status = "success"
                msg = "Update Success"
                resp = dict(message=msg, status=status, data="")
                resp = json.dumps(resp)
                return HttpResponse(resp)
            #vsmapi.add_servers(request, data)
            try:
                setting_value = int(data['keyValue'])
                if 0 < setting_value < 21600 or setting_value==0:
                    vsmapi.update_setting(request, data['keyName'], data['keyValue'])
                    status = "success"
                    msg = "Update Success"
                else:
                    status = "failed"
                    msg = "Update Failed"
            except:
                status = 'failed'
                msg = "Update Failed"
        else:
            LOG.error("error in server action %s" % data)
            status = "error"
            msg = "Invalid params"

    resp = dict(message=msg, status=status, data="")
    resp = json.dumps(resp)
    return HttpResponse(resp)
    def get_data(self):
        default_limit = 10000;
        default_sort_dir = "asc";
        default_sort_keys = ['osd_name']
        marker = self.request.GET.get('marker', "")
        osd_id = self.request.GET.get('osdid',"-1")
        try:
            _osds = vsmapi.osd_status(self.request, paginate_opts={
                "limit": default_limit,
                "sort_dir": default_sort_dir,
                "marker":   marker,
            })
        except:
            _osds = []
            exceptions.handle(self.request,
                              _('Unable to retrieve osds. '))
        if _osds:
            logging.debug("resp osds in view: %s" % _osds)
        osds = []
        settings = vsmapi.get_setting_dict(self.request)
        if 'disk_near_full_threshold' not in settings.keys():
            vsmapi.update_setting(self.request,'disk_near_full_threshold','75')
        if 'disk_full_threshold' not in settings.keys():
            vsmapi.update_setting(self.request,'disk_full_threshold','85')
        disk_near_full_threshold = int(settings.get('disk_near_full_threshold',75))
        disk_full_threshold = int(settings.get('disk_full_threshold',85))
        for _osd in _osds:
            osd = {
                    'id': _osd.id,
                    'osd': _osd.osd_name,
                    'vsm_status': _osd.operation_status,
                    'osd_state': _osd.state,
                    'osd_weight': _osd.weight,
                    'storage_group': _osd.device['device_type'],
                    'data_dev_path': _osd.device['path'],
                    'data_dev_status': _osd.device['state'],
                    'data_dev_capacity': 0 if not _osd.device['total_capacity_kb']\
            else int(_osd.device['total_capacity_kb']/1024),
                    'data_dev_used': 0 if not _osd.device['used_capacity_kb']\
            else int(_osd.device['used_capacity_kb']/1024),
                    'data_dev_available': 0 if not _osd.device['avail_capacity_kb']\
            else int(_osd.device['avail_capacity_kb']/1024),
                    'journal_device_path': _osd.device['journal'],
                    'journal_device_status': _osd.device['journal_state'], 
                    'server': _osd.service['host'],
                    'zone': _osd.zone,
                    'full_warn': 0
                  }

            if osd['data_dev_capacity']:
                osd['full_status'] = round(osd['data_dev_used'] * 1.0 / osd['data_dev_capacity'] * 100, 2)
                if osd['full_status'] >= disk_near_full_threshold and osd['full_status'] < disk_full_threshold:
                    osd['full_warn'] = 1
                elif osd['full_status'] >=disk_full_threshold:
                    osd['full_warn'] = 2
            else:
                osd['full_status'] = ''
            if osd_id == "-1":
                osds.append(osd)  #all of the deivces
            elif str(_osd.id) == str(osd_id):
                osds.append(osd)  #filter the devices by osd_id
            else:
                pass
        return osds
Beispiel #6
0
    def get_data(self):
        default_limit = 10000
        default_sort_dir = "asc"
        default_sort_keys = ['osd_name']
        marker = self.request.GET.get('marker', "")
        osd_id = self.request.GET.get('osdid', "-1")
        try:
            _osds = vsmapi.osd_status(self.request,
                                      paginate_opts={
                                          "limit": default_limit,
                                          "sort_dir": default_sort_dir,
                                          "marker": marker,
                                      })
        except:
            _osds = []
            exceptions.handle(self.request, _('Unable to retrieve osds. '))
        if _osds:
            logging.debug("resp osds in view: %s" % _osds)
        osds = []
        settings = vsmapi.get_setting_dict(self.request)
        if 'disk_near_full_threshold' not in settings.keys():
            vsmapi.update_setting(self.request, 'disk_near_full_threshold',
                                  '75')
        if 'disk_full_threshold' not in settings.keys():
            vsmapi.update_setting(self.request, 'disk_full_threshold', '85')
        disk_near_full_threshold = int(
            settings.get('disk_near_full_threshold', 75))
        disk_full_threshold = int(settings.get('disk_full_threshold', 85))
        for _osd in _osds:
            osd = {
                    'id': _osd.id,
                    'osd': _osd.osd_name,
                    'vsm_status': _osd.operation_status,
                    'osd_state': _osd.state,
                    'osd_weight': _osd.weight,
                    'storage_group': _osd.device['device_type'],
                    'data_dev_path': _osd.device['path'],
                    'data_dev_status': _osd.device['state'],
                    'data_dev_capacity': 0 if not _osd.device['total_capacity_kb']\
            else int(_osd.device['total_capacity_kb']/1024),
                    'data_dev_used': 0 if not _osd.device['used_capacity_kb']\
            else int(_osd.device['used_capacity_kb']/1024),
                    'data_dev_available': 0 if not _osd.device['avail_capacity_kb']\
            else int(_osd.device['avail_capacity_kb']/1024),
                    'journal_device_path': _osd.device['journal'],
                    'journal_device_status': _osd.device['journal_state'],
                    'server': _osd.service['host'],
                    'zone': _osd.zone,
                    'full_warn': 0
                  }

            if osd['data_dev_capacity']:
                osd['full_status'] = round(
                    osd['data_dev_used'] * 1.0 / osd['data_dev_capacity'] *
                    100, 2)
                if osd['full_status'] >= disk_near_full_threshold and osd[
                        'full_status'] < disk_full_threshold:
                    osd['full_warn'] = 1
                elif osd['full_status'] >= disk_full_threshold:
                    osd['full_warn'] = 2
            else:
                osd['full_status'] = ''
            if osd_id == "-1":
                osds.append(osd)  #all of the deivces
            elif str(_osd.id) == str(osd_id):
                osds.append(osd)  #filter the devices by osd_id
            else:
                pass
        return osds