Fixed call to self._wait in _wait_for_new
[osm/N2VC.git] / juju / delta.py
index 247c81d..b1eba23 100644 (file)
@@ -2,34 +2,51 @@ from .client import client
 
 
 def get_entity_delta(d):
-    _delta_types = {
-        'application': ApplicationDelta,
-        'machine': MachineDelta,
-        'unit': UnitDelta,
-        'action': ActionDelta,
-    }
-
     return _delta_types[d.entity](d.deltas)
 
 
+def get_entity_class(entity_type):
+    return _delta_types[entity_type].get_entity_class()
+
+
 class EntityDelta(client.Delta):
     def get_id(self):
-        return self.data['Id']
+        return self.data['id']
 
+    @classmethod
     def get_entity_class(self):
         return None
 
 
+class ActionDelta(EntityDelta):
+    @classmethod
+    def get_entity_class(self):
+        from .action import Action
+        return Action
+
+
 class ApplicationDelta(EntityDelta):
     def get_id(self):
-        return self.data['Name']
+        return self.data['name']
 
+    @classmethod
     def get_entity_class(self):
         from .application import Application
         return Application
 
 
+class AnnotationDelta(EntityDelta):
+    def get_id(self):
+        return self.data['tag']
+
+    @classmethod
+    def get_entity_class(self):
+        from .annotation import Annotation
+        return Annotation
+
+
 class MachineDelta(EntityDelta):
+    @classmethod
     def get_entity_class(self):
         from .machine import Machine
         return Machine
@@ -37,14 +54,26 @@ class MachineDelta(EntityDelta):
 
 class UnitDelta(EntityDelta):
     def get_id(self):
-        return self.data['Name']
+        return self.data['name']
 
+    @classmethod
     def get_entity_class(self):
         from .unit import Unit
         return Unit
 
 
-class ActionDelta(EntityDelta):
+class RelationDelta(EntityDelta):
+    @classmethod
     def get_entity_class(self):
-        from .action import Action
-        return Action
+        from .relation import Relation
+        return Relation
+
+
+_delta_types = {
+    'action': ActionDelta,
+    'application': ApplicationDelta,
+    'annotation': AnnotationDelta,
+    'machine': MachineDelta,
+    'unit': UnitDelta,
+    'relation': RelationDelta,
+}