~ubuntu-branches/ubuntu/saucy/nova/saucy-proposed

« back to all changes in this revision

Viewing changes to nova/tests/test_db_api.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-05-24 13:12:53 UTC
  • mfrom: (1.1.55)
  • Revision ID: package-import@ubuntu.com-20120524131253-ommql08fg1en06ut
Tags: 2012.2~f1-0ubuntu1
* New upstream release.
* Prepare for quantal:
  - Dropped debian/patches/upstream/0006-Use-project_id-in-ec2.cloud._format_image.patch
  - Dropped debian/patches/upstream/0005-Populate-image-properties-with-project_id-again.patch
  - Dropped debian/patches/upstream/0004-Fixed-bug-962840-added-a-test-case.patch
  - Dropped debian/patches/upstream/0003-Allow-unprivileged-RADOS-users-to-access-rbd-volumes.patch
  - Dropped debian/patches/upstream/0002-Stop-libvirt-test-from-deleting-instances-dir.patch
  - Dropped debian/patches/upstream/0001-fix-bug-where-nova-ignores-glance-host-in-imageref.patch 
  - Dropped debian/patches/0001-fix-useexisting-deprecation-warnings.patch
* debian/control: Add python-keystone as a dependency. (LP: #907197)
* debian/patches/kombu_tests_timeout.patch: Refreshed.
* debian/nova.conf, debian/nova-common.postinst: Convert to new ini
  file configuration
* debian/patches/nova-manage_flagfile_location.patch: Refreshed

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
import datetime
22
22
 
23
 
from nova import test
24
23
from nova import context
25
24
from nova import db
26
25
from nova import exception
27
26
from nova import flags
 
27
from nova import test
28
28
from nova import utils
29
29
 
30
30
FLAGS = flags.FLAGS
60
60
 
61
61
    def test_instance_get_all_by_filters(self):
62
62
        args = {'reservation_id': 'a', 'image_ref': 1, 'host': 'host1'}
63
 
        inst1 = db.instance_create(self.context, args)
64
 
        inst2 = db.instance_create(self.context, args)
 
63
        db.instance_create(self.context, args)
 
64
        db.instance_create(self.context, args)
65
65
        result = db.instance_get_all_by_filters(self.context, {})
66
66
        self.assertTrue(2, len(result))
67
67
 
89
89
 
90
90
        # Ensure one migration older than 10 seconds is returned.
91
91
        updated_at = datetime.datetime(2000, 01, 01, 12, 00, 00)
92
 
        values = {"status": "FINISHED", "updated_at": updated_at}
 
92
        values = {"status": "finished", "updated_at": updated_at}
93
93
        migration = db.migration_create(ctxt, values)
94
94
        results = db.migration_get_all_unconfirmed(ctxt, 10)
95
95
        self.assertEqual(1, len(results))
97
97
 
98
98
        # Ensure the new migration is not returned.
99
99
        updated_at = datetime.datetime.utcnow()
100
 
        values = {"status": "FINISHED", "updated_at": updated_at}
 
100
        values = {"status": "finished", "updated_at": updated_at}
101
101
        migration = db.migration_create(ctxt, values)
102
102
        results = db.migration_get_all_unconfirmed(ctxt, 10)
103
103
        self.assertEqual(0, len(results))
136
136
        db_network = db.network_get(ctxt, network.id)
137
137
        self.assertEqual(network.uuid, db_network.uuid)
138
138
 
 
139
    def test_network_delete_safe(self):
 
140
        ctxt = context.get_admin_context()
 
141
        values = {'host': 'localhost', 'project_id': 'project1'}
 
142
        network = db.network_create_safe(ctxt, values)
 
143
        db_network = db.network_get(ctxt, network.id)
 
144
        values = {'network_id': network['id'], 'address': 'fake1'}
 
145
        address1 = db.fixed_ip_create(ctxt, values)
 
146
        values = {'network_id': network['id'],
 
147
                  'address': 'fake2',
 
148
                  'allocated': True}
 
149
        address2 = db.fixed_ip_create(ctxt, values)
 
150
        self.assertRaises(exception.NetworkInUse,
 
151
                          db.network_delete_safe, ctxt, network['id'])
 
152
        db.fixed_ip_update(ctxt, address2, {'allocated': False})
 
153
        network = db.network_delete_safe(ctxt, network['id'])
 
154
        self.assertRaises(exception.FixedIpNotFoundForAddress,
 
155
                          db.fixed_ip_get_by_address, ctxt, address1)
 
156
        ctxt = ctxt.elevated(read_deleted='yes')
 
157
        fixed_ip = db.fixed_ip_get_by_address(ctxt, address1)
 
158
        self.assertTrue(fixed_ip['deleted'])
 
159
 
139
160
    def test_network_create_with_duplicate_vlan(self):
140
161
        ctxt = context.get_admin_context()
141
162
        values1 = {'host': 'localhost', 'project_id': 'project1', 'vlan': 1}
149
170
        ctxt = context.get_admin_context()
150
171
 
151
172
        # Create an instance with some metadata
152
 
        metadata = {'host': 'foo'}
153
 
        values = {'metadata': metadata}
 
173
        values = {'metadata': {'host': 'foo'},
 
174
                  'system_metadata': {'original_image_ref': 'blah'}}
154
175
        instance = db.instance_create(ctxt, values)
155
176
 
156
177
        # Update the metadata
157
 
        metadata = {'host': 'bar'}
158
 
        values = {'metadata': metadata}
 
178
        values = {'metadata': {'host': 'bar'},
 
179
                  'system_metadata': {'original_image_ref': 'baz'}}
159
180
        db.instance_update(ctxt, instance.id, values)
160
181
 
161
 
        # Retrieve the metadata to ensure it was successfully updated
 
182
        # Retrieve the user-provided metadata to ensure it was successfully
 
183
        # updated
162
184
        instance_meta = db.instance_metadata_get(ctxt, instance.id)
163
185
        self.assertEqual('bar', instance_meta['host'])
164
186
 
 
187
        # Retrieve the system metadata to ensure it was successfully updated
 
188
        system_meta = db.instance_system_metadata_get(ctxt, instance.uuid)
 
189
        self.assertEqual('baz', system_meta['original_image_ref'])
 
190
 
165
191
    def test_instance_update_with_instance_uuid(self):
166
192
        """ test instance_update() works when an instance UUID is passed """
167
193
        ctxt = context.get_admin_context()
168
194
 
169
195
        # Create an instance with some metadata
170
 
        metadata = {'host': 'foo'}
171
 
        values = {'metadata': metadata}
 
196
        values = {'metadata': {'host': 'foo'},
 
197
                  'system_metadata': {'original_image_ref': 'blah'}}
172
198
        instance = db.instance_create(ctxt, values)
173
199
 
174
200
        # Update the metadata
175
 
        metadata = {'host': 'bar'}
176
 
        values = {'metadata': metadata}
 
201
        values = {'metadata': {'host': 'bar'},
 
202
                  'system_metadata': {'original_image_ref': 'baz'}}
177
203
        db.instance_update(ctxt, instance.uuid, values)
178
204
 
179
 
        # Retrieve the metadata to ensure it was successfully updated
 
205
        # Retrieve the user-provided metadata to ensure it was successfully
 
206
        # updated
180
207
        instance_meta = db.instance_metadata_get(ctxt, instance.id)
181
208
        self.assertEqual('bar', instance_meta['host'])
182
209
 
 
210
        # Retrieve the system metadata to ensure it was successfully updated
 
211
        system_meta = db.instance_system_metadata_get(ctxt, instance.uuid)
 
212
        self.assertEqual('baz', system_meta['original_image_ref'])
 
213
 
183
214
    def test_instance_fault_create(self):
184
215
        """Ensure we can create an instance fault"""
185
216
        ctxt = context.get_admin_context()
484
515
        ctxt = context.get_admin_context()
485
516
        result = _create_aggregate(context=ctxt, metadata=None)
486
517
        db.aggregate_delete(ctxt, result['id'])
487
 
        expected = db.aggregate_get_all(ctxt, read_deleted='no')
 
518
        expected = db.aggregate_get_all(ctxt)
488
519
        self.assertEqual(0, len(expected))
489
 
        aggregate = db.aggregate_get(ctxt, result['id'], read_deleted='yes')
 
520
        aggregate = db.aggregate_get(ctxt.elevated(read_deleted='yes'),
 
521
                                     result['id'])
490
522
        self.assertEqual(aggregate["operational_state"], "dismissed")
491
523
 
492
524
    def test_aggregate_update(self):
554
586
                                                values=values, metadata=None))
