예제 #1
0
 def set_environ(self):
     self.environ = TraitEnvironment(self.conn, self.suite, self.name)
     while self.env_element.hasChildNodes():
         del self.env_element.childNodes[0]
     for key, value in self.environ.items():
         var_element = TraitVariableElement(self.name, key, value)
         self.env_element.appendChild(var_element)
예제 #2
0
 def set_trait(self, trait):
     self.current_trait = trait
     self.environ = TraitEnvironment(self.conn, self.suite, trait)
     self._parents.set_trait(trait)
     self._packages.set_trait(trait)
     self._templates.set_trait(trait)
     self._scripts.set_trait(trait)
예제 #3
0
 def delete_trait(self, trait):
     environ = TraitEnvironment(self.conn, self.suite, trait)
     environ.clear()
     self._templates.delete_trait(trait)
     self._parents.delete_trait(trait)
     self._packages.delete_trait(trait)
     self._scripts.delete_trait(trait)
     self._traits.set_clause([('trait', trait)])
     self._traits.delete()
     self._traits.clear(clause=True)
예제 #4
0
 def insert_trait(self, path, suite=None):
     #tar = TraitTarFile(path)
     #trait = tar.get_trait()
     trait = self.parse_trait_xml(path, suite=suite)
     all = Set([x.trait for x in self._alltraits.select()])
     suite_traits = Set([x.trait for x in self._traits.select()])
     parents = Set(trait.parents)
     debug("parents for trait %s, %s" % (trait.name, parents))
     if not parents.issubset(suite_traits):
         raise UnbornError, 'Parent Unborn'        
     if trait.name in suite_traits:
         raise Error, 'trait exists'
     idata ={'trait' : trait.name}
     if trait.name not in all:
         self._alltraits.insert(data=idata)
     description_path = os.path.join(path, 'description.txt')
     if os.path.isfile(description_path):
         idata['description'] = file(description_path).read()            
     if trait.name not in suite_traits:
         self._traits.insert(data=idata)
     else:
         raise RuntimeError, '%s already there' % trait.name
     lasttrait = self.current_trait
     self._parents.set_trait(trait.name)
     self._packages.set_trait(trait.name)
     self._templates.set_trait(trait.name)
     self._scripts.set_trait(trait.name)
     self._parents.insert_parents(trait.parents)
     for package, action in trait.packages:
         self._packages.insert_package(package, action)
     n = 0
     for template, data in trait.templates:
         #print template, data
         #templatefile = tar.get_template(data['package'], template)
         template_id = template.replace('/', '-slash-')
         template_filename = os.path.join(path, 'template-%s' % template_id)
         if not os.path.exists(template_filename):
             print "in suite %s trait %s" % (suite, trait.name)
             print "exported template %s not converted yet" % template
             template_filename = os.path.join(path, 'template-%d' % n)
         templatefile = file(template_filename)
         idata = {'template' : template}
         #print idata
         idata.update(data)
         #print idata
         self._templates.insert_template(idata, templatefile)
         n += 1
     for script in trait.scripts:
         #scriptfile = tar.get_script(script)
         scriptfile = file(os.path.join(path, 'script-%s' % script))
         self._scripts.insert_script(script, scriptfile)
     environ = TraitEnvironment(self.conn, suite, trait.name)
     environ.update(trait.environ)
     self.set_trait(lasttrait)