Commit 9485016a authored by Romain Courteaud's avatar Romain Courteaud

slapos_pdm: do not propose again to upgrade if decision has been rejected

parent 4e671e0d
...@@ -79,6 +79,15 @@ if len(allocation_cell_list) == 1: ...@@ -79,6 +79,15 @@ if len(allocation_cell_list) == 1:
if compute_node is not None: if compute_node is not None:
assert compute_node.getRelativeUrl() in allocation_cell_list[0].getParentValue().getParentValue().getAggregateList() assert compute_node.getRelativeUrl() in allocation_cell_list[0].getParentValue().getParentValue().getAggregateList()
for previous_upgrade_decision in portal.portal_catalog(
portal_type='Upgrade Decision',
aggregate__uid=instance_tree.getUid(),
simulation_state=['rejected']
):
# If same upgrade decision has been rejected, do nothing
if previous_upgrade_decision.getSoftwareReleaseValue().getUrlString() == allocation_cell_list[0].getSoftwareReleaseValue().getUrlString():
return
decision_title = 'A new upgrade is available for %s' % instance_tree.getTitle() decision_title = 'A new upgrade is available for %s' % instance_tree.getTitle()
upgrade_decision = portal.upgrade_decision_module.newContent( upgrade_decision = portal.upgrade_decision_module.newContent(
portal_type='Upgrade Decision', portal_type='Upgrade Decision',
......
...@@ -236,7 +236,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins): ...@@ -236,7 +236,7 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
upgrade_decision, upgrade_decision,
instance_tree, software_product, new_release_variation, type_variation instance_tree, software_product, new_release_variation, type_variation
) )
upgrade_decision.reject() upgrade_decision.cancel()
self.tic() self.tic()
self.checkCreatedUpgradeDecision( self.checkCreatedUpgradeDecision(
...@@ -244,6 +244,50 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins): ...@@ -244,6 +244,50 @@ class TestSlapOSPDMCreateUpgradeDecisionSkins(TestSlapOSPDMMixinSkins):
instance_tree, software_product, new_release_variation, type_variation instance_tree, software_product, new_release_variation, type_variation
) )
def test_createUpgradeDecision_notAllocated_newRelease_rejectedDecisionSameRelease(self):
software_product, _, type_variation, compute_node, instance_tree = self.bootstrapAllocableInstanceTree()
new_release_variation = self._makeSoftwareRelease(software_product)
self.addAllocationSupply("for compute node 2", compute_node, software_product,
new_release_variation, type_variation)
self.tic()
upgrade_decision = instance_tree.InstanceTree_createUpgradeDecision()
self.checkCreatedUpgradeDecision(
upgrade_decision,
instance_tree, software_product, new_release_variation, type_variation
)
upgrade_decision.reject()
self.tic()
self.assertEqual(None, instance_tree.InstanceTree_createUpgradeDecision())
def test_createUpgradeDecision_notAllocated_newRelease_rejectedDecisionAnotherRelease(self):
software_product, _, type_variation, compute_node, instance_tree = self.bootstrapAllocableInstanceTree()
new_release_variation = self._makeSoftwareRelease(software_product)
supply = self.addAllocationSupply("for compute node 2", compute_node, software_product,
new_release_variation, type_variation)
self.tic()
upgrade_decision = instance_tree.InstanceTree_createUpgradeDecision()
self.checkCreatedUpgradeDecision(
upgrade_decision,
instance_tree, software_product, new_release_variation, type_variation
)
upgrade_decision.reject()
supply.invalidate()
self.tic()
new_release_variation2 = self._makeSoftwareRelease(software_product)
supply = self.addAllocationSupply("for compute node 3", compute_node, software_product,
new_release_variation2, type_variation)
self.tic()
self.checkCreatedUpgradeDecision(
instance_tree.InstanceTree_createUpgradeDecision(),
instance_tree, software_product, new_release_variation2, type_variation
)
########################################################################## ##########################################################################
# Shared not allocated # Shared not allocated
########################################################################## ##########################################################################
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment