refactored
[sfa.git] / sfa / openstack / osaggregate.py
index 78b0585..045a456 100644 (file)
@@ -60,28 +60,42 @@ class OSAggregate:
     def __init__(self, driver):
         self.driver = driver
 
+    def get_availability_zones(self):
+        zones = self.driver.shell.nova_manager.dns_domains.domains()
+        if not zones:
+            zones = ['cloud']
+        else:
+            zones = [zone.name for zone in zones]
+        return zones
+
+
+    def describe(self, urns, version=None, options={}):
+         
+        return {}
+
     def get_rspec(self, slice_xrn=None, version=None, options={}):
         version_manager = VersionManager()
         version = version_manager.get_version(version)
         if not slice_xrn:
             rspec_version = version_manager._get_version(version.type, version.version, 'ad')
-            nodes = self.get_aggregate_nodes()
+            rspec = self.get_aggregate_rspec(rspec_version, options)
         else:
             rspec_version = version_manager._get_version(version.type, version.version, 'manifest')
-            nodes = self.get_slice_nodes(slice_xrn)
-        rspec = RSpec(version=rspec_version, user_options=options)
+            rspec = self.get_slice_rsepc(slice_xrn, rspec_version, options)
+
+        return rspec
+
+    def get_aggregate_rspec(self, version, options={}):
+        rspec = RSpec(version=version, user_options=options)
+        nodes = self.get_aggregate_nodes()
         rspec.version.add_nodes(nodes)
         return rspec.toxml()
 
-    def get_availability_zones(self):
-        # essex release
-        zones = self.driver.shell.nova_manager.dns_domains.domains()
-
-        if not zones:
-            zones = ['cloud']
-        else:
-            zones = [zone.name for zone in zones]
-        return zones
+    def get_slice_rspec(self, xrn, version, options={}):
+        rspec = RSpec(version=version, user_options=options)
+        nodes = self.get_slice_nodes(slice_xrn)
+        rspec.version.add_nodes(nodes)
+        return rspec.toxml() 
 
     def get_slice_nodes(self, slice_xrn):
         # update nova connection
@@ -94,7 +108,6 @@ class OSAggregate:
         rspec_nodes = []
         for instance in instances:
             rspec_node = Node()
-            
             #TODO: find a way to look up an instances availability zone in essex
             #if instance.availability_zone:
             #    node_xrn = OSXrn(instance.availability_zone, 'node')