No BSD License  

Highlights from
CCS Toolbox

from CCS Toolbox by Marc Molinari
Interfaces Matlab to the Microsoft Compute Cluster Server via XML

ccs_create_submission_file( ccsjob, filename )
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

Contact us at files@mathworks.com