diff options
Diffstat (limited to 'snaps/domain/project.py')
-rw-r--r-- | snaps/domain/project.py | 72 |
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) |