summaryrefslogtreecommitdiffstats
path: root/snaps/domain/project.py
diff options
context:
space:
mode:
Diffstat (limited to 'snaps/domain/project.py')
-rw-r--r--snaps/domain/project.py72
1 files changed, 70 insertions, 2 deletions
diff --git a/snaps/domain/project.py b/snaps/domain/project.py
index 54407cf..aa125e3 100644
--- a/snaps/domain/project.py
+++ b/snaps/domain/project.py
@@ -16,7 +16,7 @@
class Project:
"""
- SNAPS domain object for Projects. Should contain attributes that
+ SNAPS domain class for Projects. Should contain attributes that
are shared amongst cloud providers
"""
def __init__(self, name, project_id, domain_id=None):
@@ -36,7 +36,7 @@ class Project:
class Domain:
"""
- SNAPS domain object for OpenStack Keystone v3+ domains.
+ SNAPS domain class for OpenStack Keystone v3+ domains.
"""
def __init__(self, name, domain_id=None):
"""
@@ -49,3 +49,71 @@ class Domain:
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)