function ccs_create_submission_file( ccsjob, filename )
% Create submission file for a CCS cluster job submission.
%
% SYNTAX:
% ccs_create_submission_file( ccsjob, filename )
%
% INPUT:
% ccsjob CCS data structure (eg created by ccsjob.m).
% filename filename with full path for CCS job file.
%
% OUTPUT:
% none
%
% SEE ALSO: ccs_job
% ----------------------------------------------------------
% Copyright (C) 2006, Marc Molinari
% CCS Toolbox for Matlab
% Author: Dr Marc Molinari <m.molinari@soton.ac.uk>
% Version: DRAFT 2006/07/27
% check input parameters
if (nargin<1), error('Need at least ccsjob as input.'); end
if (nargin<2),
filename = 'ccs-job.xml';
disp([' [',mfilename,']: Using default filename "', filename, '".']);
end
if ~isa(ccsjob, 'struct') || ~ischar(filename)
error('[',mfilename,']: Input parameter type is wrong.');
end
% re-format ccs input data to match XML requirements
xmljob.Tasks = {};
xmljob.Tasks{1}.Task = {};
nt = length(ccsjob.Tasks);
if nt<1
error('Need more than 1 task to write the jobsubmission file.');
end
% validation:
disp(' =======================================================================');
disp([' job.Name : ',ccsjob.Name]);
disp([' job.Project : ',ccsjob.Project]);
%disp([' job.Priority: ',ccsjob.Priority]);
if isfield(ccsjob, 'Tasks')
xmljob.Tasks{1}.ATTRIBUTE.xmlns = 'http://www.microsoft.com/ComputeCluster/';
for t=1:nt
task = ccsjob.Tasks(t);
disp([' +task(',num2str(t),').Name : ',task.Name]);
disp([' task(',num2str(t),').CommandLine : ',task.CommandLine]);
disp([' task(',num2str(t),').WorkDirectory: ',task.WorkDirectory]);
%disp([' task(',num2str(t),').Stdout : ',task.Stdout]);
%disp([' task(',num2str(t),').Stderr : ',task.Stderr]);
if isfield(task, 'EnvironmentVariables')
xmltask.EnvironmentVariables = task.EnvironmentVariables;
task = rmfield(task, 'EnvironmentVariables');
end
xmltask.ATTRIBUTE = task;
xmljob.Tasks{1}.Task{end+1} = xmltask;
end
ccsjob = rmfield(ccsjob, 'Tasks');
xmljob.ATTRIBUTE = ccsjob;
xmljob.ATTRIBUTE.xmlns_xsi.name = 'xmlns:xsi';
xmljob.ATTRIBUTE.xmlns_xsi.value = 'http://www.w3.org/2001/XMLSchema-instance';
xmljob.ATTRIBUTE.xmlns_xsd.name = 'xmlns:xsd';
xmljob.ATTRIBUTE.xmlns_xsd.value = 'http://www.w3.org/2001/XMLSchema';
end
xml.XMLHEADER.version = '1.0';
xml.XMLHEADER.encoding = 'utf-8';
xml.Job = xmljob;
xml.COMMENT = ['Created on ', datestr(now,31), ' with CCS Toolbox for Matlab software.'];
% write to file
fid = fopen( filename, 'w' );
if (fid == -1)
error(['[',mfilename,']: Cannot open file for writing: ', filename]);
end
%--------------------------------
% write the file
fprintf( fid, '%s', xml_formatccs(xml) );
%--------------------------------
disp(' =======================================================================');
disp([' [',mfilename,']: Writing file "', filename, '".']);
% close file
fclose( fid );
return