Commit 75029c17 authored by Vivien Alger's avatar Vivien Alger

Mass upgrade: check for installed software before upgrade

parent 8ba70847
......@@ -52,16 +52,19 @@
<key> <string>_body</string> </key>
<value> <string>person = context.getDestinationSectionValue(portal_type="Person")\n
\n
status = context.getSlapState()\n
computer = context.getSpecialiseRelatedValue().getAggregateValue().getParentValue()\n
\n
if status == "start_requested":\n
if new_sr_url in computer.Computer_getSoftwareReleaseUrlStringList():\n
status = context.getSlapState()\n
\n
if status == "start_requested":\n
state = "started"\n
elif status == "stop_requested":\n
elif status == "stop_requested":\n
state = "stopped"\n
elif status == "destroy_requested":\n
elif status == "destroy_requested":\n
state = "destroyed"\n
\n
person.requestSoftwareInstance(\n
person.requestSoftwareInstance(\n
state=state,\n
software_release=new_sr_url,\n
software_title=context.getTitle(),\n
......@@ -69,7 +72,7 @@ person.requestSoftwareInstance(\n
instance_xml=context.getTextContent(),\n
sla_xml=context.getSlaXml(),\n
shared=context.isRootSlave()\n
)\n
)\n
</string> </value>
</item>
<item>
......
......@@ -56,21 +56,26 @@ if listbox is None:\n
listbox = []\n
\n
portal = context.getPortalObject()\n
message_list = []\n
\n
for parameters in listbox:\n
new_sr_path = parameters[\'workflow_action\']\n
\n
if new_sr_path is not None and new_sr_path != \'\':\n
old_sr_document = portal.restrictedTraverse(parameters[\'listbox_key\'])\n
new_sr_document = portal.restrictedTraverse(new_sr_path)\n
new_sr_url = new_sr_document.getUrlString()\n
\n
comp_reference_list = parameters[\'computer_filter\']\n
if comp_reference_list != []:\n
for comp_reference in comp_reference_list:\n
if new_sr_url not in portal.portal_catalog.getResultValue(portal_type=\'Computer\', reference=comp_reference).Computer_getSoftwareReleaseUrlStringList():\n
message_list.append("Software Release %s not installed on %s." % (new_sr_document.getTitle(), comp_reference))\n
\n
old_sr_document = portal.restrictedTraverse(parameters[\'listbox_key\'])\n
\n
tag = \'software_release_change_from_%s_to_%s\' % (old_sr_document.getReference(), new_sr_document.getReference())\n
\n
comp_uid_list = []\n
for comp in parameters[\'computer_filter\']:\n
comp_uid_list.append(portal.restrictedTraverse(comp).getUid())\n
\n
old_sr_document.activate(tag=tag).SoftwareRelease_requestInstanceUpgrade(new_sr_document.getUrlString(), comp_uid_list, tag)\n
old_sr_document.activate(tag=tag).SoftwareRelease_requestInstanceUpgrade(new_sr_url, comp_reference_list, tag)\n
\n
# activate something on the module after everything, so that user can know that something is happening in the background\n
context.activate(after_tag=tag).getTitle()\n
......@@ -78,8 +83,13 @@ for parameters in listbox:\n
# reset selection checked uids\n
context.portal_selections.setSelectionCheckedUidsFor(selection_name, [])\n
\n
portal_status_message = "Upgrade of instances in progress.\\r\\n"\n
\n
if message_list != []:\n
portal_status_message += "\\r\\n".join(message_list)\n
\n
return context.Base_redirect(form_id,\n
keep_items=dict(portal_status_message=translateString("Upgrade of instances in progress.")))\n
keep_items=dict(portal_status_message=translateString(portal_status_message)))\n
</string> </value>
</item>
<item>
......
......@@ -263,7 +263,7 @@
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: [(x.getReference(),x.getUrl()) for x in cell.SoftwareRelease_getUsableComputerList()]</string> </value>
<value> <string>python: [(x.getReference(),x.getReference()) for x in cell.SoftwareRelease_getUsableComputerList()]</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -56,14 +56,14 @@
old_sr_url = context.getUrlString()\n
portal = context.getPortalObject()\n
\n
if comp_uid_list != []:\n
if comp_reference_list != []:\n
hosting_sub_list = portal.portal_catalog.searchAndActivate(\n
portal_type = \'Hosting Subscription\',\n
default_specialise_related_uid = [x.getUid() for x in portal.portal_catalog(\n
portal_type = [\'Software Instance\', \'Slave Instance\'],\n
default_aggregate_uid = [y.getUid() for y in portal.portal_catalog(\n
portal_type = \'Computer Partition\',\n
parent_uid = comp_uid_list,\n
parent_reference = comp_reference_list,\n
free_for_request = 0,\n
software_release_url = old_sr_url\n
)]\n
......@@ -85,7 +85,7 @@ else:\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>new_sr_url, comp_uid_list, tag, **kw</string> </value>
<value> <string>new_sr_url, comp_reference_list, tag, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
290
\ No newline at end of file
291
\ 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