Updated Branches:
  refs/heads/trunk 1847243d5 -> f5584d8fc

For convenience, add ex_create_port_forwarding_rule and
ex_delete_port_forwarding_rule method to the CloudStackNode class.

For consistency, also rename "ex_add_ip_forwarding_rule" to
"ex_create_ip_forwarding_rule".

Signed-off-by: Tomaz Muraus <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/599ba093
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/599ba093
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/599ba093

Branch: refs/heads/trunk
Commit: 599ba0936cf3b27be29f4729dd623077533699fb
Parents: 1847243
Author: gigimon <[email protected]>
Authored: Mon Dec 16 17:36:11 2013 +0200
Committer: Tomaz Muraus <[email protected]>
Committed: Wed Dec 18 12:20:04 2013 +0100

----------------------------------------------------------------------
 libcloud/compute/drivers/cloudstack.py   | 39 ++++++++++++++++++++-------
 libcloud/test/compute/test_cloudstack.py | 35 ++++++++++++++++++++++--
 2 files changed, 63 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/599ba093/libcloud/compute/drivers/cloudstack.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/cloudstack.py 
b/libcloud/compute/drivers/cloudstack.py
index 5a4996d..8174622 100644
--- a/libcloud/compute/drivers/cloudstack.py
+++ b/libcloud/compute/drivers/cloudstack.py
@@ -42,16 +42,36 @@ class CloudStackNode(Node):
         "Release a public IP that this node holds."
         return self.driver.ex_release_public_ip(self, address)
 
-    def ex_add_ip_forwarding_rule(self, address, protocol, start_port,
-                                  end_port=None):
+    def ex_create_ip_forwarding_rule(self, address, protocol,
+                                     start_port, end_port=None):
         "Add a NAT/firewall forwarding rule for a port or ports."
-        return self.driver.ex_add_ip_forwarding_rule(self, address, protocol,
-                                                     start_port, end_port)
+        return self.driver.ex_create_ip_forwarding_rule(self, address,
+                                                        protocol,
+                                                        start_port, end_port)
+
+    def ex_create_port_forwarding_rule(self, address,
+                                       private_port, public_port,
+                                       protocol,
+                                       public_end_port=None,
+                                       private_end_port=None,
+                                       openfirewall=True):
+        "Add a port forwarding rule for port or ports."
+        return self.driver.ex_create_port_forwarding_rule(self, address,
+                                                          private_port,
+                                                          public_port,
+                                                          protocol,
+                                                          public_end_port,
+                                                          private_end_port,
+                                                          openfirewall)
 
     def ex_delete_ip_forwarding_rule(self, rule):
-        "Delete a NAT/firewall rule."
+        "Delete a port forwarding rule."
         return self.driver.ex_delete_ip_forwarding_rule(self, rule)
 
+    def ex_delete_port_forwarding_rule(self, rule):
+        "Delete a NAT/firewall rule."
+        return self.driver.ex_delete_port_forwarding_rule(self, rule)
+
     def ex_start(self):
         "Starts a stopped virtual machine"
         return self.driver.ex_start(self)
@@ -887,8 +907,9 @@ class CloudStackNodeDriver(CloudStackDriverMixIn, 
NodeDriver):
 
         return rules
 
-    def ex_create_port_forwarding_rule(self, address, private_port,
-                                       public_port, protocol, node,
+    def ex_create_port_forwarding_rule(self, node, address,
+                                       private_port, public_port,
+                                       protocol,
                                        public_end_port=None,
                                        private_end_port=None,
                                        openfirewall=True):
@@ -961,8 +982,8 @@ class CloudStackNodeDriver(CloudStackDriverMixIn, 
NodeDriver):
                                   method='GET')
         return res['success']
 
-    def ex_add_ip_forwarding_rule(self, node, address, protocol,
-                                  start_port, end_port=None):
+    def ex_create_ip_forwarding_rule(self, node, address, protocol,
+                                     start_port, end_port=None):
         """
         "Add a NAT/firewall forwarding rule.
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/599ba093/libcloud/test/compute/test_cloudstack.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_cloudstack.py 
b/libcloud/test/compute/test_cloudstack.py
index f808f74..005ee58 100644
--- a/libcloud/test/compute/test_cloudstack.py
+++ b/libcloud/test/compute/test_cloudstack.py
@@ -421,11 +421,11 @@ class CloudStackCommonTestCase(TestCaseMixin):
         public_end_port = 34
         openfirewall = True
         protocol = 'TCP'
-        rule = self.driver.ex_create_port_forwarding_rule(address,
+        rule = self.driver.ex_create_port_forwarding_rule(node,
+                                                          address,
                                                           private_port,
                                                           public_port,
                                                           protocol,
-                                                          node,
                                                           public_end_port,
                                                           private_end_port,
                                                           openfirewall)
@@ -454,6 +454,37 @@ class CloudStackCommonTestCase(TestCaseMixin):
         res = self.driver.ex_delete_port_forwarding_rule(node, rule)
         self.assertTrue(res)
 
+    def test_node_ex_delete_port_forwarding_rule(self):
+        node = self.driver.list_nodes()[0]
+        self.assertEqual(len(node.extra['port_forwarding_rules']), 1)
+        node.extra['port_forwarding_rules'][0].delete()
+        self.assertEqual(len(node.extra['port_forwarding_rules']), 0)
+
+    def test_node_ex_create_port_forwarding_rule(self):
+        node = self.driver.list_nodes()[0]
+        self.assertEqual(len(node.extra['port_forwarding_rules']), 1)
+        address = self.driver.ex_list_public_ips()[0]
+        private_port = 33
+        private_end_port = 34
+        public_port = 33
+        public_end_port = 34
+        openfirewall = True
+        protocol = 'TCP'
+        rule = node.ex_create_port_forwarding_rule(address,
+                                                   private_port,
+                                                   public_port,
+                                                   protocol,
+                                                   public_end_port,
+                                                   private_end_port,
+                                                   openfirewall)
+        self.assertEqual(rule.address, address)
+        self.assertEqual(rule.protocol, protocol)
+        self.assertEqual(rule.public_port, public_port)
+        self.assertEqual(rule.public_end_port, public_end_port)
+        self.assertEqual(rule.private_port, private_port)
+        self.assertEqual(rule.private_end_port, private_end_port)
+        self.assertEqual(len(node.extra['port_forwarding_rules']), 2)
+
 
 class CloudStackTestCase(CloudStackCommonTestCase, unittest.TestCase):
     def test_driver_instantiation(self):

Reply via email to