示例#1
0
    def test_repr(self):

        capability = {
            'share_backend_name': 'Backend1',
            'vendor_name': 'OpenStack',
            'driver_version': '1.0',
            'storage_protocol': 'NFS_CIFS',
            'total_capacity_gb': 20000,
            'free_capacity_gb': 15000,
            'allocated_capacity_gb': 5000,
            'timestamp': None,
            'reserved_percentage': 0,
        }
        fake_host = host_manager.HostState('host1')
        fake_host.update_from_share_capability(capability)

        result = fake_host.__repr__()
        expected = "host: 'host1', free_capacity_gb: None, " \
                   "pools: {'Backend1': host: 'host1#Backend1', " \
                   "free_capacity_gb: 15000, pools: None}"
        self.assertEqual(expected, result)
示例#2
0
 def test_update_from_share_unknown_capability(self):
     share_capability = {
         'total_capacity_gb': 'unknown',
         'free_capacity_gb': 'unknown',
         'allocated_capacity_gb': 1,
         'reserved_percentage': 0,
         'timestamp': None
     }
     fake_context = context.RequestContext('user', 'project', is_admin=True)
     fake_host = host_manager.HostState('host1#_pool0')
     self.assertIsNone(fake_host.free_capacity_gb)
     fake_host.update_from_share_capability(share_capability,
                                            context=fake_context)
     # Backend level stats remain uninitialized
     self.assertEqual(fake_host.total_capacity_gb, 0)
     self.assertIsNone(fake_host.free_capacity_gb)
     # Pool stats has been updated
     self.assertEqual(fake_host.pools['_pool0'].total_capacity_gb,
                      'unknown')
     self.assertEqual(fake_host.pools['_pool0'].free_capacity_gb,
                      'unknown')
示例#3
0
    def test_update_from_share_capability_nopool(self):
        fake_context = context.RequestContext('user', 'project', is_admin=True)
        share_capability = {
            'total_capacity_gb': 0,
            'free_capacity_gb': 100,
            'reserved_percentage': 0,
            'timestamp': None,
            'ipv4_support': True,
            'ipv6_support': False
        }
        fake_host = host_manager.HostState('host1', share_capability)
        self.assertIsNone(fake_host.free_capacity_gb)

        fake_host.update_from_share_capability(share_capability,
                                               context=fake_context)
        # Backend level stats remain uninitialized
        self.assertEqual(0, fake_host.total_capacity_gb)
        self.assertIsNone(fake_host.free_capacity_gb)
        self.assertTrue(fake_host.ipv4_support)
        self.assertFalse(fake_host.ipv6_support)
        # Pool stats has been updated
        self.assertEqual(0, fake_host.pools['_pool0'].total_capacity_gb)
        self.assertEqual(100, fake_host.pools['_pool0'].free_capacity_gb)
        self.assertTrue(fake_host.pools['_pool0'].ipv4_support)
        self.assertFalse(fake_host.pools['_pool0'].ipv6_support)

        # Test update for existing host state
        share_capability.update(dict(total_capacity_gb=1000))
        fake_host.update_from_share_capability(share_capability,
                                               context=fake_context)
        self.assertEqual(1000, fake_host.pools['_pool0'].total_capacity_gb)

        # Test update for existing host state with different backend name
        share_capability.update(dict(share_backend_name='magic'))
        fake_host.update_from_share_capability(share_capability,
                                               context=fake_context)
        self.assertEqual(1000, fake_host.pools['magic'].total_capacity_gb)
        self.assertEqual(100, fake_host.pools['magic'].free_capacity_gb)
        # 'pool0' becomes nonactive pool, and is deleted
        self.assertRaises(KeyError, lambda: fake_host.pools['pool0'])
