diff options
Diffstat (limited to 'master/setup-master.py')
-rwxr-xr-x | master/setup-master.py | 55 |
1 files changed, 22 insertions, 33 deletions
diff --git a/master/setup-master.py b/master/setup-master.py index 4f66699..5bfcfef 100755 --- a/master/setup-master.py +++ b/master/setup-master.py @@ -72,7 +72,7 @@ def install_master(): def syncdb_master(): """Initialize the database""" - from db_defaults import groups, providers, archs, stages, releases, mirrors + from db_defaults import groups, providers, archs, releases, mirrors import copy management.call_command('syncdb') @@ -80,34 +80,26 @@ def syncdb_master(): for group in groups: Group(name=group).save() # Job-related defaults + for (gen_arch, spec_archs) in archs.iteritems(): + gen_archobj = Arch(generic=gen_arch) + for spec_arch in spec_archs: + archobj = copy.copy(gen_archobj) + archobj.specific = spec_arch + archobj.save() + # Populate providers for provider in providers: - provobj = StageProvider(name=provider) + provobj = Provider(name=provider) provobj.save() - # Populate arch list - for generic_arch in archs[provider]: - gen_archobj = Arch(provider=provobj) - # If (generic, (specific1, specific2)) - if isinstance(generic_arch, tuple): - gen_archobj.generic = generic_arch[0] - for arch in generic_arch[1]: - archobj = copy.copy(gen_archobj) - archobj.specific = arch - archobj.save() - # If (specific1, specific2, specific3) - else: - gen_archobj.generic = generic_arch - gen_archobj.specific = generic_arch - gen_archobj.save() - # Populate stage list - for stage in stages[provider]: - stageobj = Stage(provider=provobj) - stageobj.name = stage - stageobj.save() # Populate release list - for release in releases[provider]: - releaseobj = Release(provider=provobj) - releaseobj.name = release - releaseobj.save() + releaseobj = Release(provider=provobj) + for (release, relarchs) in releases[provider].iteritems(): + relobj = copy.copy(releaseobj) + relobj.name = release + relobj.save() + for (relgen_arch, relspec_archs) in relarchs.iteritems(): + for relspec_arch in relspec_archs: + relobj.archs.add(Arch.objects.get(generic=relgen_arch, + specific=relspec_arch)) # Populate mirror list obj = Mirror(owner=provobj) obj.structure = mirrors[provider]['structure'] @@ -127,13 +119,10 @@ def setup_sample_job(): job.maintainer = maintainers[0] else: job.maintainer = User.objects.create_user(*sample_job['maintainer']) - job.provider = StageProvider.objects.get(name=sample_job['provider']) - job.stage = Stage.objects.get(name=sample_job['stage'], - provider=job.provider) - job.arch = Arch.objects.get(specific=sample_job['arch'], - provider=job.provider) job.release = Release.objects.get(name=sample_job['release'], - provider=job.provider) + provider=Provider.objects.get(name=sample_job['provider'])) + job.arch = job.release.archs.get(specific=sample_job['arch']) + # If stage is not set, defaults to stage3 job.save() if len(sys.argv) < 3: @@ -163,7 +152,7 @@ elif sys.argv[1] == 'syncdb': import settings from django.core.management import setup_environ setup_environ(settings) - from master.models import User, Group, StageProvider, Arch, Stage, Release, Mirror, Job + from master.models import User, Group, Provider, Arch, Release, Mirror, Job, Slave # Start stuff syncdb_master() setup_sample_job() |