Commit e6d9f4fa authored by Romain Courteaud's avatar Romain Courteaud

slapos_cloud:

* drop not needed log
* commit module business_application
* fix SLA tests
parent f2c4c561
<module>
<category_list>
<category>business_application/slapos</category>
</category_list>
<id>hosting_subscription_module</id>
<permission_list>
<permission type='tuple'>
......
<module>
<category_list>
<category>business_application/slapos</category>
</category_list>
<id>instance_tree_module</id>
<permission_list>
<permission type='tuple'>
......
<module>
<category_list>
<category>business_application/slapos</category>
</category_list>
<id>software_installation_module</id>
<permission_list>
<permission type='tuple'>
......
<module>
<category_list>
<category>business_application/slapos</category>
</category_list>
<id>software_instance_module</id>
<permission_list>
<permission type='tuple'>
......
......@@ -180,8 +180,6 @@ if test_mode:
SQL_WINDOW_SIZE = 50
context.log(portal.portal_catalog.countResults(src__=1, **query_kw))
# fetch at mot 50 random Compute Partitions, and check if they are ok
isTransitionPossible = portal.portal_workflow.isTransitionPossible
result_count = portal.portal_catalog.countResults(**query_kw)[0][0]
......
......@@ -81,7 +81,7 @@ def withAbort(func):
class TemporaryAlarmScript(object):
"""
Context manager for temporary python scripts
Context manager for temporary alarm python scripts
"""
def __init__(self, portal, script_name, fake_return="", attribute=None):
self.script_name = script_name
......@@ -611,6 +611,91 @@ class SlapOSTestCaseMixin(testSlapOSMixin):
url_string='type%s' % self.generateNewId(),
)
def bootstrapAllocableInstanceTree(self, is_allocated=False, shared=False, node="compute"):
project = self.addProject()
person = self.makePerson(project)
software_product = self._makeSoftwareProduct(project)
release_variation = software_product.contentValues(portal_type='Software Product Release Variation')[0]
type_variation = software_product.contentValues(portal_type='Software Product Type Variation')[0]
self.tic()
if node == "compute":
person.requestComputeNode(compute_node_title='test compute node',
project_reference=project.getReference())
self.tic()
compute_node = self.portal.portal_catalog.getResultValue(
portal_type='Compute Node',
reference=self.portal.REQUEST.get('compute_node_reference')
)
assert compute_node is not None
# The edit above will update capacity scope due the interaction workflow
# The line above force capacity scope to be open, keeping the previous
# behaviour.
compute_node.edit(capacity_scope='open')
elif node == "remote":
compute_node = self.portal.compute_node_module.newContent(
portal_type="Remote Node",
follow_up_value=project
)
elif node == "instance":
compute_node = self.portal.compute_node_module.newContent(
portal_type="Instance Node",
follow_up_value=project
)
else:
raise ValueError("Unsupported node value: %s" % node)
request_kw = dict(
software_release=release_variation.getUrlString(),
software_type=type_variation.getTitle(),
instance_xml=self.generateSafeXml(),
sla_xml=self.generateSafeXml(),
shared=shared,
software_title='test tree',
state='started',
project_reference=project.getReference()
)
person.requestSoftwareInstance(**request_kw)
instance_tree = self.portal.REQUEST.get('request_instance_tree')
if is_allocated:
if (node == "instance") and (shared):
real_compute_node = self.portal.compute_node_module.newContent(
portal_type="Compute Node",
follow_up_value=project
)
# The edit above will update capacity scope due the interaction workflow
# The line above force capacity scope to be open, keeping the previous
# behaviour.
real_compute_node.edit(capacity_scope='open')
real_compute_node.validate()
partition = real_compute_node.newContent(
portal_type='Compute Partition',
reference='reference%s' % self.generateNewId()
)
software_instance = self.portal.software_instance_module.newContent(
portal_type="Software Instance",
follow_up_value=project,
aggregate_value=partition
)
compute_node.edit(specialise_value=software_instance)
elif (node == "instance") and (not shared):
raise NotImplementedError('can not allocate on instance node')
else:
partition = compute_node.newContent(
portal_type='Compute Partition',
reference='reference%s' % self.generateNewId()
)
instance = instance_tree.getSuccessorValue()
instance.edit(aggregate_value=partition)
partition.validate()
partition.markFree()
partition.markBusy()
self.tic()
return software_product, release_variation, type_variation, compute_node, instance_tree
def addAllocationSupply(self, title, node, software_product,
software_release, software_type,
destination_value=None,
......
......@@ -157,13 +157,15 @@ class TestSlapOSCloudUpgrader(SlapOSTestCaseMixin):
computer_module = self.portal.getDefaultModule('Computer')
computer_nothing_to_migrate = computer_module.newContent(
portal_type='Computer'
portal_type='Computer',
title='not to migrate'
)
computer_to_migrate = computer_module.newContent(
portal_type='Computer',
quantity=99,
bar='foo3'
bar='foo3',
title='to migrate'
)
# Create fake workflow history
......
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