Commit f1a69a0c authored by Łukasz Nowak's avatar Łukasz Nowak

Implement Computer.bang

It allows to bang all software instances related to one comptuer -- eg in case
of issue on computer.

Squashed commit of the following:

commit 7197adeb6899639faa086e48ea67fa0f0f56b0a8
Merge: eb27743 d3bfe2ff
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 11:40:05 2011 +0200

    Merge branch 'master' into bang

    Conflicts:
    	master/bt5/vifib_base/WorkflowTemplateItem/portal_workflow/software_instance_slap_interface_workflow/scripts/SoftwareInstance_bangSoftwareInstanceTree.xml
    	master/bt5/vifib_base/bt/revision

commit eb277438da78a60df0aa85c2b2db6af0939ce9de
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 11:26:19 2011 +0200

    Cover a case when computer administrator uses Computer.bang

commit 8816c49a48e9962f1ad8f6b98640106f2a0118d0
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 11:18:04 2011 +0200

    Test Computer.bang.

commit 6421b1c18d8c988631eb7361bd8262f5dad4a0b4
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 11:08:45 2011 +0200

    Bang all busy partitions on self bang.

commit 772df7b015121daa90d1b013fcc9760eb8f4899f
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 10:54:20 2011 +0200

    Add skeleton for Computer's bang transition.

commit d38da3948fa471a3ae63c06542e13fbe993fdd8d
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 10:52:04 2011 +0200

    Implement server side computerBang

commit 16e20fd09d80140f0bb639140edd228621ba59e3
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 10:48:10 2011 +0200

    Implement client-side Computer.bang

commit 2002039a58e82ae6cbaaecea35523dae42e3cbad
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 10:41:28 2011 +0200

    Rename to cover more cases.

    Computer.bang will be done in same test.

commit 7abb808da143f7b6d7701378768e8bad2ed334a8
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 10:39:41 2011 +0200

    Work in activities.

    It will allow to "serialize" errors per document, and so the whole bang would
    not be stopped because of one failing partition.

commit afaaaf6e76de96b70b9b1d3625cbc408024c280e
Merge: 6e3ed1e c2a1455e
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 10:18:58 2011 +0200

    Merge branch 'master' into bang

    Conflicts:
    	master/bt5/vifib_base/bt/revision
    	master/product/Vifib/tests/testVifibSlapComputerPartitionUpdate.py

commit 6e3ed1ef90d4916b6d3bdfb29a97f78c950feb4b
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 10:11:06 2011 +0200

    Check that message sent by bang is correctly stored.

commit 0774d6f5ed21ae47f44d4d405095247532df45b3
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 09:59:41 2011 +0200

    Prove that bang in any part of tree updates the whole tree.

commit 2d9b44971d35ba33af6671c94d3ed1778d80beb4
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Oct 4 09:34:45 2011 +0200

    Fix finding root.

commit b3c42077c076a7edae8dc7824283fa45e973e717
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 18:14:23 2011 +0200

    Initialise bang testing.

commit 95d16bc41050a35325065c08927a24b9b1beda6e
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 16:35:30 2011 +0200

    Implement bang on the whole software instance tree.

commit 6f251837c8e6265209b06600f177267b8239f71f
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 16:16:42 2011 +0200

    Pick the newest buildout.

commit df5ae80624b9788030c93e7cd01482f20926f443
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 15:56:37 2011 +0200

    Implement server side softwareInstanceBang support.

commit 8145f0bc1b5d7d92b234a4e5204924a9bf5f5089
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 15:54:17 2011 +0200

    Implement ComputerPartition.bang

commit 949488534c541d1c960b5e1a8f82de5067aaf706
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 14:47:49 2011 +0200

    Cover person begin requesting.

commit 09fb07bcae69e806c82953762cf95c7762f62973
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 14:26:23 2011 +0200

    Prove that no update packing list is created when request is in progress.

commit 93dfc1fc1015da6ee53cd2aa061e994994f6a8a5
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 11:29:03 2011 +0200

    Rewrite test in order to follow logic.

    It raises before, but leave required checks.

commit 328666079187437bf23d259abf7e2e132fefe5ae
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 11:04:16 2011 +0200

    Prove that during destruction in progress no update is created.

    Again: such operation will result in update software instance.

commit 5b7a0abe18e325d16eb228794eb8546c236bf49f
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 10:58:02 2011 +0200

    Prove that during start in progress no update is done.

commit 420c66b7f3d9ff3bde7a483d3a72107fe591f754
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 10:54:25 2011 +0200

    Do not interfere with start or destruction in progress.

    Those actions will result in instance update, no need to create any.

