def ready(self): from waldur_core.core import models as core_models from waldur_core.quotas.fields import QuotaField from waldur_core.structure import models as structure_models from waldur_core.structure import signals as structure_signals from waldur_core.structure import SupportedServices from . import handlers Tenant = self.get_model('Tenant') # structure from .backend import OpenStackBackend SupportedServices.register_backend(OpenStackBackend) from . import quotas quotas.inject_tenant_quotas() for resource in ('vcpu', 'ram', 'storage'): structure_models.ServiceSettings.add_quota_field( name='openstack_%s' % resource, quota_field=QuotaField( creation_condition=lambda service_settings: service_settings.type == OpenStackConfig.service_name ), ) for model in (structure_models.Project, structure_models.Customer): structure_signals.structure_role_revoked.connect( handlers.remove_ssh_key_from_tenants, sender=model, dispatch_uid='openstack.handlers.remove_ssh_key_from_tenants__%s' % model.__name__, ) signals.pre_delete.connect( handlers.remove_ssh_key_from_all_tenants_on_it_deletion, sender=core_models.SshPublicKey, dispatch_uid='openstack.handlers.remove_ssh_key_from_all_tenants_on_it_deletion', ) from waldur_core.quotas.models import Quota signals.post_save.connect( handlers.log_tenant_quota_update, sender=Quota, dispatch_uid='openstack.handlers.log_tenant_quota_update', ) signals.post_save.connect( handlers.update_service_settings_name, sender=Tenant, dispatch_uid='openstack.handlers.update_service_settings_name', )
class Quotas(QuotaModelMixin.Quotas): vcpu = QuotaField(default_limit=20, is_backend=True) ram = QuotaField(default_limit=51200, is_backend=True) storage = QuotaField(default_limit=1024000, is_backend=True) instances = QuotaField(default_limit=30, is_backend=True) security_group_count = QuotaField(default_limit=100, is_backend=True) security_group_rule_count = QuotaField(default_limit=100, is_backend=True) floating_ip_count = QuotaField(default_limit=50, is_backend=True)
class Quotas(QuotaModelMixin.Quotas): vcpu = QuotaField(default_limit=20, is_backend=True) ram = QuotaField(default_limit=51200, is_backend=True) storage = QuotaField(default_limit=1024000, is_backend=True) instances = QuotaField(default_limit=30, is_backend=True) security_group_count = QuotaField(default_limit=100, is_backend=True) security_group_rule_count = QuotaField(default_limit=100, is_backend=True) floating_ip_count = QuotaField(default_limit=50, is_backend=True) volumes = QuotaField(default_limit=50, is_backend=True) volumes_size = QuotaField(is_backend=True) snapshots = QuotaField(default_limit=50, is_backend=True) snapshots_size = QuotaField(is_backend=True) network_count = QuotaField(default_limit=10, is_backend=True) subnet_count = QuotaField(default_limit=10, is_backend=True)
class Quotas(QuotaModelMixin.Quotas): test_quota = QuotaField(default_limit=1)
def ready(self): from waldur_core.core import models as core_models from waldur_core.quotas.fields import QuotaField from waldur_core.quotas import models as quota_models from waldur_core.structure import models as structure_models from waldur_core.structure import signals as structure_signals from . import handlers, utils, models for model in (structure_models.Customer, structure_models.Project): signals.post_save.connect( handlers.schedule_sync, sender=model, dispatch_uid= 'waldur_freeipa.handlers.schedule_sync_on_%s_creation' % model.__class__, ) signals.pre_delete.connect( handlers.schedule_sync, sender=model, dispatch_uid= 'waldur_freeipa.handlers.schedule_sync_on_%s_deletion' % model.__class__, ) structure_signals.structure_role_granted.connect( handlers.schedule_sync, sender=model, dispatch_uid= 'waldur_freeipa.handlers.schedule_sync_on_%s_role_granted' % model.__class__, ) structure_signals.structure_role_revoked.connect( handlers.schedule_sync, sender=model, dispatch_uid= 'waldur_freeipa.handlers.schedule_sync_on_%s_role_revoked' % model.__class__, ) signals.post_save.connect( handlers.schedule_sync_on_quota_change, sender=quota_models.Quota, dispatch_uid='waldur_freeipa.handlers.schedule_sync_on_quota_save', ) signals.post_save.connect( handlers.schedule_ssh_key_sync_when_key_is_created, sender=core_models.SshPublicKey, dispatch_uid= 'waldur_freeipa.handlers.schedule_ssh_key_sync_when_key_is_created', ) signals.pre_delete.connect( handlers.schedule_ssh_key_sync_when_key_is_deleted, sender=core_models.SshPublicKey, dispatch_uid= 'waldur_freeipa.handlers.schedule_ssh_key_sync_when_key_is_deleted', ) structure_models.Customer.add_quota_field(name=utils.QUOTA_NAME, quota_field=QuotaField()) structure_models.Project.add_quota_field(name=utils.QUOTA_NAME, quota_field=QuotaField()) signals.pre_save.connect( handlers.log_profile_event, sender=models.Profile, dispatch_uid='waldur_freeipa.handlers.log_profile_event', ) signals.pre_delete.connect( handlers.log_profile_deleted, sender=models.Profile, dispatch_uid='waldur_freeipa.handlers.log_profile_deleted', )
def ready(self): from waldur_core.quotas.fields import QuotaField, CounterQuotaField from waldur_core.structure import SupportedServices from waldur_core.structure import models as structure_models from waldur_core.structure import signals as structure_signals from waldur_freeipa import models as freeipa_models from .backend import SlurmBackend from . import handlers, models, utils SupportedServices.register_backend(SlurmBackend) signals.post_save.connect( handlers.process_user_creation, sender=freeipa_models.Profile, dispatch_uid='waldur_slurm.handlers.process_user_creation', ) signals.pre_delete.connect( handlers.process_user_deletion, sender=freeipa_models.Profile, dispatch_uid='waldur_slurm.handlers.process_user_deletion', ) structure_models_with_roles = (structure_models.Customer, structure_models.Project) for model in structure_models_with_roles: structure_signals.structure_role_granted.connect( handlers.process_role_granted, sender=model, dispatch_uid='waldur_slurm.handlers.process_role_granted.%s' % model.__class__, ) structure_signals.structure_role_revoked.connect( handlers.process_role_revoked, sender=model, dispatch_uid='waldur_slurm.handlers.process_role_revoked.%s' % model.__class__, ) for quota in utils.QUOTA_NAMES: structure_models.Customer.add_quota_field( name=quota, quota_field=QuotaField(is_backend=True)) structure_models.Project.add_quota_field( name=quota, quota_field=QuotaField(is_backend=True)) structure_models.Project.add_quota_field( name='nc_allocation_count', quota_field=CounterQuotaField( target_models=lambda: [models.Allocation], path_to_scope='service_project_link.project', )) structure_models.Customer.add_quota_field( name='nc_allocation_count', quota_field=CounterQuotaField( target_models=lambda: [models.Allocation], path_to_scope='service_project_link.project.customer', )) signals.post_save.connect( handlers.update_quotas_on_allocation_usage_update, sender=models.Allocation, dispatch_uid= 'waldur_slurm.handlers.update_quotas_on_allocation_usage_update', )
def ready(self): from waldur_core.quotas.fields import QuotaField, TotalQuotaField from waldur_core.quotas.models import Quota from waldur_core.structure.models import ( ServiceSettings, Project, Customer, SharedServiceSettings, ) from waldur_core.structure import SupportedServices from waldur_openstack.openstack.models import Tenant from .backend import OpenStackTenantBackend from . import handlers, models SupportedServices.register_backend(OpenStackTenantBackend) # Initialize service settings quotas based on tenant. for quota in Tenant.get_quotas_fields(): ServiceSettings.add_quota_field( name=quota.name, quota_field=QuotaField( is_backend=True, default_limit=quota.default_limit, creation_condition=lambda service_settings: service_settings.type == OpenStackTenantConfig.service_name, ), ) signals.post_save.connect( handlers.sync_private_settings_quotas_with_tenant_quotas, sender=Quota, dispatch_uid='openstack_tenant.handlers.sync_private_settings_quotas_with_tenant_quotas', ) signals.post_save.connect( handlers.propagate_volume_type_quotas_from_tenant_to_private_service_settings, sender=Quota, dispatch_uid='openstack_tenant.handlers.propagate_volume_type_quotas_from_tenant_to_private_service_settings', ) signals.post_delete.connect( handlers.delete_volume_type_quotas_from_private_service_settings, sender=Quota, dispatch_uid='openstack_tenant.handlers.delete_volume_type_quotas_from_private_service_settings', ) Project.add_quota_field( name='os_cpu_count', quota_field=TotalQuotaField( target_models=[models.Instance], path_to_scope='service_project_link.project', target_field='cores', ), ) Project.add_quota_field( name='os_ram_size', quota_field=TotalQuotaField( target_models=[models.Instance], path_to_scope='service_project_link.project', target_field='ram', ), ) Project.add_quota_field( name='os_storage_size', quota_field=TotalQuotaField( target_models=[models.Volume, models.Snapshot], path_to_scope='service_project_link.project', target_field='size', ), ) Customer.add_quota_field( name='os_cpu_count', quota_field=TotalQuotaField( target_models=[models.Instance], path_to_scope='service_project_link.project.customer', target_field='cores', ), ) Customer.add_quota_field( name='os_ram_size', quota_field=TotalQuotaField( target_models=[models.Instance], path_to_scope='service_project_link.project.customer', target_field='ram', ), ) Customer.add_quota_field( name='os_storage_size', quota_field=TotalQuotaField( target_models=[models.Volume, models.Snapshot], path_to_scope='service_project_link.project.customer', target_field='size', ), ) for Resource in (models.Instance, models.Volume, models.Snapshot): name = Resource.__name__.lower() signals.post_save.connect( handlers.log_action, sender=Resource, dispatch_uid='openstack_tenant.handlers.log_%s_action' % name, ) for handler in handlers.resource_handlers: model = handler.resource_model name = model.__name__.lower() fsm_signals.post_transition.connect( handler.create_handler, sender=model, dispatch_uid='openstack_tenant.handlers.create_%s' % name, ) fsm_signals.post_transition.connect( handler.update_handler, sender=model, dispatch_uid='openstack_tenant.handlers.update_%s' % name, ) signals.post_save.connect( handler.import_handler, sender=model, dispatch_uid='openstack_tenant.handlers.import_%s' % name, ) signals.post_delete.connect( handler.delete_handler, sender=model, dispatch_uid='openstack_tenant.handlers.delete_%s' % name, ) signals.post_save.connect( handlers.log_backup_schedule_creation, sender=models.BackupSchedule, dispatch_uid='openstack_tenant.handlers.log_backup_schedule_creation', ) signals.post_save.connect( handlers.log_backup_schedule_action, sender=models.BackupSchedule, dispatch_uid='openstack_tenant.handlers.log_backup_schedule_action', ) signals.pre_delete.connect( handlers.log_backup_schedule_deletion, sender=models.BackupSchedule, dispatch_uid='openstack_tenant.handlers.log_backup_schedule_deletion', ) signals.post_save.connect( handlers.log_snapshot_schedule_creation, sender=models.SnapshotSchedule, dispatch_uid='openstack_tenant.handlers.log_snapshot_schedule_creation', ) signals.post_save.connect( handlers.log_snapshot_schedule_action, sender=models.SnapshotSchedule, dispatch_uid='openstack_tenant.handlers.log_snapshot_schedule_action', ) signals.pre_delete.connect( handlers.log_snapshot_schedule_deletion, sender=models.SnapshotSchedule, dispatch_uid='openstack_tenant.handlers.log_snapshot_schedule_deletion', ) signals.post_save.connect( handlers.update_service_settings_credentials, sender=Tenant, dispatch_uid='openstack_tenant.handlers.update_service_settings_credentials', ) signals.post_save.connect( handlers.update_service_settings, sender=Tenant, dispatch_uid='openstack_tenant.handlers.update_service_settings', ) signals.m2m_changed.connect( handlers.sync_certificates_between_openstack_service_with_openstacktenant_service, sender=ServiceSettings.certifications.through, dispatch_uid='openstack_tenant.handlers.' 'sync_certificates_between_openstack_service_with_openstacktenant_service', ) signals.post_save.connect( handlers.copy_certifications_from_openstack_service_to_openstacktenant_service, sender=ServiceSettings, dispatch_uid='openstack_tenant.handlers.' 'copy_certifications_from_openstack_service_to_openstacktenant_service', ) signals.post_save.connect( handlers.copy_flavor_exclude_regex_to_openstacktenant_service_settings, sender=ServiceSettings, dispatch_uid='openstack_tenant.handlers.' 'copy_flavor_exclude_regex_to_openstacktenant_service_settings', ) for model in (SharedServiceSettings, ServiceSettings): signals.post_save.connect( handlers.copy_config_drive_to_openstacktenant_service_settings, sender=model, dispatch_uid='openstack_tenant.handlers.' 'copy_config_drive_to_openstacktenant_service_settings_%s' % model.__class__, ) signals.post_save.connect( handlers.create_service_from_tenant, sender=Tenant, dispatch_uid='openstack_tenant.handlers.create_service_from_tenant', )