示例#1
0
    def test_update_from_share_capability(self, share_capability, instances):
        fake_context = context.RequestContext('user', 'project', is_admin=True)
        self.mock_object(db, 'share_instances_get_all_by_host',
                         mock.Mock(return_value=instances))
        fake_pool = host_manager.PoolState('host1', None, 'pool0')
        self.assertIsNone(fake_pool.free_capacity_gb)

        fake_pool.update_from_share_capability(share_capability,
                                               context=fake_context)

        self.assertEqual('host1#pool0', fake_pool.host)
        self.assertEqual('pool0', fake_pool.pool_name)
        self.assertEqual(1024, fake_pool.total_capacity_gb)
        self.assertEqual(512, fake_pool.free_capacity_gb)
        self.assertDictMatch(share_capability, fake_pool.capabilities)

        if 'provisioned_capacity_gb' not in share_capability:
            db.share_instances_get_all_by_host.assert_called_once_with(
                fake_context, fake_pool.host, with_share_data=True)

            if len(instances) > 0:
                self.assertEqual(4, fake_pool.provisioned_capacity_gb)
            else:
                self.assertEqual(0, fake_pool.provisioned_capacity_gb)

            if 'allocated_capacity_gb' in share_capability:
                self.assertEqual(share_capability['allocated_capacity_gb'],
                                 fake_pool.allocated_capacity_gb)
            elif 'allocated_capacity_gb' not in share_capability:
                self.assertEqual(0, fake_pool.allocated_capacity_gb)
        elif 'provisioned_capacity_gb' in share_capability and (
                'allocated_capacity_gb' not in share_capability):
            self.assertFalse(db.share_instances_get_all_by_host.called)

            self.assertEqual(0, fake_pool.allocated_capacity_gb)
            self.assertEqual(share_capability['provisioned_capacity_gb'],
                             fake_pool.provisioned_capacity_gb)
        elif 'provisioned_capacity_gb' in share_capability and (
                'allocated_capacity_gb' in share_capability):
            self.assertFalse(db.share_instances_get_all_by_host.called)

            self.assertEqual(share_capability['allocated_capacity_gb'],
                             fake_pool.allocated_capacity_gb)
            self.assertEqual(share_capability['provisioned_capacity_gb'],
                             fake_pool.provisioned_capacity_gb)
        if 'ipv4_support' in share_capability:
            self.assertEqual(share_capability['ipv4_support'],
                             fake_pool.ipv4_support)
        if 'ipv6_support' in share_capability:
            self.assertEqual(share_capability['ipv6_support'],
                             fake_pool.ipv6_support)
示例#2
0
    def test_consume_from_share_unknown_capability(self):
        share_capability = {
            'total_capacity_gb': 'unknown',
            'free_capacity_gb': 'unknown',
            'reserved_percentage': 0,
            'timestamp': None
        }
        fake_host = host_manager.PoolState('host1', share_capability, '_pool0')
        share_size = 1000
        fake_share = {'id': 'foo', 'size': share_size}

        fake_host.update_from_share_capability(share_capability)
        fake_host.consume_from_share(fake_share)
        self.assertEqual(fake_host.total_capacity_gb, 'unknown')
        self.assertEqual(fake_host.free_capacity_gb, 'unknown')
示例#3
0
    def test_consume_from_share_capability(self):
        fake_context = context.RequestContext('user', 'project', is_admin=True)
        share_size = 10
        free_capacity = 100
        fake_share = {'id': 'foo', 'size': share_size}
        share_capability = {
            'total_capacity_gb': free_capacity * 2,
            'free_capacity_gb': free_capacity,
            'reserved_percentage': 0,
            'timestamp': None
        }
        fake_host = host_manager.PoolState('host1', share_capability, '_pool0')

        fake_host.update_from_share_capability(share_capability,
                                               context=fake_context)
        fake_host.consume_from_share(fake_share)
        self.assertEqual(fake_host.free_capacity_gb,
                         free_capacity - share_size)
示例#4
0
    def test_update_from_share_capability(self):
        share_capability = {
            'total_capacity_gb': 1024,
            'free_capacity_gb': 512,
            'reserved_percentage': 0,
            'timestamp': None,
            'cap1': 'val1',
            'cap2': 'val2'
        }
        fake_pool = host_manager.PoolState('host1', None, 'pool0')
        self.assertIsNone(fake_pool.free_capacity_gb)

        fake_pool.update_from_share_capability(share_capability)
        self.assertEqual(fake_pool.host, 'host1#pool0')
        self.assertEqual(fake_pool.pool_name, 'pool0')
        self.assertEqual(fake_pool.total_capacity_gb, 1024)
        self.assertEqual(fake_pool.free_capacity_gb, 512)

        self.assertDictMatch(fake_pool.capabilities, share_capability)
示例#5
0
    def test_consume_from_share_invalid_capacity(self):
        fake_host = host_manager.PoolState('host1', {}, '_pool0')
        fake_host.free_capacity_gb = 'invalid_foo_string'

        self.assertRaises(exception.InvalidCapacity,
                          fake_host.consume_from_share, 'fake')