= XML Schemas = The schemas for CADAC are broken up into very small, reusable pieces. The main reasons for this is to allow reuse of element for the web service (e.g., validating small POST messages), and to map them to classes that will implement the data types. == List of Schemas == * [http://cadac.sdsc.edu/schema/tag.xsd tag.xsd] * [http://cadac.sdsc.edu/schema/link.xsd link.xsd] * [http://cadac.sdsc.edu/schema/parameter.xsd parameter.xsd] * [http://cadac.sdsc.edu/schema/program.xsd program.xsd] * [http://cadac.sdsc.edu/schema/userfield.xsd userfield.xsd] * [http://cadac.sdsc.edu/schema/run.xsd run.xsd] == {{{tag.py}}} == {{{ >>> import tag >>> t = tag.Tag('grad','rpwagner') >>> print t.toxml() grad >>> u = tag.Tag('grad2','dcollins') >>> tl = tag.TagList([t,u]) >>> print tl.toxml() grad grad2 }}} == {{{link.py}}} == {{{ >>> import link >>> l = link.LinkType('Computer','Cobalt','http://ncsa.uiuc.edu') >>> print l.toxml() Cobalt }}} == {{{parameter.py}}} == {{{ >>> import parameter >>> p = parameter.Parameter('cosmo',1.0,'http://lca.ucsd.edu') >>> print p.toxml() 1.0 >>> q = parameter.Parameter('gosmo',2.0,'http://ppcluster.ucsd.edu') >>> pl = parameter.ParameterList([p,q]) >>> print pl.toxml() 1.0 2.0 }}} == {{{program.py}}} == {{{ >>> import program >>> p = program.Program('Enzo',1.0,'http://lca.ucsd.edu/enzo') >>> print p.toxml() Enzo }}} == {{{userfield.py}}} == {{{ >>> import userfield >>> u = userfield.UserField('mach',2.0) >>> print u.toxml() 2.0 >>> v = userfield.UserField('clfd',0.125) >>> ul = userfield.UserFieldList([u,v]) >>> print ul.toxml() 2.0 0.125 }}} == Long Winded Demo == {{{ >>> import cadac >>> ts = [] >>> for i in range(0,4): ... ts.append(cadac.Tag(i,'rpwagner')) ... >>> tl = cadac.TagList(ts) >>> print tl.toxml() 0 1 2 3 >>> ps = [] >>> for i in range(0,3): ... ps.append(cadac.Parameter('param'+str(i),i,'http://lca.ucsd.edu/enzo/param'+str(i))) ... >>> pl = cadac.ParameterList(ps) >>> print pl.toxml() 0 1 2 >>> p = cadac.Program('Enzo',1052,'svn://mngrid.ucds.edu/Enzo/trunk/devel/Enzo') >>> us = [] >>> for i in range(0,5): ... us.append(cadac.UserField('mydat'+str(i),10.4*i)) ... >>> ul = cadac.UserFieldList(us) >>> print ul.toxml() 0.0 10.4 20.8 31.2 41.6 >>> u = cadac.User('rpwagner','http://lca.ucsd.edu/projects/rpwagner') >>> c = cadac.Computer('ppcluster','http://ppcluster.ucsd.edu') >>> r1 = cadac.Run('r1',c,p,u,ul,tl,pl,ToDo='Way too much!',Comments='Disabled') >>> r2 = cadac.Run('r1',c,p,u,ul,tl,ToDo='Way too much!',Comments='Disabled',Nodes=2,TasksPerNode=8,Account='MUT') >>> print r1.toxml() r1 ppcluster Enzo rpwagner Way too much! Disabled 0.0 10.4 20.8 31.2 41.6 0 1 2 3 0 1 2 >>> print r2.toxml() r1 ppcluster Enzo rpwagner MUT Way too much! 2 Disabled 8 0.0 10.4 20.8 31.2 41.6 0 1 2 3 >>> print r1.totuple() ('Run', [('Name', 'r1'), ('Computer', 'ppcluster', {'url': 'http://ppcluster.ucsd.edu'}), ('Program', 'Enzo', {'url': 'svn://mngrid.ucds.edu/Enzo/trunk/devel/Enzo', 'version': 1052}), ('User', 'rpwagner', {'url': 'http://lca.ucsd.edu/projects/rpwagner'}), ('ToDo', 'Way too much!'), ('Comments', 'Disabled'), ('UserFieldList', [('UserField', '0.0', {'name': 'mydat0'}), ('UserField', '10.4', {'name': 'mydat1'}), ('UserField', '20.8', {'name': 'mydat2'}), ('UserField', '31.2', {'name': 'mydat3'}), ('UserField', '41.6', {'name': 'mydat4'})]), ('TagList', [('Tag', '0', {'user': 'rpwagner'}), ('Tag', '1', {'user': 'rpwagner'}), ('Tag', '2', {'user': 'rpwagner'}), ('Tag', '3', {'user': 'rpwagner'})]), ('ParameterList', [('Parameter', '0', {'url': 'http://lca.ucsd.edu/enzo/param0', 'name': 'param0'}), ('Parameter', '1', {'url': 'http://lca.ucsd.edu/enzo/param1', 'name': 'param1'}), ('Parameter', '2', {'url': 'http://lca.ucsd.edu/enzo/param2', 'name': 'param2'})])]) >>> print r1.totuple(fmt='short') ('Run', [('Name', 'r1'), ('Computer', 'ppcluster', {'url': 'http://ppcluster.ucsd.edu'}), ('Program', 'Enzo', {'url': 'svn://mngrid.ucds.edu/Enzo/trunk/devel/Enzo', 'version': 1052}), ('User', 'rpwagner', {'url': 'http://lca.ucsd.edu/projects/rpwagner'})]) >>> rl = cadac.RunList([r1,r2]) >>> print rl.toxml() r1 ppcluster Enzo rpwagner r1 ppcluster Enzo rpwagner MUT 2 8 >>> }}}