root / snf-tools / synnefo_tools / burnin / projects_tests.py @ 411cbbf4
History | View | Annotate | Download (4.2 kB)
1 |
# Copyright 2014 GRNET S.A. All rights reserved.
|
---|---|
2 |
#
|
3 |
# Redistribution and use in source and binary forms, with or
|
4 |
# without modification, are permitted provided that the following
|
5 |
# conditions are met:
|
6 |
#
|
7 |
# 1. Redistributions of source code must retain the above
|
8 |
# copyright notice, this list of conditions and the following
|
9 |
# disclaimer.
|
10 |
#
|
11 |
# 2. Redistributions in binary form must reproduce the above
|
12 |
# copyright notice, this list of conditions and the following
|
13 |
# disclaimer in the documentation and/or other materials
|
14 |
# provided with the distribution.
|
15 |
#
|
16 |
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 |
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 |
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 |
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 |
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 |
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 |
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 |
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 |
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 |
# POSSIBILITY OF SUCH DAMAGE.
|
28 |
#
|
29 |
# The views and conclusions contained in the software and
|
30 |
# documentation are those of the authors and should not be
|
31 |
# interpreted as representing official policies, either expressed
|
32 |
# or implied, of GRNET S.A.
|
33 |
|
34 |
"""
|
35 |
This is the burnin class that tests the Projects functionality
|
36 |
|
37 |
"""
|
38 |
|
39 |
import random |
40 |
|
41 |
from synnefo_tools.burnin.common import Proper |
42 |
from synnefo_tools.burnin.cyclades_common import CycladesTests, \ |
43 |
QADD, QREMOVE, MB, GB, QDISK, QVM, QRAM, QCPU |
44 |
|
45 |
|
46 |
# pylint: disable=too-many-public-methods
|
47 |
class QuotasTestSuite(CycladesTests): |
48 |
"""Test Quotas functionality"""
|
49 |
server = Proper(value=None)
|
50 |
|
51 |
def test_001_check_skip(self): |
52 |
"""Check if we are members in more than one projects"""
|
53 |
self._skip_suite_if(len(self.quotas.keys()) < 2, |
54 |
"This user is not a member of 2 or more projects")
|
55 |
|
56 |
def test_002_create(self): |
57 |
"""Create a machine to a different project than base"""
|
58 |
image = random.choice(self._parse_images())
|
59 |
flavors = self._parse_flavors()
|
60 |
|
61 |
# We want to create our machine in a project other than 'base'
|
62 |
projects = self.quotas.keys()
|
63 |
projects.remove(self._get_uuid())
|
64 |
(flavor, project) = self._find_project(flavors, projects)
|
65 |
|
66 |
# Create machine
|
67 |
self.server = self._create_server(image, flavor, network=True, |
68 |
project_id=project) |
69 |
|
70 |
# Wait for server to become active
|
71 |
self._insist_on_server_transition(
|
72 |
self.server, ["BUILD"], "ACTIVE") |
73 |
|
74 |
def test_003_assign(self): |
75 |
"""Re-Assign the machine to a different project"""
|
76 |
# We will use the base project for now
|
77 |
new_project = self._get_uuid()
|
78 |
project_name = self._get_project_name(new_project)
|
79 |
self.info("Assign %s to project %s", self.server['name'], project_name) |
80 |
|
81 |
# Reassign server
|
82 |
old_project = self.server['tenant_id'] |
83 |
self.clients.cyclades.reassign_server(self.server['id'], new_project) |
84 |
|
85 |
# Check tenant_id
|
86 |
self.server = self._get_server_details(self.server, quiet=True) |
87 |
self.assertEqual(self.server['tenant_id'], new_project) |
88 |
|
89 |
# Check new quotas
|
90 |
flavor = self.clients.compute.get_flavor_details(
|
91 |
self.server['flavor']['id']) |
92 |
changes = \ |
93 |
{old_project: |
94 |
[(QDISK, QREMOVE, flavor['disk'], GB),
|
95 |
(QVM, QREMOVE, 1, None), |
96 |
(QRAM, QREMOVE, flavor['ram'], MB),
|
97 |
(QCPU, QREMOVE, flavor['vcpus'], None)], |
98 |
new_project: |
99 |
[(QDISK, QADD, flavor['disk'], GB),
|
100 |
(QVM, QADD, 1, None), |
101 |
(QRAM, QADD, flavor['ram'], MB),
|
102 |
(QCPU, QADD, flavor['vcpus'], None)]} |
103 |
self._check_quotas(changes)
|
104 |
|
105 |
def test_004_cleanup(self): |
106 |
"""Remove test server"""
|
107 |
self._delete_servers([self.server]) |