2020-03-21 10:59:04 +00:00
|
|
|
from django.db import models
|
|
|
|
from django.contrib.postgres.fields import JSONField
|
2020-03-22 19:55:11 +00:00
|
|
|
from django.utils.translation import gettext_lazy as _
|
2020-03-21 10:59:04 +00:00
|
|
|
|
|
|
|
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
|
2020-03-22 19:55:11 +00:00
|
|
|
|
|
|
|
# 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
|