示例#4
0
    def test_update_from_share_capability_with_pools(self):
        fake_context = context.RequestContext('user', 'project', is_admin=True)
        fake_host = host_manager.HostState('host1#pool1')
        self.assertIsNone(fake_host.free_capacity_gb)
        capability = {
            'share_backend_name':
            'Backend1',
            'vendor_name':
            'OpenStack',
            'driver_version':
            '1.1',
            'storage_protocol':
            'NFS_CIFS',
            'ipv4_support':
            True,
            'ipv6_support':
            False,
            'pools': [{
                'pool_name': 'pool1',
                'total_capacity_gb': 500,
                'free_capacity_gb': 230,
                'allocated_capacity_gb': 270,
                'qos': 'False',
                'reserved_percentage': 0,
                'dying_disks': 100,
                'super_hero_1': 'spider-man',
                'super_hero_2': 'flash',
                'super_hero_3': 'neoncat',
            }, {
                'pool_name': 'pool2',
                'total_capacity_gb': 1024,
                'free_capacity_gb': 1024,
                'allocated_capacity_gb': 0,
                'qos': 'False',
                'reserved_percentage': 0,
                'dying_disks': 200,
                'super_hero_1': 'superman',
                'super_hero_2': 'Hulk',
            }],
            'timestamp':
            None,
        }

        fake_host.update_from_share_capability(capability,
                                               context=fake_context)

        self.assertEqual('Backend1', fake_host.share_backend_name)
        self.assertEqual('NFS_CIFS', fake_host.storage_protocol)
        self.assertEqual('OpenStack', fake_host.vendor_name)
        self.assertEqual('1.1', fake_host.driver_version)
        self.assertTrue(fake_host.ipv4_support)
        self.assertFalse(fake_host.ipv6_support)

        # Backend level stats remain uninitialized
        self.assertEqual(0, fake_host.total_capacity_gb)
        self.assertIsNone(fake_host.free_capacity_gb)
        # Pool stats has been updated
        self.assertEqual(2, len(fake_host.pools))

        self.assertEqual(500, fake_host.pools['pool1'].total_capacity_gb)
        self.assertEqual(230, fake_host.pools['pool1'].free_capacity_gb)
        self.assertTrue(fake_host.pools['pool1'].ipv4_support)
        self.assertFalse(fake_host.pools['pool1'].ipv6_support)
        self.assertEqual(1024, fake_host.pools['pool2'].total_capacity_gb)
        self.assertEqual(1024, fake_host.pools['pool2'].free_capacity_gb)
        self.assertTrue(fake_host.pools['pool2'].ipv4_support)
        self.assertFalse(fake_host.pools['pool2'].ipv6_support)

        capability = {
            'share_backend_name':
            'Backend1',
            'vendor_name':
            'OpenStack',
            'driver_version':
            '1.0',
            'storage_protocol':
            'NFS_CIFS',
            'pools': [
                {
                    'pool_name': 'pool3',
                    'total_capacity_gb': 10000,
                    'free_capacity_gb': 10000,
                    'allocated_capacity_gb': 0,
                    'qos': 'False',
                    'reserved_percentage': 0,
                },
            ],
            'timestamp':
            None,
        }

        # test update HostState Record
        fake_host.update_from_share_capability(capability,
                                               context=fake_context)

        self.assertEqual('1.0', fake_host.driver_version)

        # Non-active pool stats has been removed
        self.assertEqual(1, len(fake_host.pools))

        self.assertRaises(KeyError, lambda: fake_host.pools['pool1'])
        self.assertRaises(KeyError, lambda: fake_host.pools['pool2'])

        self.assertEqual(10000, fake_host.pools['pool3'].total_capacity_gb)
        self.assertEqual(10000, fake_host.pools['pool3'].free_capacity_gb)
示例#5
0
 def setUp(self):
     super(HostManagerTestCase, self).setUp()
     self.host_manager = host_manager.HostManager()
     self.fake_hosts = [
         host_manager.HostState('fake_host%s' % x) for x in xrange(1, 5)
     ]