1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
# and others. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
class Project:
"""
SNAPS domain class for Projects. Should contain attributes that
are shared amongst cloud providers
"""
def __init__(self, name, project_id, domain_id=None):
"""
Constructor
:param name: the project's name
:param project_id: the project's id
:param domain_id: the project's domain id
"""
self.name = name
self.id = project_id
self.domain_id = domain_id
def __eq__(self, other):
return self.name == other.name and self.id == other.id
class Domain:
"""
SNAPS domain class for OpenStack Keystone v3+ domains.
"""
def __init__(self, name, domain_id=None):
"""
Constructor
:param name: the project's name
:param domain_id: the project's domain id
"""
self.name = name
self.id = domain_id
def __eq__(self, other):
return self.name == other.name and self.id == other.id
class ComputeQuotas:
"""
SNAPS domain class for holding project quotas for compute services
"""
def __init__(self, nova_quotas=None, **kwargs):
"""
Constructor
:param nova_quotas: the OS nova quota object
"""
if nova_quotas:
self.metadata_items = nova_quotas.metadata_items
self.cores = nova_quotas.cores # aka. VCPUs
self.instances = nova_quotas.instances
self.injected_files = nova_quotas.injected_files
self.injected_file_content_bytes = nova_quotas.injected_file_content_bytes
self.ram = nova_quotas.ram
self.fixed_ips = nova_quotas.fixed_ips
self.key_pairs = nova_quotas.key_pairs
else:
self.metadata_items = kwargs.get('metadata_items')
self.cores = kwargs.get('cores') # aka. VCPUs
self.instances = kwargs.get('instances')
self.injected_files = kwargs.get('injected_files')
self.injected_file_content_bytes = kwargs.get(
'injected_file_content_bytes')
self.ram = kwargs.get('ram')
self.fixed_ips = kwargs.get('fixed_ips')
self.key_pairs = kwargs.get('key_pairs')
def __eq__(self, other):
return (self.metadata_items == other.metadata_items and
self.cores == other.cores and
self.instances == other.instances and
self.injected_files == other.injected_files and
self.injected_file_content_bytes == other.injected_file_content_bytes and
self.fixed_ips == other.fixed_ips and
self.key_pairs == other.key_pairs)
class NetworkQuotas:
"""
SNAPS domain class for holding project quotas for networking services
"""
def __init__(self, **neutron_quotas):
"""
Constructor
:param neutron_quotas: the OS network quota object
"""
# Networks settings here
self.security_group = neutron_quotas['security_group']
self.security_group_rule = neutron_quotas['security_group_rule']
self.floatingip = neutron_quotas['floatingip']
self.network = neutron_quotas['network']
self.port = neutron_quotas['port']
self.router = neutron_quotas['router']
self.subnet = neutron_quotas['subnet']
def __eq__(self, other):
return (self.security_group == other.security_group and
self.security_group_rule == other.security_group_rule and
self.floatingip == other.floatingip and
self.network == other.network and
self.port == other.port and
self.router == other.router and
self.subnet == other.subnet)
|