use 'notready' status instead of unknown
[sfa.git] / sfa / openstack / nova_driver.py
index 3ddf783..50112cd 100644 (file)
@@ -8,7 +8,7 @@ from sfa.util.faults import MissingSfaInfo, UnknownSfaType, \
 from sfa.util.sfalogging import logger
 from sfa.util.defaultdict import defaultdict
 from sfa.util.sfatime import utcparse, datetime_to_string, datetime_to_epoch
-from sfa.util.xrn import Xrn, hrn_to_urn, get_leaf, urn_to_sliver_id
+from sfa.util.xrn import Xrn, hrn_to_urn, get_leaf
 from sfa.openstack.osxrn import OSXrn, hrn_to_os_slicename, hrn_to_os_tenant_name
 from sfa.util.cache import Cache
 from sfa.trust.credential import Credential
@@ -399,9 +399,7 @@ class NovaDriver(Driver):
             raise SliverDoesNotExist("You have not allocated any slivers here") 
         
         result = {}
-        top_level_status = 'unknown'
-        if instances:
-            top_level_status = 'ready'
+        top_level_status = 'ready'
         result['geni_urn'] = slice_urn
         result['plos_login'] = 'root'
         # do we need real dates here? 
@@ -418,15 +416,19 @@ class NovaDriver(Driver):
             res['plos_created_at'] = datetime_to_string(utcparse(instance.created))    
             res['plos_boot_state'] = instance.status
             res['plos_sliver_type'] = self.shell.nova_manager.flavors.find(id=instance.flavor['id']).name 
-            sliver_id =  Xrn(slice_urn).get_sliver_id(instance.id)
-            res['geni_urn'] = sliver_id
+            res['geni_urn'] =  Xrn(slice_urn, type='slice', id=instance.id).get_urn()
 
             if instance.status.lower() == 'active':
                 res['boot_state'] = 'ready'
                 res['geni_status'] = 'ready'
+            elif instance.status.lower() == 'error':
+                res['boot_state'] = 'failed'
+                res['geni_status'] = 'failed'
+                top_level_status = 'failed'
             else:
-                res['boot_state'] = 'unknown'  
-                res['geni_status'] = 'unknown'
+                res['boot_state'] = 'notready'  
+                res['geni_status'] = 'notready'
+                top_level_status = 'notready'
             resources.append(res)
             
         result['geni_status'] = top_level_status
@@ -458,11 +460,13 @@ class NovaDriver(Driver):
 
     def delete_sliver (self, slice_urn, slice_hrn, creds, options):
         aggregate = OSAggregate(self)
+        tenant_name = OSXrn(xrn=slice_hrn, type='slice').get_tenant_name()
         project_name = hrn_to_os_slicename(slice_hrn)
-        return aggregate.delete_instances(project_name)   
+        return aggregate.delete_instances(project_name, tenant_name)   
 
     def update_sliver(self, slice_urn, slice_hrn, rspec, creds, options):
         name = hrn_to_os_slicename(slice_hrn)
+        tenant_name = OSXrn(xrn=slice_hrn, type='slice').get_tenant_name()
         aggregate = OSAggregate(self)
         return aggregate.update_instances(name)
     
@@ -473,9 +477,10 @@ class NovaDriver(Driver):
         return 1
 
     def stop_slice (self, slice_urn, slice_hrn, creds):
+        tenant_name = OSXrn(xrn=slice_hrn, type='slice').get_tenant_name()
         name = OSXrn(xrn=slice_urn).name
         aggregate = OSAggregate(self)
-        return aggregate.stop_instances(name) 
+        return aggregate.stop_instances(name, tenant_name
 
     def reset_slice (self, slice_urn, slice_hrn, creds):
         raise SfaNotImplemented ("reset_slice not available at this interface")