bool BaseResource::Invalidate () { ClassAd ad; /* Set the correct types */ SetMyTypeName ( ad, GRID_ADTYPE ); /* We only want to invalidate this resource. Using the tuple (HashName,SchedName,Owner) as unique id. */ std::string line; formatstr( line, "((TARGET.%s =?= \"%s\") && (TARGET.%s =?= \"%s\") && " "(TARGET.%s =?= \"%s\") && (TARGET.%s =?= \"%s\"))", ATTR_HASH_NAME, GetHashName (), ATTR_SCHEDD_NAME, ScheddObj->name (), ATTR_SCHEDD_IP_ADDR, ScheddObj->addr (), ATTR_OWNER, myUserName ); ad.AssignExpr ( ATTR_REQUIREMENTS, line.c_str() ); ad.Assign( ATTR_HASH_NAME, GetHashName() ); ad.Assign( ATTR_SCHEDD_NAME, ScheddObj->name() ); ad.Assign( ATTR_SCHEDD_IP_ADDR, ScheddObj->addr() ); ad.Assign( ATTR_OWNER, myUserName ); dprintf ( D_FULLDEBUG, "BaseResource::InvalidateResource: \n%s\n", line.c_str() ); return daemonCore->sendUpdates( INVALIDATE_GRID_ADS, &ad, NULL, true ) > 0; }
bool mayUserForceRm( ) { const char * PARAM_ALLOW_FORCE_RM = "ALLOW_FORCE_RM"; char* tmp = param( PARAM_ALLOW_FORCE_RM ); if( tmp == NULL) { // Not present. Assume TRUE (old behavior). return true; } ClassAd tmpAd; const char * TESTNAME = "test"; if(tmpAd.AssignExpr(TESTNAME, tmp) == FALSE) { // Error parsing, most likely. Warn and assume TRUE. fprintf(stderr, "The configuration setting %s may be invalid. Treating as TRUE.\n", PARAM_ALLOW_FORCE_RM); free(tmp); return true; } free(tmp); int is_okay = 0; if(tmpAd.EvalBool(TESTNAME, 0, is_okay)) { return is_okay; } else { // Something went wrong. May be undefined because // we need a job classad. Assume TRUE. return true; } }
int LogSetAttribute::Play(void *data_structure) { ClassAdHashTable *table = (ClassAdHashTable *)data_structure; int rval; ClassAd *ad = 0; if (table->lookup(HashKey(key), ad) < 0) return -1; if (value_expr) { // Such a shame, do we really need to make a // copy of value_expr here? Seems like we could just // assign it and then set value_expr to NULL and avoid // copying a parse tree, since after we Play it I doubt // this class does anything more with value_expr beyond // deallocating it. - Todd 11/13 <*****@*****.**> ExprTree * pTree = value_expr->Copy(); rval = ad->Insert(name, pTree, false); } else { rval = ad->AssignExpr(name, value); } ad->SetDirtyFlag(name, is_dirty); #if defined(HAVE_DLOPEN) ClassAdLogPluginManager::SetAttribute(key, name, value); #endif return rval; }
int pseudo_set_job_attr( const char *name, const char *expr, bool log ) { RemoteResource *remote; if (parallelMasterResource == NULL) { remote = thisRemoteResource; } else { remote = parallelMasterResource; } if(Shadow->updateJobAttr(name,expr,log)) { dprintf(D_SYSCALLS,"pseudo_set_job_attr(%s,%s) succeeded\n",name,expr); ClassAd *ad = remote->getJobAd(); ASSERT(ad); ad->AssignExpr(name,expr); return 0; } else { dprintf(D_SYSCALLS,"pseudo_set_job_attr(%s,%s) failed\n",name,expr); return -1; } }
int LogSetAttribute::Play(void *data_structure) { ClassAdHashTable *table = (ClassAdHashTable *)data_structure; int rval; ClassAd *ad = 0; if (table->lookup(HashKey(key), ad) < 0) return -1; if (value_expr) { ExprTree * pTree = value_expr->Copy(); rval = ad->Insert(name, pTree, false); } else { rval = ad->AssignExpr(name, value); } ad->SetDirtyFlag(name, is_dirty); #if defined(HAVE_DLOPEN) ClassAdLogPluginManager::SetAttribute(key, name, value); #endif return rval; }
bool BaseCodec::mapToClassAd(AttributeMapType& _map, ClassAd& ad, string& text) { for (AttributeMapIterator entry = _map.begin(); _map.end() != entry; entry++) { const char* name = entry->first.c_str(); if (isKeyword(name)) { text = "Reserved ClassAd keyword cannot be an attribute name: "+ entry->first; return false; } AviaryAttribute* value = entry->second; switch (value->getType()) { case AviaryAttribute::INTEGER_TYPE: ad.Assign(name, atoi(value->getValue())); break; case AviaryAttribute::FLOAT_TYPE: ad.Assign(name, atof(value->getValue())); break; case AviaryAttribute::STRING_TYPE: ad.Assign(name, value->getValue()); break; case AviaryAttribute::EXPR_TYPE: ad.AssignExpr(name, value->getValue()); break; default: dprintf(D_FULLDEBUG, "Warning: Unknown/unsupported type in map for attribute '%s'\n", name); } } // // debug // if (IsFulldebug(D_FULLDEBUG)) { // ad.dPrint(D_FULLDEBUG|D_NOHEADER); // } return true; }