Commit 7f45fa10 authored by Jérome Perrin's avatar Jérome Perrin

tests: fix some trailing whitespaces and inconsistent indentations

parent 55ff948c
...@@ -31,7 +31,7 @@ import shutil ...@@ -31,7 +31,7 @@ import shutil
import tempfile import tempfile
import slapos.slap import slapos.slap
import slapos.cli.configure_local import slapos.cli.configure_local
from slapos.cli.configure_local import ConfigureLocalCommand, _createConfigurationDirectory from slapos.cli.configure_local import ConfigureLocalCommand, _createConfigurationDirectory
from slapos.cli.entry import SlapOSApp from slapos.cli.entry import SlapOSApp
from argparse import Namespace from argparse import Namespace
from six.moves.configparser import ConfigParser from six.moves.configparser import ConfigParser
......
...@@ -208,7 +208,7 @@ class RunPromise(GenericPromise): ...@@ -208,7 +208,7 @@ class RunPromise(GenericPromise):
"title": "%(name)s" "title": "%(name)s"
}] }]
}""" }"""
history_file = os.path.join(self.partition_dir, PROMISE_HISTORY_RESULT_FOLDER_NAME, '%s.history.json' % name) history_file = os.path.join(self.partition_dir, PROMISE_HISTORY_RESULT_FOLDER_NAME, '%s.history.json' % name)
self.assertTrue(os.path.exists(history_file)) self.assertTrue(os.path.exists(history_file))
with open(history_file) as f: with open(history_file) as f:
...@@ -411,7 +411,7 @@ class RunPromise(GenericPromise): ...@@ -411,7 +411,7 @@ class RunPromise(GenericPromise):
self.launcher.run() self.launcher.run()
self.assertTrue(os.path.exists(state_folder)) self.assertTrue(os.path.exists(state_folder))
self.assertTrue(os.path.exists(os.path.join(self.log_dir, 'my_promise.log'))) self.assertTrue(os.path.exists(os.path.join(self.log_dir, 'my_promise.log')))
self.assertSuccessResult("my_promise") self.assertSuccessResult("my_promise")
self.assertSuccessHistoryResult("my_promise") self.assertSuccessHistoryResult("my_promise")
self.assertSuccessStatsResult(1) self.assertSuccessStatsResult(1)
...@@ -1577,10 +1577,10 @@ class TestSlapOSGenericPromise(TestSlapOSPromiseMixin): ...@@ -1577,10 +1577,10 @@ class TestSlapOSGenericPromise(TestSlapOSPromiseMixin):
def test_promise_cleanup_plugin_dir(self): def test_promise_cleanup_plugin_dir(self):
stale_pyc = os.path.join(self.plugin_dir, 'stale.pyc') stale_pyc = os.path.join(self.plugin_dir, 'stale.pyc')
with open(stale_pyc, 'w') as fh: with open(stale_pyc, 'w') as fh:
fh.write('') fh.write('')
stale_pyo = os.path.join(self.plugin_dir, 'stale.pyo') stale_pyo = os.path.join(self.plugin_dir, 'stale.pyo')
with open(stale_pyo, 'w') as fh: with open(stale_pyo, 'w') as fh:
fh.write('') fh.write('')
self.initialisePromise() self.initialisePromise()
self.launcher.run() self.launcher.run()
self.assertFalse(os.path.exists(stale_pyc)) self.assertFalse(os.path.exists(stale_pyc))
...@@ -2021,4 +2021,3 @@ class RunPromise(GenericPromise): ...@@ -2021,4 +2021,3 @@ class RunPromise(GenericPromise):
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
...@@ -40,18 +40,13 @@ class TestRegister(unittest.TestCase): ...@@ -40,18 +40,13 @@ class TestRegister(unittest.TestCase):
template = slapos.cli.register.fetch_configuration_template() template = slapos.cli.register.fetch_configuration_template()
self.assertNotEqual("", template) self.assertNotEqual("", template)
for entry in ['computer_id', for entry in ['computer_id',
'master_url', 'master_url',
'key_file', 'key_file',
'cert_file', 'cert_file',
'certificate_repository_path', 'certificate_repository_path',
'interface_name', 'interface_name',
'ipv4_local_network', 'ipv4_local_network',
'partition_amount', 'partition_amount',
'create_tap']: 'create_tap']:
self.assertTrue(entry in template, "%s is not in template (%s)" % (entry, template)) self.assertTrue(entry in template, "%s is not in template (%s)" % (entry, template))
...@@ -1471,7 +1471,7 @@ class TestOpenOrder(SlapMixin): ...@@ -1471,7 +1471,7 @@ class TestOpenOrder(SlapMixin):
}, },
"text_content": { "text_content": {
"title": "Parameter XML", "title": "Parameter XML",
"default": dict2xml({'_':json.dumps(parameter_dict)}), "default": dict2xml({'_': json.dumps(parameter_dict)}),
"key": "field_my_text_content", "key": "field_my_text_content",
"type": "TextAreaField" "type": "TextAreaField"
}, },
...@@ -1689,4 +1689,3 @@ class TestSoftwareProductCollection(SlapMixin): ...@@ -1689,4 +1689,3 @@ class TestSoftwareProductCollection(SlapMixin):
self.product_collection.get self.product_collection.get
) )
self.assertEqual(self.product_collection.foo, '0') self.assertEqual(self.product_collection.foo, '0')
...@@ -993,4 +993,4 @@ class TestFormatConfig(SlapformatMixin): ...@@ -993,4 +993,4 @@ class TestFormatConfig(SlapformatMixin):
# TODO add more tests with config file # TODO add more tests with config file
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
...@@ -555,7 +555,7 @@ class InstanceForTest(object): ...@@ -555,7 +555,7 @@ class InstanceForTest(object):
if self.software is not None: if self.software is not None:
if self.timestamp is not None: if self.timestamp is not None:
partition._parameter_dict['timestamp'] = self.timestamp partition._parameter_dict['timestamp'] = self.timestamp
self.current_partition = partition self.current_partition = partition
return partition return partition
...@@ -582,7 +582,7 @@ class InstanceForTest(object): ...@@ -582,7 +582,7 @@ class InstanceForTest(object):
f.write(promise_content) f.write(promise_content)
os.chmod(promise, 0o777) os.chmod(promise, 0o777)
def setPluginPromise(self, promise_name, success=True, failure_count=1, def setPluginPromise(self, promise_name, success=True, failure_count=1,
promise_content="", periodicity=0.03): promise_content="", periodicity=0.03):
""" """
This function will set plugin promise and return its path This function will set plugin promise and return its path
...@@ -591,12 +591,12 @@ class InstanceForTest(object): ...@@ -591,12 +591,12 @@ class InstanceForTest(object):
if not os.path.isdir(promise_dir): if not os.path.isdir(promise_dir):
os.makedirs(promise_dir) os.makedirs(promise_dir)
_promise_content = PROMISE_CONTENT_TEMPLATE % \ _promise_content = PROMISE_CONTENT_TEMPLATE % \
{'success': success, {'success': success,
'content': promise_content, 'content': promise_content,
'failure_amount': failure_count, 'failure_amount': failure_count,
'periodicity': periodicity, 'periodicity': periodicity,
'paths': PROMISE_PATHS} 'paths': PROMISE_PATHS}
with open(os.path.join(promise_dir, promise_name), 'w') as f: with open(os.path.join(promise_dir, promise_name), 'w') as f:
f.write(_promise_content) f.write(_promise_content)
return os.path.join(promise_dir, promise_name) return os.path.join(promise_dir, promise_name)
...@@ -717,7 +717,7 @@ class TestSlapgridCPWithMaster(MasterMixin, unittest.TestCase): ...@@ -717,7 +717,7 @@ class TestSlapgridCPWithMaster(MasterMixin, unittest.TestCase):
'software_release', 'worked', '.slapos-retention-lock-delay']) 'software_release', 'worked', '.slapos-retention-lock-delay'])
six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash]) six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/stoppedComputerPartition']) '/stoppedComputerPartition'])
def test_one_partition_instance_cfg(self): def test_one_partition_instance_cfg(self):
...@@ -735,7 +735,7 @@ class TestSlapgridCPWithMaster(MasterMixin, unittest.TestCase): ...@@ -735,7 +735,7 @@ class TestSlapgridCPWithMaster(MasterMixin, unittest.TestCase):
'software_release', 'worked', '.slapos-retention-lock-delay']) 'software_release', 'worked', '.slapos-retention-lock-delay'])
six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash]) six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/stoppedComputerPartition']) '/stoppedComputerPartition'])
def test_one_free_partition(self): def test_one_free_partition(self):
...@@ -769,7 +769,7 @@ class TestSlapgridCPWithMaster(MasterMixin, unittest.TestCase): ...@@ -769,7 +769,7 @@ class TestSlapgridCPWithMaster(MasterMixin, unittest.TestCase):
self.assertLogContent(wrapper_log, 'Working') self.assertLogContent(wrapper_log, 'Working')
six.assertCountEqual(self, os.listdir(self.software_root), [partition.software.software_hash]) six.assertCountEqual(self, os.listdir(self.software_root), [partition.software.software_hash])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual(partition.state, 'started') self.assertEqual(partition.state, 'started')
...@@ -788,7 +788,7 @@ class TestSlapgridCPWithMaster(MasterMixin, unittest.TestCase): ...@@ -788,7 +788,7 @@ class TestSlapgridCPWithMaster(MasterMixin, unittest.TestCase):
self.assertLogContent(wrapper_log, 'Working') self.assertLogContent(wrapper_log, 'Working')
six.assertCountEqual(self, os.listdir(self.software_root), [partition.software.software_hash]) six.assertCountEqual(self, os.listdir(self.software_root), [partition.software.software_hash])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual(partition.state, 'started') self.assertEqual(partition.state, 'started')
...@@ -803,7 +803,7 @@ exit 1 ...@@ -803,7 +803,7 @@ exit 1
'etc', 'software_release', 'worked', 'etc', 'software_release', 'worked',
'.slapos-retention-lock-delay', '.slapgrid-0-error.log']) '.slapos-retention-lock-delay', '.slapgrid-0-error.log'])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition', '/getHateoasUrl', '/startedComputerPartition', '/getHateoasUrl',
'/getFullComputerInformation', '/softwareInstanceError']) '/getFullComputerInformation', '/softwareInstanceError'])
self.assertEqual(instance.state, 'started') self.assertEqual(instance.state, 'started')
...@@ -843,7 +843,7 @@ chmod 755 etc/run/wrapper ...@@ -843,7 +843,7 @@ chmod 755 etc/run/wrapper
self.assertLogContent(wrapper_log, 'Working') self.assertLogContent(wrapper_log, 'Working')
six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash]) six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual(instance.state, 'started') self.assertEqual(instance.state, 'started')
...@@ -856,7 +856,7 @@ chmod 755 etc/run/wrapper ...@@ -856,7 +856,7 @@ chmod 755 etc/run/wrapper
'etc', 'software_release', 'worked', '.slapos-retention-lock-delay']) 'etc', 'software_release', 'worked', '.slapos-retention-lock-delay'])
self.assertLogContent(wrapper_log, 'Signal handler called with signal 15') self.assertLogContent(wrapper_log, 'Signal handler called with signal 15')
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getHateoasUrl', '/getFullComputerInformation', ['/getHateoasUrl', '/getFullComputerInformation',
'/stoppedComputerPartition']) '/stoppedComputerPartition'])
self.assertEqual(instance.state, 'stopped') self.assertEqual(instance.state, 'stopped')
...@@ -901,7 +901,7 @@ chmod 755 etc/run/wrapper ...@@ -901,7 +901,7 @@ chmod 755 etc/run/wrapper
six.assertCountEqual(self, os.listdir(self.software_root), six.assertCountEqual(self, os.listdir(self.software_root),
[instance.software.software_hash]) [instance.software.software_hash])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual(instance.state, 'started') self.assertEqual(instance.state, 'started')
...@@ -937,7 +937,7 @@ exit 1 ...@@ -937,7 +937,7 @@ exit 1
six.assertCountEqual(self, os.listdir(self.software_root), six.assertCountEqual(self, os.listdir(self.software_root),
[instance.software.software_hash]) [instance.software.software_hash])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/stoppedComputerPartition']) '/stoppedComputerPartition'])
self.assertEqual('stopped', instance.state) self.assertEqual('stopped', instance.state)
...@@ -954,7 +954,7 @@ exit 1 ...@@ -954,7 +954,7 @@ exit 1
wrapper_log = os.path.join(instance.partition_path, '.0_wrapper.log') wrapper_log = os.path.join(instance.partition_path, '.0_wrapper.log')
self.assertLogContent(wrapper_log, 'Working') self.assertLogContent(wrapper_log, 'Working')
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getHateoasUrl', '/getFullComputerInformation', ['/getHateoasUrl', '/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual('started', instance.state) self.assertEqual('started', instance.state)
...@@ -970,7 +970,7 @@ exit 1 ...@@ -970,7 +970,7 @@ exit 1
dummy_file_name = 'dummy_file' dummy_file_name = 'dummy_file'
with open(os.path.join(instance.partition_path, dummy_file_name), 'w') as dummy_file: with open(os.path.join(instance.partition_path, dummy_file_name), 'w') as dummy_file:
dummy_file.write('dummy') dummy_file.write('dummy')
self.assertEqual(self.grid.processComputerPartitionList(), slapgrid.SLAPGRID_SUCCESS) self.assertEqual(self.grid.processComputerPartitionList(), slapgrid.SLAPGRID_SUCCESS)
...@@ -1432,7 +1432,7 @@ class TestSlapgridCPPartitionProcessing(MasterMixin, unittest.TestCase): ...@@ -1432,7 +1432,7 @@ class TestSlapgridCPPartitionProcessing(MasterMixin, unittest.TestCase):
self.assertEqual(self.launchSlapgrid(), slapgrid.SLAPGRID_SUCCESS) self.assertEqual(self.launchSlapgrid(), slapgrid.SLAPGRID_SUCCESS)
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getHateoasUrl', ['/getHateoasUrl',
'/getFullComputerInformation', '/getFullComputerInformation',
'/stoppedComputerPartition', '/stoppedComputerPartition',
'/getHateoasUrl', '/getFullComputerInformation', '/getHateoasUrl', '/getFullComputerInformation',
'/stoppedComputerPartition', '/stoppedComputerPartition',
...@@ -1457,7 +1457,7 @@ class TestSlapgridCPPartitionProcessing(MasterMixin, unittest.TestCase): ...@@ -1457,7 +1457,7 @@ class TestSlapgridCPPartitionProcessing(MasterMixin, unittest.TestCase):
self.launchSlapgrid() self.launchSlapgrid()
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getHateoasUrl', ['/getHateoasUrl',
'/getFullComputerInformation', '/getFullComputerInformation',
'/stoppedComputerPartition', '/stoppedComputerPartition',
'/getHateoasUrl', '/getFullComputerInformation', '/getHateoasUrl', '/getFullComputerInformation',
'/stoppedComputerPartition']) '/stoppedComputerPartition'])
...@@ -1859,7 +1859,7 @@ class TestSlapgridUsageReport(MasterMixin, unittest.TestCase): ...@@ -1859,7 +1859,7 @@ class TestSlapgridUsageReport(MasterMixin, unittest.TestCase):
six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash]) six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual(instance.state, 'started') self.assertEqual(instance.state, 'started')
...@@ -1930,14 +1930,14 @@ class TestSlapgridUsageReport(MasterMixin, unittest.TestCase): ...@@ -1930,14 +1930,14 @@ class TestSlapgridUsageReport(MasterMixin, unittest.TestCase):
six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash]) six.assertCountEqual(self, os.listdir(self.software_root), [instance.software.software_hash])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual('started', instance.state) self.assertEqual('started', instance.state)
# Then run usage report and see if it is still working # Then run usage report and see if it is still working
computer.sequence = [] computer.sequence = []
self.assertEqual(self.grid.agregateAndSendUsage(), slapgrid.SLAPGRID_SUCCESS) self.assertEqual(self.grid.agregateAndSendUsage(), slapgrid.SLAPGRID_SUCCESS)
# registerComputerPartition will create one more file: # registerComputerPartition will create one more file:
from slapos.slap.slap import COMPUTER_PARTITION_REQUEST_LIST_TEMPLATE_FILENAME from slapos.slap.slap import COMPUTER_PARTITION_REQUEST_LIST_TEMPLATE_FILENAME
request_list_file = COMPUTER_PARTITION_REQUEST_LIST_TEMPLATE_FILENAME % instance.name request_list_file = COMPUTER_PARTITION_REQUEST_LIST_TEMPLATE_FILENAME % instance.name
self.assertInstanceDirectoryListEqual(['0']) self.assertInstanceDirectoryListEqual(['0'])
...@@ -2365,7 +2365,7 @@ class TestSlapgridDestructionLock(MasterMixin, unittest.TestCase): ...@@ -2365,7 +2365,7 @@ class TestSlapgridDestructionLock(MasterMixin, unittest.TestCase):
class TestSlapgridCPWithFirewall(MasterMixin, unittest.TestCase): class TestSlapgridCPWithFirewall(MasterMixin, unittest.TestCase):
def setFirewallConfig(self, source_ip=""): def setFirewallConfig(self, source_ip=""):
self.firewall_cmd_add = os.path.join(self._tempdir, 'firewall_cmd_add') self.firewall_cmd_add = os.path.join(self._tempdir, 'firewall_cmd_add')
...@@ -2416,7 +2416,7 @@ exit 1 ...@@ -2416,7 +2416,7 @@ exit 1
testing=True, testing=True,
) )
self.grid.firewall_conf = firewall_conf self.grid.firewall_conf = firewall_conf
def checkRuleFromIpSource(self, ip, accept_ip_list, cmd_list): def checkRuleFromIpSource(self, ip, accept_ip_list, cmd_list):
# XXX - rules for one ip contain 2*len(ip_address_list + accept_ip_list) rules ACCEPT and 4 rules REJECT # XXX - rules for one ip contain 2*len(ip_address_list + accept_ip_list) rules ACCEPT and 4 rules REJECT
num_rules = len(self.ip_address_list) * 2 + len(accept_ip_list) * 2 + 4 num_rules = len(self.ip_address_list) * 2 + len(accept_ip_list) * 2 + 4
...@@ -2438,7 +2438,7 @@ exit 1 ...@@ -2438,7 +2438,7 @@ exit 1
# Check that there is REJECT rule on FORWARD, ESTABLISHED,RELATED # Check that there is REJECT rule on FORWARD, ESTABLISHED,RELATED
rule = '%s FORWARD 900 -d %s -m state --state ESTABLISHED,RELATED -j REJECT' % (base_cmd, ip) rule = '%s FORWARD 900 -d %s -m state --state ESTABLISHED,RELATED -j REJECT' % (base_cmd, ip)
self.assertIn(rule, cmd_list) self.assertIn(rule, cmd_list)
# Check that there is INPUT ACCEPT on ip_list # Check that there is INPUT ACCEPT on ip_list
for _, other_ip in self.ip_address_list: for _, other_ip in self.ip_address_list:
rule = '%s INPUT 0 -s %s -d %s -j ACCEPT' % (base_cmd, other_ip, ip) rule = '%s INPUT 0 -s %s -d %s -j ACCEPT' % (base_cmd, other_ip, ip)
...@@ -2452,7 +2452,7 @@ exit 1 ...@@ -2452,7 +2452,7 @@ exit 1
self.assertIn(rule, cmd_list) self.assertIn(rule, cmd_list)
rule = '%s FORWARD 0 -s %s -d %s -j ACCEPT' % (base_cmd, other_ip, ip) rule = '%s FORWARD 0 -s %s -d %s -j ACCEPT' % (base_cmd, other_ip, ip)
self.assertIn(rule, cmd_list) self.assertIn(rule, cmd_list)
def checkRuleFromIpSourceReject(self, ip, reject_ip_list, cmd_list): def checkRuleFromIpSourceReject(self, ip, reject_ip_list, cmd_list):
# XXX - rules for one ip contain 2 + 2*len(ip_address_list) rules ACCEPT and 4*len(reject_ip_list) rules REJECT # XXX - rules for one ip contain 2 + 2*len(ip_address_list) rules ACCEPT and 4*len(reject_ip_list) rules REJECT
num_rules = (len(self.ip_address_list) * 2) + (len(reject_ip_list) * 4) num_rules = (len(self.ip_address_list) * 2) + (len(reject_ip_list) * 4)
...@@ -2466,7 +2466,7 @@ exit 1 ...@@ -2466,7 +2466,7 @@ exit 1
# Check that there is ACCEPT rule on FORWARD # Check that there is ACCEPT rule on FORWARD
#rule = '%s FORWARD 0 -d %s -j ACCEPT' % (base_cmd, ip) #rule = '%s FORWARD 0 -d %s -j ACCEPT' % (base_cmd, ip)
#self.assertIn(rule, cmd_list) #self.assertIn(rule, cmd_list)
# Check that there is INPUT/FORWARD ACCEPT on ip_list # Check that there is INPUT/FORWARD ACCEPT on ip_list
for _, other_ip in self.ip_address_list: for _, other_ip in self.ip_address_list:
rule = '%s INPUT 0 -s %s -d %s -j ACCEPT' % (base_cmd, other_ip, ip) rule = '%s INPUT 0 -s %s -d %s -j ACCEPT' % (base_cmd, other_ip, ip)
...@@ -2491,13 +2491,13 @@ exit 1 ...@@ -2491,13 +2491,13 @@ exit 1
self.ip_address_list = computer.ip_address_list self.ip_address_list = computer.ip_address_list
ip = computer.instance_list[0].full_ip_list[0][1] ip = computer.instance_list[0].full_ip_list[0][1]
source_ip_list = ['10.32.0.15', '10.32.0.0/8'] source_ip_list = ['10.32.0.15', '10.32.0.0/8']
cmd_list = self.grid._getFirewallAcceptRules(ip, cmd_list = self.grid._getFirewallAcceptRules(ip,
[elt[1] for elt in self.ip_address_list], [elt[1] for elt in self.ip_address_list],
source_ip_list, source_ip_list,
ip_type='ipv4') ip_type='ipv4')
self.checkRuleFromIpSource(ip, source_ip_list, cmd_list) self.checkRuleFromIpSource(ip, source_ip_list, cmd_list)
cmd_list = self.grid._getFirewallRejectRules(ip, cmd_list = self.grid._getFirewallRejectRules(ip,
[elt[1] for elt in self.ip_address_list], [elt[1] for elt in self.ip_address_list],
source_ip_list, source_ip_list,
...@@ -2514,7 +2514,7 @@ exit 1 ...@@ -2514,7 +2514,7 @@ exit 1
instance = computer.instance_list[0] instance = computer.instance_list[0]
ip = instance.full_ip_list[0][1] ip = instance.full_ip_list[0][1]
name = computer.instance_list[0].name name = computer.instance_list[0].name
cmd_list = self.grid._getFirewallAcceptRules(ip, cmd_list = self.grid._getFirewallAcceptRules(ip,
[elt[1] for elt in self.ip_address_list], [elt[1] for elt in self.ip_address_list],
[], [],
...@@ -2577,7 +2577,7 @@ exit 1 ...@@ -2577,7 +2577,7 @@ exit 1
self.ip_address_list = computer.ip_address_list self.ip_address_list = computer.ip_address_list
with open(rules_path, 'r') as frules: with open(rules_path, 'r') as frules:
rules_list = json.loads(frules.read()) rules_list = json.loads(frules.read())
ip = instance.full_ip_list[0][1] ip = instance.full_ip_list[0][1]
self.checkRuleFromIpSource(ip, [], rules_list) self.checkRuleFromIpSource(ip, [], rules_list)
...@@ -2599,7 +2599,7 @@ exit 1 ...@@ -2599,7 +2599,7 @@ exit 1
self.ip_address_list = computer.ip_address_list self.ip_address_list = computer.ip_address_list
with open(rules_path, 'r') as frules: with open(rules_path, 'r') as frules:
rules_list = json.loads(frules.read()) rules_list = json.loads(frules.read())
ip = instance.full_ip_list[0][1] ip = instance.full_ip_list[0][1]
self.checkRuleFromIpSourceReject(ip, [], rules_list) self.checkRuleFromIpSourceReject(ip, [], rules_list)
...@@ -2666,7 +2666,7 @@ exit 1 ...@@ -2666,7 +2666,7 @@ exit 1
for thier_ip in source_ip: for thier_ip in source_ip:
rule_input = '%s INPUT 0 -s %s -d %s -j ACCEPT' % (base_cmd, thier_ip, ip) rule_input = '%s INPUT 0 -s %s -d %s -j ACCEPT' % (base_cmd, thier_ip, ip)
self.assertIn(rule_input, rules_list) self.assertIn(rule_input, rules_list)
rule_fwd = '%s FORWARD 0 -s %s -d %s -j ACCEPT' % (base_cmd, thier_ip, ip) rule_fwd = '%s FORWARD 0 -s %s -d %s -j ACCEPT' % (base_cmd, thier_ip, ip)
self.assertIn(rule_fwd, rules_list) self.assertIn(rule_fwd, rules_list)
...@@ -2676,7 +2676,7 @@ exit 1 ...@@ -2676,7 +2676,7 @@ exit 1
computer = ComputerForTest(self.software_root, self.instance_root) computer = ComputerForTest(self.software_root, self.instance_root)
self.setFirewallConfig() self.setFirewallConfig()
source_ip = '10.0.8.10' source_ip = '10.0.8.10'
self.grid.firewall_conf['authorized_sources'] = ['10.0.8.15'] self.grid.firewall_conf['authorized_sources'] = ['10.0.8.15']
with httmock.HTTMock(computer.request_handler): with httmock.HTTMock(computer.request_handler):
instance = computer.instance_list[0] instance = computer.instance_list[0]
...@@ -2802,7 +2802,7 @@ exit 0 ...@@ -2802,7 +2802,7 @@ exit 0
['.slapgrid', '.0_wrapper.log', 'buildout.cfg', ['.slapgrid', '.0_wrapper.log', 'buildout.cfg',
'etc', 'software_release', 'worked', '.slapos-retention-lock-delay']) 'etc', 'software_release', 'worked', '.slapos-retention-lock-delay'])
self.assertEqual(computer.sequence, self.assertEqual(computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual(partition.state, 'started') self.assertEqual(partition.state, 'started')
manager_list = slapmanager.from_config({'manager_list': 'prerm'}) manager_list = slapmanager.from_config({'manager_list': 'prerm'})
...@@ -3049,7 +3049,7 @@ class TestSlapgridWithPortRedirection(MasterMixin, unittest.TestCase): ...@@ -3049,7 +3049,7 @@ class TestSlapgridWithPortRedirection(MasterMixin, unittest.TestCase):
self.assertEqual(self.grid.processComputerPartitionList(), slapgrid.SLAPGRID_SUCCESS) self.assertEqual(self.grid.processComputerPartitionList(), slapgrid.SLAPGRID_SUCCESS)
self.assertEqual(self.computer.sequence, self.assertEqual(self.computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual(self.partition.state, 'started') self.assertEqual(self.partition.state, 'started')
...@@ -3124,7 +3124,7 @@ class TestSlapgridWithPortRedirection(MasterMixin, unittest.TestCase): ...@@ -3124,7 +3124,7 @@ class TestSlapgridWithPortRedirection(MasterMixin, unittest.TestCase):
self.assertEqual(self.grid.processComputerPartitionList(), slapgrid.SLAPGRID_SUCCESS) self.assertEqual(self.grid.processComputerPartitionList(), slapgrid.SLAPGRID_SUCCESS)
self.assertEqual(self.computer.sequence, self.assertEqual(self.computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition', '/startedComputerPartition']) '/startedComputerPartition', '/startedComputerPartition'])
self.assertEqual(self.partition.state, 'started') self.assertEqual(self.partition.state, 'started')
...@@ -3446,7 +3446,7 @@ class TestSlapgridWithDevPermManagerDevPermAllowLsblk(TestSlapgridWithDevPermLsb ...@@ -3446,7 +3446,7 @@ class TestSlapgridWithDevPermManagerDevPermAllowLsblk(TestSlapgridWithDevPermLsb
class TestSlapgridWithWhitelistfirewall(MasterMixin, unittest.TestCase): class TestSlapgridWithWhitelistfirewall(MasterMixin, unittest.TestCase):
config = { config = {
'manager_list': 'whitelistfirewall', 'manager_list': 'whitelistfirewall',
'firewall':{ 'firewall': {
'firewall_cmd': 'firewall_cmd', 'firewall_cmd': 'firewall_cmd',
} }
} }
...@@ -3711,7 +3711,7 @@ class TestSlapgridManagerLifecycle(MasterMixin, unittest.TestCase): ...@@ -3711,7 +3711,7 @@ class TestSlapgridManagerLifecycle(MasterMixin, unittest.TestCase):
self.assertEqual(self.grid.processComputerPartitionList(), slapgrid.SLAPGRID_SUCCESS) self.assertEqual(self.grid.processComputerPartitionList(), slapgrid.SLAPGRID_SUCCESS)
self.assertEqual(self.computer.sequence, self.assertEqual(self.computer.sequence,
['/getFullComputerInformation', ['/getFullComputerInformation',
'/startedComputerPartition']) '/startedComputerPartition'])
self.assertEqual(partition.state, 'started') self.assertEqual(partition.state, 'started')
...@@ -3959,7 +3959,7 @@ class TestSlapgridPromiseWithMaster(MasterMixin, unittest.TestCase): ...@@ -3959,7 +3959,7 @@ class TestSlapgridPromiseWithMaster(MasterMixin, unittest.TestCase):
with open(os.path.join(instance.partition_path, ".slapgrid/promise/result/succeeding2.status.json"), "r") as f: with open(os.path.join(instance.partition_path, ".slapgrid/promise/result/succeeding2.status.json"), "r") as f:
result = json.loads(f.read()) result = json.loads(f.read())
self.assertEqual('success', self.assertEqual('success',
result["result"]["message"]) result["result"]["message"])
...@@ -4074,7 +4074,7 @@ class TestSlapgridPromiseWithMaster(MasterMixin, unittest.TestCase): ...@@ -4074,7 +4074,7 @@ class TestSlapgridPromiseWithMaster(MasterMixin, unittest.TestCase):
import time import time
time.sleep(27)""" % (timeout_file, timeout_file) time.sleep(27)""" % (timeout_file, timeout_file)
instance.setPluginPromise(promise_name='timeout_fail.py', success=True, promise_content=fail) instance.setPluginPromise(promise_name='timeout_fail.py', success=True, promise_content=fail)
self.assertEqual(self.grid.processPromiseList(), self.assertEqual(self.grid.processPromiseList(),
slapgrid.SLAPGRID_PROMISE_FAIL) slapgrid.SLAPGRID_PROMISE_FAIL)
self.assertTrue(os.path.isfile(worked_file)) self.assertTrue(os.path.isfile(worked_file))
......
...@@ -315,9 +315,9 @@ class TestInformation(BasicMixin, unittest.TestCase): ...@@ -315,9 +315,9 @@ class TestInformation(BasicMixin, unittest.TestCase):
rv = self.app.get('/getFullComputerInformation?computer_id=%s' % self.computer_id) rv = self.app.get('/getFullComputerInformation?computer_id=%s' % self.computer_id)
computer = loads(rv.data) computer = loads(rv.data)
for slap_partition in computer._computer_partition_list: for slap_partition in computer._computer_partition_list:
self.assertIsNone(slap_partition._software_release_document) self.assertIsNone(slap_partition._software_release_document)
self.assertEqual(slap_partition._requested_state, 'destroyed') self.assertEqual(slap_partition._requested_state, 'destroyed')
self.assertEqual(slap_partition._need_modification, 0) self.assertEqual(slap_partition._need_modification, 0)
def test_getSoftwareReleaseListFromSoftwareProduct_software_product_reference(self): def test_getSoftwareReleaseListFromSoftwareProduct_software_product_reference(self):
""" """
...@@ -409,7 +409,7 @@ class MasterMixin(BasicMixin, unittest.TestCase): ...@@ -409,7 +409,7 @@ class MasterMixin(BasicMixin, unittest.TestCase):
partition_parameter_kw = {} partition_parameter_kw = {}
if filter_kw is None: if filter_kw is None:
filter_kw = {} filter_kw = {}
# Let's enforce a default software type # Let's enforce a default software type
if software_type is None: if software_type is None:
software_type = 'default' software_type = 'default'
...@@ -462,7 +462,7 @@ class MasterMixin(BasicMixin, unittest.TestCase): ...@@ -462,7 +462,7 @@ class MasterMixin(BasicMixin, unittest.TestCase):
def supply(self, url, computer_id=None, state='available'): def supply(self, url, computer_id=None, state='available'):
if not computer_id: if not computer_id:
computer_id = self.computer_id computer_id = self.computer_id
request_dict = {'url':url, 'computer_id': computer_id, 'state':state} request_dict = {'url': url, 'computer_id': computer_id, 'state': state}
rv = self.app.post('/supplySupply', rv = self.app.post('/supplySupply',
data=request_dict) data=request_dict)
# XXX return a Software Release # XXX return a Software Release
...@@ -1027,7 +1027,7 @@ class TestSlaveRequest(MasterMixin): ...@@ -1027,7 +1027,7 @@ class TestSlaveRequest(MasterMixin):
before_timestamp = after_timestamp before_timestamp = after_timestamp
time.sleep(0.1) time.sleep(0.1)
self.request('http://sr//', None, 'MySecondSlave', shared=True, partition_parameter_kw={'a':'b'}) self.request('http://sr//', None, 'MySecondSlave', shared=True, partition_parameter_kw={'a': 'b'})
after = getPartition() after = getPartition()
after_timestamp = getTimestamp(after) after_timestamp = getTimestamp(after)
self.assertEqual(len(after._parameter_dict['slave_instance_list']), 2) self.assertEqual(len(after._parameter_dict['slave_instance_list']), 2)
...@@ -1035,7 +1035,7 @@ class TestSlaveRequest(MasterMixin): ...@@ -1035,7 +1035,7 @@ class TestSlaveRequest(MasterMixin):
before_timestamp = after_timestamp before_timestamp = after_timestamp
time.sleep(0.1) time.sleep(0.1)
self.request('http://sr//', None, 'MySecondSlave', shared=True, partition_parameter_kw={'a':'b'}) self.request('http://sr//', None, 'MySecondSlave', shared=True, partition_parameter_kw={'a': 'b'})
after = getPartition() after = getPartition()
after_timestamp = getTimestamp(after) after_timestamp = getTimestamp(after)
self.assertEqual(len(after._parameter_dict['slave_instance_list']), 2) self.assertEqual(len(after._parameter_dict['slave_instance_list']), 2)
...@@ -1468,7 +1468,7 @@ class TestMultiNodeSupport(MasterMixin): ...@@ -1468,7 +1468,7 @@ class TestMultiNodeSupport(MasterMixin):
self.assertEqual(rv._status_code, 404) self.assertEqual(rv._status_code, 404)
rv = self._requestComputerPartition('http://sr//', None, 'MyFirstInstance', 'slappart2', rv = self._requestComputerPartition('http://sr//', None, 'MyFirstInstance', 'slappart2',
filter_kw={'computer_guid':self.computer_id}) filter_kw={'computer_guid': self.computer_id})
self.assertEqual(rv._status_code, 404) self.assertEqual(rv._status_code, 404)
# Register default computer: deployment works # Register default computer: deployment works
...@@ -1480,7 +1480,7 @@ class TestMultiNodeSupport(MasterMixin): ...@@ -1480,7 +1480,7 @@ class TestMultiNodeSupport(MasterMixin):
# No free space on default computer: request without SLA fails # No free space on default computer: request without SLA fails
rv = self._requestComputerPartition('http://sr//', None, 'CanIHasPartition', 'slappart2', rv = self._requestComputerPartition('http://sr//', None, 'CanIHasPartition', 'slappart2',
filter_kw={'computer_guid':self.computer_id}) filter_kw={'computer_guid': self.computer_id})
self.assertEqual(rv._status_code, 404) self.assertEqual(rv._status_code, 404)
def test_multi_node_support_instance(self): def test_multi_node_support_instance(self):
...@@ -1498,13 +1498,13 @@ class TestMultiNodeSupport(MasterMixin): ...@@ -1498,13 +1498,13 @@ class TestMultiNodeSupport(MasterMixin):
# Deploy to first non-default computer using SLA # Deploy to first non-default computer using SLA
# It should fail since computer is not registered # It should fail since computer is not registered
rv = self._requestComputerPartition(software_release_1, None, 'MyFirstInstance', 'slappart2', filter_kw={'computer_guid':computer_0_id}) rv = self._requestComputerPartition(software_release_1, None, 'MyFirstInstance', 'slappart2', filter_kw={'computer_guid': computer_0_id})
self.assertEqual(rv._status_code, 404) self.assertEqual(rv._status_code, 404)
self.format_for_number_of_partitions(2, computer_id=computer_0_id) self.format_for_number_of_partitions(2, computer_id=computer_0_id)
# Deploy to first non-default computer using SLA # Deploy to first non-default computer using SLA
partition = self.request(software_release_1, None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid':computer_0_id}) partition = self.request(software_release_1, None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid': computer_0_id})
self.assertEqual(partition.getState(), 'started') self.assertEqual(partition.getState(), 'started')
self.assertEqual(partition._partition_id, 'slappart0') self.assertEqual(partition._partition_id, 'slappart0')
self.assertEqual(partition._computer_id, computer_0_id) self.assertEqual(partition._computer_id, computer_0_id)
...@@ -1517,7 +1517,7 @@ class TestMultiNodeSupport(MasterMixin): ...@@ -1517,7 +1517,7 @@ class TestMultiNodeSupport(MasterMixin):
self.assertTrue(computer_1._computer_partition_list[1]._software_release_document == None) self.assertTrue(computer_1._computer_partition_list[1]._software_release_document == None)
# Deploy to second non-default computer using SLA # Deploy to second non-default computer using SLA
partition = self.request(software_release_2, None, 'MySecondInstance', 'slappart0', filter_kw={'computer_guid':computer_1_id}) partition = self.request(software_release_2, None, 'MySecondInstance', 'slappart0', filter_kw={'computer_guid': computer_1_id})
self.assertEqual(partition.getState(), 'started') self.assertEqual(partition.getState(), 'started')
self.assertEqual(partition._partition_id, 'slappart0') self.assertEqual(partition._partition_id, 'slappart0')
self.assertEqual(partition._computer_id, computer_1_id) self.assertEqual(partition._computer_id, computer_1_id)
...@@ -1539,10 +1539,10 @@ class TestMultiNodeSupport(MasterMixin): ...@@ -1539,10 +1539,10 @@ class TestMultiNodeSupport(MasterMixin):
computer_1_id = 'COMP-1' computer_1_id = 'COMP-1'
self.format_for_number_of_partitions(6, computer_id=computer_0_id) self.format_for_number_of_partitions(6, computer_id=computer_0_id)
self.format_for_number_of_partitions(6, computer_id=computer_1_id) self.format_for_number_of_partitions(6, computer_id=computer_1_id)
partition_first = self.request('http://sr//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid':computer_0_id}) partition_first = self.request('http://sr//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid': computer_0_id})
partition_second = self.request('http://sr//', None, 'MySecondInstance', 'slappart0', filter_kw={'computer_guid':computer_1_id}) partition_second = self.request('http://sr//', None, 'MySecondInstance', 'slappart0', filter_kw={'computer_guid': computer_1_id})
partition_first = self.request('http://sr//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid':computer_0_id}, state='stopped') partition_first = self.request('http://sr//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid': computer_0_id}, state='stopped')
computer_0 = loads(self.app.get('/getFullComputerInformation?computer_id=COMP-0').data) computer_0 = loads(self.app.get('/getFullComputerInformation?computer_id=COMP-0').data)
computer_1 = loads(self.app.get('/getFullComputerInformation?computer_id=COMP-1').data) computer_1 = loads(self.app.get('/getFullComputerInformation?computer_id=COMP-1').data)
...@@ -1562,8 +1562,8 @@ class TestMultiNodeSupport(MasterMixin): ...@@ -1562,8 +1562,8 @@ class TestMultiNodeSupport(MasterMixin):
computer_1_id = 'COMP-1' computer_1_id = 'COMP-1'
self.format_for_number_of_partitions(2, computer_id=computer_0_id) self.format_for_number_of_partitions(2, computer_id=computer_0_id)
self.format_for_number_of_partitions(2, computer_id=computer_1_id) self.format_for_number_of_partitions(2, computer_id=computer_1_id)
partition = self.request('http://sr//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid':computer_0_id}) partition = self.request('http://sr//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid': computer_0_id})
partition = self.request('http://sr//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid':computer_1_id}) partition = self.request('http://sr//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid': computer_1_id})
self.assertEqual(partition._computer_id, computer_0_id) self.assertEqual(partition._computer_id, computer_0_id)
...@@ -1582,19 +1582,19 @@ class TestMultiNodeSupport(MasterMixin): ...@@ -1582,19 +1582,19 @@ class TestMultiNodeSupport(MasterMixin):
self.format_for_number_of_partitions(2, computer_id=computer_0_id) self.format_for_number_of_partitions(2, computer_id=computer_0_id)
self.format_for_number_of_partitions(2, computer_id=computer_1_id) self.format_for_number_of_partitions(2, computer_id=computer_1_id)
self.format_for_number_of_partitions(2) self.format_for_number_of_partitions(2)
self.request('http://sr2//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid':computer_0_id}) self.request('http://sr2//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid': computer_0_id})
self.request('http://sr//', None, 'MyOtherInstance', 'slappart0', filter_kw={'computer_guid':computer_1_id}) self.request('http://sr//', None, 'MyOtherInstance', 'slappart0', filter_kw={'computer_guid': computer_1_id})
# Request slave without SLA: will fail # Request slave without SLA: will fail
rv = self._requestComputerPartition('http://sr//', None, 'MySlaveInstance', 'slappart2', shared=True) rv = self._requestComputerPartition('http://sr//', None, 'MySlaveInstance', 'slappart2', shared=True)
self.assertEqual(rv._status_code, 404) self.assertEqual(rv._status_code, 404)
# Request slave with SLA on incorrect computer: will fail # Request slave with SLA on incorrect computer: will fail
rv = self._requestComputerPartition('http://sr//', None, 'MySlaveInstance', 'slappart2', shared=True, filter_kw={'computer_guid':computer_0_id}) rv = self._requestComputerPartition('http://sr//', None, 'MySlaveInstance', 'slappart2', shared=True, filter_kw={'computer_guid': computer_0_id})
self.assertEqual(rv._status_code, 404) self.assertEqual(rv._status_code, 404)
# Request computer on correct computer: will succeed # Request computer on correct computer: will succeed
partition = self.request('http://sr//', None, 'MySlaveInstance', 'slappart2', shared=True, filter_kw={'computer_guid':computer_1_id}) partition = self.request('http://sr//', None, 'MySlaveInstance', 'slappart2', shared=True, filter_kw={'computer_guid': computer_1_id})
self.assertEqual(partition._computer_id, computer_1_id) self.assertEqual(partition._computer_id, computer_1_id)
def test_multi_node_support_instance_guid(self): def test_multi_node_support_instance_guid(self):
...@@ -1608,8 +1608,8 @@ class TestMultiNodeSupport(MasterMixin): ...@@ -1608,8 +1608,8 @@ class TestMultiNodeSupport(MasterMixin):
self.format_for_number_of_partitions(2, computer_id=computer_0_id) self.format_for_number_of_partitions(2, computer_id=computer_0_id)
self.format_for_number_of_partitions(2, computer_id=computer_1_id) self.format_for_number_of_partitions(2, computer_id=computer_1_id)
self.format_for_number_of_partitions(2) self.format_for_number_of_partitions(2)
partition_computer_0 = self.request('http://sr2//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid':computer_0_id}) partition_computer_0 = self.request('http://sr2//', None, 'MyFirstInstance', 'slappart0', filter_kw={'computer_guid': computer_0_id})
partition_computer_1 = self.request('http://sr//', None, 'MyOtherInstance', 'slappart0', filter_kw={'computer_guid':computer_1_id}) partition_computer_1 = self.request('http://sr//', None, 'MyOtherInstance', 'slappart0', filter_kw={'computer_guid': computer_1_id})
partition_computer_default = self.request('http://sr//', None, 'MyThirdInstance', 'slappart0') partition_computer_default = self.request('http://sr//', None, 'MyThirdInstance', 'slappart0')
self.assertEqual(partition_computer_0.getInstanceGuid(), 'COMP-0-slappart0') self.assertEqual(partition_computer_0.getInstanceGuid(), 'COMP-0-slappart0')
...@@ -1675,11 +1675,11 @@ host = %(host)s ...@@ -1675,11 +1675,11 @@ host = %(host)s
port = %(port)s port = %(port)s
database_uri = %(rootdir)s/lib/external_proxy.db database_uri = %(rootdir)s/lib/external_proxy.db
""" % { """ % {
'rootdir': self._rootdir, 'rootdir': self._rootdir,
'host': self.external_proxy_host, 'host': self.external_proxy_host,
'port': self.external_proxy_port, 'port': self.external_proxy_port,
'external_computer_id': self.external_computer_id 'external_computer_id': self.external_computer_id
}) })
def startExternalProxy(self): def startExternalProxy(self):
""" """
......
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