Ejemplo n.º 1
0
 def test_load_calculation(self):
     """
     Validates whether the load calculation works
     """
     vpools, storagerouters, storagedrivers, services, mds_services, _ = self._build_service_structure(
         {'vpools': [1],
          'storagerouters': [1],
          'storagedrivers': [(1, 1, 1)],  # (<id>, <vpool_id>, <sr_id>)
          'mds_services': [(1, 1)]}  # (<id>, <sd_id>)
     )
     mds_service = mds_services[1]
     self._create_vdisks_for_mds_service(2, 1, mds_service=mds_service)
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, 20, 'There should be a 20% load. {0}'.format(load))
     self.assertEqual(load_plus, 30, 'There should be a 30% plus load. {0}'.format(load_plus))
     self._create_vdisks_for_mds_service(3, 3, mds_service=mds_service)
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, 50, 'There should be a 50% load. {0}'.format(load))
     self.assertEqual(load_plus, 60, 'There should be a 60% plus load. {0}'.format(load_plus))
     self._create_vdisks_for_mds_service(5, 6, mds_service=mds_service)
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, 100, 'There should be a 100% load. {0}'.format(load))
     self.assertEqual(load_plus, 110, 'There should be a 110% plus load. {0}'.format(load_plus))
     mds_service.capacity = -1
     mds_service.save()
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, 50, 'There should be a 50% load. {0}'.format(load))
     self.assertEqual(load_plus, 50, 'There should be a 50% plus load. {0}'.format(load_plus))
     mds_service.capacity = 0
     mds_service.save()
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, float('inf'), 'There should be infinite load. {0}'.format(load))
     self.assertEqual(load_plus, float('inf'), 'There should be infinite plus load. {0}'.format(load_plus))
Ejemplo n.º 2
0
 def test_load_calculation(self):
     """
     Validates whether the load calculation works
     """
     vpools, storagerouters, storagedrivers, services, mds_services, _ = self._build_service_structure(
         {
             'vpools': [1],
             'storagerouters': [1],
             'storagedrivers': [(1, 1, 1)],  # (<id>, <vpool_id>, <sr_id>)
             'mds_services': [(1, 1)]
         }  # (<id>, <sd_id>)
     )
     mds_service = mds_services[1]
     self._create_vdisks_for_mds_service(2, 1, mds_service=mds_service)
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, 20,
                      'There should be a 20% load. {0}'.format(load))
     self.assertEqual(
         load_plus, 30,
         'There should be a 30% plus load. {0}'.format(load_plus))
     self._create_vdisks_for_mds_service(3, 3, mds_service=mds_service)
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, 50,
                      'There should be a 50% load. {0}'.format(load))
     self.assertEqual(
         load_plus, 60,
         'There should be a 60% plus load. {0}'.format(load_plus))
     self._create_vdisks_for_mds_service(5, 6, mds_service=mds_service)
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, 100,
                      'There should be a 100% load. {0}'.format(load))
     self.assertEqual(
         load_plus, 110,
         'There should be a 110% plus load. {0}'.format(load_plus))
     mds_service.capacity = -1
     mds_service.save()
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, 50,
                      'There should be a 50% load. {0}'.format(load))
     self.assertEqual(
         load_plus, 50,
         'There should be a 50% plus load. {0}'.format(load_plus))
     mds_service.capacity = 0
     mds_service.save()
     load, load_plus = MDSServiceController.get_mds_load(mds_service)
     self.assertEqual(load, float('inf'),
                      'There should be infinite load. {0}'.format(load))
     self.assertEqual(
         load_plus, float('inf'),
         'There should be infinite plus load. {0}'.format(load_plus))
Ejemplo n.º 3
0
    def get_stats_mds(cls):
        """
        Retrieve how many vDisks each MDS service is serving, whether as master or slave
        """
        if cls._config is None:
            cls.validate_and_retrieve_config()

        stats = []
        environment = cls._config['environment']
        service_type = ServiceTypeList.get_by_name('MetadataServer')
        if service_type is None:
            raise RuntimeError('MetadataServer service not found in the model')

        for service in service_type.services:
            slaves = 0
            masters = 0
            mds_service = service.mds_service
            for junction in mds_service.vdisks:
                if junction.is_master is True:
                    masters += 1
                else:
                    slaves += 1
            stats.append({'tags': {'vpool_name': mds_service.vpool.name,
                                   'mds_number': mds_service.number,
                                   'environment': environment,
                                   'storagerouter_name': service.storagerouter.name},
                          'fields': {'load': MDSServiceController.get_mds_load(mds_service)[0],
                                     'capacity': mds_service.capacity if mds_service.capacity != -1 else 'infinite',
                                     'masters': masters,
                                     'slaves': slaves},
                          'measurement': 'mds'})
        return False, stats
Ejemplo n.º 4
0
 def _generate_mds_service_load_repr(_mds_service):
     """
     Generates a load representing thing for a given mds_service
     """
     masters, slaves = 0, 0
     for _junction in _mds_service.vdisks:
         if _junction.is_master:
             masters += 1
         else:
             slaves += 1
     capacity = _mds_service.capacity
     if capacity == -1:
         capacity = 'infinite'
     _load, _ = MDSServiceController.get_mds_load(_mds_service)
     if _load == float('inf'):
         _load = 'infinite'
     else:
         _load = round(_load, 2)
     return [_mds_service.service.storagerouter.ip, _mds_service.service.ports[0], masters, slaves, capacity, _load]
Ejemplo n.º 5
0
 def _generate_mds_service_load_repr(_mds_service):
     """
     Generates a load representing thing for a given mds_service
     """
     masters, slaves = 0, 0
     for _junction in _mds_service.vdisks:
         if _junction.is_master:
             masters += 1
         else:
             slaves += 1
     capacity = _mds_service.capacity
     if capacity == -1:
         capacity = 'infinite'
     _load, _ = MDSServiceController.get_mds_load(_mds_service)
     if _load == float('inf'):
         _load = 'infinite'
     else:
         _load = round(_load, 2)
     return [
         _mds_service.service.storagerouter.ip,
         _mds_service.service.ports[0], masters, slaves, capacity, _load
     ]