summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2016-07-21 14:43:30 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-07-26 08:10:36 +0100
commit97278fb51c3d4fe46c2a3110015e291fdc5d502d (patch)
tree2535f7584e2ccc4390ecfbaf16031e8b8886e4c5 /bitbake/lib/toaster/orm
parent8b3146007f98ba6618662cc47ed1c1491ef8945a (diff)
downloadpoky-97278fb51c3d4fe46c2a3110015e291fdc5d502d.tar.gz
bitbake: toaster: orm Remove the layerindex specific up_branch fields
We don't need to keep track of layerindex data in our database. And using branch==release is very confusing in the schema. Instead use the existing Release definition to keep track of which release a layer_version is for. Remove the Branch model and all references to it. Create a migration path to convert from up_branches to their corresponding releases. (Bitbake rev: f8f4cffe6fd371f3a7e63690c68f3fcb5dc1f297) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/orm')
-rw-r--r--bitbake/lib/toaster/orm/management/commands/lsupdates.py23
-rw-r--r--bitbake/lib/toaster/orm/models.py32
2 files changed, 25 insertions, 30 deletions
diff --git a/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
index 138b686eb5..be63a85859 100644
--- a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
+++ b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
@@ -102,14 +102,24 @@ class Command(NoArgsCommand):
102 logger.info("Fetching metadata releases for %s", 102 logger.info("Fetching metadata releases for %s",
103 " ".join(whitelist_branch_names)) 103 " ".join(whitelist_branch_names))
104 104
105 # keep a track of the id mappings so that layer_versions can be created 105 branches_info = _get_json_response(apilinks['branches'] +
106 # for these layers later on 106 "?filter=name:%s"
107 % "OR".join(whitelist_branch_names))
108
109 # Map the layer index branches to toaster releases
110 li_branch_id_to_toaster_release = {}
111
112 total = len(branches_info)
113 for i, branch in enumerate(branches_info):
114 li_branch_id_to_toaster_release[branch['id']] = \
115 Release.objects.get(name=branch['name'])
116 self.mini_progress("Releases", i, total)
117
118 # keep a track of the layerindex (li) id mappings so that
119 # layer_versions can be created for these layers later on
107 li_layer_id_to_toaster_layer_id = {} 120 li_layer_id_to_toaster_layer_id = {}
108 121
109 # We may need this? TODO 122 logger.info("Fetching layers")
110 #branches_info = _get_json_response(apilinks['branches'] +
111 # "?filter=name:%s"
112 # % "OR".join(whitelist_branch_names))
113 123
114 layers_info = _get_json_response(apilinks['layerItems']) 124 layers_info = _get_json_response(apilinks['layerItems'])
115 125
@@ -179,6 +189,7 @@ class Command(NoArgsCommand):
179 lbi['layer']) 189 lbi['layer'])
180 continue 190 continue
181 191
192 lv.release = li_branch_id_to_toaster_release[lbi['branch']]
182 lv.up_date = lbi['updated'] 193 lv.up_date = lbi['updated']
183 lv.commit = lbi['actual_branch'] 194 lv.commit = lbi['actual_branch']
184 lv.dirpath = lbi['vcs_subdir'] 195 lv.dirpath = lbi['vcs_subdir']
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 34ea28c270..72b9dfeaa8 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -144,7 +144,7 @@ class ProjectManager(models.Manager):
144 for rdl in release.releasedefaultlayer_set.all(): 144 for rdl in release.releasedefaultlayer_set.all():
145 lv = Layer_Version.objects.filter( 145 lv = Layer_Version.objects.filter(
146 layer__name=rdl.layer_name, 146 layer__name=rdl.layer_name,
147 up_branch__name=release.branch_name).first() 147 release=release).first()
148 148
149 if lv: 149 if lv:
150 ProjectLayer.objects.create(project=prj, 150 ProjectLayer.objects.create(project=prj,
@@ -280,7 +280,7 @@ class Project(models.Model):
280 # guard on release, as it can be null 280 # guard on release, as it can be null
281 if self.release: 281 if self.release:
282 queryset = Layer_Version.objects.filter( 282 queryset = Layer_Version.objects.filter(
283 (Q(up_branch__name=self.release.branch_name) & 283 (Q(release=self.release) &
284 Q(build=None) & 284 Q(build=None) &
285 Q(project=None)) | 285 Q(project=None)) |
286 Q(project=self)) 286 Q(project=self))
@@ -1257,22 +1257,6 @@ class ReleaseDefaultLayer(models.Model):
1257 layer_name = models.CharField(max_length=100, default="") 1257 layer_name = models.CharField(max_length=100, default="")
1258 1258
1259 1259
1260# Branch class is synced with layerindex.Branch, branches can only come
1261# from remote layer indexes
1262class Branch(models.Model):
1263 # id of branch in the layerindex
1264 up_date = models.DateTimeField(null=True, default=None)
1265
1266 name = models.CharField(max_length=50)
1267 short_description = models.CharField(max_length=50, blank=True)
1268
1269 class Meta:
1270 verbose_name_plural = "Branches"
1271
1272 def __unicode__(self):
1273 return self.name
1274
1275
1276class LayerSource(object): 1260class LayerSource(object):
1277 """ Where the layer metadata came from """ 1261 """ Where the layer metadata came from """
1278 TYPE_LOCAL = 0 1262 TYPE_LOCAL = 0
@@ -1321,7 +1305,7 @@ class Layer_Version(models.Model):
1321 """ 1305 """
1322 search_allowed_fields = ["layer__name", "layer__summary", 1306 search_allowed_fields = ["layer__name", "layer__summary",
1323 "layer__description", "layer__vcs_url", 1307 "layer__description", "layer__vcs_url",
1324 "dirpath", "up_branch__name", "commit", "branch"] 1308 "dirpath", "release__name", "commit", "branch"]
1325 1309
1326 build = models.ForeignKey(Build, related_name='layer_version_build', 1310 build = models.ForeignKey(Build, related_name='layer_version_build',
1327 default=None, null=True) 1311 default=None, null=True)
@@ -1333,8 +1317,8 @@ class Layer_Version(models.Model):
1333 1317
1334 up_date = models.DateTimeField(null=True, default=timezone.now) 1318 up_date = models.DateTimeField(null=True, default=timezone.now)
1335 1319
1336 # layerindex specific field 1320 # To which metadata release does this layer version belong to
1337 up_branch = models.ForeignKey(Branch, null=True, default=None) 1321 release = models.ForeignKey(Release, null=True, default=None)
1338 1322
1339 branch = models.CharField(max_length=80) 1323 branch = models.CharField(max_length=80)
1340 commit = models.CharField(max_length=100) 1324 commit = models.CharField(max_length=100)
@@ -1368,7 +1352,7 @@ class Layer_Version(models.Model):
1368 extra_path = self.dirpath 1352 extra_path = self.dirpath
1369 else: 1353 else:
1370 extra_path = path 1354 extra_path = path
1371 branchname = self.up_branch.name 1355 branchname = self.release.name
1372 url = base_url.replace('%branch%', branchname) 1356 url = base_url.replace('%branch%', branchname)
1373 1357
1374 # If there's a % in the path (e.g. a wildcard bbappend) we need to encode it 1358 # If there's a % in the path (e.g. a wildcard bbappend) we need to encode it
@@ -1404,8 +1388,8 @@ class Layer_Version(models.Model):
1404 def get_vcs_reference(self): 1388 def get_vcs_reference(self):
1405 if self.branch is not None and len(self.branch) > 0: 1389 if self.branch is not None and len(self.branch) > 0:
1406 return self.branch 1390 return self.branch
1407 if self.up_branch is not None: 1391 if self.release is not None:
1408 return self.up_branch.name 1392 return self.release.name
1409 if self.commit is not None and len(self.commit) > 0: 1393 if self.commit is not None and len(self.commit) > 0:
1410 return self.commit 1394 return self.commit
1411 return 'N/A' 1395 return 'N/A'