Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
Xavier-Do committed Feb 27, 2025
1 parent f5a56f5 commit 382dc11
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 7 deletions.
31 changes: 26 additions & 5 deletions runbot/models/build_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,12 @@ class ConfigStep(models.Model):

# wip replace previous field by matrix
upgrade_matrix_id = fields.Many2one('runbot.upgrade.matrix', 'Upgrade matrix', tracking=True)

upgrade_current_source = fields.Boolean('Upgrade Curent source', help='Use current build as Source if version match', default=True, tracking=True)
upgrade_current_target = fields.Boolean('Upgrade Curent target', help='Use current build as target if version match', default=True, tracking=True)
# TODO maybe remove this field in the future, should all work in the same build
upgrade_from_bellow = fields.boolean('Upgrade from bellow', help="Standard upgrade behaviour", default=True, tracking=True)
upgrade_to_above = fields.boolean('Upgrade to above', help="Will behave as a complement", default=True, tracking=True)

upgrade_flat = fields.Boolean("Flat", help="Take all decisions in on build")

upgrade_config_id = fields.Many2one('runbot.build.config',string='Upgrade Config', tracking=True, index=True)
Expand Down Expand Up @@ -864,16 +869,32 @@ def _reference_builds(self, batch, trigger):
refs_builds = refs_batches.mapped('slot_ids').filtered(
lambda slot: slot.trigger_id == upgrade_dumps_trigger_id
).mapped('build_id')
# should we filter on active? implicit. On match type? on skipped ?
# is last_"done"_batch enough?
# TODO active test false and take last done/running build limit 1 -> in case of rebuild
return refs_builds

def _is_upgrade_step(self):
return self.job_type in ('configure_upgrade', 'configure_upgrade_complement')

def _reference_batches(self, batch, trigger):
if self.job_type == 'configure_upgrade_complement':
# upgrade_matrix_id
# upgrade_current_source
# upgrade_current_target
# upgrade_from_bellow
# upgrade_to_above

if self.upgrade_matrix_id:
batches = self.env['runbot.batch']
base_batch = batch if batch.reference_batch_ids else batch.base_reference_batch_id
reference_batch_ids = base_batch.reference_batch_ids
if self.upgrade_from_bellow:
from_versions = self.upgrade_matrix_id._get_versions_to(batch.version_id)
batches |= reference_batch_ids.filtered(lambda batch: batch.bundle_id.version_id in from_versions)

if self.upgrade_to_above:
to_versions = self.upgrade_matrix_id._get_versions_from(batch.version_id)
batches |= reference_batch_ids.filtered(lambda batch: batch.bundle_id.version_id in to_versions)
return batches

elif self.job_type == 'configure_upgrade_complement':
return self._reference_batches_complement(batch, trigger)
else:
return self._reference_batches_upgrade(batch, trigger.upgrade_dumps_trigger_id.category_id.id)
Expand Down
12 changes: 10 additions & 2 deletions runbot/models/upgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,6 @@ def _compute_matrix_summary(self):
from_versions_string = ', '.join(sorted(from_versions))
lines.append(f'{to_version.number} - ({from_versions_string})')
matrix.matrix_summary = '\n'.join(lines)
print('recompute')
print(matrix.matrix_summary)

def update_matrix_entries(self):
for metric in self:
Expand Down Expand Up @@ -138,6 +136,16 @@ def _update_matrix_entries(self):
def reset_matrix_enabled(self):
for matrix in self:
matrix.entry_ids._update_enabled(force=True)

def _get_versions_from(self, from_version):
entries = self.entries.filtered(lambda e: e.enabled)
if from_version:
return entries.filtered(lambda e: e.from_version_id == from_version).mapped('to_version_id')

def _get_versions_to(self, to_version):
entries = self.entries.filtered(lambda e: e.enabled)
if to_version:
return entries.filtered(lambda e: e.to_version_id == to_version).mapped('from_version_id')


class UpgradeMatrixEntry(models.Model):
Expand Down

0 comments on commit 382dc11

Please sign in to comment.