blob: 01c9514c56c195ae0f4e270dd90581172d7909b4 [file] [log] [blame]
Scott Baker80d65b12016-05-26 20:20:47 -07001import os
2from django.db import models
3from core.models import PlCoreBase
4from core.models.plcorebase import StrippedCharField
5
6# XOS: Serves as the root of the build system
7
Scott Baker02b6cdb2016-06-03 15:49:16 -07008
9
Scott Baker80d65b12016-05-26 20:20:47 -070010class XOS(PlCoreBase):
11 name = StrippedCharField(max_length=200, unique=True, help_text="Name of XOS", default="XOS")
Scott Baker02b6cdb2016-06-03 15:49:16 -070012 ui_port = models.IntegerField(help_text="Port for XOS UI", default=80)
Scott Bakerbe41a122016-06-06 10:40:40 -070013 bootstrap_ui_port = models.IntegerField(help_text="Port for XOS UI", default=81)
Scott Baker02b6cdb2016-06-03 15:49:16 -070014 db_container_name = StrippedCharField(max_length=200, help_text="name of XOS db container", default="xos_db")
Scott Baker83b3fad2016-06-07 10:32:28 -070015 docker_project_name = StrippedCharField(max_length=200, help_text="docker project name")
Scott Baker0baadc42016-06-08 17:32:45 -070016 enable_build = models.BooleanField(help_text="True if Onboarding Synchronizer should build XOS as necessary", default=True)
Scott Baker057a6a12016-06-13 15:45:55 -070017 frontend_only = models.BooleanField(help_text="If True, XOS will not start synchronizer containers", default=False)
Scott Baker80d65b12016-05-26 20:20:47 -070018
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 Bakerca78d162016-06-01 15:53:27 -070030 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 Baker02b6cdb2016-06-03 15:49:16 -070037class 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 Bakerca78d162016-06-01 15:53:27 -070045