Commit 70d415b9 authored by Benjamin Blanc's avatar Benjamin Blanc

Add instance requesting + test PASSED

parent 9e758d5d
...@@ -686,10 +686,14 @@ branch = foo ...@@ -686,10 +686,14 @@ branch = foo
original_getSlaposAccountCertificate = TaskDistributor.getSlaposAccountCertificate original_getSlaposAccountCertificate = TaskDistributor.getSlaposAccountCertificate
original_generateConfiguration = TaskDistributor.generateConfiguration original_generateConfiguration = TaskDistributor.generateConfiguration
original_isMasterTestnode = TaskDistributor.isMasterTestnode original_isMasterTestnode = TaskDistributor.isMasterTestnode
original_supply = SlapOSControler.supply
original_request = SlapOSControler.request
TaskDistributor.getSlaposAccountKey = patch_getSlaposAccountKey TaskDistributor.getSlaposAccountKey = patch_getSlaposAccountKey
TaskDistributor.getSlaposAccountCertificate = patch_getSlaposAccountCertificate TaskDistributor.getSlaposAccountCertificate = patch_getSlaposAccountCertificate
TaskDistributor.generateConfiguration = patch_generateConfiguration TaskDistributor.generateConfiguration = patch_generateConfiguration
TaskDistributor.isMasterTestnode = patch_isMasterTestnode TaskDistributor.isMasterTestnode = patch_isMasterTestnode
SlapOSControler.supply = doNothing
SlapOSControler.request = doNothing
original_startTestSuite = TaskDistributor.startTestSuite original_startTestSuite = TaskDistributor.startTestSuite
original_subscribeNode = TaskDistributor.subscribeNode original_subscribeNode = TaskDistributor.subscribeNode
original_getTestType = TaskDistributor.getTestType original_getTestType = TaskDistributor.getTestType
...@@ -715,6 +719,8 @@ branch = foo ...@@ -715,6 +719,8 @@ branch = foo
TaskDistributor.getSlaposAccountCertificate = original_getSlaposAccountCertificate TaskDistributor.getSlaposAccountCertificate = original_getSlaposAccountCertificate
TaskDistributor.generateConfiguration = original_generateConfiguration TaskDistributor.generateConfiguration = original_generateConfiguration
TaskDistributor.isMasterTestnode = original_isMasterTestnode TaskDistributor.isMasterTestnode = original_isMasterTestnode
SlapOSControler.supply =original_supply
SlapOSControler.request = original_request
TaskDistributor.startTestSuite = original_startTestSuite TaskDistributor.startTestSuite = original_startTestSuite
TaskDistributionTool.createTestResult = original_createTestResult TaskDistributionTool.createTestResult = original_createTestResult
TaskDistributionTool.subscribeNode = original_subscribeNode TaskDistributionTool.subscribeNode = original_subscribeNode
...@@ -908,6 +914,7 @@ branch = foo ...@@ -908,6 +914,7 @@ branch = foo
original_prepareSlapOS = RunnerClass._prepareSlapOS original_prepareSlapOS = RunnerClass._prepareSlapOS
original_runTestSuite = RunnerClass.runTestSuite original_runTestSuite = RunnerClass.runTestSuite
original_supply = SlapOSControler.supply original_supply = SlapOSControler.supply
original_request = SlapOSControler.request
# #
time.sleep = doNothing time.sleep = doNothing
TaskDistributor.getSlaposAccountKey = patch_getSlaposAccountKey TaskDistributor.getSlaposAccountKey = patch_getSlaposAccountKey
...@@ -921,6 +928,7 @@ branch = foo ...@@ -921,6 +928,7 @@ branch = foo
RunnerClass._prepareSlapOS = doNothing RunnerClass._prepareSlapOS = doNothing
RunnerClass.runTestSuite = doNothing RunnerClass.runTestSuite = doNothing
SlapOSControler.supply = doNothing SlapOSControler.supply = doNothing
SlapOSControler.request = doNothing
# Run # Run
test_node = self.getTestNode() test_node = self.getTestNode()
test_node.run() test_node.run()
...@@ -936,4 +944,5 @@ branch = foo ...@@ -936,4 +944,5 @@ branch = foo
RunnerClass._prepareSlapOS = original_prepareSlapOS RunnerClass._prepareSlapOS = original_prepareSlapOS
RunnerClass.runTestSuite = original_runTestSuite RunnerClass.runTestSuite = original_runTestSuite
SlapOSControler.supply = original_supply SlapOSControler.supply = original_supply
SlapOSControler.request = original_request
time.sleep =original_sleep time.sleep =original_sleep
...@@ -65,6 +65,7 @@ class ScalabilityTestRunner(): ...@@ -65,6 +65,7 @@ class ScalabilityTestRunner():
# Protection to prevent installation of softwares after checking # Protection to prevent installation of softwares after checking
self.authorize_supply = True self.authorize_supply = True
self.authorize_request = False
# Used to simulate SlapOS answer (used as a queue) # Used to simulate SlapOS answer (used as a queue)
self.last_slapos_answer = [] self.last_slapos_answer = []
...@@ -81,6 +82,29 @@ class ScalabilityTestRunner(): ...@@ -81,6 +82,29 @@ class ScalabilityTestRunner():
return {'status_code' : 0} return {'status_code' : 0}
else: else:
raise ValueError("Too late to supply now. ('self.authorize_supply' is False)") raise ValueError("Too late to supply now. ('self.authorize_supply' is False)")
return {'status_code' : 1}
def _createInstance(self, software_path, software_configuration, test_suite_title):
"""
Launch instance
"""
if self.authorize_request:
instance_title = "Scalability-"
instance_title += "("+test_suite_title+")-"
instance_title += str(self.involved_nodes_computer_guid).replace("'","")
instance_title += "-"
instance_title += testnodeUtils.generateRandomString(6)
self.log("testnode, request : %s", instance_title)
self.slapos_controler.request(instance_title, software_path,
"scalability", {"_" : software_configuration})
self.authorize_request = False
return {'status_code' : 0}
else :
raise ValueError("Softwares release not ready yet to launch instan\
ces or already launched.")
return {'status_code' : 1}
def prepareSlapOSForTestNode(self, test_node_slapos=None): def prepareSlapOSForTestNode(self, test_node_slapos=None):
""" """
...@@ -220,7 +244,19 @@ late a SlapOS (positive) answer." %(str(os.getpid()),str(os.getpid()),)) ...@@ -220,7 +244,19 @@ late a SlapOS (positive) answer." %(str(os.getpid()),str(os.getpid()),))
self._comeBackFromDummySlapOS() self._comeBackFromDummySlapOS()
if self.remainSoftwareToInstall() : if self.remainSoftwareToInstall() :
return {'status_code' : 1} return {'status_code' : 1}
self.log("Softwares installed") self.authorize_request = True
self.log("Softwares installed")
try:
# Launch instance
self._createInstance(self.reachable_profile, configuration_list[0],
node_test_suite.test_suite_title)
self.log("Scalability instance requested")
except:
self.log("Unable to launch instance")
raise ValueError("Unable to launch instance")
return {'status_code' : 1}
return {'status_code' : 0} return {'status_code' : 0}
def _cleanUpNodesInformation(self): def _cleanUpNodesInformation(self):
...@@ -228,6 +264,7 @@ late a SlapOS (positive) answer." %(str(os.getpid()),str(os.getpid()),)) ...@@ -228,6 +264,7 @@ late a SlapOS (positive) answer." %(str(os.getpid()),str(os.getpid()),))
self.launcher_nodes_computer_guid = [] self.launcher_nodes_computer_guid = []
self.remaining_software_installation_dict = {} self.remaining_software_installation_dict = {}
self.authorize_supply = True self.authorize_supply = True
self.authorize_request = False
def runTestSuite(self, node_test_suite, portal_url, log=None): def runTestSuite(self, node_test_suite, portal_url, log=None):
# TODO : write code # TODO : write code
......
...@@ -130,8 +130,8 @@ class SlapOSControler(object): ...@@ -130,8 +130,8 @@ class SlapOSControler(object):
""" """
configuration_file_path (slapos acount) configuration_file_path (slapos acount)
reference : instance title reference : instance title
software_url software_url : software path/url
software_type : cluster/single software_type : scalability
software_configuration : dict { "_" : "{'toto' : 'titi'}" } software_configuration : dict { "_" : "{'toto' : 'titi'}" }
Ex : Ex :
...@@ -140,19 +140,19 @@ class SlapOSControler(object): ...@@ -140,19 +140,19 @@ class SlapOSControler(object):
""" """
# TODO : remove return # TODO : remove return
return
self.log('SlapOSControler : _request') self.log('SlapOSControler : _request')
filter_kw = None filter_kw = None
if computer_guid != None: if computer_guid != None:
filter_kw = { "computer_guid": computer_guid } filter_kw = { "computer_guid": computer_guid }
if os.path.exists(configuration_file_path): if os.path.exists(self.configuration_file_path):
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("configuration_file") parser.add_argument("configuration_file")
args = parser.parse_args([self.configuration_file_path]) args = parser.parse_args([self.configuration_file_path])
config = client.Config(args, args.configuration_file) config = client.Config()
local = client.init(config) config.setConfig(args, args.configuration_file)
try: try:
partition = local['slap'].registerOpenOrder().request( local = client.init(config)
partition = local['request'](
software_release = software_url, software_release = software_url,
partition_reference = reference, partition_reference = reference,
partition_parameter_kw = software_configuration, partition_parameter_kw = software_configuration,
......
...@@ -2,6 +2,7 @@ import sys ...@@ -2,6 +2,7 @@ import sys
import json import json
import shutil import shutil
import string import string
from random import choice
def deunicodeData(data): def deunicodeData(data):
if isinstance(data, list): if isinstance(data, list):
...@@ -19,3 +20,10 @@ def deunicodeData(data): ...@@ -19,3 +20,10 @@ def deunicodeData(data):
else: else:
new_data = data new_data = data
return new_data return new_data
def generateRandomString(size):
tab = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
my_string = ''
for i in range(size):
my_string = my_string + choice(tab)
return my_string
\ 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