commit e7e7c1a40cb57dafb4d0044d39ba6eae00716e81
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 10:32:54 2011 +0200

    One another place to avoid update creation.

    Add notes about impossibly to fetch correct tag.

commit 41bc0f1b92d5b836635b6c43ba98d9c5b6095d4d
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 10:28:46 2011 +0200

    Another lock test to avoid update during request.

commit 3c9d408c8ac6381e6a8706543dfa85857eef43bd
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 09:45:11 2011 +0200

    Revert "Avoid resetting test CA."

    This reverts commit a3e246e8156d4b016723aaa13ddc116f0dad14e2.

    Conflicts:

    	master/product/Vifib/tests/VifibMixin.py

commit 70a6f27faf44bdeeeb6930516b4b45b53cedab96
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Mon Oct 3 09:41:00 2011 +0200

    Revert "For safety make small gap."

    This reverts commit 925c10370d7cf002188500f704d3ae882ba7aeb1.

commit 8a510bcfa1d24fe005e3383e7dec093e672e303d
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 17:23:47 2011 +0200

    No, setup in delivered is NOT supported.

commit 925c10370d7cf002188500f704d3ae882ba7aeb1
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 17:21:33 2011 +0200

    For safety make small gap.

commit 4efecddd41251928f8f0116dfd2dc8f804978b44
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 16:41:05 2011 +0200

    Cover ignored cases.

commit 58d502c49633468e8c8df66660cb870e5f06d1f1
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 16:32:47 2011 +0200

    OpenSSL serials are in base 16.

commit aec5e64ad158f5eec0c61bb2cfb22450b3841486
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 16:27:11 2011 +0200

    Check started and special stopped state.

    Started is usual state.

    When instance was requested in stopped state, instace update shall support case
    of instance setup packing list.

commit 8ab1ffe4f5beb8047523461dd4072f7db63a97f7
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 16:25:41 2011 +0200

    Support case of request SI with stopped state.

    In such case there is only Instance Setup Packing List which if in stopped
    state allows to deliver inset update PPL.

commit 43568cd2017cfbc4ed4676f075535394caf77352
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 15:47:42 2011 +0200

    Proof that update works on stopped software instance.

commit 8a855c01f1cdcfa70b819609ff423ed574ed949b
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 15:25:40 2011 +0200

    Typo.

commit 30dc522284e5ff23681966c44b6d73c5eac5ed15
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 15:22:34 2011 +0200

    It is better to reset test environment instead of CA.

commit 85accd973f72e98cc33356644701fe910adbea0a
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 15:07:36 2011 +0200

    Define tests.

commit 9621885fd1be692b7d5387c59f0f596257ec89e7
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 14:34:04 2011 +0200

    Drop local_permission_vifib_interaction_workflow

    It is defined and configured in vifib_erp5.

commit 6279404c4bd48c933c6a0e17e2e258affdc6d2b9
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 14:17:40 2011 +0200

    Do not set slap_interaction_workflow in vifib_base.

    This workflow is available in vifib_slap, and those types are configured in
    former business template.

commit 9bf84264777283f5c876d45d4b6b74a3fdc1ba3e
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 14:10:48 2011 +0200

    Skeleton for update packing list tests.

commit 8dfacef65bc5f4e7c940164a30f746db1e7b0534
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 14:08:32 2011 +0200

    Avoid plurals.

commit 784511374d47a89255b29d0fe69fa41e66d856e4
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 14:06:25 2011 +0200

    Cleanup imports.

    It lowers pyflakes complaints and allows to have minimalist required test module.

commit 8b7bc851d1724f40f2b843636d9f5a5f080ae15f
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 13:55:32 2011 +0200

    Separate bug related tests.

commit d775aa6f6f95e40753c31235fe13f607312c613a
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 13:50:12 2011 +0200

    Keep "compatibility"

    If not update packing list was defined in active state fallback to previous
    "failing" behaviour.

    It is not defined what shall happen in cases when not correct
    (eg: stopped->stopped) is requested, and new functionality shall not impact it.

commit ff88c3704cde5aa8da0fee65ddbe8105a0bbe64b
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 11:39:57 2011 +0200

    Process update packing list on started and stopped responses.

commit 2a833c884e558860dbeef3989adae95edbe6ff29
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 11:39:09 2011 +0200

    Provide update packing list delivery script.

    If there update packing list was found and it was in correct state, this scripts
    returns True, to indicate that update packing list was managed.

