~vishvananda/nova/lp776825

« back to all changes in this revision

Viewing changes to nova/tests/test_quota.py

  • Committer: Tarmac
  • Author(s): Mark Washenberger
  • Date: 2011-05-16 20:51:08 UTC
  • mfrom: (1054.6.13 quota-key-value)
  • Revision ID: tarmac-20110516205108-5l1lmir6lxiy1kur
Migrate quota schema from hardcoded columns to a key-value approach. The hope is that this change would make it easier to change the quota system without future schema changes. It also adds the concept of quotas that are unlimited.

Show diffs side-by-side

added added

removed removed

Lines of Context:
96
96
        num_instances = quota.allowed_instances(self.context, 100,
97
97
            self._get_instance_type('m1.small'))
98
98
        self.assertEqual(num_instances, 2)
99
 
        db.quota_create(self.context, {'project_id': self.project.id,
100
 
                                       'instances': 10})
 
99
        db.quota_create(self.context, self.project.id, 'instances', 10)
101
100
        num_instances = quota.allowed_instances(self.context, 100,
102
101
            self._get_instance_type('m1.small'))
103
102
        self.assertEqual(num_instances, 4)
104
 
        db.quota_update(self.context, self.project.id, {'cores': 100})
 
103
        db.quota_create(self.context, self.project.id, 'cores', 100)
105
104
        num_instances = quota.allowed_instances(self.context, 100,
106
105
            self._get_instance_type('m1.small'))
107
106
        self.assertEqual(num_instances, 10)
111
110
        num_metadata_items = quota.allowed_metadata_items(self.context,
112
111
                                                          too_many_items)
113
112
        self.assertEqual(num_metadata_items, FLAGS.quota_metadata_items)
114
 
        db.quota_update(self.context, self.project.id, {'metadata_items': 5})
 
113
        db.quota_create(self.context, self.project.id, 'metadata_items', 5)
115
114
        num_metadata_items = quota.allowed_metadata_items(self.context,
116
115
                                                          too_many_items)
117
116
        self.assertEqual(num_metadata_items, 5)
118
117
 
119
118
        # Cleanup
120
 
        db.quota_destroy(self.context, self.project.id)
 
119
        db.quota_destroy_all_by_project(self.context, self.project.id)
 
120
 
 
121
    def test_unlimited_instances(self):
 
122
        FLAGS.quota_instances = 2
 
123
        FLAGS.quota_cores = 1000
 
124
        instance_type = self._get_instance_type('m1.small')
 
125
        num_instances = quota.allowed_instances(self.context, 100,
 
126
                                                instance_type)
 
127
        self.assertEqual(num_instances, 2)
 
128
        db.quota_create(self.context, self.project.id, 'instances', None)
 
129
        num_instances = quota.allowed_instances(self.context, 100,
 
130
                                                instance_type)
 
131
        self.assertEqual(num_instances, 100)
 
132
        num_instances = quota.allowed_instances(self.context, 101,
 
133
                                                instance_type)
 
134
        self.assertEqual(num_instances, 101)
 
135
 
 
136
    def test_unlimited_cores(self):
 
137
        FLAGS.quota_instances = 1000
 
138
        FLAGS.quota_cores = 2
 
139
        instance_type = self._get_instance_type('m1.small')
 
140
        num_instances = quota.allowed_instances(self.context, 100,
 
141
                                                instance_type)
 
142
        self.assertEqual(num_instances, 2)
 
143
        db.quota_create(self.context, self.project.id, 'cores', None)
 
144
        num_instances = quota.allowed_instances(self.context, 100,
 
145
                                                instance_type)
 
146
        self.assertEqual(num_instances, 100)
 
147
        num_instances = quota.allowed_instances(self.context, 101,
 
148
                                                instance_type)
 
149
        self.assertEqual(num_instances, 101)
 
150
 
 
151
    def test_unlimited_volumes(self):
 
152
        FLAGS.quota_volumes = 10
 
153
        FLAGS.quota_gigabytes = 1000
 
154
        volumes = quota.allowed_volumes(self.context, 100, 1)
 
155
        self.assertEqual(volumes, 10)
 
156
        db.quota_create(self.context, self.project.id, 'volumes', None)
 
157
        volumes = quota.allowed_volumes(self.context, 100, 1)
 
158
        self.assertEqual(volumes, 100)
 
159
        volumes = quota.allowed_volumes(self.context, 101, 1)
 
160
        self.assertEqual(volumes, 101)
 
161
 
 
162
    def test_unlimited_gigabytes(self):
 
163
        FLAGS.quota_volumes = 1000
 
164
        FLAGS.quota_gigabytes = 10
 
165
        volumes = quota.allowed_volumes(self.context, 100, 1)
 
166
        self.assertEqual(volumes, 10)
 
167
        db.quota_create(self.context, self.project.id, 'gigabytes', None)
 
168
        volumes = quota.allowed_volumes(self.context, 100, 1)
 
169
        self.assertEqual(volumes, 100)
 
170
        volumes = quota.allowed_volumes(self.context, 101, 1)
 
171
        self.assertEqual(volumes, 101)
 
172
 
 
173
    def test_unlimited_floating_ips(self):
 
174
        FLAGS.quota_floating_ips = 10
 
175
        floating_ips = quota.allowed_floating_ips(self.context, 100)
 
176
        self.assertEqual(floating_ips, 10)
 
177
        db.quota_create(self.context, self.project.id, 'floating_ips', None)
 
178
        floating_ips = quota.allowed_floating_ips(self.context, 100)
 
179
        self.assertEqual(floating_ips, 100)
 
180
        floating_ips = quota.allowed_floating_ips(self.context, 101)
 
181
        self.assertEqual(floating_ips, 101)
 
182
 
 
183
    def test_unlimited_metadata_items(self):
 
184
        FLAGS.quota_metadata_items = 10
 
185
        items = quota.allowed_metadata_items(self.context, 100)
 
186
        self.assertEqual(items, 10)
 
187
        db.quota_create(self.context, self.project.id, 'metadata_items', None)
 
188
        items = quota.allowed_metadata_items(self.context, 100)
 
189
        self.assertEqual(items, 100)
 
190
        items = quota.allowed_metadata_items(self.context, 101)
 
191
        self.assertEqual(items, 101)
121
192
 
122
193
    def test_too_many_instances(self):
123
194
        instance_ids = []