def submit(self, command, blocksize, tasks_per_node, job_name="<STR_LIT>"):
if self.provisioned_blocks >= self.max_blocks:<EOL><INDENT>logger.warn("<STR_LIT>", self.label)<EOL>return None<EOL><DEDENT>if blocksize < self.nodes_per_block:<EOL><INDENT>blocksize = self.nodes_per_block<EOL><DEDENT>job_name = "<STR_LIT>".format(job_name, time.time())<EOL>script_path = "<STR_LIT>".format(self.script_dir, job_name)<EOL>script_path = os.path.abspath(script_path)<EOL>logger.debug("<STR_LIT>", blocksize, self.nodes_per_block,<EOL>tasks_per_node)<EOL>job_config = {}<EOL>job_config["<STR_LIT>"] = self.channel.script_dir<EOL>job_config["<STR_LIT>"] = self.nodes_per_block<EOL>job_config["<STR_LIT>"] = self.nodes_per_block * tasks_per_node<EOL>job_config["<STR_LIT>"] = self.nodes_per_block<EOL>job_config["<STR_LIT>"] = tasks_per_node<EOL>job_config["<STR_LIT>"] = self.walltime<EOL>job_config["<STR_LIT>"] = self.scheduler_options<EOL>job_config["<STR_LIT>"] = self.worker_init<EOL>job_config["<STR_LIT>"] = command<EOL>job_config["<STR_LIT>"] = self.launcher(command,<EOL>tasks_per_node,<EOL>self.nodes_per_block)<EOL>logger.debug("<STR_LIT>")<EOL>self._write_submit_script(template_string, script_path, job_name, job_config)<EOL>channel_script_path = self.channel.push_file(script_path, self.channel.script_dir)<EOL>submit_options = '<STR_LIT>'<EOL>if self.queue is not None:<EOL><INDENT>submit_options = '<STR_LIT>'.format(submit_options, self.queue)<EOL><DEDENT>if self.account is not None:<EOL><INDENT>submit_options = '<STR_LIT>'.format(submit_options, self.account)<EOL><DEDENT>launch_cmd = "<STR_LIT>".format(submit_options, channel_script_path)<EOL>retcode, stdout, stderr = super().execute_wait(launch_cmd)<EOL>job_id = None<EOL>if retcode == <NUM_LIT:0>:<EOL><INDENT>for line in stdout.split('<STR_LIT:\n>'):<EOL><INDENT>if line.strip():<EOL><INDENT>job_id = line.strip()<EOL>self.resources[job_id] = {'<STR_LIT>': job_id, '<STR_LIT:status>': '<STR_LIT>', '<STR_LIT>': blocksize}<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>message = "<STR_LIT>".format(launch_cmd, retcode)<EOL>if (stdout is not None) and (stderr is not None):<EOL><INDENT>message += "<STR_LIT>".format(stderr.strip(), stdout.strip())<EOL><DEDENT>logger.error(message)<EOL><DEDENT>return job_id<EOL>
Submits the command onto an Local Resource Manager job of blocksize parallel elements.
        Submit returns an ID that corresponds to the task that was just submitted.

        If tasks_per_node <  1 : ! This is illegal. tasks_per_node should be integer

        If tasks_per_node == 1:
             A single node is provisioned

        If tasks_per_node >  1 :
             tasks_per_node * blocksize number of nodes are provisioned.

        Args:
             - command  :(String) Commandline invocation to be made on the remote side.
             - blocksize   :(float)
             - tasks_per_node (int) : command invocations to be launched per node

        Kwargs:
             - job_name (String): Name for job, must be unique

        Returns:
             - None: At capacity, cannot provision more
             - job_id: (string) Identifier for the job