from django.db import models from django.db.models import JSONField from django.utils.translation import gettext_lazy as _ class UncloudModel(models.Model): """ This class extends the standard model with an extra_data field that can be used to include public, but internal information. For instance if you migrate from an existing virtualisation framework to uncloud. The extra_data attribute should be considered a hack and whenever data is necessary for running uncloud, it should **not** be stored in there. """ extra_data = JSONField(editable=False, blank=True, null=True) class Meta: abstract = True # See https://docs.djangoproject.com/en/dev/ref/models/fields/#field-choices-enum-types class UncloudStatus(models.TextChoices): PENDING = 'PENDING', _('Pending') AWAITING_PAYMENT = 'AWAITING_PAYMENT', _('Awaiting payment') BEING_CREATED = 'BEING_CREATED', _('Being created') SCHEDULED = 'SCHEDULED', _('Scheduled') # resource selected, waiting for dispatching ACTIVE = 'ACTIVE', _('Active') MODIFYING = 'MODIFYING', _('Modifying') # Resource is being changed DELETED = 'DELETED', _('Deleted') # Resource has been deleted DISABLED = 'DISABLED', _('Disabled') # Is usable, but cannot be used for new things UNUSABLE = 'UNUSABLE', _('Unusable'), # Has some kind of error