diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2014-11-05 14:47:51 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-11-12 17:04:48 +0000 |
commit | 78e3a7877b361e9c3ae4865231d97a47bd8220bc (patch) | |
tree | 1d8e76e4228ab6f17d2c198dd4f5df1d6f192326 /bitbake/lib/toaster/orm/models.py | |
parent | 990fb9ed6cc8414e9a0b1baed8990261650af1db (diff) | |
download | poky-78e3a7877b361e9c3ae4865231d97a47bd8220bc.tar.gz |
bitbake: toaster: update Release model to pinpoint to specific Branch
We update the release model to pinpoint to specific branch,
instead of holding a branch name that needs to be matched.
This is needed because we move away from mixing branches on different
layer sources.
Various minor changes to models file.
(Bitbake rev: d58aacc69b1832f99758b941803123329e06082d)
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/orm/models.py')
-rw-r--r-- | bitbake/lib/toaster/orm/models.py | 65 |
1 files changed, 40 insertions, 25 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py index 503b43c5db..d99a4c2129 100644 --- a/bitbake/lib/toaster/orm/models.py +++ b/bitbake/lib/toaster/orm/models.py | |||
@@ -108,8 +108,16 @@ class Project(models.Model): | |||
108 | commit = self.bitbake_version.branch, | 108 | commit = self.bitbake_version.branch, |
109 | dirpath = self.bitbake_version.dirpath) | 109 | dirpath = self.bitbake_version.dirpath) |
110 | 110 | ||
111 | for l in self.projectlayer_set.all(): | 111 | for l in self.projectlayer_set.all().order_by("pk"): |
112 | BRLayer.objects.create(req = br, name = l.layercommit.layer.name, giturl = l.layercommit.layer.vcs_url, commit = l.layercommit.commit, dirpath = l.layercommit.dirpath) | 112 | commit = l.layercommit.commit |
113 | print("ii Building layer ", l.layercommit.layer.name, " at commit ", commit) | ||
114 | if l.layercommit.up_branch: | ||
115 | commit = l.layercommit.up_branch.name | ||
116 | print("ii Building layer ", l.layercommit.layer.name, " at upbranch ", commit) | ||
117 | if l.layercommit.branch: | ||
118 | commit = l.layercommit.branch | ||
119 | print("ii Building layer ", l.layercommit.layer.name, " at actual_branch ", commit) | ||
120 | BRLayer.objects.create(req = br, name = l.layercommit.layer.name, giturl = l.layercommit.layer.vcs_url, commit = commit, dirpath = l.layercommit.dirpath) | ||
113 | for t in self.projecttarget_set.all(): | 121 | for t in self.projecttarget_set.all(): |
114 | BRTarget.objects.create(req = br, target = t.target, task = t.task) | 122 | BRTarget.objects.create(req = br, target = t.target, task = t.task) |
115 | for v in self.projectvariable_set.all(): | 123 | for v in self.projectvariable_set.all(): |
@@ -414,7 +422,7 @@ class Package_File(models.Model): | |||
414 | size = models.IntegerField() | 422 | size = models.IntegerField() |
415 | 423 | ||
416 | class Recipe(models.Model): | 424 | class Recipe(models.Model): |
417 | search_allowed_fields = ['name', 'version', 'file_path', 'section', 'license', 'layer_version__layer__name', 'layer_version__branch', 'layer_version__commit', 'layer_version__layer__local_path'] | 425 | search_allowed_fields = ['name', 'version', 'file_path', 'section', 'description', 'license', 'layer_version__layer__name', 'layer_version__branch', 'layer_version__commit', 'layer_version__layer__local_path', 'layer_version__layer_source__name'] |
418 | 426 | ||
419 | layer_source = models.ForeignKey('LayerSource', default = None, null = True) # from where did we get this recipe | 427 | layer_source = models.ForeignKey('LayerSource', default = None, null = True) # from where did we get this recipe |
420 | up_id = models.IntegerField(null = True, default = None) # id of entry in the source | 428 | up_id = models.IntegerField(null = True, default = None) # id of entry in the source |
@@ -446,6 +454,9 @@ class Recipe(models.Model): | |||
446 | def __unicode__(self): | 454 | def __unicode__(self): |
447 | return "Recipe " + self.name + ":" + self.version | 455 | return "Recipe " + self.name + ":" + self.version |
448 | 456 | ||
457 | class Meta: | ||
458 | unique_together = ("layer_version", "file_path") | ||
459 | |||
449 | class Recipe_DependencyManager(models.Manager): | 460 | class Recipe_DependencyManager(models.Manager): |
450 | use_for_related_fields = True | 461 | use_for_related_fields = True |
451 | 462 | ||
@@ -559,6 +570,7 @@ class LayerIndexLayerSource(LayerSource): | |||
559 | Fetches layer, recipe and machine information from remote repository | 570 | Fetches layer, recipe and machine information from remote repository |
560 | ''' | 571 | ''' |
561 | assert self.apiurl is not None | 572 | assert self.apiurl is not None |
573 | from django.db import IntegrityError | ||
562 | 574 | ||
563 | def _get_json_response(apiurl = self.apiurl): | 575 | def _get_json_response(apiurl = self.apiurl): |
564 | import httplib, urlparse, json | 576 | import httplib, urlparse, json |
@@ -589,7 +601,7 @@ class LayerIndexLayerSource(LayerSource): | |||
589 | return | 601 | return |
590 | 602 | ||
591 | # update branches; only those that we already have names listed in the Releases table | 603 | # update branches; only those that we already have names listed in the Releases table |
592 | whitelist_branch_names = map(lambda x: x.branch, Release.objects.all()) | 604 | whitelist_branch_names = map(lambda x: x.branch.name, Release.objects.all()) |
593 | 605 | ||
594 | branches_info = _get_json_response(apilinks['branches'] | 606 | branches_info = _get_json_response(apilinks['branches'] |
595 | + "?filter=name:%s" % "OR".join(whitelist_branch_names)) | 607 | + "?filter=name:%s" % "OR".join(whitelist_branch_names)) |
@@ -598,16 +610,15 @@ class LayerIndexLayerSource(LayerSource): | |||
598 | b.up_id = bi['id'] | 610 | b.up_id = bi['id'] |
599 | b.up_date = bi['updated'] | 611 | b.up_date = bi['updated'] |
600 | b.name = bi['name'] | 612 | b.name = bi['name'] |
601 | b.bitbake_branch = bi['bitbake_branch'] | ||
602 | b.short_description = bi['short_description'] | 613 | b.short_description = bi['short_description'] |
603 | b.save() | 614 | b.save() |
604 | 615 | ||
605 | # update layers | 616 | # update layers |
606 | layers_info = _get_json_response(apilinks['layerItems']) | 617 | layers_info = _get_json_response(apilinks['layerItems']) |
607 | for li in layers_info: | 618 | for li in layers_info: |
608 | l, created = Layer.objects.get_or_create(layer_source = self, up_id = li['id']) | 619 | l, created = Layer.objects.get_or_create(layer_source = self, name = li['name']) |
620 | l.up_id = li['id'] | ||
609 | l.up_date = li['updated'] | 621 | l.up_date = li['updated'] |
610 | l.name = li['name'] | ||
611 | l.vcs_url = li['vcs_url'] | 622 | l.vcs_url = li['vcs_url'] |
612 | l.vcs_web_url = li['vcs_web_url'] | 623 | l.vcs_web_url = li['vcs_web_url'] |
613 | l.vcs_web_tree_base_url = li['vcs_web_tree_base_url'] | 624 | l.vcs_web_tree_base_url = li['vcs_web_tree_base_url'] |
@@ -672,21 +683,22 @@ class LayerIndexLayerSource(LayerSource): | |||
672 | + "?filter=layerbranch:%s" % "OR".join(map(lambda x: str(x.up_id), Layer_Version.objects.filter(layer_source = self))) | 683 | + "?filter=layerbranch:%s" % "OR".join(map(lambda x: str(x.up_id), Layer_Version.objects.filter(layer_source = self))) |
673 | ) | 684 | ) |
674 | for ri in recipes_info: | 685 | for ri in recipes_info: |
675 | ro, created = Recipe.objects.get_or_create(layer_source = self, up_id = ri['id'], layer_version = Layer_Version.objects.get(layer_source = self, up_id = ri['layerbranch'])) | 686 | try: |
676 | 687 | ro, created = Recipe.objects.get_or_create(layer_source = self, up_id = ri['id'], layer_version = Layer_Version.objects.get(layer_source = self, up_id = ri['layerbranch'])) | |
677 | ro.up_date = ri['updated'] | 688 | ro.up_date = ri['updated'] |
678 | 689 | ro.name = ri['pn'] | |
679 | ro.name = ri['pn'] | 690 | ro.version = ri['pv'] |
680 | ro.version = ri['pv'] | 691 | ro.summary = ri['summary'] |
681 | ro.summary = ri['summary'] | 692 | ro.description = ri['description'] |
682 | ro.description = ri['description'] | 693 | ro.section = ri['section'] |
683 | ro.section = ri['section'] | 694 | ro.license = ri['license'] |
684 | ro.license = ri['license'] | 695 | ro.homepage = ri['homepage'] |
685 | ro.homepage = ri['homepage'] | 696 | ro.bugtracker = ri['bugtracker'] |
686 | ro.bugtracker = ri['bugtracker'] | 697 | ro.file_path = ri['filepath'] + "/" + ri['filename'] |
687 | ro.file_path = ri['filepath'] + ri['filename'] | 698 | ro.save() |
688 | ro.save() | 699 | except: |
689 | 700 | print "Duplicate Recipe, ignoring: ", vars(ro) | |
701 | pass | ||
690 | pass | 702 | pass |
691 | 703 | ||
692 | class BitbakeVersion(models.Model): | 704 | class BitbakeVersion(models.Model): |
@@ -704,7 +716,8 @@ class Release(models.Model): | |||
704 | name = models.CharField(max_length=32, unique = True) | 716 | name = models.CharField(max_length=32, unique = True) |
705 | description = models.CharField(max_length=255) | 717 | description = models.CharField(max_length=255) |
706 | bitbake_version = models.ForeignKey(BitbakeVersion) | 718 | bitbake_version = models.ForeignKey(BitbakeVersion) |
707 | branch = models.CharField(max_length=32) | 719 | branch = models.ForeignKey('Branch') |
720 | helptext = models.TextField(null=True) | ||
708 | 721 | ||
709 | 722 | ||
710 | class ReleaseDefaultLayer(models.Model): | 723 | class ReleaseDefaultLayer(models.Model): |
@@ -719,7 +732,6 @@ class Branch(models.Model): | |||
719 | up_date = models.DateTimeField(null = True, default = None) | 732 | up_date = models.DateTimeField(null = True, default = None) |
720 | 733 | ||
721 | name = models.CharField(max_length=50) | 734 | name = models.CharField(max_length=50) |
722 | bitbake_branch = models.CharField(max_length=50, blank=True) | ||
723 | short_description = models.CharField(max_length=50, blank=True) | 735 | short_description = models.CharField(max_length=50, blank=True) |
724 | 736 | ||
725 | class Meta: | 737 | class Meta: |
@@ -756,7 +768,7 @@ class Layer(models.Model): | |||
756 | 768 | ||
757 | # LayerCommit class is synced with layerindex.LayerBranch | 769 | # LayerCommit class is synced with layerindex.LayerBranch |
758 | class Layer_Version(models.Model): | 770 | class Layer_Version(models.Model): |
759 | search_allowed_fields = ["layer__name", "layer__summary",] | 771 | search_allowed_fields = ["layer__name", "layer__summary", "layer__description", "layer__vcs_url", "dirpath", "up_branch__name", "commit", "branch"] |
760 | build = models.ForeignKey(Build, related_name='layer_version_build', default = None, null = True) | 772 | build = models.ForeignKey(Build, related_name='layer_version_build', default = None, null = True) |
761 | layer = models.ForeignKey(Layer, related_name='layer_version_layer') | 773 | layer = models.ForeignKey(Layer, related_name='layer_version_layer') |
762 | 774 | ||
@@ -841,6 +853,9 @@ class ProjectLayer(models.Model): | |||
841 | layercommit = models.ForeignKey(Layer_Version, null=True) | 853 | layercommit = models.ForeignKey(Layer_Version, null=True) |
842 | optional = models.BooleanField(default = True) | 854 | optional = models.BooleanField(default = True) |
843 | 855 | ||
856 | class Meta: | ||
857 | unique_together = (("project", "layercommit"),) | ||
858 | |||
844 | class ProjectVariable(models.Model): | 859 | class ProjectVariable(models.Model): |
845 | project = models.ForeignKey(Project) | 860 | project = models.ForeignKey(Project) |
846 | name = models.CharField(max_length=100) | 861 | name = models.CharField(max_length=100) |