Skip to content
Snippets Groups Projects

Check cxrs

Merged Olivier Sauter requested to merge check_cxrs into master
+ 0
103
function Info=AK_MDS_node_info(node,shot,k_debug,shot_time)
% Get information about node in MDS
% Call: Info=AK_MDS_node_info(node,shot,k_debug)
% node - MDS node name, for example '\RESULTS::CXRS_001:COMMENT'
% shot - TCV shot number (default [], opened shot)
% k_debug - debug key (default false)
s=sprintf('%s',mfilename);
Info.OK = 1;
Info.msg = 'OK';
if nargin < 1, node=[]; end
if nargin < 2, shot=[]; end
if nargin < 3, k_debug = false; end
if nargin < 4, shot_time=[]; end
if ~isempty(shot),
Info.shot=mdsopen(shot);
if isempty(Info.shot),
Info.msg=sprintf('ERROR in %s - MDS Open shot #%d - probably not exist',s,shot); disp(Info.msg);
Info.OK=-100; mdsclose; return
elseif (shot~=Info.shot)&&(shot~=0),
Info.msg=sprintf('ERROR in %s - MDS Open shot #%d <> data.shot #%d',s,shot,Info.shot); disp(Info.msg);
Info.OK=-101; mdsclose; return
end
else
[Info.shot,stat]=mdsvalue('$SHOT');
if ~mod(stat,2),
Info.msg=sprintf('ERROR in %s - MDS shot is nor opened',s); disp(Info.msg);
Info.OK=-102; mdsclose; return
elseif isempty(Info.shot);
Info.msg=sprintf('ERROR in %s - MDS shot is unknown',s); disp(Info.msg);
Info.OK=-103; mdsclose; return
end
end
if isempty(shot_time),
% Info.shot_time = mdsvalue('shot_date(nint($1))',Info.shot);
[Info.shot_time,stat] = mdsdata(['tcv_shot_time(',int2str(Info.shot),')']);
else
Info.shot_time=shot_time; stat=1;
end
chk_tim=true;
if ~mod(stat,2),
[shot_time,stat] = mdsvalue('shot_date(nint($1))',Info.shot);
lf= findstr(shot_time,sprintf('\n'));
if ~isempty(lf), shot_time=shot_time(1:lf(1)-1); end
Info.shot_time = shot_time;
chk_tim=false;
end
if (k_debug~=0), disp(sprintf(' ----- TCV shot %d cycle start date and time: %s -----',Info.shot,Info.shot_time)); end
Info.shot_time_vec=datevec(Info.shot_time,'dd-mmm-yyyy HH:MM:SS.FFF'); timk=[10000 100 1 0.01 0.0001 0.000001];
Info.shot_run= sum(Info.shot_time_vec.*timk);
if ~isempty(node),
Info.node=node;
tdis=sprintf('getnci("\\%s","FULLPATH")' ,node); [node_fullpath,stat_fullpath] =mdsdata(tdis);
tdis=sprintf('owner_ascii("\\%s")' ,node); [node_ownerid, stat_ownerid ] =mdsdata(tdis);
tdis=sprintf('times(getnci("\\%s","TIME_INSERTED"))',node); [node_time, stat_time ] =mdsdata(tdis);
tdis=sprintf('uid_gid("\\%s")' ,node); [node_ownerID, stat_ownerID ] =mdsdata(tdis);
if ~mod(stat_fullpath,2), node_fullpath = 'unknown'; Info.OK = -201; end
if ~mod(stat_ownerid ,2), node_ownerid = 0 ; Info.OK = -202; end
if ~mod(stat_time ,2), node_time = 'unknown'; Info.OK = -203; end
if ~mod(stat_ownerID ,2), node_ownerID = [] ; Info.OK = -204; end
Info.node_fullpath= deblank(node_fullpath);
Info.node_ownerid = node_ownerid;
Info.node_time = node_time;
Info.node_ownerID = node_ownerID;
%if ~isempty(node_ownerID),
% cmd=sprintf('getent passwd %d | sed -e ''s/\\:.*//''',node_ownerID(1)); [stat,owner] = system(cmd);
% if (stat~=0), owner=[]; end
% cmd=sprintf('getent group %d | sed -e ''s/\\:.*//''',node_ownerID(2)); [stat,group] = system(cmd);
% if (stat~=0), group=[]; end
% if isempty(group), group=sprintf('%d',node_ownerID(2)); end
% if isempty(owner), owner=sprintf('%d',node_ownerID(1)); end
% if ~isempty(findstr(group,'invalid option')), group='unknown'; end
% if ~isempty(findstr(owner,'invalid option')), owner='unknown'; end
% node_owner=sprintf('[%s,%s]',deblank(group),deblank(owner));
%else
% node_owner=sprintf('[unknown,unknown]');
%end
Info.node_owner = sprintf(' user %s',node_ownerid);
if (k_debug~=0), disp(sprintf('Node %s (%s) created %s by %s',Info.node,Info.node_fullpath,Info.node_time,Info.node_owner)); end
if mod(stat_time ,2),
Info.node_time_vec=datevec(Info.node_time,'dd-mmm-yyyy HH:MM:SS.FFF'); timk=[10000 100 1 0.01 0.0001 0.000001];
Info.node_run= sum(Info.node_time_vec.*timk);
else
Info.node_time_vec=[1970 1 1 0 0 0]; timk=[10000 100 1 0.01 0.0001 0.000001];
Info.node_run= sum(Info.node_time_vec.*timk);
end
if (Info.node_run-Info.shot_run)<-0.005,
if (Info.OK==1)&&chk_tim,
Info.OK=-301;
Info.msg=sprintf('WARNING node %s is craeated before shot #%d created',Info.node,Info.shot);
if (k_debug~=0), disp(Info.msg); end
end
end
end
if ~isempty(shot), mdsclose; end
return
\ No newline at end of file
Loading