Merge branch 'geni-v3' of ssh://git.onelab.eu/git/sfa into geni-v3
authorLoic Baron <loic.baron@lip6.fr>
Wed, 23 Jul 2014 13:01:29 +0000 (15:01 +0200)
committerLoic Baron <loic.baron@lip6.fr>
Wed, 23 Jul 2014 13:01:29 +0000 (15:01 +0200)
Conflicts:
sfa/rspecs/rspec.py

1  2 
sfa/rspecs/rspec.py
testbeds/iotlab/tests/tests_rspecs/iotlab_avakian_slice_iotlab.rspec

diff --combined sfa/rspecs/rspec.py
@@@ -3,20 -3,21 +3,22 @@@ from datetime import datetime, timedelt
  
  from sfa.util.xml import XML, XpathFilter
  from sfa.util.faults import InvalidRSpecElement, InvalidRSpec
+ from sfa.util.sfatime import SFATIME_FORMAT
  
  from sfa.rspecs.rspec_elements import RSpecElement, RSpecElements 
  from sfa.rspecs.version_manager import VersionManager
  
  class RSpec:
   
-     def __init__(self, rspec="", version=None, user_options={}, ttl=60):
 -    def __init__(self, rspec="", version=None, user_options=None):
++    def __init__(self, rspec="", version=None, user_options=None, ttl=60):
+         if user_options is None: user_options={}
          self.header = '<?xml version="1.0"?>\n'
          self.template = """<RSpec></RSpec>"""
          self.version = None
          self.xml = XML()
          self.version_manager = VersionManager()
          self.user_options = user_options
 +        self.ttl = ttl
          self.elements = {}
          if rspec:
              if version:
          else:
              raise InvalidRSpec("No RSpec or version specified. Must specify a valid rspec string or a valid version") 
  
 -    def create(self, version=None):
 +    def create(self, version=None, ttl=60):
          """
          Create root element
 +        ttl: time to live in minutes, this will determine the expires tag of the RSpec
          """
          self.version = self.version_manager.get_version(version)
          self.namespaces = self.version.namespaces
          self.parse_xml(self.version.template, self.version) 
-         # eg. 2011-03-23T19:53:28Z 
-         date_format = '%Y-%m-%dT%H:%M:%SZ'
          now = datetime.utcnow()
-         generated_ts = now.strftime(date_format)
-         expires_ts = (now + timedelta(minutes=self.ttl)).strftime(date_format) 
+         generated_ts = now.strftime(SFATIME_FORMAT)
 -        expires_ts = (now + timedelta(hours=1)).strftime(SFATIME_FORMAT) 
++        expires_ts = (now + timedelta(minutes=self.ttl)).strftime(SFATIME_FORMAT) 
          self.xml.set('expires', expires_ts)
          self.xml.set('generated', generated_ts)
  
              raise InvalidRSpecElement(element_type, extra=msg)
          return self.elements[element_type]
  
-     def get(self, element_type, filter={}, depth=0):
+     def get(self, element_type, filter=None, depth=0):
+         if filter is None: filter={}
          elements = self.get_elements(element_type, filter)
          elements = [self.xml.get_element_attributes(elem, depth=depth) for elem in elements]
          return elements
  
-     def get_elements(self, element_type, filter={}):
+     def get_elements(self, element_type, filter=None):
          """
          search for a registered element
          """
+         if filter is None: filter={}
          if element_type not in self.elements:
              msg = "Unable to search for element %s in rspec, expath expression not found." % \
                     element_type
@@@ -1,5 -1,5 +1,5 @@@
  <?xml version="1.0"?>
--<RSpec type="SFA" expires="2013-02-27T15:14:10Z" generated="2013-02-27T14:14:10Z">
++<RSpec type="SFA" expires="2014-52-27T15:14:10Z" generated="2013-05-19T14:14:10Z">
    <network name="iotlab">
      <node component_manager_id="urn:publicid:IDN+iotlab+authority+sa" component_id="urn:publicid:IDN+iotlab+node+wsn430-12.devlille.iot-lab.info" boot_state="Alive" component_name="wsn430-12.devlille.iot-lab.info" site_id="urn:publicid:IDN+senslab+authority+sa">
        <hostname>wsn430-12.devlille.iot-lab.info</hostname>
@@@ -16,7 -16,7 +16,7 @@@
        <sliver/>
      </node>
    </network>
-- <lease slice_id="urn:publicid:IDN+iotlab+slice+sandrine_slice" start_time="1405078836" duration="20">
++ <lease slice_id="urn:publicid:IDN+ple:upmc+slice+myslicedemo" start_time="1400604923" duration="20">
        <node component_id="urn:publicid:IDN+iotlab+node+a8-11.devgrenoble.iot-lab.info"/>
        <node component_id="urn:publicid:IDN+iotlab+node+wsn430-12.devlille.iot-lab.info"/>
   </lease>