Commit 73312276 authored by Rafael Monnerat's avatar Rafael Monnerat

slapos_pdm: Auto-deploy new software releases into Subscription computers

parent 217dfe38
portal = context.getPortalObject() portal = context.getPortalObject()
public_scope_uid = portal.restrictedTraverse( default_allocation_scope_uid = [category.getUid() \
"portal_categories/allocation_scope/open/public", None).getUid() for category in portal.portal_categories.allocation_scope.open.objectValues()]
friend_scope_uid = portal.restrictedTraverse(
"portal_categories/allocation_scope/open/friend", None).getUid()
personal_scope_uid = portal.restrictedTraverse(
"portal_categories/allocation_scope/open/personal", None).getUid()
if public_scope_uid and friend_scope_uid:
if default_allocation_scope_uid:
portal.portal_catalog.searchAndActivate( portal.portal_catalog.searchAndActivate(
portal_type='Computer', portal_type='Computer',
validation_state = 'validated', validation_state = 'validated',
default_allocation_scope_uid=[public_scope_uid, friend_scope_uid, personal_scope_uid], default_allocation_scope_uid=default_allocation_scope_uid,
method_id = 'Computer_checkAndCreateUpgradeDecision', method_id = 'Computer_checkAndCreateUpgradeDecision',
activate_kw = {'tag':tag} activate_kw = {'tag':tag}
) )
context.activate(after_tag=tag).getId() context.activate(after_tag=tag).getId()
...@@ -22,17 +22,17 @@ for software_release in software_release_list: ...@@ -22,17 +22,17 @@ for software_release in software_release_list:
software_product_reference = software_release.getAggregateReference() software_product_reference = software_release.getAggregateReference()
if software_product_reference in [None, ""]: if software_product_reference in [None, ""]:
continue continue
sorted_list = portal.SoftwareProduct_getSortedSoftwareReleaseList( sorted_list = portal.SoftwareProduct_getSortedSoftwareReleaseList(
software_product_reference=software_product_reference) software_product_reference=software_product_reference)
# Check if there is a new version of this software Product # Check if there is a new version of this software Product
if sorted_list and \ if sorted_list and \
sorted_list[0].getUrlString() not in full_software_release_list: sorted_list[0].getUrlString() not in full_software_release_list:
newer_release = sorted_list[0] newer_release = sorted_list[0]
title = 'A new version of %s is available for %s' % \ title = 'A new version of %s is available for %s' % \
(software_product_reference, context.getTitle()) (software_product_reference, context.getTitle())
# If exist upgrade decision in progress try to cancel it # If exist upgrade decision in progress try to cancel it
decision_in_progress = newer_release.\ decision_in_progress = newer_release.\
SoftwareRelease_getUpgradeDecisionInProgress(computer.getUid()) SoftwareRelease_getUpgradeDecisionInProgress(computer.getUid())
...@@ -40,16 +40,16 @@ for software_release in software_release_list: ...@@ -40,16 +40,16 @@ for software_release in software_release_list:
not decision_in_progress.UpgradeDecision_tryToCancel( not decision_in_progress.UpgradeDecision_tryToCancel(
newer_release.getUrlString()): newer_release.getUrlString()):
continue continue
upgrade_decision = newer_release.SoftwareRelease_createUpgradeDecision( upgrade_decision = newer_release.SoftwareRelease_createUpgradeDecision(
source_url=computer.getRelativeUrl(), source_url=computer.getRelativeUrl(),
title=title) title=title)
if context.getAllocationScope() in ["open/public", "open/friend"]: if context.getAllocationScope() in ["open/public", "open/friend", "open/subscription"]:
upgrade_decision.start() upgrade_decision.start()
elif context.getAllocationScope() in ["open/personal"]: elif context.getAllocationScope() in ["open/personal"]:
upgrade_decision.plan() upgrade_decision.plan()
upgrade_decision.setStartDate(DateTime()) upgrade_decision.setStartDate(DateTime())
upgrade_decision_list.append(upgrade_decision) upgrade_decision_list.append(upgrade_decision)
......
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