예제 #1
0
    def get_data(self):
        default_limit = 10000
        default_sort_dir = "asc"
        default_sort_keys = ['osd_name']
        marker = self.request.GET.get('marker', "")

        LOG.error("<CEPH_LOG VSM OSD SUMMARY")
        LOG.error(vsmapi.osd_summary(self.request))
        LOG.error(">CEPH_LOG VSM OSD SUMMARY")
        LOG.error(vsmapi.osd_status(self.request))
        LOG.error("CEPH_LOG VSM OSD SUMMARY")
        try:
            _osd_status = vsmapi.osd_status(self.request,
                                            paginate_opts={
                                                "limit": default_limit,
                                                "sort_dir": default_sort_dir,
                                                "marker": marker,
                                            })

            if _osd_status:
                logging.debug("resp body in view: %s" % _osd_status)
        except:
            exceptions.handle(self.request, _('Unable to retrieve osd list. '))

        osd_status = []
        for _osd in _osd_status:
            LOG.error("DEVICE")
            LOG.error(_osd.device.keys())
            LOG.error(">DEVICE")
            osd = {
                "id":_osd.id,
                "osd_name": _osd.osd_name,
                "vsm_status": _osd.operation_status,
                "osd_state": _osd.state,
                "crush_weight": _osd.weight,
                "capacity_total": 0 if not _osd.device['total_capacity_kb']\
   else int(_osd.device['total_capacity_kb']/1024),#TODO dict to obj ?
                "capacity_used": 0 if not _osd.device['used_capacity_kb']\
   else int(_osd.device['used_capacity_kb']/1024),
                "capacity_avail": 0 if not _osd.device['avail_capacity_kb']\
   else int(_osd.device['avail_capacity_kb']/1024),
                "capacity_percent_used": 0 if not _osd.device['total_capacity_kb'] \
                    else _osd.device['used_capacity_kb']\
                    * 100 / _osd.device['total_capacity_kb'], #TODO
                "server": _osd.service['host'],
                "storage_group": _osd.storage_group['name'],
                "zone": _osd.zone,
                "updated_at": get_time_delta(_osd.updated_at),
                }

            osd_status.append(osd)
        return osd_status
예제 #2
0
    def get_data(self):
        default_limit = 10000;
        default_sort_dir = "asc";
        default_sort_keys = ['osd_name']
        marker = self.request.GET.get('marker', "")

        LOG.error("<CEPH_LOG VSM OSD SUMMARY")
        LOG.error(vsmapi.osd_summary(self.request))
        LOG.error(">CEPH_LOG VSM OSD SUMMARY")
        LOG.error(vsmapi.osd_status(self.request))
        LOG.error("CEPH_LOG VSM OSD SUMMARY")
        try:
            _osd_status = vsmapi.osd_status(self.request, paginate_opts={
                "limit": default_limit,
                "sort_dir": default_sort_dir,
                "marker":   marker,
            })

            if _osd_status:
                logging.debug("resp body in view: %s" % _osd_status)
        except:
            exceptions.handle(self.request,
                              _('Unable to retrieve osd list. '))

        osd_status = []
        for _osd in _osd_status:
            LOG.error("DEVICE")
            LOG.error(_osd.device.keys())
            LOG.error(">DEVICE")
            osd = {
                "id":_osd.id,
                "osd_name": _osd.osd_name,
                "vsm_status": _osd.operation_status,
                "osd_state": _osd.state,
                "crush_weight": _osd.weight,
                "capacity_total": 0 if not _osd.device['total_capacity_kb']\
			else int(_osd.device['total_capacity_kb']/1024),#TODO dict to obj ?
                "capacity_used": 0 if not _osd.device['used_capacity_kb']\
			else int(_osd.device['used_capacity_kb']/1024),
                "capacity_avail": 0 if not _osd.device['avail_capacity_kb']\
			else int(_osd.device['avail_capacity_kb']/1024),
                "capacity_percent_used": 0 if not _osd.device['total_capacity_kb'] \
                    else _osd.device['used_capacity_kb']\
                    * 100 / _osd.device['total_capacity_kb'], #TODO
                "server": _osd.service['host'],
                "storage_group": _osd.storage_group['name'],
                "zone": _osd.zone,
                "updated_at": get_time_delta(_osd.updated_at),
                }

            osd_status.append(osd)
        return osd_status
