def supply(self, software_url, computer_id, state="available"): """ Request the installation of a software release on a specific node Ex : my_controler.supply('kvm.cfg', 'COMP-726') """ self.log('SlapOSControler : supply') parser = argparse.ArgumentParser() parser.add_argument("configuration_file") parser.add_argument("software_url") parser.add_argument("node") if os.path.exists(self.configuration_file_path): args = parser.parse_args( [self.configuration_file_path, software_url, computer_id]) config = client.Config() config.setConfig(args, args.configuration_file) try: local = client.init(config) local['supply'](software_url, computer_guid=computer_id, state=state) self.log('SlapOSControler : supply %s %s %s' % (software_url, computer_id, state)) except: self.log("SlapOSControler.supply, \ exception in registerOpenOrder", exc_info=sys.exc_info()) raise ValueError("Unable to supply (or remove)") else: raise ValueError("Configuration file not found.")
def request(self, reference, software_url, software_type=None, software_configuration=None, computer_guid=None, state='started'): """ configuration_file_path (slapos acount) reference : instance title software_url : software path/url software_type : scalability software_configuration : dict { "_" : "{'toto' : 'titi'}" } Ex : my_controler._request('Instance16h34Ben', 'kvm.cfg', 'cluster', { "_" : "{'toto' : 'titi'}" } ) """ logger.debug('SlapOSControler : request-->SlapOSMaster') current_intance_config = { 'software_type': software_type, 'software_configuration': software_configuration, 'computer_guid': computer_guid, 'software_url': software_url, 'requested_state': state, 'partition': None } self.instance_config[reference] = current_intance_config filter_kw = None if computer_guid != None: filter_kw = {"computer_guid": computer_guid} if os.path.exists(self.configuration_file_path): parser = argparse.ArgumentParser() parser.add_argument("configuration_file") args = parser.parse_args([self.configuration_file_path]) config = client.Config() config.setConfig(args, args.configuration_file) try: local = client.init(config) partition = local['request']( software_release=software_url, partition_reference=reference, partition_parameter_kw=software_configuration, software_type=software_type, filter_kw=filter_kw, state=state) self.instance_config[reference]['partition'] = partition if state == 'destroyed': del self.instance_config[reference] elif state == 'started': logger.debug('Instance started with configuration: %s', software_configuration) except Exception: logger.exception("SlapOSControler.request") raise ValueError("Unable to do this request") else: raise ValueError("Configuration file not found.")