Commit de33c59b authored by Romain Courteaud's avatar Romain Courteaud

slapos_upgrader: create Instance Node

parent 7699bd37
......@@ -15,4 +15,15 @@ portal.portal_catalog.searchAndActivate(
portal_type="Project",
)
############################################
# Create instance node per project
############################################
portal.portal_catalog.searchAndActivate(
method_id='Project_checkInstanceNodeToVirtualMaster',
method_kw={'activate_kw': {'tag': tag}},
activate_kw={'tag': tag, 'priority': 1},
portal_type="Project",
)
context.activate(after_tag=tag).getId()
from zExceptions import Unauthorized
if REQUEST is not None:
raise Unauthorized
portal = context.getPortalObject()
project = context
group_by_list = ["aggregate__uid"]
sql_result_list = portal.portal_catalog(
select_list=group_by_list,
portal_type=["Slave Instance"],
follow_up__uid=project.getUid(),
group_by=group_by_list
)
for sql_result in sql_result_list:
slave_instance = sql_result.getObject()
partition = slave_instance.getAggregateValue()
if (partition is not None) and (partition.getParentValue().getPortalType() == 'Compute Node'):
instance_list = portal.portal_catalog(
portal_type="Software Instance",
aggregate__uid=partition.getUid(),
limit=2
)
if (len(instance_list) == 1) and (instance_list[0].getSpecialise() != slave_instance.getSpecialise()):
software_instance = instance_list[0]
instance_tree = software_instance.getSpecialiseValue()
if portal.portal_catalog.getResultValue(
portal_type="Instance Node",
specialise__uid=software_instance.getUid()
) is None:
instance_node = portal.compute_node_module.newContent(
portal_type='Instance Node',
title=instance_tree.getTitle(),
specialise_value=software_instance,
follow_up_value=software_instance.getFollowUpValue(),
activate_kw=activate_kw
)
instance_node.validate()
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>REQUEST=None, activate_kw=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Project_checkInstanceNodeToVirtualMaster</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
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