Skip to content
Snippets Groups Projects
Commit 221fddf7 authored by Nicola Vigano's avatar Nicola Vigano
Browse files

OAR: fixed a bug when deleting arrays. updateOar still needs some commenting!!


Signed-off-by: default avatarNicola Vigano <nicola.vigano@esrf.fr>

git-svn-id: https://svn.code.sf.net/p/dct/code/trunk@651 4c865b51-4357-4376-afb4-474e03ccb993
parent d971c939
No related branches found
No related tags found
No related merge requests found
......@@ -35,7 +35,7 @@ else
end
if ~isempty(fieldnames(oarparameters))
names = fieldnames(oarparameters);
fnames = fieldnames(oarparameters);
error_ids.terminated = [];
error_ids.error = [];
......@@ -46,15 +46,18 @@ if ~isempty(fieldnames(oarparameters))
%%%%%%%%%%%%%%%%%%%%%%%%%%
if (~isempty(funcname))
disp(['Looking for function named ' funcname ' ...'])
match = strfind(names, funcname);
match = strfind(fnames, funcname);
jj = 0;
while (~isempty(match) && (jj < length(names)))
% XXX - Laura, what is this doing?? please comment!! looks like
% something very dirty. If you can avoid this kind of loops with
% while and jumping indexes, please do it! It gets very difficult to
% debug, in case of problems
while (~isempty(match) && (jj < length(fnames)))
jj = jj + 1;
if isempty(match{jj})
names(jj) = [];
k = jj;
match(k) = [];
fnames(jj) = [];
match(jj) = [];
jj = 0;
end
end
......@@ -62,17 +65,17 @@ if ~isempty(fieldnames(oarparameters))
if (strcmpi(action, 'delete'))
% loop over functions
for jj = 1:length(names)
disp(['Deleting function ' names{jj} '...']);
arrayField = fieldnames(oarparameters.(names{jj}));
for jj = 1:length(fnames)
disp(['Deleting function ' fnames{jj} '...']);
arrayField = fieldnames(oarparameters.(fnames{jj}));
questionStr = ['Are you sure to remove the function ' names{jj} ' from OAR and oarparameters.mat? [y/n]'];
questionStr = ['Are you sure to remove the function ' fnames{jj} ' from OAR and oarparameters.mat? [y/n]'];
check = inputwdefault(questionStr, 'y');
if strcmpi(check, 'y')
fprintf('Deleting jobs from OAR... ')
cellfun(@(array) deleteOarArray(array(6:end)), arrayField);
fprintf('Done.\nRemoving information about the jobs... ')
oarparameters = rmfield(oarparameters, names{jj});
oarparameters = rmfield(oarparameters, fnames{jj});
save('oarparameters.mat', 'oarparameters', '-v7.3');
fprintf('Done.\n')
end
......@@ -82,12 +85,12 @@ if ~isempty(fieldnames(oarparameters))
elseif (strcmpi(action, 'update'))
% loop over functions
for jj = 1:length(names)
arrays = fieldnames(oarparameters.(names{jj}));
arrayName = names{jj};
for jj = 1:length(fnames)
arrays = fieldnames(oarparameters.(fnames{jj}));
arrayName = fnames{jj};
for k = 1:length(arrays)
arrayField = arrays{k};
for kk = 1:length(arrays)
arrayField = arrays{kk};
[oarparameters, error_ids] = updateArray(oarparameters, arrayName, arrayField, error_ids);
end % end for k
end % end for j
......@@ -99,54 +102,52 @@ if ~isempty(fieldnames(oarparameters))
print_structure(output,'output',false,true);
else
disp(['Action ' action ' is not valid! Exiting...'])
return;
% Fail :)
error( 'OAR:wrong_argument', ...
'Action %s is not valid!', action)
end
else
%%%%%%%%%%%%%%%%%%%%%%%%%
% look for array number %
%%%%%%%%%%%%%%%%%%%%%%%%%
if any( cellfun(@(logarray) strcmpi(action, logarray), {'err','out','log','params','oar'}) )
disp(['Looking for job number ' num2str(arrayid) '...'])
fprintf('Looking for job number "%d"...\n', arrayid)
output = logviewOar(arrayid, action);
print_structure(output,'output',false,true);
print_structure(output, 'output', false, true);
else
% loop over functions
disp(['Looking for array number ' num2str(arrayid) '...'])
fprintf('Looking for array number "%d"...\n', arrayid)
for jj = 1:length(names)
arrayName = names{jj};
for jj = 1:length(fnames)
arrayName = fnames{jj};
% search array id(s) for each function
arrays = logviewOar(arrayName, [], false);
% check if arrayid exists
if ~isempty(find(arrays.(arrayName).arrays == arrayid, 1))
arrayField = sprintf('array%d', arrayid);
% Do we want to delete?
if strcmpi(action, 'delete')
disp(['Deleting array n. ' arrayField '...']);
disp(['Deleting array n. ' num2str(arrayid) '...']);
questionStr = ['Are you sure to remove array ' num2str(arrayid) ' from oarparameters.mat? [y/n]'];
check = inputwdefault(questionStr, 'y');
if strcmpi(check, 'y')
fprintf('Deleting jobs from OAR... ')
deleteOarArray(arrayField);
deleteOarArray(arrayid);
fprintf('Done.\nRemoving information about the jobs... ')
arrayField = sprintf('array%d', arrayid);
oarparameters.(arrayName) = rmfield(oarparameters.(arrayName), arrayField);
save('oarparameters.mat', 'oarparameters', '-v7.3');
fprintf('Done.\n')
end
% Do we want some update?
elseif strcmpi(action, 'update')
[oarparameters, error_ids] = updateArray(oarparameters, arrayName, arrayField, error_ids);
else
disp(['Action ' action ' is not valid! Exiting...'])
return;
% Fail :)
error( 'OAR:wrong_argument', ...
'Action %s is not valid!', action)
end
end % end if arrayid exists
......@@ -230,7 +231,6 @@ else
elseif strcmpi(state, 'Error')
error_ids.error = [error_ids.error; jobid];
end
end
oarparameters.(arrayName).(arrayField).job = newJobs;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment