bool DCStartd::releaseClaim( VacateType vType, ClassAd* reply, int timeout ) { setCmdStr( "releaseClaim" ); if( ! checkClaimId() ) { return false; } if( ! checkVacateType(vType) ) { return false; } ClassAd req; // Add our own attributes to the request ad we're sending req.Assign( ATTR_COMMAND, getCommandString(CA_RELEASE_CLAIM) ); req.Assign( ATTR_CLAIM_ID, claim_id ); req.Assign( ATTR_VACATE_TYPE, getVacateTypeString(vType) ); // since release could take a while, if we didn't already get // told what timeout to use, set the timeout to 0 so we don't // bail out prematurely... if( timeout < 0 ) { return sendCACmd( &req, reply, true, 0 ); } else { return sendCACmd( &req, reply, true, timeout ); } }
bool DCStartd::locateStarter( const char* global_job_id, const char *claimId, const char *schedd_public_addr, ClassAd* reply, int timeout ) { setCmdStr( "locateStarter" ); ClassAd req; // Add our own attributes to the request ad we're sending req.Assign(ATTR_COMMAND,getCommandString( CA_LOCATE_STARTER )); req.Assign(ATTR_GLOBAL_JOB_ID,global_job_id); req.Assign(ATTR_CLAIM_ID, claimId); if ( schedd_public_addr ) { req.Assign(ATTR_SCHEDD_IP_ADDR,schedd_public_addr); } // if this claim is associated with a security session ClaimIdParser cidp( claimId ); return sendCACmd( &req, reply, false, timeout, cidp.secSessionId() ); }
bool DCStartd::requestClaim( ClaimType cType, const ClassAd* req_ad, ClassAd* reply, int timeout ) { setCmdStr( "requestClaim" ); std::string err_msg; switch( cType ) { case CLAIM_COD: case CLAIM_OPPORTUNISTIC: break; default: err_msg = "Invalid ClaimType ("; err_msg += (int)cType; err_msg += ')'; newError( CA_INVALID_REQUEST, err_msg.c_str() ); return false; } ClassAd req( *req_ad ); char buf[1024]; // Add our own attributes to the request ad we're sending sprintf( buf, "%s = \"%s\"", ATTR_COMMAND, getCommandString(CA_REQUEST_CLAIM) ); req.Insert( buf ); sprintf( buf, "%s = \"%s\"", ATTR_CLAIM_TYPE, getClaimTypeString(cType) ); req.Insert( buf ); return sendCACmd( &req, reply, true, timeout ); }
bool DCStartd::updateMachineAd( const ClassAd * update, ClassAd * reply, int timeout ) { setCmdStr( "updateMachineAd" ); ClassAd u( * update ); u.Assign( ATTR_COMMAND, getCommandString( CA_UPDATE_MACHINE_AD ) ); return sendCACmd( & u, reply, true, timeout ); }
bool DCStartd::resumeClaim( ClassAd* reply, int timeout ) { setCmdStr( "resumeClaim" ); if( ! checkClaimId() ) { return false; } ClassAd req; // Add our own attributes to the request ad we're sending req.Assign( ATTR_COMMAND, getCommandString(CA_RESUME_CLAIM) ); req.Assign( ATTR_CLAIM_ID, claim_id ); return sendCACmd( &req, reply, true, timeout ); }
bool DCStartd::activateClaim( const ClassAd* job_ad, ClassAd* reply, int timeout ) { setCmdStr( "activateClaim" ); if( ! checkClaimId() ) { return false; } ClassAd req( *job_ad ); // Add our own attributes to the request ad we're sending req.Assign( ATTR_COMMAND, getCommandString(CA_ACTIVATE_CLAIM) ); req.Assign( ATTR_CLAIM_ID, claim_id ); return sendCACmd( &req, reply, true, timeout ); }
bool DCStarter::reconnect( ClassAd* req, ClassAd* reply, ReliSock* rsock, int timeout, char const *sec_session_id ) { setCmdStr( "reconnectJob" ); std::string line; // Add our own attributes to the request ad we're sending line = ATTR_COMMAND; line += "=\""; line += getCommandString( CA_RECONNECT_JOB ); line += '"'; req->Insert( line.c_str() ); return sendCACmd( req, reply, rsock, false, timeout, sec_session_id ); }