예제 #3
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)
        disk_near_full_threshold = int(settings['disk_near_full_threshold'])
        disk_full_threshold = int(settings['disk_full_threshold'])
        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
예제 #4
0
def get_OSD():
    in_up = 0
    in_down = 0
    out_up = 0
    out_down = 0
    osd_summary = vsmapi.osd_summary(None)
    _osd_status = vsmapi.osd_status(None)
    for _osd in _osd_status:
        print _osd.state
        if _osd.state == "In-Up":
            in_up = in_up + 1
        elif _osd.state == "In-Down":
            in_dowm = in_down + 1
        elif _osd.state == "Out-Up":
            out_up = out_up + 1
        elif _osd.state == "Out-Down":
            out_down = out_down + 1

    OSD_dict = {
        "epoch": osd_summary.epoch,
        "update": get_time_delta(osd_summary.updated_at),
        "in_up": in_up,
        "in_down": in_down,
        "out_up": out_up,
        "out_down": out_down
    }
    OSDdata = json.dumps(OSD_dict)
    return OSDdata
    def get_context_data(self, **kwargs):
        context = {}
        storage_group_list = vsmapi.storage_group_status(None,)

        storage_group = []
        for _sg in storage_group_list:
            sg = {
                "id":_sg.id
                ,"name":_sg.name
            }
            storage_group.append(sg)
        context["storage_group"] = storage_group

        servers = vsmapi.get_server_list(None, )
        context["servers"] = servers;

        if len(servers) > 0:
            context["OSDList"] = vsmapi.osd_status(self.request, paginate_opts={
                "service_id": servers[0].service_id
            })
            ret = vsmapi.get_available_disks(self.request, search_opts={
                "server_id": servers[0].id ,
                "result_mode":"get_disks",
            })
            disks = ret['disks'] or []
            disks_list = [disk for disk in disks if disk.find('by-path') != -1]
            context["available_disks"] = disks_list
        
        return context
예제 #6
0
def get_OSD():
    in_up = 0
    in_down = 0
    out_up = 0
    out_down = 0
    osd_summary = vsmapi.osd_summary(None)
    _osd_status = vsmapi.osd_status(None)
    for _osd in _osd_status:
        print _osd.state
        if _osd.state == "In-Up":
            in_up=in_up+1
        elif _osd.state == "In-Down":
            in_dowm=in_down+1
        elif _osd.state == "Out-Up":
            out_up=out_up+1
        elif _osd.state == "Out-Down":
            out_down=out_down+1
    
    OSD_dict = {"epoch":osd_summary.epoch
              ,"update":get_time_delta(osd_summary.updated_at)
              ,"in_up":in_up
              ,"in_down":in_down
              ,"out_up":out_up
              ,"out_down":out_down
              }
    OSDdata = json.dumps(OSD_dict)
    return OSDdata
예제 #7
0
def get_OSD():
    #get the full or near full threshold
    settings = vsmapi.get_setting_dict(None)
    disk_near_full_threshold = int(settings['disk_near_full_threshold'])
    disk_full_threshold = int(settings['disk_full_threshold'])

    in_up = 0
    in_down = 0
    out_up = 0
    out_down = 0
    available_count = 0
    near_full_count = 0
    full_count = 0
    osd_summary = vsmapi.osd_summary(None)
    _osd_status = vsmapi.osd_status(None)

    for _osd in _osd_status:
        _osd_capacity_avaliable = 0 if not _osd.device['avail_capacity_kb']\
            else int(_osd.device['avail_capacity_kb']/1024)
        _osd_capacity_used = 0 if not _osd.device['used_capacity_kb']\
            else int(_osd.device['used_capacity_kb']/1024)
        _osd_capacity_total = 0 if not _osd.device['total_capacity_kb']\
            else int(_osd.device['total_capacity_kb']/1024)

        if _osd_capacity_total and _osd.state in [
                "In-Up", "In-Down", "Out-Up", "Out-Down", "Out-Down-Autoout"
        ]:
            _osd_capacity_status = round(
                _osd_capacity_used * 1.0 / _osd_capacity_total * 100, 2)
            if _osd_capacity_status >= disk_full_threshold:
                full_count = full_count + 1
            elif _osd_capacity_status >= disk_near_full_threshold:
                near_full_count = near_full_count + 1
            else:
                available_count = available_count + 1

        if _osd.state == "In-Up":
            in_up = in_up + 1
        elif _osd.state == "In-Down":
            in_down = in_down + 1
        elif _osd.state == "Out-Up":
            out_up = out_up + 1
        elif _osd.state == "Out-Down" or _osd.state == "Out-Down-Autoout":
            out_down = out_down + 1

    OSD_dict = {
        "epoch": osd_summary.epoch,
        "update": get_time_delta(osd_summary.updated_at),
        "in_up": in_up,
        "in_down": in_down,
        "out_up": out_up,
        "out_down": out_down,
        "capacity_full_count": full_count,
        "capacity_near_full_count": near_full_count,
        "capacity_available_count": available_count
    }
    OSDdata = json.dumps(OSD_dict)
    return OSDdata
