ClassAd Conversion Todo List
This is the set of tasks that need to be done to convert from old to new ClassAds . Code changes for this ToDo list should be associated with ticket #619 .
Pre-Transition Tasks
-
Check in Varghese's
ClassAdList
class that works with new
ClassAds
.
DONE
-
Add a method to Varghese's new
ClassAdList
to move an ad from one list to another.
DONE
-
Add or fix compatibility for following old
ClassAd
methods:
-
Block
#1
[3 days]
:
- ClassAd::Assign() DONE
- ClassAd::LookupString(MyString) DONE
- ClassAd::Insert(const char*) DONE
- ClassAd::Insert(const char*,ExprTree*) DONE
- ClassAd::Lookup() DONE
- ClassAd::put() Theoretically code complete, needs testing.
- ClassAd::initFromStream() Theoretically code complete, needs testing.
- ClassAd::AssignExpr() DONE
- ClassAd::clear() DONE
- ClassAd::EvalString(const char*, const class AttrList*, char**) DONE
- ClassAd::EvalString(const char*, const class AttrList*, MyString&) DONE
- ClassAd::NextNameOriginal() DONE
- ClassAd::ResetName() DONE
-
Block
#2
[4 days]
:
- ClassAd::sPrintExpr() DONE
- ClassAd::NextExpr() DONE
- ClassAd::NextDirtyExpr() DONE
- ClassAd::SetDirtyFlag() DONE
- ClassAd::GetDirtyFlag() DONE
- ClassAd::ClearAllDirtyFlags() DONE
- ClassAd::GetReferences() INCOMPLETE
- ClassAd::ChainCollapse() DONE
- ClassAd::EscapeStringValue() DONE, will need callsite changes
- ClassAd::CopyAttribute() DONE
- ClassAd::fPrintAsXML() DONE
- ClassAd::sPrintAsXML() DONE
- ClassAd::IsValidAttrValue() DONE
- ExprTree::DeepCopy() DONE
- ClassAd::initFromString() DONE
- ClassAd::GetExprReferences(const char*, StringList&, StringList&)
-
Block
#1
[3 days]
:
-
Write helper functions for these methods which we can't emulate transparently
[4 hours]
:
- ExprTree::PrintToNewStr() DONE
- ExprTree::PrintToStr() DONE
- ExprTree::EvalTree() DONE
-
Write compatibility versions of these free-standing functions that are part of old
ClassAds
:
- int Parse(const char*s, MyString&name, ExprTree*&tree, int*pos = NULL) DONE
- int ParseClassAdRvalExpr(const char*s, ExprTree*&tree, int*pos = NULL) DONE
- const char * ExprTreeToString( ExprTree*expr ) DONE
- bool EvalBool(ClassAd * ad, const char * constraint) DONE
- bool EvalBool(AttrList * ad, ExprTree * tree) DONE
- bool ClassAdsAreSame( ClassAd * ad1, ClassAd * ad2, StringList * ignored_attrs=NULL, bool verbose=false ) DONE
- bool IsAMatch(const ClassAd * ad1, const ClassAd * ad2) DONE
- bool IsAHalfMatch(const ClassAd * request, const ClassAd * offer) DONE
-
Add
ClassAds
functions that are in old
ClassAds
but not in new
ClassAds
[2 days]
:
- Note: these are known as FunctionStringlistFOO, and are in condor_ast.cpp
- stringListSize()
- stringListSum()
- stringListAve()
- stringListMin()
- stringListMax()
- stringListMember()
- stringListIMember()
- stringListRegexpMember()
-
#952
- Arrange header and make files so that switching between old and new
ClassAds
can be done with the flip of a switch.
[1 day]
.
-
Fix up the one or two callsites in matchmaker.cpp that move an ad from one
ClassAdList
to another
DONE
.
-
The following methods will need some fixing at the callsites
[5 days]
:
- ExprTree::RArg() DONE
- ExprTree::LArg() DONE
- ExprTree::PrintToNewStr() DONE
- ExprTree::EvalTree() DONE
- ClassAd(char*,char) DONE
- ExprTree::PrintToStr() DONE
- ExprTree::MyType() DONE
- ClassAd::ExchangeExpressions() DONE
- ClassAd::unchain() DONE
- ClassAd::RestoreChain() DONE
- AttrList::put() DONE
- AttrList::initFromStream() DONE
- AttrList::SetPrivateAttributesInvisible() causes private attributes to be omitted from subsequent calls to fPrint(), sPrint(), dPrint() and putAttrList(). SetPrivateAttributesInvisible() needs to be added to CompatClassAd and its value needs to affect those subsequent calls. DONE
Post-Transition Tasks
-
As time permits, rewrite callsites to make
CompatClassAd
unnecessary. The modified callsites can either use native new
ClassAd
methods or newly-written free-standing functions.
- Replace all usage of attribute CurrentTime with ClassAd function time(). This can start before the flag day.