commit 4b9923f10730ad95816f70fff20c96531ef0d741
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 11:38:35 2011 +0200

    Allow to pass own state_list.

commit e34819d6d4892248cf4ca550e1d5fb710a1fe14f
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 11:37:36 2011 +0200

    Support update packing list.

    It impacts presence of partition on list.

commit b95b568c7a90f71566bbf072058b2a623d736abf
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 11:25:26 2011 +0200

    Support update resource.

commit aecca5f228f7607c7037d28c14ac852885c352f5
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 10:43:26 2011 +0200

    Destroy is "unsupported" too.

commit 96fc577fff652a0311d1d1c4bc7def491fd8dd7e
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 10:42:25 2011 +0200

    Create update packing list.

    Create only when Instance Hosting or Setup are in correct states.

commit 2a95ee39a9d81ba7a2ade496556844e867d634d3
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Wed Sep 28 10:42:13 2011 +0200

    Support None tag.

commit e56bc4390a084d1d3162c1c0c2c3c8b75b012e6d
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Sep 27 18:44:56 2011 +0200

    Call proper script.

commit a3e246e8156d4b016723aaa13ddc116f0dad14e2
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Sep 27 18:20:45 2011 +0200

    Avoid resetting test CA.

    It allows to live coexist test instance and development site on same instance.

commit dacd5ab8a2e1d77ef88051e8e6d9aa82d1e0342c
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Sep 27 18:17:19 2011 +0200

    Make it pass consistency check.

commit 83f08e4ff8c3a1c066df8a2e0aca027abe7916b2
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Sep 27 18:10:55 2011 +0200

    Add vifib_instance_update to data.

commit 2a5ef6f082a9ff2c2d05208a67419fab7bfdbd69
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Sep 27 18:06:56 2011 +0200

    Add preferred_instance_update_resource_property with UI.

commit 420eaddf73f8ca41cc2089325372d14d870a533c
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Sep 27 17:57:46 2011 +0200

    Export from ERP5.

    Seems like file was edited locally.

commit fd4377bca8a79ff25908c19b8b929396a49b8a13
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Sep 27 17:57:20 2011 +0200

    Add missing BT5 metadata.

commit ce7d695587c81aa53a9f5c5680233b34183c22bb
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Sep 27 17:49:56 2011 +0200

    Partially revert mistake in 324c9104

    Person document class was removed.

commit 206ec5c30e59ecfb62ea58eee9f6f4c35dc24aa4
Author: Łukasz Nowak <luke@nexedi.com>
Date:   Tue Sep 27 17:46:38 2011 +0200

    Add request_update_computer_partition.

    Also remove update_slave_partition_list, which seems like wrongly commited BT5.