예제 #8
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)
        host_near_full_threshold = settings['host_near_full_threshold']
        #host_full_threshold = settings['host_full_threshold']
        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
                  }

            osd['full_status'] = round(
                osd['data_dev_used'] * 1.0 / osd['data_dev_capacity'] * 100, 2)
            if osd['full_status'] >= host_near_full_threshold:
                osd['full_warn'] = 1
            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
예제 #9
0
def get_OSD():
    #get the full or near full threshold
    settings = vsmapi.get_setting_dict(None)
    disk_near_full_threshold = int(settings['disk_near_full_threshold'])
    disk_full_threshold = int(settings['disk_full_threshold'])

    in_up = 0
    in_down = 0
    out_up = 0
    out_down = 0
    available_count = 0
    near_full_count = 0
    full_count = 0
    osd_summary = vsmapi.osd_summary(None)
    _osd_status = vsmapi.osd_status(None)

    for _osd in _osd_status:
        _osd_capacity_avaliable = 0 if not _osd.device['avail_capacity_kb']\
            else int(_osd.device['avail_capacity_kb']/1024)
        _osd_capacity_used = 0 if not _osd.device['used_capacity_kb']\
            else int(_osd.device['used_capacity_kb']/1024)
        _osd_capacity_total = 0 if not _osd.device['total_capacity_kb']\
            else int(_osd.device['total_capacity_kb']/1024)

        if _osd_capacity_total:
            _osd_capacity_status = round(_osd_capacity_used * 1.0 / _osd_capacity_total * 100, 2)
            if _osd_capacity_status >= disk_full_threshold:
                full_count = full_count + 1
            elif _osd_capacity_status >= disk_near_full_threshold:
                near_full_count = near_full_count + 1
            else:
                available_count = available_count + 1

        if _osd.state == "In-Up":
            in_up=in_up+1
        elif _osd.state == "In-Down":
            in_dowm=in_down+1
        elif _osd.state == "Out-Up":
            out_up=out_up+1
        elif _osd.state == "Out-Down":
            out_down=out_down+1

    OSD_dict = {"epoch":osd_summary.epoch
              ,"update":get_time_delta(osd_summary.updated_at)
              ,"in_up":in_up
              ,"in_down":in_down
              ,"out_up":out_up
              ,"out_down":out_down
              ,"capacity_full_count":full_count
              ,"capacity_near_full_count":near_full_count
              ,"capacity_available_count":available_count
              }
    OSDdata = json.dumps(OSD_dict)
    return OSDdata
예제 #10
0
 def get_text(self):
     osds = vsmapi.osd_status(self.request)
     osd_list = []
     for _osd in osds:
         osd = {
             "osd_name": _osd.osd_name,
             "server": _osd.service['host'],
             "storage_group": _osd.storage_group['name'],
             "capacity_total": _osd.device['total_capacity_kb'],#TODO dict to obj ?
             "capacity_used": _osd.device['used_capacity_kb'],
             "capacity_avail": _osd.device['avail_capacity_kb'],
             }
         osd_list.append(osd)
     return json.dumps(osd_list) 
예제 #11
0
 def get_text(self):
     osds = vsmapi.osd_status(self.request)
     osd_list = []
     for _osd in osds:
         osd = {
             "osd_name": _osd.osd_name,
             "server": _osd.service['host'],
             "storage_group": _osd.storage_group['name'],
             "capacity_total": _osd.device['total_capacity_kb'],#TODO dict to obj ?
             "capacity_used": _osd.device['used_capacity_kb'],
             "capacity_avail": _osd.device['avail_capacity_kb'],
             }
         osd_list.append(osd)
     return json.dumps(osd_list) 
