Scott Baker | 80d65b1 | 2016-05-26 20:20:47 -0700 | [diff] [blame] | 1 | import os |
| 2 | from django.db import models |
| 3 | from core.models import PlCoreBase |
| 4 | from core.models.plcorebase import StrippedCharField |
| 5 | |
| 6 | # XOS: Serves as the root of the build system |
| 7 | |
Scott Baker | 02b6cdb | 2016-06-03 15:49:16 -0700 | [diff] [blame] | 8 | |
| 9 | |
Scott Baker | 80d65b1 | 2016-05-26 20:20:47 -0700 | [diff] [blame] | 10 | class XOS(PlCoreBase): |
| 11 | name = StrippedCharField(max_length=200, unique=True, help_text="Name of XOS", default="XOS") |
Scott Baker | 02b6cdb | 2016-06-03 15:49:16 -0700 | [diff] [blame] | 12 | ui_port = models.IntegerField(help_text="Port for XOS UI", default=80) |
Scott Baker | be41a12 | 2016-06-06 10:40:40 -0700 | [diff] [blame] | 13 | bootstrap_ui_port = models.IntegerField(help_text="Port for XOS UI", default=81) |
Scott Baker | 02b6cdb | 2016-06-03 15:49:16 -0700 | [diff] [blame] | 14 | db_container_name = StrippedCharField(max_length=200, help_text="name of XOS db container", default="xos_db") |
Scott Baker | 83b3fad | 2016-06-07 10:32:28 -0700 | [diff] [blame] | 15 | docker_project_name = StrippedCharField(max_length=200, help_text="docker project name") |
Scott Baker | 0baadc4 | 2016-06-08 17:32:45 -0700 | [diff] [blame] | 16 | enable_build = models.BooleanField(help_text="True if Onboarding Synchronizer should build XOS as necessary", default=True) |
Scott Baker | 057a6a1 | 2016-06-13 15:45:55 -0700 | [diff] [blame] | 17 | frontend_only = models.BooleanField(help_text="If True, XOS will not start synchronizer containers", default=False) |
Scott Baker | 80d65b1 | 2016-05-26 20:20:47 -0700 | [diff] [blame] | 18 | |
| 19 | def __unicode__(self): return u'%s' % (self.name) |
| 20 | |
| 21 | def __init__(self, *args, **kwargs): |
| 22 | super(XOS, self).__init__(*args, **kwargs) |
| 23 | |
| 24 | def save(self, *args, **kwds): |
| 25 | super(XOS, self).save(*args, **kwds) |
| 26 | |
| 27 | # def can_update(self, user): |
| 28 | # return user.can_update_site(self.site, allow=['tech']) |
| 29 | |
Scott Baker | ca78d16 | 2016-06-01 15:53:27 -0700 | [diff] [blame] | 30 | def rebuild(self): |
| 31 | for service_controller in self.service_controllers.all(): |
| 32 | for scr in service_controller.service_controller_resources.all(): |
| 33 | scr.save() |
| 34 | service_controller.save() |
| 35 | self.save() |
| 36 | |
Scott Baker | 02b6cdb | 2016-06-03 15:49:16 -0700 | [diff] [blame] | 37 | class XOSVolume(PlCoreBase): |
| 38 | xos = models.ForeignKey(XOS, related_name='volumes', help_text="The XOS object for this Volume") |
| 39 | container_path=StrippedCharField(max_length=1024, unique=True, help_text="Path of Volume in Container") |
| 40 | host_path=StrippedCharField(max_length=1024, help_text="Path of Volume in Host") |
| 41 | read_only=models.BooleanField(default=False, help_text="True if mount read-only") |
| 42 | |
| 43 | def __unicode__(self): return u'%s' % (self.container_path) |
| 44 | |
Scott Baker | ca78d16 | 2016-06-01 15:53:27 -0700 | [diff] [blame] | 45 | |