555
587
        for c in xrange(1, remove_counter):
556
588
            db.aggregate_delete(ctxt, aggregates[c - 1].id)
557
 
        results = db.aggregate_get_all(ctxt, read_deleted='no')
 
589
        results = db.aggregate_get_all(ctxt)
558
590
        self.assertEqual(len(results), add_counter - remove_counter)
559
591
 
560
592
    def test_aggregate_metadata_add(self):
612
644
        host = _get_fake_aggr_hosts()[0]
613
645
        db.aggregate_host_delete(ctxt, result.id, host)
614
646
        db.aggregate_host_add(ctxt, result.id, host)
615
 
        expected = db.aggregate_host_get_all(ctxt, result.id,
616
 
                                             read_deleted='no')
 
647
        expected = db.aggregate_host_get_all(ctxt, result.id)
617
648
        self.assertEqual(len(expected), 1)
618
649
 
619
650
    def test_aggregate_host_add_duplicate_raise_conflict(self):
650
681
        result = _create_aggregate_with_hosts(context=ctxt, metadata=None)
651
682
        db.aggregate_host_delete(ctxt, result.id,
652
683
                                 _get_fake_aggr_hosts()[0])
653
 
        expected = db.aggregate_host_get_all(ctxt, result.id,
654
 
                                             read_deleted='no')
 
684
        expected = db.aggregate_host_get_all(ctxt, result.id)
655
685
        self.assertEqual(0, len(expected))
656
686
 
657
687
    def test_aggregate_host_delete_raise_not_found(self):
700
730
        self.assertEquals(item.free_ram_mb, 1024 - 256)
701
731
 
702
732
    def test_compute_node_set(self):
703
 
        item = self._create_helper('host1')
 
733
        self._create_helper('host1')
704
734
 
705
735
        x = db.compute_node_utilization_set(self.ctxt, 'host1',
706
736
                            free_ram_mb=2048, free_disk_gb=4096)
722
752
        self.assertEquals(x.running_vms, 5)
723
753
 
724
754
    def test_compute_node_utilization_update(self):
725
 
        item = self._create_helper('host1')
 
755
        self._create_helper('host1')
726
756
 
727
757
        x = db.compute_node_utilization_update(self.ctxt, 'host1',
728
758
                                               free_ram_mb_delta=-24)