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):
