mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 15:35:46 +07:00
wip
This commit is contained in:
parent
f5a56f54f9
commit
382dc11021
@ -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)
|
||||
@ -864,16 +869,32 @@ class ConfigStep(models.Model):
|
||||
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)
|
||||
|
@ -105,8 +105,6 @@ class UpgradeMatrix(models.Model):
|
||||
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:
|
||||
@ -138,6 +136,16 @@ class UpgradeMatrix(models.Model):
|
||||
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):
|
||||
|
Loading…
Reference in New Issue
Block a user