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()
public_scope_uid = portal.restrictedTraverse(
"portal_categories/allocation_scope/open/public", None).getUid()
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()
default_allocation_scope_uid = [category.getUid() \
for category in portal.portal_categories.allocation_scope.open.objectValues()]
if public_scope_uid and friend_scope_uid:
if default_allocation_scope_uid:
portal.portal_catalog.searchAndActivate(
portal_type='Computer',
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',
activate_kw = {'tag':tag}
)
context.activate(after_tag=tag).getId()
......@@ -22,17 +22,17 @@ for software_release in software_release_list:
software_product_reference = software_release.getAggregateReference()
if software_product_reference in [None, ""]:
continue
sorted_list = portal.SoftwareProduct_getSortedSoftwareReleaseList(
software_product_reference=software_product_reference)
# Check if there is a new version of this software Product
if sorted_list and \
sorted_list[0].getUrlString() not in full_software_release_list:
newer_release = sorted_list[0]
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
decision_in_progress = newer_release.\
SoftwareRelease_getUpgradeDecisionInProgress(computer.getUid())
......@@ -40,16 +40,16 @@ for software_release in software_release_list:
not decision_in_progress.UpgradeDecision_tryToCancel(
newer_release.getUrlString()):
continue
upgrade_decision = newer_release.SoftwareRelease_createUpgradeDecision(
source_url=computer.getRelativeUrl(),
title=title)
if context.getAllocationScope() in ["open/public", "open/friend"]:
if context.getAllocationScope() in ["open/public", "open/friend", "open/subscription"]:
upgrade_decision.start()
elif context.getAllocationScope() in ["open/personal"]:
upgrade_decision.plan()
upgrade_decision.setStartDate(DateTime())
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