예제 #12
0
    def get_context_data(self, **kwargs):
        context = {}
        storage_group_list = vsmapi.storage_group_status(None, )

        storage_group = []
        for _sg in storage_group_list:
            sg = {"id": _sg.id, "storage_class": _sg.storage_class}
            storage_group.append(sg)
        context["storage_group"] = storage_group

        servers = vsmapi.get_server_list(None, )
        context["servers"] = servers

        if len(servers) > 0:
            context["OSDList"] = vsmapi.osd_status(
                self.request,
                paginate_opts={"service_id": servers[0].service_id})

        return context
예제 #13
0
 def get_data(self):
     default_limit = 10000;
     default_sort_dir = "asc";
     default_sort_keys = ['osd_name']
     marker = self.request.GET.get('marker', "")
     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 = []
     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,
               }
         osds.append(osd)
     return osds
예제 #14
0
 def get_data(self):
     default_limit = 10000
     default_sort_dir = "asc"
     default_sort_keys = ['osd_name']
     marker = self.request.GET.get('marker', "")
     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 = []
     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,
               }
         osds.append(osd)
     return osds
예제 #15
0
def get_osd_list(request):
    data = json.loads(request.body)
    service_id = int(data["service_id"])
    osds = vsmapi.osd_status(None, paginate_opts={"service_id": service_id})

    osd_list = []
    for _osd in osds:
        osd = {
            "id": _osd.id,
            "name": _osd.osd_name,
            "weight": _osd.weight,
            "storage_group": _osd.device['device_type'],
            "journal": _osd.device['journal'],
            "device": _osd.device['path']
        }
        print _osd
        osd_list.append(osd)

    osd_list_data_json = {"osdlist": osd_list}
    osd_list_data = json.dumps(osd_list_data_json)
    return HttpResponse(osd_list_data)
예제 #16
0
    def get_context_data(self, **kwargs):
        context = {}
        storage_group_list = vsmapi.storage_group_status(None,)

        storage_group = []
        for _sg in storage_group_list:
            sg = {
                "id":_sg.id
                ,"storage_class":_sg.storage_class
            }
            storage_group.append(sg)
        context["storage_group"] = storage_group

        servers = vsmapi.get_server_list(None, )
        context["servers"] = servers;

        if len(servers) > 0:
            context["OSDList"] = vsmapi.osd_status(self.request, paginate_opts={
                "service_id": servers[0].service_id
            })
        
        return context
def get_osd_list(request):
    data = json.loads(request.body)
    service_id = int(data["service_id"])
    osds = vsmapi.osd_status(None, paginate_opts={
                "service_id": service_id
            })

    osd_list = []
    for _osd in osds:
        osd = {
            "id":_osd.id
            ,"name":_osd.osd_name
            ,"weight":_osd.weight
            ,"storage_group":_osd.device['device_type']
            ,"journal":_osd.device['journal']
            ,"device":_osd.device['path']
        }
        print _osd
        osd_list.append(osd)


    osd_list_data_json = {"osdlist":osd_list}
    osd_list_data = json.dumps(osd_list_data_json)
    return HttpResponse(osd_list_data)
예제 #18
0
def get_osd_list_data(service_id):
    osd_list = vsmapi.osd_status(None, paginate_opts={
        "service_id": int(service_id)
    })
    return osd_list
