35{
36 void CondorDriver ::
37 testInvariant () const
38 {
40 }
41
42
43
44 CondorDriver ::
45 CondorDriver ()
46 {
48 }
49
50
51
52 ::StatusCode CondorDriver ::
53 doManagerStep (Detail::ManagerData&
data)
const
54 {
56 using namespace msgEventLoop;
59 {
60 case Detail::ManagerStep::batchScriptVar:
61 {
62 data.batchInit =
"export PATH LD_LIBRARY_PATH PYTHONPATH";
63 }
64 break;
65
66 case Detail::ManagerStep::submitJob:
67 case Detail::ManagerStep::doResubmit:
68 {
69
70 const std::string tarballName("AnalysisPackage.tar.gz");
71
73 {
74 if(!
data.options.castBool(Job::optBatchSharedFileSystem,
true))
75 {
76 const std::string newLocation =
data.submitDir +
"/submit/" + tarballName;
77 int status=gSystem->CopyFile(tarballName.c_str(),newLocation.c_str());
78 if(status != 0)
79 RCU_THROW_MSG( (
"failed to copy " + tarballName +
" to " + newLocation).c_str() );
80 }
81 }
82
83 {
84 std::ofstream
file ((
data.submitDir +
"/submit/submit").c_str());
85 file <<
"executable = run\n";
86 file <<
"universe = vanilla\n";
87 file <<
"log = submit/run.log\n";
88 file <<
"output = submit/log-$(Item).out\n";
89 file <<
"error = submit/log-$(Item).err\n";
90 file <<
"initialdir = " <<
data.submitDir <<
"\n";
91 if(!
data.options.castBool(Job::optBatchSharedFileSystem,
true))
92 {
93 file <<
"should_transfer_files = YES\n";
94 file <<
"when_to_transfer_output = ON_EXIT\n";
95 file <<
"transfer_input_files = submit/" << tarballName <<
", submit/segments, submit/config.root\n";
96 file <<
"transfer_output_files = fetch, status\n";
97 if (char* x509userproxy = std::getenv("X509_USER_PROXY")) {
98 std::filesystem::path proxyPath(x509userproxy);
99 std::filesystem::path proxyPathDestination(
data.submitDir +
"/submit/" + proxyPath.filename().string());
100 std::filesystem::copy(proxyPath,
101 proxyPathDestination,
102 std::filesystem::copy_options::overwrite_existing);
103 file <<
"x509userproxy = " << proxyPathDestination.string() <<
"\n";
104 }
105 else {
107 }
108 }
109 file <<
"arguments = $(Item)\n";
110 file <<
"\n" <<
data.options.castString (Job::optCondorConf) <<
"\n";
111 file <<
"queue in ( ";
113 for (std::size_t
index :
data.batchJobIndices)
114 {
115 if (first)
117 else
120 }
122 }
123
124 {
125 std::ostringstream
cmd;
126 cmd <<
"cd " <<
data.submitDir <<
"/submit && condor_submit "
127 <<
data.options.castString (Job::optSubmitFlags) <<
" submit";
128 if (gSystem->Exec (
cmd.str().c_str()) != 0)
130 }
131 data.submitted =
true;
132 }
133 break;
134
135 default:
136 break;
137 }
138 return ::StatusCode::SUCCESS;
139 }
140}
#define RCU_NEW_INVARIANT(x)
#define RCU_READ_INVARIANT(x)
char data[hepevt_bytes_allocation_ATLAS]
#define RCU_THROW_MSG(message)