Commit 4121077a authored by Alain Takoudjou's avatar Alain Takoudjou

migrate slapos_pdm business template to new format

parent 4fcc16cb
portal = context.getPortalObject()
portal.portal_catalog.searchAndActivate(
portal_type="Upgrade Decision Line",
simulation_state="confirmed",
method_id = 'UpgradeDecisionLine_cancelDestroyed',
activate_kw = {'tag':tag}
)
context.activate(after_tag=tag).getId()
......@@ -48,21 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
\n
\n
portal.portal_catalog.searchAndActivate(\n
portal_type="Upgrade Decision Line", \n
simulation_state="confirmed",\n
method_id = \'UpgradeDecisionLine_cancelDestroyed\',\n
activate_kw = {\'tag\':tag}\n
)\n
\n
context.activate(after_tag=tag).getId()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>tag, fixit, params</string> </value>
......
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()
if public_scope_uid and friend_scope_uid:
portal.portal_catalog.searchAndActivate(
portal_type='Computer',
validation_state = 'validated',
default_allocation_scope_uid=[public_scope_uid, friend_scope_uid],
method_id = 'Computer_hostingSubscriptionCreateUpgradeDecision',
activate_kw = {'tag':tag}
)
context.activate(after_tag=tag).getId()
......@@ -48,27 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
\n
public_scope_uid = portal.restrictedTraverse(\n
"portal_categories/allocation_scope/open/public", None).getUid()\n
friend_scope_uid = portal.restrictedTraverse(\n
"portal_categories/allocation_scope/open/friend", None).getUid()\n
\n
if public_scope_uid and friend_scope_uid:\n
portal.portal_catalog.searchAndActivate(\n
portal_type=\'Computer\',\n
validation_state = \'validated\',\n
default_allocation_scope_uid=[public_scope_uid, friend_scope_uid],\n
method_id = \'Computer_hostingSubscriptionCreateUpgradeDecision\',\n
activate_kw = {\'tag\':tag}\n
)\n
\n
context.activate(after_tag=tag).getId()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>tag, fixit, params</string> </value>
......
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()
if public_scope_uid and friend_scope_uid:
portal.portal_catalog.searchAndActivate(
portal_type='Computer',
validation_state = 'validated',
default_allocation_scope_uid=[public_scope_uid, friend_scope_uid],
method_id = 'Computer_checkAndCreateUpgradeDecision',
activate_kw = {'tag':tag}
)
context.activate(after_tag=tag).getId()
......@@ -48,27 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
\n
public_scope_uid = portal.restrictedTraverse(\n
"portal_categories/allocation_scope/open/public", None).getUid()\n
friend_scope_uid = portal.restrictedTraverse(\n
"portal_categories/allocation_scope/open/friend", None).getUid()\n
\n
if public_scope_uid and friend_scope_uid:\n
portal.portal_catalog.searchAndActivate(\n
portal_type=\'Computer\',\n
validation_state = \'validated\',\n
default_allocation_scope_uid=[public_scope_uid, friend_scope_uid],\n
method_id = \'Computer_checkAndCreateUpgradeDecision\',\n
activate_kw = {\'tag\':tag}\n
)\n
\n
context.activate(after_tag=tag).getId()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>tag, fixit, params</string> </value>
......
portal = context.getPortalObject()
portal.portal_catalog.searchAndActivate(
portal_type='Software Product',
validation_state='published',
method_id='SoftwareProduct_manageSoftwareCatalog',
activate_kw={'tag': tag}
)
context.activate(after_tag=tag).getId()
......@@ -48,19 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
portal.portal_catalog.searchAndActivate(\n
portal_type=\'Software Product\',\n
validation_state=\'published\',\n
method_id=\'SoftwareProduct_manageSoftwareCatalog\',\n
activate_kw={\'tag\': tag}\n
)\n
\n
context.activate(after_tag=tag).getId()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>tag, fixit, params</string> </value>
......
portal = context.getPortalObject()
portal.portal_catalog.searchAndActivate(
portal_type='Upgrade Decision',
simulation_state='planned',
method_id='UpgradeDecision_notify',
activate_kw={'tag': tag }
)
context.activate(after_tag=tag).getId()
......@@ -48,19 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
portal.portal_catalog.searchAndActivate(\n
portal_type=\'Upgrade Decision\',\n
simulation_state=\'planned\',\n
method_id=\'UpgradeDecision_notify\',\n
activate_kw={\'tag\': tag }\n
)\n
\n
context.activate(after_tag=tag).getId()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>tag, fixit, params</string> </value>
......
portal = context.getPortalObject()
portal.portal_catalog.searchAndActivate(
portal_type='Upgrade Decision',
simulation_state='started',
method_id='UpgradeDecision_processUpgrade',
activate_kw={'tag': tag }
)
context.activate(after_tag=tag).getId()
......@@ -48,19 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
portal.portal_catalog.searchAndActivate(\n
portal_type=\'Upgrade Decision\',\n
simulation_state=\'started\',\n
method_id=\'UpgradeDecision_processUpgrade\',\n
activate_kw={\'tag\': tag }\n
)\n
\n
context.activate(after_tag=tag).getId()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>tag, fixit, params</string> </value>
......
portal = context.getPortalObject()
portal.portal_catalog.searchAndActivate(
portal_type='Upgrade Decision',
simulation_state='stopped',
method_id='UpgradeDecision_notifyDelivered',
activate_kw={'tag': tag }
)
context.activate(after_tag=tag).getId()
......@@ -48,19 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
portal.portal_catalog.searchAndActivate(\n
portal_type=\'Upgrade Decision\',\n
simulation_state=\'stopped\',\n
method_id=\'UpgradeDecision_notifyDelivered\',\n
activate_kw={\'tag\': tag }\n
)\n
\n
context.activate(after_tag=tag).getId()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>tag, fixit, params</string> </value>
......
if reference is None:
raise ValueError("Missing Reference")
portal = context.getPortalObject()
upgrade_decision_list = portal.portal_catalog(
portal_type="Upgrade Decision",
reference=reference, limit=2)
if not len(upgrade_decision_list):
return context.Base_redirect("",
keep_items={"portal_status_message":
context.Base_translateString("Unable to find the Upgrade Decision.")})
if len(upgrade_decision_list) > 1:
raise ValueError("Duplicated reference for %s. Please contact site administrators." % reference)
upgrade_decision = upgrade_decision_list[0]
if upgrade_decision.getSimulationState() in ['draft', 'planned']:
message = "Sorry, the upgrade is not possible yet!"
elif upgrade_decision.getSimulationState() in ['cancelled', 'rejected']:
message = "Sorry, the upgrade is not possble, Upgrade Decision was Canceled or Rejected!"
elif upgrade_decision.getSimulationState() == 'started':
message = "This Upgrade Decision is already Started."
elif upgrade_decision.getSimulationState() in ['stopped', 'delivered']:
message = "This Upgrade Decision has been already processed."
elif upgrade_decision.getSimulationState() == 'confirmed':
message = "This Upgrade Decision has been requested, it will be processed in few minutes."
upgrade_decision.start()
return context.Base_redirect("",
keep_items={"portal_status_message":
context.Base_translateString(message)})
......@@ -48,52 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
if reference is None:\n
raise ValueError("Missing Reference")\n
\n
portal = context.getPortalObject()\n
\n
upgrade_decision_list = portal.portal_catalog(\n
portal_type="Upgrade Decision", \n
reference=reference, limit=2)\n
\n
if not len(upgrade_decision_list):\n
return context.Base_redirect("", \n
keep_items={"portal_status_message": \n
context.Base_translateString("Unable to find the Upgrade Decision.")})\n
\n
if len(upgrade_decision_list) > 1:\n
raise ValueError("Duplicated reference for %s. Please contact site administrators." % reference)\n
\n
upgrade_decision = upgrade_decision_list[0]\n
\n
if upgrade_decision.getSimulationState() in [\'draft\', \'planned\']:\n
message = "Sorry, the upgrade is not possible yet!"\n
\n
elif upgrade_decision.getSimulationState() in [\'cancelled\', \'rejected\']:\n
message = "Sorry, the upgrade is not possble, Upgrade Decision was Canceled or Rejected!"\n
\n
elif upgrade_decision.getSimulationState() == \'started\':\n
message = "This Upgrade Decision is already Started."\n
\n
elif upgrade_decision.getSimulationState() in [\'stopped\', \'delivered\']:\n
message = "This Upgrade Decision has been already processed."\n
\n
elif upgrade_decision.getSimulationState() == \'confirmed\':\n
message = "This Upgrade Decision has been requested, it will be processed in few minutes."\n
upgrade_decision.start()\n
\n
return context.Base_redirect("", \n
keep_items={"portal_status_message": \n
context.Base_translateString(message)})\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>reference</string> </value>
......
if reference is None:
raise ValueError("Missing Reference")
portal = context.getPortalObject()
upgrade_decision_list = portal.portal_catalog(
portal_type="Upgrade Decision",
reference=reference, limit=2)
if len(upgrade_decision_list) == 0:
return context.Base_redirect("",
keep_items={"portal_status_message":
context.Base_translateString("Unable to find the Upgrade Decision.")})
if len(upgrade_decision_list) > 1:
raise ValueError("Duplicated reference for %s. Please contact site administrators." % reference)
upgrade_decision = upgrade_decision_list[0]
if upgrade_decision.getSimulationState() in ['cancelled', 'rejected']:
message = "Upgrade Decision is already Rejected!"
elif upgrade_decision.getSimulationState() == 'started':
message = "Sorry, This Upgrade Decision is already Started, you cannot reject it anymore."
elif upgrade_decision.getSimulationState() in ['stopped', 'delivered']:
message = "Sorry, this Upgrade Decision has been already processed."
elif upgrade_decision.getSimulationState() in ['confirmed', 'draft', 'planned']:
message = "Thanks Upgrade Decision has been rejected Successfully (You cannot use it anymore)."
upgrade_decision.reject()
return context.Base_redirect("",
keep_items={"portal_status_message":
context.Base_translateString(message)})
......@@ -48,50 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
if reference is None:\n
raise ValueError("Missing Reference")\n
\n
portal = context.getPortalObject()\n
\n
upgrade_decision_list = portal.portal_catalog(\n
portal_type="Upgrade Decision", \n
reference=reference, limit=2)\n
\n
if len(upgrade_decision_list) == 0:\n
return context.Base_redirect("", \n
keep_items={"portal_status_message": \n
context.Base_translateString("Unable to find the Upgrade Decision.")})\n
\n
if len(upgrade_decision_list) > 1:\n
raise ValueError("Duplicated reference for %s. Please contact site administrators." % reference)\n
\n
upgrade_decision = upgrade_decision_list[0]\n
\n
\n
if upgrade_decision.getSimulationState() in [\'cancelled\', \'rejected\']:\n
message = "Upgrade Decision is already Rejected!"\n
\n
elif upgrade_decision.getSimulationState() == \'started\':\n
message = "Sorry, This Upgrade Decision is already Started, you cannot reject it anymore."\n
\n
elif upgrade_decision.getSimulationState() in [\'stopped\', \'delivered\']:\n
message = "Sorry, this Upgrade Decision has been already processed."\n
\n
elif upgrade_decision.getSimulationState() in [\'confirmed\', \'draft\', \'planned\']:\n
message = "Thanks Upgrade Decision has been rejected Successfully (You cannot use it anymore)."\n
upgrade_decision.reject()\n
\n
return context.Base_redirect("", \n
keep_items={"portal_status_message": \n
context.Base_translateString(message)})\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>reference</string> </value>
......
from DateTime import DateTime
computer = context
portal = context.getPortalObject()
full_software_release_list = [si.getUrlString() for si in
portal.portal_catalog(
portal_type='Software Installation',
default_aggregate_uid=computer.getUid(),
validation_state='validated'
) if si.getSlapState() == 'start_requested']
if len(full_software_release_list) == 0:
return
# group SR by Software Product to avoid two upgrade Decision for the same product
software_release_list = portal.portal_catalog(
portal_type='Software Release',
url_string=full_software_release_list,
group_by='default_aggregate_uid'
)
upgrade_decision_list = []
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())
# If exist upgrade decision in progress try to cancel it
decision_in_progress = newer_release.\
SoftwareRelease_getUpgradeDecisionInProgress(computer.getUid())
if decision_in_progress and \
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"]:
upgrade_decision.start()
elif context.getAllocationScope() in ["open/personal"]:
upgrade_decision.plan()
upgrade_decision.setStartDate(DateTime())
upgrade_decision_list.append(upgrade_decision)
return upgrade_decision_list
......@@ -48,66 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>from DateTime import DateTime\n
computer = context\n
portal = context.getPortalObject()\n
\n
full_software_release_list = [si.getUrlString() for si in\n
portal.portal_catalog(\n
portal_type=\'Software Installation\',\n
default_aggregate_uid=computer.getUid(),\n
validation_state=\'validated\'\n
) if si.getSlapState() == \'start_requested\']\n
\n
if len(full_software_release_list) == 0:\n
return\n
# group SR by Software Product to avoid two upgrade Decision for the same product\n
software_release_list = portal.portal_catalog(\n
portal_type=\'Software Release\',\n
url_string=full_software_release_list,\n
group_by=\'default_aggregate_uid\'\n
)\n
upgrade_decision_list = []\n
for software_release in software_release_list:\n
software_product_reference = software_release.getAggregateReference()\n
if software_product_reference in [None, ""]:\n
continue\n
\n
sorted_list = portal.SoftwareProduct_getSortedSoftwareReleaseList(\n
software_product_reference=software_product_reference)\n
\n
# Check if there is a new version of this software Product\n
if sorted_list and \\\n
sorted_list[0].getUrlString() not in full_software_release_list:\n
\n
newer_release = sorted_list[0]\n
title = \'A new version of %s is available for %s\' % \\\n
(software_product_reference, context.getTitle()) \n
# If exist upgrade decision in progress try to cancel it\n
decision_in_progress = newer_release.\\\n
SoftwareRelease_getUpgradeDecisionInProgress(computer.getUid())\n
if decision_in_progress and \\\n
not decision_in_progress.UpgradeDecision_tryToCancel(\n
newer_release.getUrlString()):\n
continue\n
\n
upgrade_decision = newer_release.SoftwareRelease_createUpgradeDecision(\n
source_url=computer.getRelativeUrl(),\n
title=title)\n
\n
if context.getAllocationScope() in ["open/public", "open/friend"]:\n
upgrade_decision.start()\n
elif context.getAllocationScope() in ["open/personal"]:\n
upgrade_decision.plan()\n
\n
upgrade_decision.setStartDate(DateTime())\n
upgrade_decision_list.append(upgrade_decision)\n
\n
return upgrade_decision_list\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
portal = context.getPortalObject()
partition_list = portal.portal_catalog(portal_type='Computer Partition',
free_for_request=0,
parent_uid=context.getUid())
valid_slap_state = ['start_requested', 'stop_requested']
hosting_subscription_list = []
upgrade_decision_list = []
for partition in partition_list:
software_instance = partition.getAggregateRelatedValue(
portal_type='Software Instance')
if not software_instance:
continue
hosting_subscription = software_instance.getSpecialiseValue(
portal_type='Hosting Subscription')
if hosting_subscription and hosting_subscription.getSlapState() \
in valid_slap_state and not \
hosting_subscription in hosting_subscription_list:
hosting_subscription_list.append(hosting_subscription)
else:
continue
newer_release = hosting_subscription.\
HostingSubscription_getUpgradableSoftwareRelease()
if newer_release is None:
continue
decision_in_progress = newer_release.\
SoftwareRelease_getUpgradeDecisionInProgress(hosting_subscription.getUid())
if decision_in_progress and \
not decision_in_progress.UpgradeDecision_tryToCancel(
newer_release.getUrlString()):
continue
upgrade_decision = newer_release.SoftwareRelease_createUpgradeDecision(
source_url=hosting_subscription.getRelativeUrl(),
title='A new upgrade is available for %s' % hosting_subscription.getTitle()
)
upgrade_decision.plan()
upgrade_decision_list.append(upgrade_decision)
return upgrade_decision_list
......@@ -48,55 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
\n
partition_list = portal.portal_catalog(portal_type=\'Computer Partition\',\n
free_for_request=0,\n
parent_uid=context.getUid())\n
valid_slap_state = [\'start_requested\', \'stop_requested\']\n
\n
hosting_subscription_list = []\n
upgrade_decision_list = []\n
for partition in partition_list:\n
software_instance = partition.getAggregateRelatedValue(\n
portal_type=\'Software Instance\')\n
if not software_instance:\n
continue\n
\n
hosting_subscription = software_instance.getSpecialiseValue(\n
portal_type=\'Hosting Subscription\')\n
if hosting_subscription and hosting_subscription.getSlapState() \\\n
in valid_slap_state and not \\\n
hosting_subscription in hosting_subscription_list:\n
hosting_subscription_list.append(hosting_subscription)\n
else:\n
continue\n
\n
newer_release = hosting_subscription.\\\n
HostingSubscription_getUpgradableSoftwareRelease()\n
if newer_release is None:\n
continue\n
\n
decision_in_progress = newer_release.\\\n
SoftwareRelease_getUpgradeDecisionInProgress(hosting_subscription.getUid())\n
\n
if decision_in_progress and \\\n
not decision_in_progress.UpgradeDecision_tryToCancel(\n
newer_release.getUrlString()):\n
continue\n
\n
upgrade_decision = newer_release.SoftwareRelease_createUpgradeDecision(\n
source_url=hosting_subscription.getRelativeUrl(),\n
title=\'A new upgrade is available for %s\' % hosting_subscription.getTitle()\n
)\n
upgrade_decision.plan()\n
upgrade_decision_list.append(upgrade_decision)\n
\n
return upgrade_decision_list\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
hosting_subscription = context
portal = context.getPortalObject()
software_instance = hosting_subscription.getPredecessorValue()
if not software_instance:
return None
software_release_list = context.SoftwareProduct_getSortedSoftwareReleaseList(
software_release_url=software_instance.getUrlString())
if not software_release_list:
return None
latest_software_release = software_release_list[0]
if latest_software_release.getUrlString() == software_instance.getUrlString():
return None
else:
return latest_software_release
......@@ -48,26 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>hosting_subscription = context\n
portal = context.getPortalObject()\n
\n
software_instance = hosting_subscription.getPredecessorValue()\n
if not software_instance:\n
return None\n
software_release_list = context.SoftwareProduct_getSortedSoftwareReleaseList(\n
software_release_url=software_instance.getUrlString())\n
\n
if not software_release_list:\n
return None\n
latest_software_release = software_release_list[0]\n
if latest_software_release.getUrlString() == software_instance.getUrlString():\n
return None\n
else:\n
return latest_software_release\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
"""
Check if this hosting subscription is upgradable to the latest version,
and return the software release to upgrade with.
"""
hosting_subscription = context
portal = context.getPortalObject()
slap_state = ['start_requested', 'stop_requested']
if not hosting_subscription.getSlapState() in slap_state:
return None
source_instance = hosting_subscription.getPredecessorValue()
if not source_instance or source_instance.getSlapState() not in slap_state:
return None
software_release = hosting_subscription.HostingSubscription_getNewerSofwareRelease()
if not software_release:
return None
computer = source_instance.getAggregateValue().getParentValue()
if computer.getValidationState() != 'validated':
return None
#Find Software Installation
software_installation_list = portal.portal_catalog(
portal_type="Software Installation",
validation_state="validated",
url_string=software_release.getUrlString(),
default_aggregate_uid=computer.getUid(),
)
# check again slap_state because it might be ignored in previous request!
if 'start_requested' in [software_installation.getSlapState() \
for software_installation in software_installation_list]:
return software_release
return None
......@@ -48,48 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
Check if this hosting subscription is upgradable to the latest version,\n
and return the software release to upgrade with.\n
"""\n
\n
hosting_subscription = context\n
portal = context.getPortalObject()\n
\n
slap_state = [\'start_requested\', \'stop_requested\']\n
\n
if not hosting_subscription.getSlapState() in slap_state:\n
return None\n
\n
source_instance = hosting_subscription.getPredecessorValue()\n
if not source_instance or source_instance.getSlapState() not in slap_state:\n
return None\n
\n
software_release = hosting_subscription.HostingSubscription_getNewerSofwareRelease()\n
if not software_release:\n
return None\n
\n
computer = source_instance.getAggregateValue().getParentValue()\n
if computer.getValidationState() != \'validated\':\n
return None\n
\n
#Find Software Installation\n
software_installation_list = portal.portal_catalog(\n
portal_type="Software Installation",\n
validation_state="validated",\n
url_string=software_release.getUrlString(),\n
default_aggregate_uid=computer.getUid(),\n
)\n
# check again slap_state because it might be ignored in previous request!\n
if \'start_requested\' in [software_installation.getSlapState() \\\n
for software_installation in software_installation_list]:\n
return software_release\n
\n
return None\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......@@ -101,4 +59,4 @@ return None\n
</dictionary>
</pickle>
</record>
</ZopeData>
\ No newline at end of file
</ZopeData>
"""
Get a related Upgrade Decision
"""
if simulation_state not in ["confirmed", "started", "stopped"]:
raise ValueError(
"You shouldn't request for this state: %s" % simulation_state)
decision_line_list = context.getAggregateValueList(
portal_type="Upgrade Decision Line",
simulation_state=simulation_state)
if len(decision_line_list) > 1:
raise ValueError("Your have more them one valid decison line!")
if len(decision_line_list) == 0:
return None
return decision_line_list[0].getParentValue()
......@@ -48,33 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
"""\n
Get a related Upgrade Decision \n
"""\n
if simulation_state not in ["confirmed", "started", "stopped"]:\n
raise ValueError(\n
"You shouldn\'t request for this state: %s" % simulation_state)\n
\n
\n
decision_line_list = context.getAggregateValueList(\n
portal_type="Upgrade Decision Line", \n
simulation_state=simulation_state)\n
\n
if len(decision_line_list) > 1:\n
raise ValueError("Your have more them one valid decison line!")\n
\n
if len(decision_line_list) == 0:\n
return None\n
\n
return decision_line_list[0].getParentValue()\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>simulation_state=\'confirmed\'</string> </value>
......
from DateTime import DateTime
portal = context.getPortalObject()
if software_release_url is None and \
context.getPortalType() == "Software Product":
software_product_reference = context.getReference()
if software_product_reference is None:
assert(software_release_url is not None)
software_release = portal.portal_catalog.getResultValue(
portal_type='Software Release',
url_string=software_release_url
)
if not software_release:
return []
software_product_reference = software_release.getAggregateReference()
if not software_product_reference:
return []
else:
# Don't accept both parameters
assert(software_release_url is None)
product_list = portal.portal_catalog(
portal_type='Software Product',
reference=software_product_reference,
validation_state='published',
limit=2)
if not product_list:
return []
if len(product_list) > 1:
raise ValueError('Several Software Product with the same reference.')
software_release_list = product_list[0].getAggregateRelatedValueList()
def sortkey(software_release):
publication_date = software_release.getEffectiveDate()
if publication_date:
if (publication_date - DateTime()) > 0:
return DateTime('1900/05/02')
return publication_date
return software_release.getCreationDate()
software_release_list = sorted(
software_release_list,
key=sortkey, reverse=True,
)
return [software_release for software_release in software_release_list
if software_release.getValidationState() in
["published", "published_alive"]
]
......@@ -48,70 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
from DateTime import DateTime\n
\n
portal = context.getPortalObject()\n
\n
if software_release_url is None and \\\n
context.getPortalType() == "Software Product":\n
software_product_reference = context.getReference()\n
\n
if software_product_reference is None:\n
assert(software_release_url is not None)\n
software_release = portal.portal_catalog.getResultValue(\n
portal_type=\'Software Release\',\n
url_string=software_release_url\n
)\n
if not software_release:\n
return []\n
\n
software_product_reference = software_release.getAggregateReference()\n
if not software_product_reference:\n
return []\n
\n
else:\n
# Don\'t accept both parameters\n
assert(software_release_url is None)\n
\n
product_list = portal.portal_catalog(\n
portal_type=\'Software Product\',\n
reference=software_product_reference,\n
validation_state=\'published\', \n
limit=2)\n
\n
if not product_list:\n
return []\n
\n
if len(product_list) > 1:\n
raise ValueError(\'Several Software Product with the same reference.\')\n
\n
software_release_list = product_list[0].getAggregateRelatedValueList()\n
\n
def sortkey(software_release):\n
publication_date = software_release.getEffectiveDate()\n
if publication_date:\n
if (publication_date - DateTime()) > 0:\n
return DateTime(\'1900/05/02\')\n
return publication_date\n
return software_release.getCreationDate()\n
\n
software_release_list = sorted(\n
software_release_list,\n
key=sortkey, reverse=True,\n
)\n
\n
return [software_release for software_release in software_release_list\n
if software_release.getValidationState() in\n
["published", "published_alive"]\n
]\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>software_product_reference=None, software_release_url=None</string> </value>
......
portal = context.getPortalObject()
software_release_url = None
for software_release in portal.portal_catalog(
portal_type='Software Release',
validation_state='published',
default_aggregate_uid=context.getUid(),
sort_on=(('indexation_timestamp', 'DESC'),)):
installed_count = portal.portal_catalog(
software_release_url=software_release.getUrlString(),
allocation_scope_uid=portal.portal_categories.allocation_scope.open.public.getUid(),
capacity_scope_uid=portal.portal_categories.capacity_scope.open.getUid(),
portal_type='Computer Partition',
free_for_request=1,
limit=1,
)
if len(installed_count) > 0:
software_release_url = software_release.getRelativeUrl()
break
if context.getAggregate() != software_release_url:
context.setAggregate(software_release_url)
......@@ -48,37 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
portal = context.getPortalObject()\n
\n
software_release_url = None\n
\n
for software_release in portal.portal_catalog(\n
portal_type=\'Software Release\',\n
validation_state=\'published\',\n
default_aggregate_uid=context.getUid(),\n
sort_on=((\'indexation_timestamp\', \'DESC\'),)):\n
installed_count = portal.portal_catalog(\n
software_release_url=software_release.getUrlString(),\n
allocation_scope_uid=portal.portal_categories.allocation_scope.open.public.getUid(),\n
capacity_scope_uid=portal.portal_categories.capacity_scope.open.getUid(),\n
portal_type=\'Computer Partition\',\n
free_for_request=1,\n
limit=1,\n
)\n
if len(installed_count) > 0:\n
software_release_url = software_release.getRelativeUrl()\n
break\n
\n
if context.getAggregate() != software_release_url:\n
context.setAggregate(software_release_url)\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
from DateTime import DateTime
portal = context.getPortalObject()
software_release = context
source_product = portal.restrictedTraverse(source_url, None)
if not source_product:
return
portal_type = source_product.getPortalType()
if portal_type == 'Computer':
person_url = source_product.getSourceAdministration()
elif portal_type == 'Hosting Subscription':
person_url = source_product.getDestinationSection()
else:
return
if not person_url:
return
upgrade_decision = portal.upgrade_decision_module.\
template_upgrade_decision.Base_createCloneDocument(batch_mode=1)
upgrade_decision.edit(title=title)
upgrade_decision.setDestinationSection(person_url)
upgrade_decision.setDestinationDecision(person_url)
decision_line_list = upgrade_decision.contentValues(
portal_type='Upgrade Decision Line')
if len(decision_line_list) > 0:
decision_line = decision_line_list[0]
else:
decision_line = upgrade_decision.newContent(
portal_type='Upgrade Decision Line')
decision_line.edit(
title='Request decision upgrade for %s on %s %s' % (
software_release.getTitle(), portal_type, source_product.getReference()),
aggregate=[source_url, software_release.getRelativeUrl()])
return upgrade_decision
......@@ -48,56 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
from DateTime import DateTime\n
\n
portal = context.getPortalObject()\n
software_release = context\n
\n
source_product = portal.restrictedTraverse(source_url, None)\n
if not source_product:\n
return\n
\n
portal_type = source_product.getPortalType()\n
if portal_type == \'Computer\':\n
person_url = source_product.getSourceAdministration()\n
elif portal_type == \'Hosting Subscription\':\n
person_url = source_product.getDestinationSection()\n
else:\n
return\n
\n
if not person_url:\n
return\n
\n
upgrade_decision = portal.upgrade_decision_module.\\\n
template_upgrade_decision.Base_createCloneDocument(batch_mode=1)\n
\n
upgrade_decision.edit(title=title)\n
\n
upgrade_decision.setDestinationSection(person_url)\n
upgrade_decision.setDestinationDecision(person_url)\n
\n
decision_line_list = upgrade_decision.contentValues(\n
portal_type=\'Upgrade Decision Line\')\n
if len(decision_line_list) > 0:\n
decision_line = decision_line_list[0]\n
else:\n
decision_line = upgrade_decision.newContent(\n
portal_type=\'Upgrade Decision Line\')\n
\n
decision_line.edit(\n
title=\'Request decision upgrade for %s on %s %s\' % (\n
software_release.getTitle(), portal_type, source_product.getReference()),\n
aggregate=[source_url, software_release.getRelativeUrl()])\n
\n
return upgrade_decision\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>source_url, title</string> </value>
......
portal = context.getPortalObject()
product_reference = context.getAggregateReference()
decision_line_in_progress_list = portal.portal_catalog(
portal_type='Upgrade Decision Line',
default_aggregate_uid=aggregate_uid)
for decision_line in decision_line_in_progress_list:
upgrade_decision = decision_line.getParentValue()
simulation_state = upgrade_decision.getSimulationState()
if simulation_state not in ['planned', 'confirmed',
'started', 'stopped', 'rejected']:
continue
release_list = decision_line.getAggregateValueList(portal_type="Software Release")
if len(release_list) > 1:
continue
if not release_list[0]:
continue
# If the current sr in rejected we must prevent creation of new upgrade decision for this sr
if simulation_state == 'rejected' and \
release_list[0].getUrlString() != context.getUrlString():
continue
# If both software release belong to the same software product, there is an upgrade decision in progress
if product_reference == release_list[0].getAggregateReference():
return upgrade_decision
......@@ -48,40 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
portal = context.getPortalObject()\n
product_reference = context.getAggregateReference()\n
\n
decision_line_in_progress_list = portal.portal_catalog(\n
portal_type=\'Upgrade Decision Line\',\n
default_aggregate_uid=aggregate_uid)\n
\n
for decision_line in decision_line_in_progress_list:\n
upgrade_decision = decision_line.getParentValue()\n
simulation_state = upgrade_decision.getSimulationState()\n
if simulation_state not in [\'planned\', \'confirmed\',\n
\'started\', \'stopped\', \'rejected\']:\n
continue\n
release_list = decision_line.getAggregateValueList(portal_type="Software Release")\n
if len(release_list) > 1:\n
continue\n
if not release_list[0]:\n
continue\n
# If the current sr in rejected we must prevent creation of new upgrade decision for this sr\n
if simulation_state == \'rejected\' and \\\n
release_list[0].getUrlString() != context.getUrlString():\n
continue\n
\n
# If both software release belong to the same software product, there is an upgrade decision in progress \n
if product_reference == release_list[0].getAggregateReference():\n
return upgrade_decision\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>aggregate_uid</string> </value>
......
software_instance = context.getAggregateValue(portal_type="Hosting Subscription")
if software_instance is not None and software_instance.getSlapState() == "destroy_requested":
context.getParentValue().cancel()
......@@ -48,13 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>software_instance = context.getAggregateValue(portal_type="Hosting Subscription")\n
if software_instance is not None and software_instance.getSlapState() == "destroy_requested":\n
context.getParentValue().cancel()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
......@@ -48,11 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>context.UpgradeDecision_init()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
computer_list = []
for decision_line in context.contentValues():
computer_list.extend(
decision_line.getAggregateValueList(portal_type="Computer"))
if len(computer_list) > 1:
raise ValueError("It is only allowed to have more them 1 Computer")
if len(computer_list) == 0:
return None
return computer_list[0]
......@@ -48,27 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
computer_list = []\n
for decision_line in context.contentValues():\n
computer_list.extend(\n
decision_line.getAggregateValueList(portal_type="Computer"))\n
\n
if len(computer_list) > 1: \n
raise ValueError("It is only allowed to have more them 1 Computer")\n
\n
if len(computer_list) == 0:\n
return None\n
\n
\n
return computer_list[0]\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
portal = context.getPortalObject()
notification_message = portal.portal_notifications.getDocumentValue(
reference='slapos-upgrade-computer.notification')
title = "New Software available for Installation at %s" % computer.getTitle()
mapping_dict = {'software_product_title': software_product_title,
'computer_title': computer.getTitle(),
'computer_reference': computer.getReference(),
'software_release_name': software_release.getTitle(),
'software_release_reference': software_release.getReference(),
'upgrade_accept_link':
'Base_acceptUpgradeDecision?reference=%s' % reference,
'upgrade_reject_link':
'Base_rejectUpgradeDecision?reference=%s' % reference,
'new_software_release_url': software_release.getUrlString(),
}
if notification_message is not None:
message = notification_message.asEntireHTML(
substitution_method_parameter_dict={'mapping_dict': mapping_dict})
else:
raise ValueError("No Notification Message")
return title, message
......@@ -48,36 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal = context.getPortalObject()\n
\n
notification_message = portal.portal_notifications.getDocumentValue(\n
reference=\'slapos-upgrade-computer.notification\')\n
\n
title = "New Software available for Installation at %s" % computer.getTitle()\n
mapping_dict = {\'software_product_title\': software_product_title,\n
\'computer_title\': computer.getTitle(),\n
\'computer_reference\': computer.getReference(),\n
\'software_release_name\': software_release.getTitle(),\n
\'software_release_reference\': software_release.getReference(),\n
\'upgrade_accept_link\': \n
\'Base_acceptUpgradeDecision?reference=%s\' % reference,\n
\'upgrade_reject_link\':\n
\'Base_rejectUpgradeDecision?reference=%s\' % reference,\n
\'new_software_release_url\': software_release.getUrlString(),\n
}\n
\n
\n
if notification_message is not None:\n
message = notification_message.asEntireHTML(\n
substitution_method_parameter_dict={\'mapping_dict\': mapping_dict})\n
else:\n
raise ValueError("No Notification Message")\n
\n
return title, message\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>computer</string> </value>
......
hosting_subscription_list = []
for decision_line in context.contentValues():
hosting_subscription_list.extend(
decision_line.getAggregateValueList(portal_type="Hosting Subscription"))
if len(hosting_subscription_list) > 1:
raise ValueError("It is only allowed to have more them 1 Hosting Subscription")
if len(hosting_subscription_list) == 0:
return None
return hosting_subscription_list[0]
......@@ -48,27 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
hosting_subscription_list = []\n
for decision_line in context.contentValues():\n
hosting_subscription_list.extend(\n
decision_line.getAggregateValueList(portal_type="Hosting Subscription"))\n
\n
if len(hosting_subscription_list) > 1: \n
raise ValueError("It is only allowed to have more them 1 Hosting Subscription")\n
\n
if len(hosting_subscription_list) == 0:\n
return None\n
\n
\n
return hosting_subscription_list[0]\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
......@@ -48,11 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>return context.Ticket_getResourceItemList()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
software_release_list = []
for decision_line in context.contentValues():
software_release_list.extend(
decision_line.getAggregateValueList(portal_type="Software Release"))
if len(software_release_list) > 1:
raise ValueError("It is only allowed to have more them 1 Software Release")
if len(software_release_list) == 0:
return None
return software_release_list[0]
......@@ -48,27 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
software_release_list = []\n
for decision_line in context.contentValues():\n
software_release_list.extend(\n
decision_line.getAggregateValueList(portal_type="Software Release"))\n
\n
if len(software_release_list) > 1: \n
raise ValueError("It is only allowed to have more them 1 Software Release")\n
\n
if len(software_release_list) == 0:\n
return None\n
\n
\n
return software_release_list[0]\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
# Define Reference from ID provided by portal_ids
portal = context.getPortalObject()
type_definition = context.getTypeInfo()
short_portal_type = type_definition.getShortTitle()
if not short_portal_type:
short_portal_type = ''.join(s for s in type_definition.getId() if s.isupper())
id_group = ('reference', short_portal_type)
default = 1
new_id = portal.portal_ids.generateNewId(id_group=id_group, default=default)
reference = '%s-%s' % (short_portal_type, new_id)
context.setReference(reference)
......@@ -48,24 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># Define Reference from ID provided by portal_ids\n
portal = context.getPortalObject()\n
type_definition = context.getTypeInfo()\n
\n
short_portal_type = type_definition.getShortTitle()\n
if not short_portal_type:\n
short_portal_type = \'\'.join(s for s in type_definition.getId() if s.isupper())\n
\n
id_group = (\'reference\', short_portal_type)\n
default = 1\n
new_id = portal.portal_ids.generateNewId(id_group=id_group, default=default)\n
reference = \'%s-%s\' % (short_portal_type, new_id)\n
\n
context.setReference(reference)\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
......
portal = context.getPortalObject()
hosting_subscription = context.UpgradeDecision_getHostingSubscription()
computer = context.UpgradeDecision_getComputer()
software_release = context.UpgradeDecision_getSoftwareRelease()
if hosting_subscription is not None:
if hosting_subscription.getUrlString() == software_release.getUrlString():
return True
elif computer is not None:
full_software_release_list = [si for si in
portal.portal_catalog(
portal_type='Software Installation',
url_string=software_release.getUrlString(),
default_aggregate_uid=computer.getUid(),
validation_state='validated'
) if si.getSlapState() == 'start_requested']
if len(full_software_release_list) > 0:
return True
return False
......@@ -48,37 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
portal = context.getPortalObject()\n
\n
hosting_subscription = context.UpgradeDecision_getHostingSubscription()\n
computer = context.UpgradeDecision_getComputer()\n
software_release = context.UpgradeDecision_getSoftwareRelease()\n
\n
if hosting_subscription is not None:\n
if hosting_subscription.getUrlString() == software_release.getUrlString():\n
return True\n
\n
elif computer is not None:\n
full_software_release_list = [si for si in \n
portal.portal_catalog(\n
portal_type=\'Software Installation\',\n
url_string=software_release.getUrlString(),\n
default_aggregate_uid=computer.getUid(),\n
validation_state=\'validated\'\n
) if si.getSlapState() == \'start_requested\']\n
\n
if len(full_software_release_list) > 0:\n
return True\n
\n
return False\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
from DateTime import DateTime
if context.getSimulationState() != 'planned':
# XXX Don't notify the ones which are not planned.
return
portal = context.getPortalObject()
person = context.getDestinationDecisionValue(portal_type="Person")
if not person:
raise ValueError("Inconsistent Upgrade Decision, No Destination Decision")
hosting_subscription = context.UpgradeDecision_getHostingSubscription()
computer = context.UpgradeDecision_getComputer()
software_release = context.UpgradeDecision_getSoftwareRelease()
software_product_title = software_release.getAggregateTitle(
portal_type="Software Product")
reference = context.getReference()
mapping_dict = {
'software_product_title': software_product_title,
'upgrade_accept_link': 'Base_acceptUpgradeDecision?reference=%s' % reference,
'upgrade_reject_link': 'Base_rejectUpgradeDecision?reference=%s' % reference,
'software_release_name': software_release.getTitle(),
'software_release_reference': software_release.getReference(),
'new_software_release_url': software_release.getUrlString(),
}
if hosting_subscription is not None:
notification_message_reference = 'slapos-upgrade-hosting-subscription.notification'
title = "New Upgrade available for %s" % hosting_subscription.getTitle()
mapping_dict.update(**{
'hosting_subscription_title': hosting_subscription.getTitle(),
'old_software_release_url': hosting_subscription.getUrlString()})
elif computer is not None:
notification_message_reference = 'slapos-upgrade-computer.notification'
title = "New Software available for Installation at %s" % computer.getTitle()
mapping_dict.update(**{'computer_title': computer.getTitle(),
'computer_reference': computer.getReference()})
if notification_message_reference is None:
raise ValueError("No Notification Message")
notification_message = portal.portal_notifications.getDocumentValue(
reference=notification_message_reference)
message = notification_message.asEntireHTML(
substitution_method_parameter_dict={'mapping_dict': mapping_dict})
event = context.SupportRequest_trySendNotificationMessage(title,
message, person.getRelativeUrl())
if event is not None:
context.confirm()
......@@ -48,69 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>from DateTime import DateTime\n
\n
if context.getSimulationState() != \'planned\':\n
# XXX Don\'t notify the ones which are not planned.\n
return \n
\n
portal = context.getPortalObject()\n
\n
person = context.getDestinationDecisionValue(portal_type="Person")\n
if not person:\n
raise ValueError("Inconsistent Upgrade Decision, No Destination Decision")\n
\n
hosting_subscription = context.UpgradeDecision_getHostingSubscription()\n
computer = context.UpgradeDecision_getComputer()\n
software_release = context.UpgradeDecision_getSoftwareRelease()\n
software_product_title = software_release.getAggregateTitle(\n
portal_type="Software Product")\n
reference = context.getReference()\n
\n
mapping_dict = {\n
\'software_product_title\': software_product_title,\n
\'upgrade_accept_link\': \'Base_acceptUpgradeDecision?reference=%s\' % reference,\n
\'upgrade_reject_link\': \'Base_rejectUpgradeDecision?reference=%s\' % reference,\n
\'software_release_name\': software_release.getTitle(),\n
\'software_release_reference\': software_release.getReference(),\n
\'new_software_release_url\': software_release.getUrlString(),\n
\n
}\n
if hosting_subscription is not None:\n
notification_message_reference = \'slapos-upgrade-hosting-subscription.notification\'\n
title = "New Upgrade available for %s" % hosting_subscription.getTitle()\n
mapping_dict.update(**{\n
\'hosting_subscription_title\': hosting_subscription.getTitle(),\n
\'old_software_release_url\': hosting_subscription.getUrlString()})\n
\n
\n
elif computer is not None:\n
\n
notification_message_reference = \'slapos-upgrade-computer.notification\' \n
\n
title = "New Software available for Installation at %s" % computer.getTitle()\n
mapping_dict.update(**{\'computer_title\': computer.getTitle(),\n
\'computer_reference\': computer.getReference()})\n
\n
\n
if notification_message_reference is None:\n
raise ValueError("No Notification Message")\n
\n
notification_message = portal.portal_notifications.getDocumentValue(\n
reference=notification_message_reference)\n
\n
message = notification_message.asEntireHTML(\n
substitution_method_parameter_dict={\'mapping_dict\': mapping_dict})\n
\n
event = context.SupportRequest_trySendNotificationMessage(title,\n
message, person.getRelativeUrl())\n
\n
if event is not None:\n
context.confirm()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
......
from DateTime import DateTime
if context.getSimulationState() != 'stopped':
return
if not context.UpgradeDecision_isUpgradeFinished():
return
portal = context.getPortalObject()
person = context.getDestinationDecisionValue(portal_type="Person")
if not person:
raise ValueError("Inconsistent Upgrade Decision, No Destination Decision")
hosting_subscription = context.UpgradeDecision_getHostingSubscription()
computer = context.UpgradeDecision_getComputer()
software_release = context.UpgradeDecision_getSoftwareRelease()
software_product_title = software_release.getAggregateTitle(
portal_type="Software Product")
reference = context.getReference()
mapping_dict = {
'software_product_title': software_product_title,
'software_release_name': software_release.getTitle(),
'software_release_reference': software_release.getReference(),
'new_software_release_url': software_release.getUrlString(),
}
if hosting_subscription is not None:
notification_message_reference = 'slapos-upgrade-delivered-hosting-subscription.notification'
title = "Upgrade Processed for %s (%s)" % (hosting_subscription.getTitle(),
software_release.getReference())
mapping_dict.update(**{
'hosting_subscription_title': hosting_subscription.getTitle(),
'old_software_release_url': hosting_subscription.getUrlString()})
elif computer is not None:
notification_message_reference = 'slapos-upgrade-delivered-computer.notification'
title = "Upgrade processed at %s for %s" % (computer.getTitle(), software_release.getReference())
mapping_dict.update(**{'computer_title': computer.getTitle(),
'computer_reference': computer.getReference()})
if notification_message_reference is None:
raise ValueError("No Notification Message")
notification_message = portal.portal_notifications.getDocumentValue(
reference=notification_message_reference)
message = notification_message.asEntireHTML(
substitution_method_parameter_dict={'mapping_dict': mapping_dict})
event = context.SupportRequest_trySendNotificationMessage(title,
message, person.getRelativeUrl())
if event is not None:
context.setStopDate(DateTime())
context.deliver()
......@@ -48,71 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>from DateTime import DateTime\n
\n
if context.getSimulationState() != \'stopped\':\n
return \n
\n
if not context.UpgradeDecision_isUpgradeFinished():\n
return \n
\n
portal = context.getPortalObject()\n
\n
person = context.getDestinationDecisionValue(portal_type="Person")\n
if not person:\n
raise ValueError("Inconsistent Upgrade Decision, No Destination Decision")\n
\n
hosting_subscription = context.UpgradeDecision_getHostingSubscription()\n
computer = context.UpgradeDecision_getComputer()\n
software_release = context.UpgradeDecision_getSoftwareRelease()\n
software_product_title = software_release.getAggregateTitle(\n
portal_type="Software Product")\n
\n
reference = context.getReference()\n
\n
mapping_dict = {\n
\'software_product_title\': software_product_title,\n
\'software_release_name\': software_release.getTitle(),\n
\'software_release_reference\': software_release.getReference(),\n
\'new_software_release_url\': software_release.getUrlString(),\n
}\n
\n
if hosting_subscription is not None:\n
notification_message_reference = \'slapos-upgrade-delivered-hosting-subscription.notification\'\n
title = "Upgrade Processed for %s (%s)" % (hosting_subscription.getTitle(), \n
software_release.getReference())\n
mapping_dict.update(**{\n
\'hosting_subscription_title\': hosting_subscription.getTitle(),\n
\'old_software_release_url\': hosting_subscription.getUrlString()})\n
\n
elif computer is not None:\n
\n
notification_message_reference = \'slapos-upgrade-delivered-computer.notification\' \n
\n
title = "Upgrade processed at %s for %s" % (computer.getTitle(), software_release.getReference()) \n
mapping_dict.update(**{\'computer_title\': computer.getTitle(),\n
\'computer_reference\': computer.getReference()})\n
\n
\n
if notification_message_reference is None:\n
raise ValueError("No Notification Message")\n
\n
notification_message = portal.portal_notifications.getDocumentValue(\n
reference=notification_message_reference)\n
\n
message = notification_message.asEntireHTML(\n
substitution_method_parameter_dict={\'mapping_dict\': mapping_dict})\n
\n
event = context.SupportRequest_trySendNotificationMessage(title,\n
message, person.getRelativeUrl())\n
\n
if event is not None:\n
context.setStopDate(DateTime())\n
context.deliver()\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
......
if context.UpgradeDecision_upgradeHostingSubscription():
return True
if context.UpgradeDecision_upgradeComputer():
return True
return False
......@@ -48,17 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>if context.UpgradeDecision_upgradeHostingSubscription():\n
return True\n
\n
if context.UpgradeDecision_upgradeComputer():\n
return True\n
\n
return False\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>**kw</string> </value>
......
upgrade_decision = context
cancellable_state_list = ['confirmed', 'planned']
require_state_list = ['rejected', 'confirmed', 'planned']
simulation_state = upgrade_decision.getSimulationState()
if simulation_state in require_state_list:
current_release = upgrade_decision.UpgradeDecision_getSoftwareRelease()
if not current_release:
# This upgrade decision is not valid
return False
if current_release.getUrlString() == new_url_string:
# Cannot cancel because the software releases are the same
return False
if simulation_state in cancellable_state_list:
upgrade_decision.cancel()
return True
else:
return False
......@@ -48,28 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>upgrade_decision = context\n
cancellable_state_list = [\'confirmed\', \'planned\']\n
require_state_list = [\'rejected\', \'confirmed\', \'planned\']\n
simulation_state = upgrade_decision.getSimulationState()\n
\n
if simulation_state in require_state_list:\n
current_release = upgrade_decision.UpgradeDecision_getSoftwareRelease()\n
if not current_release:\n
# This upgrade decision is not valid\n
return False\n
if current_release.getUrlString() == new_url_string:\n
# Cannot cancel because the software releases are the same\n
return False\n
if simulation_state in cancellable_state_list:\n
upgrade_decision.cancel()\n
return True\n
else:\n
return False\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>new_url_string</string> </value>
......
if context.getSimulationState() != 'started':
# Update Decision is not on started state, Upgrade is not possible!
return False
computer = context.UpgradeDecision_getComputer()
software_release = context.UpgradeDecision_getSoftwareRelease()
if computer is None:
return False
if software_release is None:
return False
software_release_url = software_release.getUrlString()
computer.requestSoftwareRelease(
software_release_url=software_release_url,
state="available")
context.stop()
return True
......@@ -48,32 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>if context.getSimulationState() != \'started\':\n
# Update Decision is not on started state, Upgrade is not possible!\n
return False\n
\n
computer = context.UpgradeDecision_getComputer()\n
software_release = context.UpgradeDecision_getSoftwareRelease()\n
\n
if computer is None:\n
return False\n
\n
if software_release is None:\n
return False \n
\n
software_release_url = software_release.getUrlString()\n
\n
computer.requestSoftwareRelease(\n
software_release_url=software_release_url,\n
state="available")\n
\n
context.stop()\n
\n
return True\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
if context.getSimulationState() != 'started':
# Update Decision is not on started state, Upgrade is not possible!
return False
hosting_subscription = context.UpgradeDecision_getHostingSubscription()
software_release = context.UpgradeDecision_getSoftwareRelease()
if hosting_subscription is None:
return False
if software_release is None:
return False
software_release_url = software_release.getUrlString()
person = hosting_subscription.getDestinationSectionValue(portal_type="Person")
status = hosting_subscription.getSlapState()
if status == "start_requested":
state = "started"
elif status == "stop_requested":
state = "stopped"
elif status == "destroy_requested":
state = "destroyed"
person.requestSoftwareInstance(
state=state,
software_release=software_release_url,
software_title=hosting_subscription.getTitle(),
software_type=hosting_subscription.getSourceReference(),
instance_xml=hosting_subscription.getTextContent(),
sla_xml=hosting_subscription.getSlaXml(),
shared=hosting_subscription.isRootSlave()
)
context.stop()
return True
......@@ -48,49 +48,6 @@
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>if context.getSimulationState() != \'started\':\n
# Update Decision is not on started state, Upgrade is not possible!\n
return False\n
\n
hosting_subscription = context.UpgradeDecision_getHostingSubscription()\n
software_release = context.UpgradeDecision_getSoftwareRelease()\n
\n
if hosting_subscription is None:\n
return False\n
\n
if software_release is None:\n
return False \n
\n
software_release_url = software_release.getUrlString()\n
\n
person = hosting_subscription.getDestinationSectionValue(portal_type="Person")\n
\n
status = hosting_subscription.getSlapState()\n
\n
if status == "start_requested":\n
state = "started"\n
elif status == "stop_requested":\n
state = "stopped"\n
elif status == "destroy_requested":\n
state = "destroyed"\n
\n
person.requestSoftwareInstance(\n
state=state,\n
software_release=software_release_url,\n
software_title=hosting_subscription.getTitle(),\n
software_type=hosting_subscription.getSourceReference(),\n
instance_xml=hosting_subscription.getTextContent(),\n
sla_xml=hosting_subscription.getSlaXml(),\n
shared=hosting_subscription.isRootSlave()\n
)\n
\n
context.stop()\n
\n
return True\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
......
portal_alarms/slapos_manage_software_catalog
portal_alarms/slapos_pdm_computer_create_upgrade_decision
portal_alarms/slapos_pdm_hosting_subscription_auto_cancel_upgrade_decision
portal_alarms/slapos_pdm_hosting_subscription_create_upgrade_decision
portal_alarms/slapos_pdm_upgrade_decision_process_planned
portal_alarms/slapos_pdm_upgrade_decision_process_started
......
test.erp5.testSlapOSPDMAlarm
test.erp5.testSlapOSPDMSkins
test.erp5.testSlapOSPDMSkins
\ No newline at end of file
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