예제 #19
0
    def get_data(self):
        default_limit = 10000;
        default_sort_dir = "asc";
        default_sort_keys = ['osd_name']
        marker = self.request.GET.get('marker', "")

        try:
            _osd_status = vsmapi.osd_status(self.request, paginate_opts={
                "limit": default_limit,
                "sort_dir": default_sort_dir,
                "marker":   marker,
            })

            if _osd_status:
                logging.debug("resp body in view: %s" % _osd_status)
        except:
            exceptions.handle(self.request,
                              _('Unable to retrieve osd list. '))

        page_index = int(self.request.GET.get('pageIndex',1))
        page_size = 20
        page_count = int(len(_osd_status)/page_size)
        page_mod = len(_osd_status)%page_size
        if page_mod > 0:
            page_count = page_count + 1
        pager_size = 10
        pager_count = int(page_count/(pager_size))
        pager_index = int(page_index/(pager_size))
        if page_count%pager_size > 0:
            pager_count = pager_count + 1
        if page_index%pager_size > 0:
            pager_index = pager_index + 1

        dataStartIndex = (page_index-1)*page_size
        dataEndIndex = dataStartIndex+page_size
        _osd_status = _osd_status[dataStartIndex:dataEndIndex]


        osd_status = []
        for _osd in _osd_status:
            LOG.info("DEVICE:%s"%_osd.device.keys())
            #LOG.error(_osd.device.keys())
            #LOG.error(">DEVICE")
            osd = {
                "id":_osd.id,
                "osd_name": _osd.osd_name,
                "vsm_status": _osd.operation_status,
                "osd_state": _osd.state,
                "crush_weight": _osd.weight,
                "capacity_total": 0 if not _osd.device['total_capacity_kb']\
            else int(_osd.device['total_capacity_kb']/1024),#TODO dict to obj ?
                "capacity_used": 0 if not _osd.device['used_capacity_kb']\
            else int(_osd.device['used_capacity_kb']/1024),
                "capacity_avail": 0 if not _osd.device['avail_capacity_kb']\
            else int(_osd.device['avail_capacity_kb']/1024),
                "capacity_percent_used": 0 if not _osd.device['total_capacity_kb'] \
                    else _osd.device['used_capacity_kb']\
                    * 100 / _osd.device['total_capacity_kb'], #TODO
                "server": _osd.service['host'],
                "storage_group": _osd.storage_group['name'],
                "zone": _osd.zone,
                "updated_at": get_time_delta(_osd.updated_at),
                "pageCount":page_count,
                "pageIndex":page_index,
                "pagerCount":pager_count,
                "pagerIndex":pager_index,
                "deviceInfo":""
                }

            osd_status.append(osd)
        return osd_status
예제 #20
0
def get_osd_list_data(service_id):
    osd_list = vsmapi.osd_status(None,
                                 paginate_opts={"service_id": int(service_id)})
    return osd_list
예제 #21
0
    def get_data(self):
        default_limit = 10000;
        default_sort_dir = "asc";
        default_sort_keys = ['osd_name']
        marker = self.request.GET.get('marker', "")
        _osd_status = ""
        try:
            _osd_status = vsmapi.osd_status(self.request, paginate_opts={
                "limit": default_limit,
                "sort_dir": default_sort_dir,
                "marker":   marker,
            })
            if _osd_status:
                logging.debug("resp body in view: %s" % _osd_status)
        except:
            exceptions.handle(self.request,
                              _('Unable to retrieve osd list. '))

        page_index = int(self.request.GET.get('pageIndex',1))
        page_size = 20
        page_count = int(len(_osd_status)/page_size)
        page_mod = len(_osd_status)%page_size
        if page_mod > 0:
            page_count = page_count + 1
        pager_size = 10
        pager_count = int(page_count/(pager_size))
        pager_index = int(page_index/(pager_size))
        if page_count%pager_size > 0:
            pager_count = pager_count + 1
        if page_index%pager_size > 0:
            pager_index = pager_index + 1

        dataStartIndex = (page_index-1)*page_size
        dataEndIndex = dataStartIndex+page_size
        _osd_status = _osd_status[dataStartIndex:dataEndIndex]


        osd_status = []
        for _osd in _osd_status:
            LOG.info("DEVICE:%s"%_osd.device.keys())
            #LOG.error(_osd.device.keys())
            #LOG.error(">DEVICE")
            osd = {
                "id":_osd.id,
                "osd_name": _osd.osd_name,
                "vsm_status": _osd.operation_status,
                "osd_state": _osd.state,
                "crush_weight": _osd.weight,
                "capacity_total": 0 if not _osd.device['total_capacity_kb']\
            else int(_osd.device['total_capacity_kb']/1024),#TODO dict to obj ?
                "capacity_used": 0 if not _osd.device['used_capacity_kb']\
            else int(_osd.device['used_capacity_kb']/1024),
                "capacity_avail": 0 if not _osd.device['avail_capacity_kb']\
            else int(_osd.device['avail_capacity_kb']/1024),
                "capacity_percent_used": 0 if not _osd.device['total_capacity_kb'] \
                    else _osd.device['used_capacity_kb']\
                    * 100 / _osd.device['total_capacity_kb'], #TODO
                "server": _osd.service['host'],
                "storage_group": _osd.storage_group['name'],
                "zone": _osd.zone,
                "updated_at": get_time_delta(_osd.updated_at),
                "pageCount":page_count,
                "pageIndex":page_index,
                "pagerCount":pager_count,
                "pagerIndex":pager_index,
                "deviceInfo":""
                }

            osd_status.append(osd)
        return osd_status