Merge branch 'master' into thgeneric
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 3 Nov 2011 15:57:26 +0000 (16:57 +0100)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 3 Nov 2011 15:57:26 +0000 (16:57 +0100)
Conflicts:
sfa/methods/CreateSliver.py

1  2 
setup.py
sfa/methods/CreateSliver.py
sfa/plc/aggregate.py

diff --combined setup.py
+++ b/setup.py
@@@ -12,8 -12,8 +12,8 @@@ from distutils.core import setu
  bins = [ 
      'config/sfa-config-tty',
      'config/gen-sfa-cm-config.py',
 -    'sfa/plc/sfa-import-plc.py', 
 -    'sfa/plc/sfa-nuke-plc.py', 
 +    'sfa/importer/sfa-import-plc.py', 
 +    'sfa/importer/sfa-nuke-plc.py', 
      'sfa/server/sfa-ca.py', 
      'sfa/server/sfa-start.py', 
      'sfa/server/sfa-clean-peer-records.py', 
@@@ -44,7 -44,6 +44,7 @@@ package_dirs = 
      'sfa/generic',
      'sfa/managers',
      'sfa/managers/vini',
 +    'sfa/importer',
      'sfa/plc',
      'sfa/rspecs',
      'sfa/rspecs/elements',
@@@ -61,6 -60,7 +61,7 @@@ data_files = [('/etc/sfa/', [ 'config/a
                                'config/registries.xml',
                                'config/default_config.xml',
                                'config/sfi_config',
+                               'config/topology',
                                'sfa/managers/pl/pl.rng',
                                'sfa/trust/credential.xsd',
                                'sfa/trust/top.xsd',
@@@ -4,6 -4,7 +4,7 @@@ from sfa.util.method import Metho
  from sfa.util.parameter import Parameter, Mixed
  from sfa.util.sfatablesRuntime import run_sfatables
  from sfa.trust.credential import Credential
+ from sfa.rspecs.rspec import RSpec
  
  class CreateSliver(Method):
      """
@@@ -42,6 -43,8 +43,6 @@@
              msg = "'users' musst be specified and cannot be null. You may need to update your client." 
              raise SfaInvalidArgument(name='users', extra=msg)  
  
 -        manager = self.api.get_interface_manager()
 -        
          # flter rspec through sfatables
          if self.api.interface in ['aggregate']:
              chain_name = 'INCOMING'
@@@ -49,5 -52,9 +50,9 @@@
              chain_name = 'FORWARD-INCOMING'
          self.api.logger.debug("CreateSliver: sfatables on chain %s"%chain_name)
          rspec = run_sfatables(chain_name, hrn, origin_hrn, rspec)
-         return self.api.manager.CreateSliver(self.api, slice_xrn, creds, rspec, users, call_id)
+         slivers = RSpec(rspec).version.get_nodes_with_slivers()
+         if slivers:
 -            result = manager.CreateSliver(self.api, slice_xrn, creds, rspec, users, call_id)
++            result = self.api.manager.CreateSliver(self.api, slice_xrn, creds, rspec, users, call_id)
+         else:
+             result = rspec     
+         return result
diff --combined sfa/plc/aggregate.py
@@@ -6,7 -6,7 +6,7 @@@ from sfa.rspecs.rspec import RSpe
  from sfa.rspecs.elements.link import Link
  from sfa.rspecs.elements.interface import Interface
  
- from sfa.managers.vini.topology import PhysicalLinks
+ from sfa.util.topology import Topology
  from sfa.rspecs.version_manager import VersionManager
  from sfa.plc.vlink import get_tc_rate
  
@@@ -29,13 -29,13 +29,13 @@@ class Aggregate
  
      def prepare_sites(self, filter={}, force=False):
          if not self.sites or force:  
 -            for site in self.api.plshell.GetSites(self.api.plauth, filter):
 +            for site in self.api.driver.GetSites(filter):
                  self.sites[site['site_id']] = site
      
      def prepare_nodes(self, filter={}, force=False):
          if not self.nodes or force:
              filter.update({'peer_id': None})
 -            nodes = self.api.plshell.GetNodes(self.api.plauth, filter)
 +            nodes = self.api.driver.GetNodes(filter)
              site_ids = []
              interface_ids = []
              tag_ids = []
  
      def prepare_interfaces(self, filter={}, force=False):
          if not self.interfaces or force:
 -            for interface in self.api.plshell.GetInterfaces(self.api.plauth, filter):
 +            for interface in self.api.driver.GetInterfaces(filter):
                  self.interfaces[interface['interface_id']] = interface
  
      def prepare_links(self, filter={}, force=False):
 +        # we're aobut to deprecate sfa_aggregate_type, need to get this right 
 +        # with the generic framework
          if not self.links or force:
              if not self.api.config.SFA_AGGREGATE_TYPE.lower() == 'vini':
                  return
  
-             for (site_id1, site_id2) in PhysicalLinks:
+             topology = Topology() 
+             for (site_id1, site_id2) in topology:
                  link = Link()
                  if not site_id1 in self.sites or site_id2 not in self.sites:
                      continue
  
      def prepare_node_tags(self, filter={}, force=False):
          if not self.node_tags or force:
 -            for node_tag in self.api.plshell.GetNodeTags(self.api.plauth, filter):
 +            for node_tag in self.api.driver.GetNodeTags(filter):
                  self.node_tags[node_tag['node_tag_id']] = node_tag
  
      def prepare_pl_initscripts(self, filter={}, force=False):
          if not self.pl_initscripts or force:
              filter.update({'enabled': True})
 -            for initscript in self.api.plshell.GetInitScripts(self.api.plauth, filter):
 +            for initscript in self.api.driver.GetInitScripts(filter):
                  self.pl_initscripts[initscript['initscript_id']] = initscript
  
      def prepare(self, slice = None, force=False):
          if slice_xrn:
              slice_hrn, _ = urn_to_hrn(slice_xrn)
              slice_name = hrn_to_pl_slicename(slice_hrn)
 -            slices = self.api.plshell.GetSlices(self.api.plauth, slice_name)
 +            slices = self.api.driver.GetSlices(slice_name)
              if slices:
                  slice = slices[0]
              self.prepare(slice=slice)
          # add slivers
          if slice_xrn and slice:
              slivers = []
 -            tags = self.api.plshell.GetSliceTags(self.api.plauth, slice['slice_tag_ids'])
 +            tags = self.api.driver.GetSliceTags(slice['slice_tag_ids'])
  
              # add default tags
              for tag in tags: