Selaa lähdekoodia

Fix amqp hook

Espinoza Guillermo 6 vuotta sitten
vanhempi
commit
67d1108d58
1 muutettua tiedostoa jossa 131 lisäystä ja 61 poistoa
  1. 131 61
      hooks/amqp/src/callouts.cc

+ 131 - 61
hooks/amqp/src/callouts.cc

@@ -62,9 +62,15 @@ int subnet4_select(CalloutHandle& handle) {
     Subnet4Ptr subnet;
     handle.getArgument("query4", query);
     handle.getArgument("subnet4", subnet);
-
-    amqp.publish("subnet4_select => query: " + query->toText() +
-                ", subnet: " + subnet->toText());
+    
+    std::string message;
+    if (subnet != 0) {
+        message = "subnet4_select => query: " + query->toText() +
+                    ", subnet: " + subnet->toText();
+    } else {
+        message = "subnet4_select => query: " + query->toText();
+    }
+    amqp.publish(message);
 
     return 0;
 }
@@ -79,10 +85,16 @@ int lease4_select(CalloutHandle& handle) {
     handle.getArgument("subnet4", subnet);
     handle.getArgument("fake_allocation", fake_allocation);
     handle.getArgument("lease4", lease);
-
-    amqp.publish("lease4_select => query: " + query->toText() +
-                ", subnet: " + subnet->toText() +
-                ", lease: " + lease->toText());
+    
+    std::string message;
+    if (subnet != 0 && lease != 0) {
+        message = "lease4_select => query: " + query->toText() +
+                    ", subnet: " + subnet->toText() +
+                    ", lease: " + lease->toText();
+    } else {
+        message = "lease4_select => query: " + query->toText();
+    }
+    amqp.publish(message);
 
     return 0;
 }
@@ -96,9 +108,15 @@ int lease4_renew(CalloutHandle& handle) {
     handle.getArgument("subnet4", subnet);
     handle.getArgument("lease4", lease);
 
-    amqp.publish("lease4_renew => query: " + query->toText() +
-                ", subnet: " + subnet->toText() +
-                ", lease: " + lease->toText());
+    std::string message;
+    if (subnet != 0 && lease != 0) {
+        message = "lease4_renew => query: " + query->toText() +
+                    ", subnet: " + subnet->toText() +
+                    ", lease: " + lease->toText();
+    } else {
+        message = "lease4_renew => query: " + query->toText();
+    }
+    amqp.publish(message);
 
     return 0;
 }
@@ -109,9 +127,15 @@ int lease4_release(CalloutHandle& handle) {
     Lease4Ptr lease;
     handle.getArgument("query4", query);
     handle.getArgument("lease4", lease);
-
-    amqp.publish("lease4_release => query: " + query->toText() +
-                ", lease: " + lease->toText());
+    
+    std::string message;
+    if (lease != 0) {
+        message = "lease4_release => query: " + query->toText() +
+                    ", lease: " + lease->toText();
+    } else {
+        message = "lease4_release => query: " + query->toText();
+    }
+    amqp.publish(message);
 
     return 0;
 }
@@ -123,9 +147,15 @@ int lease4_decline(CalloutHandle& handle) {
     handle.getArgument("query4", query);
     handle.getArgument("lease4", lease);
 
-    amqp.publish("lease4_decline => query: " + query->toText() +
-                ", lease: " + lease->toText());
-
+    std::string message;
+    if (lease != 0) {
+        message = "lease4_decline => query: " + query->toText() +
+                    ", lease: " + lease->toText();
+    } else {
+        message = "lease4_decline => query: " + query->toText();
+    }
+    amqp.publish(message);
+    
     return 0;
 }
 
@@ -135,8 +165,10 @@ int lease4_expire(CalloutHandle& handle) {
     bool remove_lease;
     handle.getArgument("lease4", lease);
     handle.getArgument("remove_lease", remove_lease);
-
-    amqp.publish("lease4_expire => lease: " + lease->toText());
+    
+    if (lease != 0) {
+        amqp.publish("lease4_expire => lease: " + lease->toText());
+    }
 
     return 0;
 }
@@ -145,8 +177,10 @@ int lease4_recover(CalloutHandle& handle) {
     std::vector<std::string> env;
     Lease4Ptr lease;
     handle.getArgument("lease4", lease);
-
-    amqp.publish("lease4_recover => lease: " + lease->toText());
+    
+    if (lease != 0) {
+        amqp.publish("lease4_recover => lease: " + lease->toText());
+    }
 
     return 0;
 }
@@ -181,8 +215,14 @@ int subnet6_select(CalloutHandle& handle) {
     handle.getArgument("query6", query);
     handle.getArgument("subnet6", subnet);
 
-    amqp.publish("subnet6_select => query: " + query->toText() +
-                ", subnet: " + subnet->toText());
+    std::string message;
+    if (subnet != 0) {
+        message = "subnet6_select => query: " + query->toText() +
+                    ", subnet: " + subnet->toText();
+    } else {
+        message = "subnet6_select => query: " + query->toText();
+    }
+    amqp.publish(message);
 
     return 0;
 }
@@ -197,10 +237,16 @@ int lease6_select(CalloutHandle& handle) {
     handle.getArgument("subnet6", subnet);
     handle.getArgument("fake_allocation", fake_allocation);
     handle.getArgument("lease6", lease);
-
-    amqp.publish("lease6_select => query: " + query->toText() +
-                ", subnet: " + subnet->toText() +
-                ", lease: " + lease->toText());
+    
+    std::string message;
+    if (subnet != 0 && lease != 0) {
+        message = "lease6_select => query: " + query->toText() +
+                    ", subnet: " + subnet->toText() +
+                    ", lease: " + lease->toText();
+    } else {
+        message = "lease6_select => query: " + query->toText();
+    }
+    amqp.publish(message);
 
     return 0;
 }
@@ -213,19 +259,23 @@ int lease6_renew(CalloutHandle& handle) {
     boost::shared_ptr<Option6IA> ia_pd;
     handle.getArgument("query6", query);
     handle.getArgument("lease6", lease);
-
-    std::string message = "lease6_renew => query: " + query->toText() +
-                        ", lease: " + lease->toText();
-    try {
-        handle.getArgument("ia_na", ia_na);
-        message = message + ", ia_na: " + ia_na->toText();
-    } catch (const NoSuchArgument&) { }
-
-    try {
-        handle.getArgument("ia_pd", ia_pd);
-        message = message + ", ia_pd: " + ia_pd->toText();
-    } catch (const NoSuchArgument&) { }
-
+    
+    std::string message;
+    if (lease != 0) {
+        message = "lease6_renew => query: " + query->toText() +
+                            ", lease: " + lease->toText();
+        try {
+            handle.getArgument("ia_na", ia_na);
+            message = message + ", ia_na: " + ia_na->toText();
+        } catch (const NoSuchArgument&) { }
+
+        try {
+            handle.getArgument("ia_pd", ia_pd);
+            message = message + ", ia_pd: " + ia_pd->toText();
+        } catch (const NoSuchArgument&) { }
+    } else {
+        message = "lease6_renew => query: " + query->toText();
+    }
     amqp.publish(message);
 
     return 0;
@@ -240,18 +290,22 @@ int lease6_rebind(CalloutHandle& handle) {
     handle.getArgument("query6", query);
     handle.getArgument("lease6", lease);
 
-    std::string message = "lease6_rebind => query: " + query->toText() +
-                        ", lease: " + lease->toText();
-    try {
-        handle.getArgument("ia_na", ia_na);
-        message = message + ", ia_na: " + ia_na->toText();
-    } catch (const NoSuchArgument&) { }
-
-    try {
-        handle.getArgument("ia_pd", ia_pd);
-        message = message + ", ia_pd: " + ia_pd->toText();
-    } catch (const NoSuchArgument&) { }
-
+    std::string message;
+    if (lease != 0) {
+        message = "lease6_rebind => query: " + query->toText() +
+                            ", lease: " + lease->toText();
+        try {
+            handle.getArgument("ia_na", ia_na);
+            message = message + ", ia_na: " + ia_na->toText();
+        } catch (const NoSuchArgument&) { }
+
+        try {
+            handle.getArgument("ia_pd", ia_pd);
+            message = message + ", ia_pd: " + ia_pd->toText();
+        } catch (const NoSuchArgument&) { }
+    } else {
+        message = "lease6_rebind => query: " + query->toText();
+    }
     amqp.publish(message);
 
     return 0;
@@ -263,9 +317,15 @@ int lease6_decline(CalloutHandle& handle) {
     Lease6Ptr lease;
     handle.getArgument("query6", query);
     handle.getArgument("lease6", lease);
-
-    amqp.publish("lease6_decline => query: " + query->toText() +
-                ", lease: " + lease->toText());
+    
+    std::string message;
+    if (lease != 0) {
+        message = "lease6_decline => query: " + query->toText() +
+                    ", lease: " + lease->toText();
+    } else {
+        message = "lease6_decline => query: " + query->toText();
+    }
+    amqp.publish(message);
 
     return 0;
 }
@@ -276,9 +336,15 @@ int lease6_release(CalloutHandle& handle) {
     Lease6Ptr lease;
     handle.getArgument("query6", query);
     handle.getArgument("lease6", lease);
-
-    amqp.publish("lease6_release => query: " + query->toText() +
-                ", lease: " + lease->toText());
+    
+    std::string message;
+    if (lease != 0) {
+        message = "lease6_release => query: " + query->toText() +
+                    ", lease: " + lease->toText();
+    } else {
+        message = "lease6_release => query: " + query->toText();
+    }
+    amqp.publish(message);
 
     return 0;
 }
@@ -289,8 +355,10 @@ int lease6_expire(CalloutHandle& handle) {
     bool remove_lease;
     handle.getArgument("lease6", lease);
     handle.getArgument("remove_lease", remove_lease);
-
-    amqp.publish("lease6_expire => lease: " + lease->toText());
+    
+    if (lease != 0) {
+        amqp.publish("lease6_expire => lease: " + lease->toText());
+    }
 
     return 0;
 }
@@ -299,8 +367,10 @@ int lease6_recover(CalloutHandle& handle) {
     std::vector<std::string> env;
     Lease6Ptr lease;
     handle.getArgument("lease6", lease);
-
-    amqp.publish("lease6_recover => lease: " + lease->toText());
+    
+    if (lease != 0) {
+        amqp.publish("lease6_recover => lease: " + lease->toText());
+    }
 
     return 0;
 }