parent d3bfe2ff
...@@ -62,9 +62,7 @@ for software_instance in context.portal_catalog(\n ...@@ -62,9 +62,7 @@ for software_instance in context.portal_catalog(\n
portal_type=\'Software Instance\',\n portal_type=\'Software Instance\',\n
root_uid=root_software_instance.getUid()):\n root_uid=root_software_instance.getUid()):\n
software_instance = software_instance.getObject()\n software_instance = software_instance.getObject()\n
# shall it be done in activities?\n software_instance.activate().requestUpdateComputerPartition()\n
#software_instance.activate().requestUpdateComputerPartition()\n
software_instance.requestUpdateComputerPartition()\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
......
299 300
\ No newline at end of file \ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<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>_body</string> </key>
<value> <string>computer = state_change[\'object\']\n
for computer_partition in [x for x in computer.contentValues(portal_type=\'Computer Partition\') if x.getSlapState() == \'busy\']:\n
# raises ValueError in case of no packing list found, left as is\n
packing_list_line = computer_partition.Item_getInstancePackingListLine()\n
software_instance = packing_list_line.getAggregateValue(portal_type=\'Software Instance\')\n
software_instance.activate().reportComputerPartitionBang(comment=state_change.kwargs.get(\'comment\', \'\'))\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>state_change</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Computer_reportBang</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
<tuple> <tuple>
<string>approve_computer_registration</string> <string>approve_computer_registration</string>
<string>create_computer_registration</string> <string>create_computer_registration</string>
<string>report_computer_bang</string>
<string>report_software_release_installation_error</string> <string>report_software_release_installation_error</string>
<string>request_computer_registration</string> <string>request_computer_registration</string>
<string>start_software_release_installation</string> <string>start_software_release_installation</string>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="TransitionDefinition" module="Products.DCWorkflow.Transitions"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>actbox_category</string> </key>
<value> <string>workflow</string> </value>
</item>
<item>
<key> <string>actbox_icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>actbox_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>actbox_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>after_script_name</string> </key>
<value> <string>Computer_reportBang</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>report_computer_bang</string> </value>
</item>
<item>
<key> <string>new_state_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>script_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
420 422
\ No newline at end of file \ No newline at end of file
...@@ -319,6 +319,22 @@ class SlapTool(BaseTool): ...@@ -319,6 +319,22 @@ class SlapTool(BaseTool):
return 'Content properly posted.' return 'Content properly posted.'
@convertToREST
def _computerBang(self, computer_id, message):
"""
Fire up bung on Computer
"""
return self._getComputerDocument(computer_id).reportComputerBang(
comment=message)
security.declareProtected(Permissions.AccessContentsInformation,
'computerBang')
def computerBang(self, computer_id, message):
"""
Fire up bang on this Software Instance
"""
return self._computerBang(computer_id, message)
security.declareProtected(Permissions.AccessContentsInformation, security.declareProtected(Permissions.AccessContentsInformation,
'loadComputerConfigurationFromXML') 'loadComputerConfigurationFromXML')
def loadComputerConfigurationFromXML(self, xml): def loadComputerConfigurationFromXML(self, xml):
......
...@@ -4,7 +4,7 @@ from slapos import slap ...@@ -4,7 +4,7 @@ from slapos import slap
from testVifibSlapWebService import TestVifibSlapWebServiceMixin from testVifibSlapWebService import TestVifibSlapWebServiceMixin
from random import random from random import random
class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin): class TestVifibSlapBang(TestVifibSlapWebServiceMixin):
bang_message = 'Bang message' bang_message = 'Bang message'
...@@ -100,19 +100,27 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin): ...@@ -100,19 +100,27 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin):
self.assertEqual(1, len(bang_list)) self.assertEqual(1, len(bang_list))
self.assertEqual(self.bang_message, bang_list[0].comment) self.assertEqual(self.bang_message, bang_list[0].comment)
def stepStepCheckS0BangMessage(self, sequence, **kw): def stepCheckS0BangMessage(self, sequence, **kw):
self.checkSoftwareInstanceBangMessage( self.checkSoftwareInstanceBangMessage(
self.portal.portal_catalog.getResultValue(uid=sequence['S0_uid'])) self.portal.portal_catalog.getResultValue(uid=sequence['S0_uid']))
def stepStepCheckS1BangMessage(self, sequence, **kw): def stepCheckS1BangMessage(self, sequence, **kw):
self.checkSoftwareInstanceBangMessage( self.checkSoftwareInstanceBangMessage(
self.portal.portal_catalog.getResultValue(uid=sequence['S1_uid'])) self.portal.portal_catalog.getResultValue(uid=sequence['S1_uid']))
def stepStepCheckS3BangMessage(self, sequence, **kw): def stepCheckS2BangMessage(self, sequence, **kw):
self.checkSoftwareInstanceBangMessage(
self.portal.portal_catalog.getResultValue(uid=sequence['S1_uid']))
def stepCheckS3BangMessage(self, sequence, **kw):
self.checkSoftwareInstanceBangMessage(
self.portal.portal_catalog.getResultValue(uid=sequence['S3_uid']))
def stepCheckS4BangMessage(self, sequence, **kw):
self.checkSoftwareInstanceBangMessage( self.checkSoftwareInstanceBangMessage(
self.portal.portal_catalog.getResultValue(uid=sequence['S3_uid'])) self.portal.portal_catalog.getResultValue(uid=sequence['S3_uid']))
def test_bang_complex_tree(self): def test_bang_computer_partition_complex_tree(self):
"""Checks that bangs works on complex tree """Checks that bangs works on complex tree
For tree like: For tree like:
...@@ -143,7 +151,7 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin): ...@@ -143,7 +151,7 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin):
SlapLogout SlapLogout
LoginDefaultUser LoginDefaultUser
StepCheckS0BangMessage CheckS0BangMessage
Logout Logout
SlapLoginCurrentComputer SlapLoginCurrentComputer
...@@ -166,7 +174,7 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin): ...@@ -166,7 +174,7 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin):
SlapLogout SlapLogout
LoginDefaultUser LoginDefaultUser
StepCheckS1BangMessage CheckS1BangMessage
Logout Logout
SlapLoginCurrentComputer SlapLoginCurrentComputer
...@@ -189,7 +197,111 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin): ...@@ -189,7 +197,111 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin):
SlapLogout SlapLogout
LoginDefaultUser LoginDefaultUser
StepCheckS3BangMessage CheckS3BangMessage
Logout
SlapLoginCurrentComputer
CheckSuccessComputerGetComputerPartitionCall
SlapLogout
"""
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
def stepComputerBang(self, sequence, **kw):
self.slap = slap.slap()
self.slap.initializeConnection(self.server_url)
slap_computer = self.slap.registerComputer(
sequence['computer_reference'])
slap_computer.bang(self.bang_message)
def stepCheckComputerBangMessage(self, sequence, **kw):
computer = self.portal.portal_catalog.getResultValue(
uid=sequence['computer_uid'])
bang_list = [q for q in computer.Base_getWorkflowHistoryItemList(
'computer_slap_interface_workflow') if q.action == 'report_computer_bang']
self.assertEqual(1, len(bang_list))
self.assertEqual(self.bang_message, bang_list[0].comment)
def test_bang_computer_complex_tree(self):
"""Checks that bangs works on complex tree
For tree like:
S0
/ \
S4 S1
/ \
S2 S3
Invoking bang on Computer will made whole tree updatable.
"""
self.computer_partition_amount = 5
sequence_list = SequenceList()
sequence_string = self.prepare_started_computer_partition_sequence_string + \
"""
LoginDefaultUser
FinishSoftwareInstanceTree
Logout
SlapLoginCurrentComputer
CheckEmptyComputerGetComputerPartitionCall
ComputerBang
Tic
SlapLogout
LoginDefaultUser
CheckComputerBangMessage
CheckS0BangMessage
CheckS1BangMessage
CheckS2BangMessage
CheckS3BangMessage
CheckS4BangMessage
Logout
SlapLoginCurrentComputer
CheckSuccessComputerGetComputerPartitionCall
SlapLogout
"""
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
def test_admin_bang_computer_complex_tree(self):
"""Checks that bangs works on complex tree
For tree like:
S0
/ \
S4 S1
/ \
S2 S3
Invoking bang on Computer will made whole tree updatable.
"""
self.computer_partition_amount = 5
sequence_list = SequenceList()
sequence_string = self.prepare_started_computer_partition_sequence_string + \
"""
LoginDefaultUser
FinishSoftwareInstanceTree
Logout
SlapLoginCurrentComputer
CheckEmptyComputerGetComputerPartitionCall
SlapLogout
SlapLoginTestVifibCustomer
ComputerBang
Tic
SlapLogout
LoginDefaultUser
CheckComputerBangMessage
CheckS0BangMessage
CheckS1BangMessage
CheckS2BangMessage
CheckS3BangMessage
CheckS4BangMessage
Logout Logout
SlapLoginCurrentComputer SlapLoginCurrentComputer
...@@ -201,5 +313,5 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin): ...@@ -201,5 +313,5 @@ class TestVifibSlapComputerPartitionBang(TestVifibSlapWebServiceMixin):
def test_suite(): def test_suite():
suite = unittest.TestSuite() suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestVifibSlapComputerPartitionBang)) suite.addTest(unittest.makeSuite(TestVifibSlapBang))
return suite return suite
...@@ -645,6 +645,10 @@ class TestVifibSlapWebServiceMixin(testVifibMixin): ...@@ -645,6 +645,10 @@ class TestVifibSlapWebServiceMixin(testVifibMixin):
REMOTE_USER = str(random()) REMOTE_USER = str(random())
self.login('ERP5TypeTestCase') self.login('ERP5TypeTestCase')
def stepSlapLoginTestVifibAdmin(self, sequence, **kw):
global REMOTE_USER
REMOTE_USER = 'test_vifib_admin'
def stepSlapLoginCurrentComputer(self, sequence, **kw): def stepSlapLoginCurrentComputer(self, sequence, **kw):
global REMOTE_USER global REMOTE_USER
REMOTE_USER = sequence['computer_reference'] REMOTE_USER = sequence['computer_reference']
......
...@@ -227,6 +227,11 @@ class Computer(SlapDocument): ...@@ -227,6 +227,11 @@ class Computer(SlapDocument):
'/loadComputerConfigurationFromXML', { 'xml' : xml }) '/loadComputerConfigurationFromXML', { 'xml' : xml })
return self._connection_helper.response.read() return self._connection_helper.response.read()
def bang(self, message):
self._connection_helper.POST('/computerBang', {
'computer_id': self._computer_id,
'message': message})
def _syncComputerPartitionInformation(func): def _syncComputerPartitionInformation(func):
""" """
Synchronize computer partition object with server information Synchronize computer partition object with server information
......
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