本文整理汇总了C++中param_boolean函数的典型用法代码示例。如果您正苦于以下问题:C++ param_boolean函数的具体用法?C++ param_boolean怎么用?C++ param_boolean使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了param_boolean函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: param_integer
void BaseShadow::config()
{
reconnect_ceiling = param_integer( "RECONNECT_BACKOFF_CEILING", 300 );
reconnect_e_factor = 0.0;
reconnect_e_factor = param_double( "RECONNECT_BACKOFF_FACTOR", 2.0, 0.0 );
if( reconnect_e_factor < -1e-4 || reconnect_e_factor > 1e-4) {
reconnect_e_factor = 2.0;
}
m_cleanup_retry_tid = -1;
m_num_cleanup_retries = 0;
// NOTE: these config knobs are very similar to
// LOCAL_UNIVERSE_MAX_JOB_CLEANUP_RETRIES and
// LOCAL_UNIVERSE_JOB_CLEANUP_RETRY_DELAY in the local starter.
m_max_cleanup_retries = param_integer("SHADOW_MAX_JOB_CLEANUP_RETRIES", 5);
m_cleanup_retry_delay = param_integer("SHADOW_JOB_CLEANUP_RETRY_DELAY", 30);
m_lazy_queue_update = param_boolean("SHADOW_LAZY_QUEUE_UPDATE", true);
}
开发者ID:AlainRoy,项目名称:htcondor,代码行数:20,代码来源:baseshadow.cpp
示例2: makeStartdAdHashKey
// functions to make the hashkeys ...
// make hashkeys from the obtained ad
bool
makeStartdAdHashKey (AdNameHashKey &hk, const ClassAd *ad )
{
// get the name of the startd;
// this gets complicated with ID
if ( !adLookup( "Start", ad, ATTR_NAME, NULL, hk.name, false ) ) {
logWarning( "Start", ATTR_NAME, ATTR_MACHINE, ATTR_SLOT_ID );
// Get the machine name; if it's not there, give up
if ( !adLookup( "Start", ad, ATTR_MACHINE, NULL, hk.name, false ) ) {
logError( "Start", ATTR_NAME, ATTR_MACHINE );
return false;
}
// Finally, if there is a slot ID, append it.
int slot;
if (ad->LookupInteger( ATTR_SLOT_ID, slot)) {
hk.name += ":";
hk.name += IntToStr( slot );
}
else if (param_boolean("ALLOW_VM_CRUFT", false) &&
ad->LookupInteger(ATTR_VIRTUAL_MACHINE_ID, slot)) {
hk.name += ":";
hk.name += IntToStr( slot );
}
}
hk.ip_addr = "";
// As of 7.5.0, we look for MyAddress. Prior to that, we did not,
// so new startds must continue to send StartdIpAddr to remain
// compatible with old collectors.
if ( !getIpAddr( "Start", ad, ATTR_MY_ADDRESS, ATTR_STARTD_IP_ADDR,
hk.ip_addr ) ) {
dprintf (D_FULLDEBUG,
"StartAd: No IP address in classAd from %s\n",
hk.name.Value() );
}
return true;
}
开发者ID:bbockelm,项目名称:htcondor,代码行数:42,代码来源:hashkey.cpp
示例3: scheduleHousekeeper
int CollectorEngine::
scheduleHousekeeper (int timeout)
{
// Are we filtering updates that we forward to the view collector?
std::string watch_list;
param(watch_list,"COLLECTOR_FORWARD_WATCH_LIST", "State,Cpus,Memory,IdleJobs,ClaimId,Capability,ClaimIdList,ChildClaimIds");
m_forwardWatchList.clearAll();
m_forwardWatchList.initializeFromString(watch_list.c_str());
m_forwardFilteringEnabled = param_boolean( "COLLECTOR_FORWARD_FILTERING", false );
// cancel outstanding housekeeping requests
if (housekeeperTimerID != -1)
{
(void) daemonCore->Cancel_Timer(housekeeperTimerID);
}
// reset for new timer
if (timeout < 0)
return 0;
// set to new timeout interval
machineUpdateInterval = timeout;
m_forwardInterval = param_integer("COLLECTOR_FORWARD_INTERVAL", machineUpdateInterval / 3, 0);
// if timeout interval was non-zero (i.e., housekeeping required) ...
if (timeout > 0)
{
// schedule housekeeper
housekeeperTimerID = daemonCore->Register_Timer(machineUpdateInterval,
machineUpdateInterval,
(TimerHandlercpp)&CollectorEngine::housekeeper,
"CollectorEngine::housekeeper",this);
if (housekeeperTimerID == -1)
return 0;
}
return 1;
}
开发者ID:brianhlin,项目名称:htcondor,代码行数:40,代码来源:collector_engine.cpp
示例4: BaseResource
GlobusResource::GlobusResource( const char *resource_name,
const Proxy *proxy, bool is_gt5 )
: BaseResource( resource_name )
{
initialized = false;
proxySubject = strdup( proxy->subject->subject_name );
proxyFQAN = strdup( proxy->subject->fqan );
if ( param_boolean( "GRAM_VERSION_DETECTION", true ) ) {
m_isGt5 = false;
m_versionKnown = false;
} else {
m_isGt5 = is_gt5;
m_versionKnown = true;
}
submitJMLimit = DEFAULT_MAX_JOBMANAGERS_PER_RESOURCE / 2;
restartJMLimit = DEFAULT_MAX_JOBMANAGERS_PER_RESOURCE - submitJMLimit;
checkMonitorTid = daemonCore->Register_Timer( TIMER_NEVER,
(TimerHandlercpp)&GlobusResource::CheckMonitor,
"GlobusResource::CheckMonitor", (Service*)this );
monitorActive = false;
monitorSubmitActive = false;
monitorStarting = false;
monitorDirectory = NULL;
monitorJobStatusFile = NULL;
monitorLogFile = NULL;
logFileLastReadTime = 0;
jobStatusFileLastUpdate = 0;
monitorGramJobId = NULL;
gahp = NULL;
monitorGahp = NULL;
monitorRetryTime = 0;
monitorFirstStartup = true;
monitorGramJobStatus = GLOBUS_GRAM_PROTOCOL_JOB_STATE_UNKNOWN;
monitorGramErrorCode = 0;
}
开发者ID:AlainRoy,项目名称:htcondor,代码行数:39,代码来源:globusresource.cpp
示例5: check_uid_for_privsep
void
check_uid_for_privsep()
{
#if !defined(WIN32)
if (param_boolean("PRIVSEP_ENABLED", false) && (getuid() == 0)) {
uid_t condor_uid = get_condor_uid();
if (condor_uid == 0) {
EXCEPT("PRIVSEP_ENABLED set, but current UID is 0 "
"and condor UID is also set to root");
}
dprintf(D_ALWAYS,
"PRIVSEP_ENABLED set, but UID is 0; "
"will drop to UID %u and restart\n",
(unsigned)condor_uid);
daemons.CleanupBeforeRestart();
set_condor_priv_final();
daemons.ExecMaster();
EXCEPT("attempt to restart (via exec) failed (%s)",
strerror(errno));
}
#endif
}
开发者ID:zhangzhehust,项目名称:htcondor,代码行数:22,代码来源:master.cpp
示例6: ASSERT
bool
GLExecPrivSepHelper::chown_sandbox_to_user(PrivSepError &err)
{
ASSERT(m_initialized);
if (m_sandbox_owned_by_user) {
dprintf(D_FULLDEBUG,
"GLExecPrivSepHelper::chown_sandbox_to_user: "
"sandbox already user-owned\n");
return true;
}
dprintf(D_FULLDEBUG, "changing sandbox ownership to the user\n");
ArgList args;
args.AppendArg(m_setup_script);
args.AppendArg(m_glexec);
args.AppendArg(m_proxy);
args.AppendArg(m_sandbox);
args.AppendArg(m_glexec_retries);
args.AppendArg(m_glexec_retry_delay);
MyString error_desc = "error changing sandbox ownership to the user: ";
int rc = run_script(args,error_desc);
if( rc != 0) {
int hold_code = CONDOR_HOLD_CODE_GlexecChownSandboxToUser;
if( rc != INVALID_PROXY_RC && !param_boolean("GLEXEC_HOLD_ON_INITIAL_FAILURE",true) ) {
// Do not put the job on hold due to glexec failure.
// It will simply return to idle status and try again.
hold_code = 0;
}
err.setHoldInfo( hold_code, rc, error_desc.Value());
return false;
}
m_sandbox_owned_by_user = true;
return true;
}
开发者ID:AlainRoy,项目名称:htcondor,代码行数:38,代码来源:glexec_privsep_helper.linux.cpp
示例7: param
void BaseShadow::config()
{
if (spool) free(spool);
spool = param("SPOOL");
if (!spool) {
EXCEPT("SPOOL not specified in config file.");
}
if (fsDomain) free(fsDomain);
fsDomain = param( "FILESYSTEM_DOMAIN" );
if (!fsDomain) {
EXCEPT("FILESYSTEM_DOMAIN not specified in config file.");
}
if (uidDomain) free(uidDomain);
uidDomain = param( "UID_DOMAIN" );
if (!uidDomain) {
EXCEPT("UID_DOMAIN not specified in config file.");
}
reconnect_ceiling = param_integer( "RECONNECT_BACKOFF_CEILING", 300 );
reconnect_e_factor = 0.0;
reconnect_e_factor = param_double( "RECONNECT_BACKOFF_FACTOR", 2.0, 0.0 );
if( reconnect_e_factor < -1e-4 || reconnect_e_factor > 1e-4) {
reconnect_e_factor = 2.0;
}
m_cleanup_retry_tid = -1;
m_num_cleanup_retries = 0;
// NOTE: these config knobs are very similar to
// LOCAL_UNIVERSE_MAX_JOB_CLEANUP_RETRIES and
// LOCAL_UNIVERSE_JOB_CLEANUP_RETRY_DELAY in the local starter.
m_max_cleanup_retries = param_integer("SHADOW_MAX_JOB_CLEANUP_RETRIES", 5);
m_cleanup_retry_delay = param_integer("SHADOW_JOB_CLEANUP_RETRY_DELAY", 30);
m_lazy_queue_update = param_boolean("SHADOW_LAZY_QUEUE_UPDATE", true);
}
开发者ID:emaste,项目名称:htcondor,代码行数:38,代码来源:baseshadow.cpp
示例8: m_send_end_negotiate
ResourceRequestList::ResourceRequestList(int protocol_version)
: m_send_end_negotiate(false),
m_send_end_negotiate_now(false),
m_requests_to_fetch(0)
{
m_protocol_version = protocol_version;
m_clear_rejected_autoclusters = false;
m_use_resource_request_counts = param_boolean("USE_RESOURCE_REQUEST_COUNTS",true);
if ( protocol_version == 0 || m_use_resource_request_counts == false ) {
// Protocol version is 0, and schedd resource request lists were introduced
// in protocol version 1. so set m_num_to_fetch to 1 so we use the old
// protocol of getting one request at a time with this old schedd.
// Also we must use the old protocol if admin disabled USE_RESOURCE_REQUEST_COUNTS,
// since the new protocol relies on that.
m_num_to_fetch = 1;
} else {
m_num_to_fetch = param_integer("NEGOTIATOR_RESOURCE_REQUEST_LIST_SIZE");
}
errcode = 0;
current_autocluster = -1;
resource_request_count = 0;
resource_request_offers = 0;
}
开发者ID:dcbradley,项目名称:htcondor,代码行数:23,代码来源:matchmaker_negotiate.cpp
示例9: initTypes
void initTypes( int max_types, StringList **type_strings, int except )
{
int i;
char* tmp;
MyString buf;
_checkInvalidParam("SLOT_TYPE_0", except);
// CRUFT
_checkInvalidParam("VIRTUAL_MACHINE_TYPE_0", except);
if (! type_strings[0]) {
// Type 0 is the special type for evenly divided slots.
type_strings[0] = new StringList();
type_strings[0]->initializeFromString("auto");
}
for( i=1; i < max_types; i++ ) {
if( type_strings[i] ) {
continue;
}
buf.formatstr("SLOT_TYPE_%d", i);
tmp = param(buf.Value());
if (!tmp) {
if (param_boolean("ALLOW_VM_CRUFT", false)) {
buf.formatstr("VIRTUAL_MACHINE_TYPE_%d", i);
if (!(tmp = param(buf.Value()))) {
continue;
}
} else {
continue;
}
}
type_strings[i] = new StringList();
type_strings[i]->initializeFromString( tmp );
free( tmp );
}
}
开发者ID:AlanDeSmet,项目名称:htcondor,代码行数:37,代码来源:slot_builder.cpp
示例10: vmprintf
VMType::VMType(const char* prog_for_script, const char* scriptname, const char* workingpath, ClassAd *ad)
{
m_vm_id = vmgahp->getNewVMId();
m_prog_for_script = prog_for_script;
m_scriptname = scriptname;
m_workingpath = workingpath;
m_classAd = *ad;
m_vm_pid = 0;
m_vm_mem = 0;
m_vm_networking = false;
m_vm_checkpoint = false;
m_vm_no_output_vm = false;
m_vm_hardware_vt = false;
m_is_soft_suspended = false;
m_self_shutdown = false;
m_is_checkpointed = false;
m_status = VM_STOPPED;
m_cpu_time = 0;
m_delete_working_files = false;
m_vcpus = 1;
if ( privsep_enabled() ) {
m_file_owner = PRIV_CONDOR;
} else {
m_file_owner = PRIV_USER;
}
vmprintf(D_FULLDEBUG, "Constructed VM_Type.\n");
// Use the script program to create a configuration file for VM ?
m_use_script_to_create_config =
param_boolean("USE_SCRIPT_TO_CREATE_CONFIG", false);
// Create initially transfered file list
createInitialFileList();
}
开发者ID:AlainRoy,项目名称:htcondor,代码行数:37,代码来源:vm_type.cpp
示例11: CondorLockFile
CondorLockFile(boost::python::object file, LOCK_TYPE lock_type)
: m_lock_type(lock_type)
{
int fd = -1;
std::string name;
if (py_hasattr(file, "name"))
{
name = boost::python::extract<std::string>(file.attr("name"));
}
if (py_hasattr(file, "fileno"))
{
fd = boost::python::extract<int>(file.attr("fileno")());
}
else
{
THROW_EX(TypeError, "LockFile must be used with a file object.");
}
// Which locking protocol to use (old/new) is left up to the caller; this replicates the
// logic from src/condor_utils/read_user_log.cpp
bool new_locking = param_boolean("CREATE_LOCKS_ON_LOCAL_DISK", true);
#if defined(WIN32)
new_locking = false;
#endif
if (new_locking && name.length())
{
m_file_lock = boost::shared_ptr<FileLock>(new FileLock(name.c_str(), true, false));
if (!m_file_lock->initSucceeded() ) {
m_file_lock = boost::shared_ptr<FileLock>(new FileLock(fd, NULL, name.c_str()));
}
}
else
{
m_file_lock = boost::shared_ptr<FileLock>(new FileLock(fd, NULL, name.length() ? name.c_str() : NULL));
}
}
开发者ID:epaulson,项目名称:htcondor,代码行数:36,代码来源:event.cpp
示例12: dprintf
//.........这里部分代码省略.........
// email the user, but get values from jobad
emailTerminateEvent( reason, kind );
DC_Exit( reason );
}
// the default path when kind == US_NORMAL
// cleanup this shadow (kill starters, etc)
cleanUp();
reason = getExitReason();
signaled = exitedBySignal();
/* also store the corefilename into the jobad so we can recover this
during a termination pending scenario. */
if( reason == JOB_COREDUMPED ) {
str.formatstr("%s = \"%s\"", ATTR_JOB_CORE_FILENAME, getCoreName());
jobAd->Insert(str.Value());
}
// Update final Job committed time
int last_ckpt_time = 0;
jobAd->LookupInteger(ATTR_LAST_CKPT_TIME, last_ckpt_time);
int current_start_time = 0;
jobAd->LookupInteger(ATTR_JOB_CURRENT_START_DATE, current_start_time);
int int_value = (last_ckpt_time > current_start_time) ?
last_ckpt_time : current_start_time;
if( int_value > 0 ) {
int job_committed_time = 0;
jobAd->LookupInteger(ATTR_JOB_COMMITTED_TIME, job_committed_time);
int delta = (int)time(NULL) - int_value;
job_committed_time += delta;
jobAd->Assign(ATTR_JOB_COMMITTED_TIME, job_committed_time);
float slot_weight = 1;
jobAd->LookupFloat(ATTR_JOB_MACHINE_ATTR_SLOT_WEIGHT0, slot_weight);
float slot_time = 0;
jobAd->LookupFloat(ATTR_COMMITTED_SLOT_TIME, slot_time);
slot_time += slot_weight * delta;
jobAd->Assign(ATTR_COMMITTED_SLOT_TIME, slot_time);
}
CommitSuspensionTime(jobAd);
// update the job ad in the queue with some important final
// attributes so we know what happened to the job when using
// condor_history...
if (m_num_cleanup_retries < 1 &&
param_boolean("SHADOW_TEST_JOB_CLEANUP_RETRY", false)) {
dprintf( D_ALWAYS,
"Testing Failure to perform final update to job queue!\n");
retryJobCleanup();
return;
}
if( !updateJobInQueue(U_TERMINATE) ) {
dprintf( D_ALWAYS,
"Failed to perform final update to job queue!\n");
retryJobCleanup();
return;
}
// Let's maximize the effectiveness of that queue synchronization and
// only record the job as done if the update to the queue was successful.
// If any of these next operations fail and the shadow exits with an
// exit code which causes the job to get requeued, it will be in the
// "terminate pending" state marked by the ATTR_TERMINATION_PENDING
// attribute.
dprintf( D_ALWAYS, "Job %d.%d terminated: %s %d\n",
getCluster(), getProc(),
signaled ? "killed by signal" : "exited with status",
signaled ? exitSignal() : exitCode() );
// write stuff to user log:
logTerminateEvent( reason );
// email the user
emailTerminateEvent( reason );
if( reason == JOB_EXITED && claimIsClosing() ) {
// Startd not accepting any more jobs on this claim.
// We do this here to avoid having to treat this case
// identically to JOB_EXITED in the code leading up to
// this point.
dprintf(D_FULLDEBUG,"Startd is closing claim, so no more jobs can be run on it.\n");
reason = JOB_EXITED_AND_CLAIM_CLOSING;
}
// try to get a new job for this shadow
if( recycleShadow(reason) ) {
// recycleShadow delete's this, so we must return immediately
return;
}
// does not return.
DC_Exit( reason );
}
开发者ID:AlainRoy,项目名称:htcondor,代码行数:101,代码来源:baseshadow.cpp
示例13: dprintf
int
DCStartd::delegateX509Proxy( const char* proxy, time_t expiration_time, time_t *result_expiration_time )
{
dprintf( D_FULLDEBUG, "Entering DCStartd::delegateX509Proxy()\n" );
setCmdStr( "delegateX509Proxy" );
if( ! claim_id ) {
newError( CA_INVALID_REQUEST,
"DCStartd::delegateX509Proxy: Called with NULL claim_id" );
return CONDOR_ERROR;
}
// if this claim is associated with a security session
ClaimIdParser cidp(claim_id);
//
// 1) begin the DELEGATE_GSI_CRED_STARTD command
//
ReliSock* tmp = (ReliSock*)startCommand( DELEGATE_GSI_CRED_STARTD,
Stream::reli_sock,
20, NULL, NULL, false,
cidp.secSessionId() );
if( ! tmp ) {
newError( CA_COMMUNICATION_ERROR,
"DCStartd::delegateX509Proxy: Failed to send command DELEGATE_GSI_CRED_STARTD to the startd" );
return CONDOR_ERROR;
}
//
// 2) get reply from startd - OK means continue, NOT_OK means
// don't bother (the startd doesn't require a delegated
// proxy
//
tmp->decode();
int reply;
if( !tmp->code(reply) ) {
newError( CA_COMMUNICATION_ERROR,
"DCStartd::delegateX509Proxy: failed to receive reply from startd (1)" );
delete tmp;
return CONDOR_ERROR;
}
if ( !tmp->end_of_message() ) {
newError( CA_COMMUNICATION_ERROR,
"DCStartd::delegateX509Proxy: end of message error from startd (1)" );
delete tmp;
return CONDOR_ERROR;
}
if( reply == NOT_OK ) {
delete tmp;
return NOT_OK;
}
//
// 3) send over the claim id and delegate (or copy) the given proxy
//
tmp->encode();
int use_delegation =
param_boolean( "DELEGATE_JOB_GSI_CREDENTIALS", true ) ? 1 : 0;
if( !tmp->code( claim_id ) ) {
newError( CA_COMMUNICATION_ERROR,
"DCStartd::delegateX509Proxy: Failed to send claim id to the startd" );
delete tmp;
return CONDOR_ERROR;
}
if ( !tmp->code( use_delegation ) ) {
newError( CA_COMMUNICATION_ERROR,
"DCStartd::delegateX509Proxy: Failed to send use_delegation flag to the startd" );
delete tmp;
return CONDOR_ERROR;
}
int rv;
filesize_t dont_care;
if( use_delegation ) {
rv = tmp->put_x509_delegation( &dont_care, proxy, expiration_time, result_expiration_time );
}
else {
dprintf( D_FULLDEBUG,
"DELEGATE_JOB_GSI_CREDENTIALS is False; using direct copy\n");
if( ! tmp->get_encryption() ) {
newError( CA_COMMUNICATION_ERROR,
"DCStartd::delegateX509Proxy: Cannot copy: channel does not have encryption enabled" );
delete tmp;
return CONDOR_ERROR;
}
rv = tmp->put_file( &dont_care, proxy );
}
if( rv == -1 ) {
newError( CA_FAILURE,
"DCStartd::delegateX509Proxy: Failed to delegate proxy" );
delete tmp;
return CONDOR_ERROR;
}
if ( !tmp->end_of_message() ) {
newError( CA_FAILURE,
"DCStartd::delegateX509Proxy: end of message error to startd" );
delete tmp;
return CONDOR_ERROR;
}
//.........这里部分代码省略.........
开发者ID:zzxuanyuan,项目名称:htcondor,代码行数:101,代码来源:dc_startd.cpp
示例14: fillRequirements
void
fillRequirements( ClassAd* req )
{
MyString jic_req = "TARGET.";
if (jobad_path) {
jic_req += ATTR_HAS_JIC_LOCAL_STDIN;
} else {
jic_req += ATTR_HAS_JIC_LOCAL_CONFIG;
}
jic_req += "==TRUE";
MyString require;
require = ATTR_REQUIREMENTS;
require += "=(";
if (requirements) {
require += requirements;
require += ")&&(";
}
int slot_id = 0;
if (name) {
if (sscanf(name, "slot%[email protected]", &slot_id) != 1) {
slot_id = 0;
}
}
if (slot_id > 0) {
require += "TARGET.";
require += ATTR_SLOT_ID;
require += "==";
require += slot_id;
require += ")&&(";
}
else if (param_boolean("ALLOW_VM_CRUFT", false)) {
int vm_id = 0;
if (name) {
if (sscanf(name, "vm%[email protected]", &vm_id) != 1) {
vm_id = 0;
}
}
if (vm_id > 0) {
require += "TARGET.";
require += ATTR_VIRTUAL_MACHINE_ID;
require += "==";
require += vm_id;
require += ")&&(";
}
}
require += jic_req;
require += ')';
if( ! req->Insert(require.Value()) ) {
fprintf( stderr, "ERROR: can't parse requirements '%s'\n",
requirements );
exit( 1 );
}
#if defined(ADD_TARGET_SCOPING)
// The user may have entered some references to machine attributes
// without explicitly specifying the TARGET scope.
req->AddTargetRefs( TargetMachineAttrs );
#endif
}
开发者ID:AlainRoy,项目名称:htcondor,代码行数:64,代码来源:cod_tool.cpp
示例15: init_daemon_list
//.........这里部分代码省略.........
}
}
free(dc_daemon_list);
}
// Tolerate a trailing comma in the list
dc_daemon_names.remove( "" );
char* ha_list = param("MASTER_HA_LIST");
if( ha_list ) {
// Make MASTER_HA_LIST case insensitive by always converting
// what we get to uppercase.
StringList ha_names;
ha_list = strupr( ha_list );
ha_names.initializeFromString(ha_list);
// Tolerate a trailing comma in the list
ha_names.remove( "" );
daemons.ordered_daemon_names.create_union( ha_names, false );
ha_names.rewind();
while( (daemon_name = ha_names.next()) ) {
if(daemons.FindDaemon(daemon_name) == NULL) {
if( dc_daemon_names.contains(daemon_name) ) {
new class daemon(daemon_name, true, true );
} else {
new class daemon(daemon_name, false, true );
}
}
}
}
char* daemon_list = param("DAEMON_LIST");
if( daemon_list ) {
// Make DAEMON_LIST case insensitive by always converting
// what we get to uppercase.
daemon_list = strupr( daemon_list );
daemon_names.initializeFromString(daemon_list);
free( daemon_list );
// Tolerate a trailing comma in the list
daemon_names.remove( "" );
/*
Make sure that if COLLECTOR is in the list, put it at
the front... unfortunately, our List template (what
StringList is defined in terms of) is amazingly broken
with regard to insert() and append(). :( insert()
usually means: insert *before* the current position.
however, if you're at the end, it inserts before the
last valid entry, instead of working like append() as
you'd expect. OR, if you just called rewind() and
insert() (to insert at the begining, right?) it works
like append() and sticks it at the end!! ARGH!!! so,
we've got to call next() after rewind() so we really
insert it at the front of the list. UGH! EVIL!!!
Derek Wright <[email protected]> 2004-12-23
*/
if( daemon_names.contains("COLLECTOR") ) {
daemon_names.deleteCurrent();
daemon_names.rewind();
daemon_names.next();
daemon_names.insert( "COLLECTOR" );
}
// start shared_port first for a cleaner startup
if( daemon_names.contains("SHARED_PORT") ) {
daemon_names.deleteCurrent();
daemon_names.rewind();
daemon_names.next();
daemon_names.insert( "SHARED_PORT" );
}
else if( SharedPortEndpoint::UseSharedPort() ) {
if( param_boolean("AUTO_INCLUDE_SHARED_PORT_IN_DAEMON_LIST",true) ) {
dprintf(D_ALWAYS,"Adding SHARED_PORT to DAEMON_LIST, because USE_SHARED_PORT=true (to disable this, set AUTO_INCLUDE_SHARED_PORT_IN_DAEMON_LIST=False)\n");
daemon_names.rewind();
daemon_names.next();
daemon_names.insert( "SHARED_PORT" );
}
}
daemons.ordered_daemon_names.create_union( daemon_names, false );
daemon_names.rewind();
while( (daemon_name = daemon_names.next()) ) {
if(daemons.FindDaemon(daemon_name) == NULL) {
if( dc_daemon_names.contains(daemon_name) ) {
new class daemon(daemon_name);
} else {
new class daemon(daemon_name, false);
}
}
}
} else {
daemons.ordered_daemon_names.create_union( dc_daemon_names, false );
for(int i = 0; default_daemon_list[i]; i++) {
new class daemon(default_daemon_list[i]);
}
}
}
开发者ID:zhangzhehust,项目名称:htcondor,代码行数:101,代码来源:master.cpp
示例16: nodns_enabled
static bool nodns_enabled()
{
return param_boolean("NO_DNS", false);
}
开发者ID:AlainRoy,项目名称:htcondor,代码行数:4,代码来源:ipv6_hostname.cpp
示例17: main_init
//.........这里部分代码省略.........
if ( daemons.SetupControllers() < 0 ) {
EXCEPT( "Daemon initialization failed" );
}
// Lookup the paths to all the daemons we now care about.
daemons.InitParams();
// Initialize our classad;
init_classad();
// Initialize the master entry in the daemons data structure.
daemons.InitMaster();
// Make sure if PrivSep is on we're not running as root
check_uid_for_privsep();
// open up the windows firewall
init_firewall_exceptions();
#if defined(WANT_CONTRIB) && defined(WITH_MANAGEMENT)
#if defined(HAVE_DLOPEN)
MasterPluginManager::Load();
#elif defined(WIN32)
load_master_mgmt();
#endif
MasterPluginManager::Initialize();
#endif
// Register admin commands
daemonCore->Register_Command( RESTART, "RESTART",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( RESTART_PEACEFUL, "RESTART_PEACEFUL",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( DAEMONS_OFF, "DAEMONS_OFF",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( DAEMONS_OFF_FAST, "DAEMONS_OFF_FAST",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( DAEMONS_OFF_PEACEFUL, "DAEMONS_OFF_PEACEFUL",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( DAEMONS_ON, "DAEMONS_ON",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( MASTER_OFF, "MASTER_OFF",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( MASTER_OFF_FAST, "MASTER_OFF_FAST",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( DAEMON_ON, "DAEMON_ON",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( DAEMON_OFF, "DAEMON_OFF",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( DAEMON_OFF_FAST, "DAEMON_OFF_FAST",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( DAEMON_OFF_PEACEFUL, "DAEMON_OFF_PEACEFUL",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( CHILD_ON, "CHILD_ON",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( CHILD_OFF, "CHILD_OFF",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( CHILD_OFF_FAST, "CHILD_OFF_FAST",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
daemonCore->Register_Command( SET_SHUTDOWN_PROGRAM, "SET_SHUTDOWN_PROGRAM",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
// Command handler for stashing the pool password
daemonCore->Register_Command( STORE_POOL_CRED, "STORE_POOL_CRED",
(CommandHandler)&store_pool_cred_handler,
"store_pool_cred_handler", NULL, CONFIG_PERM,
D_FULLDEBUG );
/*
daemonCore->Register_Command( START_AGENT, "START_AGENT",
(CommandHandler)admin_command_handler,
"admin_command_handler", 0, ADMINISTRATOR );
*/
daemonCore->RegisterTimeSkipCallback(time_skip_handler,0);
_EXCEPT_Cleanup = DoCleanup;
#if !defined(WIN32)
if( !dprintf_to_term_check() && param_boolean( "USE_PROCESS_GROUPS", true ) ) {
// If we're not connected to a terminal, start our own
// process group, unless the config file says not to.
setsid();
}
#endif
if( StartDaemons ) {
daemons.StartAllDaemons();
}
daemons.StartTimers();
}
开发者ID:zhangzhehust,项目名称:htcondor,代码行数:101,代码来源:master.cpp
示例18: cluster
UserProc::UserProc( STARTUP_INFO &s ) :
cluster( s.cluster ),
proc( s.proc ),
m_a_out( NULL ),
core_name( NULL ),
uid( s.uid ),
gid( s.gid ),
v_pid( s.virt_pid ),
pid( 0 ),
job_class( s.job_class ),
state( NEW ),
user_time( 0 ),
sys_time( 0 ),
exit_status_valid( FALSE ),
exit_status( 0 ),
ckpt_wanted( s.ckpt_wanted ),
soft_kill_sig( s.soft_kill_sig ),
new_ckpt_created( FALSE ),
ckpt_transferred( FALSE ),
core_created( FALSE ),
core_transferred( FALSE ),
exit_requested( FALSE ),
image_size( -1 ),
guaranteed_user_time( 0 ),
guaranteed_sys_time( 0 ),
pids_suspended( -1 )
{
MyString buf;
mode_t omask;
cmd = new char [ strlen(s.cmd) + 1 ];
strcpy( cmd, s.cmd );
// Since we are adding to the argument list, we may need to deal
// with platform-specific arg syntax in the user's args in order
// to successfully merge them with the additional args.
args.SetArgV1SyntaxToCurrentPlatform();
MyString args_errors;
if(!args.AppendArgsV1or2Raw(s.args_v1or2,&args_errors)) {
EXCEPT("ERROR: Failed to parse arguments string: %s\n%s",
args_errors.Value(),s.args_v1or2);
}
// set up environment as an object
MyString env_errors;
if(!env_obj.MergeFromV1or2Raw( s.env_v1or2,&env_errors )) {
EXCEPT("ERROR: Failed to parse environment string: %s\n%s",
env_errors.Value(),s.env_v1or2);
}
// add name of SMP slot (from startd) into environment
setSlotEnv(&env_obj);
/* Port regulation for user job */
int low_port, high_port;
// assume outgoing port range
if (get_port_range(TRUE, &low_port, &high_port) == TRUE) {
buf.formatstr( "_condor_LOWPORT=%d", low_port);
env_obj.SetEnv(buf.Value());
buf.formatstr( "_condor_HIGHPORT=%d", high_port);
env_obj.SetEnv(buf.Value());
}
/* end - Port regulation for user job */
if( param_boolean("BIND_ALL_INTERFACES", true) ) {
buf.formatstr( "_condor_BIND_ALL_INTERFACES=TRUE" );
} else {
buf.formatstr( "_condor_BIND_ALL_INTERFACES=FALSE" );
}
env_obj.SetEnv(buf.Value());
// Generate a directory where process can run and do its checkpointing
omask = umask(0);
buf.formatstr( "dir_%d", getpid() );
local_dir = new char [ buf.Length() + 1 ];
strcpy( local_dir, buf.Value() );
if (privsep_enabled()) {
// the Switchboard expects a full path to privsep_create_dir
MyString local_dir_path;
local_dir_path.formatstr("%s/%s", Execute, local_dir);
if (!privsep_create_dir(get_condor_uid(), local_dir_path.Value())) {
EXCEPT("privsep_create_dir failure");
}
if (chmod(local_dir_path.Value(), LOCAL_DIR_MODE) == -1) {
EXCEPT("chmod failure after privsep_create_dir");
}
}
else {
if( mkdir(local_dir,LOCAL_DIR_MODE) < 0 ) {
EXCEPT( "mkdir(%s,0%o)", local_dir, LOCAL_DIR_MODE );
}
}
(void)umask(omask);
// Now that we know what the local_dir is, put the path into
// the environment so the job knows where it is
MyString scratch_env;
//.........这里部分代码省略.........
开发者ID:AlainRoy,项目名称:htcondor,代码行数:101,代码来源:user_proc.cpp
示例19: init_firewall_exceptions
void init_firewall_exceptions() {
#ifdef WIN32
bool add_exception;
char *master_image_path, *schedd_image_path, *startd_image_path,
*dbmsd_image_path, *quill_image_path, *dagman_image_path,
*negotiator_image_path, *collector_image_path, *starter_image_path,
*shadow_image_path, *gridmanager_image_path, *gahp_image_path,
*gahp_worker_image_path, *credd_image_path,
*vmgahp_image_path, *kbdd_image_path, *hdfs_image_path, *bin_path;
const char* dagman_exe = "condor_dagman.exe";
WindowsFirewallHelper wfh;
add_exception = param_boolean("ADD_WINDOWS_FIREWALL_EXCEPTION", true);
if ( add_exception == false ) {
dprintf(D_FULLDEBUG, "ADD_WINDOWS_FIREWALL_EXCEPTION is false, skipping\n");
return;
}
// We use getExecPath() here instead of param() since it's
// possible the the Windows Service Control Manager
// (SCM) points to one location for the master (which
// is exec'd), while MASTER points to something else
// (and ignored).
master_image_path = getExecPath();
if ( !master_image_path ) {
dprintf(D_ALWAYS,
"WARNING: Failed to get condor_master image path.\n"
"Condor will not be excepted from the Windows firewall.\n");
return;
}
// We want to add exceptions for the SCHEDD and the STARTD
// so that (1) shadows can accept incoming connections on their
// command port and (2) so starters can do the same.
schedd_image_path = param("SCHEDD");
startd_image_path = param("STARTD");
// We to also add exceptions for Quill and DBMSD
quill_image_path = param("QUILL");
dbmsd_image_path = param("DBMSD");
// And add exceptions for all the other daemons, since they very well
// may need to open a listen port for mechanisms like CCB, or HTTPS
negotiator_image_path = param("NEGOTIATOR");
collector_image_path = param("COLLECTOR");
starter_image_path = param("STARTER");
shadow_image_path = param("SHADOW");
gridmanager_image_path = param("GRIDMANAGER");
gahp_image_path = param("CONDOR_GAHP");
gahp_worker_image_path = param("CONDOR_GAHP_WORKER");
credd_image_path = param("CREDD");
kbdd_image_path = param("KBDD");
hdfs_image_path = param("HDFS");
vmgahp_image_path = param("VM_GAHP_SERVER");
// We also want to add exceptions for the DAGMan we ship
// with Condor:
bin_path = param ( "BIN" );
if ( bin_path ) {
dagman_image_path = (char*) malloc (
strlen ( bin_path ) + strlen ( dagman_exe ) + 2 );
if ( dagman_image_path ) {
sprintf ( dagman_image_path, "%s\\%s", bin_path, dagman_exe );
}
free ( bin_path );
}
// Insert the master
if ( !SUCCEEDED(wfh.addTrusted(master_image_path)) ) {
dprintf(D_FULLDEBUG, "WinFirewall: unable to add %s to the "
"windows firewall exception list.\n",
master_image_path);
}
// Insert daemons needed on a central manager
if ( (daemons.FindDaemon("NEGOTIATOR") != NULL) && negotiator_image_path ) {
if ( !SUCCEEDED(wfh.addTrusted(negotiator_image_path)) ) {
dprintf(D_FULLDEBUG, "WinFirewall: unable to add %s to the "
"windows firewall exception list.\n",
negotiator_image_path);
}
}
if ( (daemons.FindDaemon("COLLECTOR") != NULL) && collector_image_path ) {
if ( !SUCCEEDED(wfh.addTrusted(collector_image_path)) ) {
dprintf(D_FULLDEBUG, "WinFirewall: unable to add %s to the "
"windows firewall exception list.\n",
collector_image_path);
}
}
// Insert daemons needed on a submit node
if ( (daemons.FindDaemon("SCHEDD") != NULL) && schedd_image_path ) {
// put in schedd
//.........这里部分代码省略.........
开发者ID:zhangzhehust,项目名称:htcondor,代码行数:101,代码来源:master.cpp
示例20: check_execute_dir_perms
static void
check_execute_dir_perms( char const *exec_path )
{
struct stat st;
if (stat(exec_path, &st) < 0) {
EXCEPT( "stat exec path (%s), errno: %d (%s)", exec_path, errno,
strerror( errno ) );
}
// in PrivSep mode, the EXECUTE directory must be trusted by
// the PrivSep kernel. we can't determine this ourselves in general
// (since the PrivSep Switchboard can be recompiled to trust
// non-root users), so we'll have to be satisfied for now that we
// could stat its path
//
if (privsep_enabled()) {
return;
}
// the following logic sets up the new_mode variable, depending
// on the execute dir's current perms. if new_mode is set non-zero,
// it means we need to do a chmod
//
mode_t new_mode = 0;
#if defined(WIN32)
mode_t desired_mode = _S_IREAD | _S_IWRITE;
if ((st.st_mode & desired_mode) != desired_mode) {
new_mode = st.st_mode | desired_mode;
}
#else
// we want to avoid having our execute directory world-writable
// if possible. it's possible if the execute directory is owned
// by condor and either:
// - we're not switching UIDs. in this case, job sandbox dirs
// will just be owned by the condor UID, so we just need
// owner-writability
// - there's no root squash on the execute dir (since then we
// can do a mkdir as the condor UID then a chown to the job
// owner UID)
//
// additionally, the GLEXEC_JOB feature requires world-writability
// on the execute dir
//
bool glexec_job = param_boolean("GLEXEC_JOB", false);
if ((st.st_uid == get_condor_uid()) &&
(!can_switch_ids() || not_root_squashed(exec_path)) &&
|
请发表评论