Revision 87a86b71
b/snf-tools/synnefo_tools/burnin/common.py | ||
---|---|---|
223 | 223 |
self.info("Pithos url is %s", self.clients.pithos_url) |
224 | 224 |
self.info("Image url is %s", self.clients.image_url) |
225 | 225 |
|
226 |
user_uuid = self._get_uuid() |
|
226 | 227 |
self.quotas = self._get_quotas() |
227 |
self.info(" Disk usage is %s bytes", |
|
228 |
self.quotas['system']['cyclades.disk']['usage']) |
|
229 |
self.info(" VM usage is %s", |
|
230 |
self.quotas['system']['cyclades.vm']['usage']) |
|
231 |
self.info(" DiskSpace usage is %s bytes", |
|
232 |
self.quotas['system']['pithos.diskspace']['usage']) |
|
233 |
self.info(" Ram usage is %s bytes", |
|
234 |
self.quotas['system']['cyclades.ram']['usage']) |
|
235 |
self.info(" Floating IPs usage is %s", |
|
236 |
self.quotas['system']['cyclades.floating_ip']['usage']) |
|
237 |
self.info(" CPU usage is %s", |
|
238 |
self.quotas['system']['cyclades.cpu']['usage']) |
|
239 |
self.info(" Network usage is %s", |
|
240 |
self.quotas['system']['cyclades.network.private']['usage']) |
|
228 |
for puuid, quotas in self.quotas.items(): |
|
229 |
project_name = self._get_project_name(puuid, user_uuid) |
|
230 |
self.info(" Project %s:", project_name) |
|
231 |
self.info(" Disk usage is %s bytes", |
|
232 |
quotas['cyclades.disk']['usage']) |
|
233 |
self.info(" VM usage is %s", |
|
234 |
quotas['cyclades.vm']['usage']) |
|
235 |
self.info(" DiskSpace usage is %s bytes", |
|
236 |
quotas['pithos.diskspace']['usage']) |
|
237 |
self.info(" Ram usage is %s bytes", |
|
238 |
quotas['cyclades.ram']['usage']) |
|
239 |
self.info(" Floating IPs usage is %s", |
|
240 |
quotas['cyclades.floating_ip']['usage']) |
|
241 |
self.info(" CPU usage is %s", |
|
242 |
quotas['cyclades.cpu']['usage']) |
|
243 |
self.info(" Network usage is %s", |
|
244 |
quotas['cyclades.network.private']['usage']) |
|
241 | 245 |
|
242 | 246 |
def _run_tests(self, tcases): |
243 | 247 |
"""Run some generated testcases""" |
... | ... | |
508 | 512 |
def _get_quotas(self): |
509 | 513 |
"""Get quotas""" |
510 | 514 |
self.info("Getting quotas") |
511 |
return self.clients.astakos.get_quotas()
|
|
515 |
return dict(self.clients.astakos.get_quotas())
|
|
512 | 516 |
|
513 | 517 |
# Invalid argument name. pylint: disable-msg=C0103 |
514 | 518 |
# Too many arguments. pylint: disable-msg=R0913 |
515 |
def _check_quotas(self, disk=None, vm=None, diskspace=None, |
|
519 |
def _check_quotas(self, puuid=None, disk=None, vm=None, diskspace=None,
|
|
516 | 520 |
ram=None, ip=None, cpu=None, network=None): |
517 |
"""Check that quotas' changes are consistent""" |
|
521 |
"""Check that quotas' changes are consistent |
|
522 |
|
|
523 |
@param puuid: The uuid of the project, quotas are assigned to |
|
524 |
|
|
525 |
""" |
|
526 |
|
|
518 | 527 |
assert any(v is None for v in |
519 | 528 |
[disk, vm, diskspace, ram, ip, cpu, network]), \ |
520 | 529 |
"_check_quotas require arguments" |
... | ... | |
524 | 533 |
new_quotas = self._get_quotas() |
525 | 534 |
self.quotas = new_quotas |
526 | 535 |
|
527 |
# Check Disk usage |
|
528 |
self._check_quotas_aux( |
|
529 |
old_quotas, new_quotas, 'cyclades.disk', disk) |
|
530 |
# Check VM usage |
|
531 |
self._check_quotas_aux( |
|
532 |
old_quotas, new_quotas, 'cyclades.vm', vm) |
|
533 |
# Check DiskSpace usage |
|
534 |
self._check_quotas_aux( |
|
535 |
old_quotas, new_quotas, 'pithos.diskspace', diskspace) |
|
536 |
# Check Ram usage |
|
537 |
self._check_quotas_aux( |
|
538 |
old_quotas, new_quotas, 'cyclades.ram', ram) |
|
539 |
# Check Floating IPs usage |
|
540 |
self._check_quotas_aux( |
|
541 |
old_quotas, new_quotas, 'cyclades.floating_ip', ip) |
|
542 |
# Check CPU usage |
|
543 |
self._check_quotas_aux( |
|
544 |
old_quotas, new_quotas, 'cyclades.cpu', cpu) |
|
545 |
# Check Network usage |
|
546 |
self._check_quotas_aux( |
|
547 |
old_quotas, new_quotas, 'cyclades.network.private', network) |
|
548 |
|
|
549 |
def _check_quotas_aux(self, old_quotas, new_quotas, resource, value): |
|
536 |
user_uuid = self._get_uuid() |
|
537 |
if puuid is None: |
|
538 |
puuid = user_uuid |
|
539 |
|
|
540 |
self.assertListEqual(sorted(old_quotas.keys()), |
|
541 |
sorted(new_quotas.keys())) |
|
542 |
for project in old_quotas.keys(): |
|
543 |
# Check Disk usage |
|
544 |
project_name = self._get_project_name(project, user_uuid) |
|
545 |
self._check_quotas_aux(old_quotas[project], new_quotas[project], |
|
546 |
project_name, "cyclades.disk", |
|
547 |
disk, project == puuid) |
|
548 |
# Check VM usage |
|
549 |
self._check_quotas_aux(old_quotas[project], new_quotas[project], |
|
550 |
project_name, "cyclades.vm", |
|
551 |
vm, project == puuid) |
|
552 |
# Check DiskSpace usage |
|
553 |
self._check_quotas_aux(old_quotas[project], new_quotas[project], |
|
554 |
project_name, "pithos.diskspace", |
|
555 |
diskspace, project == puuid) |
|
556 |
# Check Ram usage |
|
557 |
self._check_quotas_aux(old_quotas[project], new_quotas[project], |
|
558 |
project_name, "cyclades.ram", |
|
559 |
ram, project == puuid) |
|
560 |
# Check Floating IPs usage |
|
561 |
self._check_quotas_aux(old_quotas[project], new_quotas[project], |
|
562 |
project_name, "cyclades.floating_ip", |
|
563 |
ip, project == puuid) |
|
564 |
# Check CPU usage |
|
565 |
self._check_quotas_aux(old_quotas[project], new_quotas[project], |
|
566 |
project_name, "cyclades.cpu", |
|
567 |
cpu, project == puuid) |
|
568 |
# Check Network usage |
|
569 |
self._check_quotas_aux(old_quotas[project], new_quotas[project], |
|
570 |
project_name, "cyclades.network.private", |
|
571 |
network, project == puuid) |
|
572 |
|
|
573 |
def _check_quotas_aux(self, old_quotas, new_quotas, |
|
574 |
project_name, resource, value, check): |
|
550 | 575 |
"""Auxiliary function for _check_quotas""" |
551 |
old_value = old_quotas['system'][resource]['usage']
|
|
552 |
new_value = new_quotas['system'][resource]['usage']
|
|
553 |
if value is not None: |
|
576 |
old_value = old_quotas[resource]['usage'] |
|
577 |
new_value = new_quotas[resource]['usage'] |
|
578 |
if check and value is not None:
|
|
554 | 579 |
assert isinstance(value, int), \ |
555 | 580 |
"%s value has to be integer" % resource |
556 | 581 |
old_value += value |
557 | 582 |
self.assertEqual(old_value, new_value, |
558 |
"%s quotas don't match" % resource) |
|
583 |
"Project %s: %s quotas don't match" % |
|
584 |
(project_name, resource)) |
|
585 |
|
|
586 |
# ---------------------------------- |
|
587 |
# Projects |
|
588 |
def _get_project_name(self, puuid, uuid=None): |
|
589 |
"""Get the name of a project""" |
|
590 |
if uuid is None: |
|
591 |
uuid = self._get_uuid() |
|
592 |
if puuid == uuid: |
|
593 |
return "base" |
|
594 |
else: |
|
595 |
project_info = self.clients.astakos.get_project(puuid) |
|
596 |
return project_info['name'] |
|
559 | 597 |
|
560 | 598 |
|
561 | 599 |
# -------------------------------------------------------------------- |
Also available in: Unified diff