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.")