11from __future__ import unicode_literals
22from __future__ import absolute_import
33
4- from upcloud_api import FirewallRule
4+ from upcloud_api import FirewallRule , Server
55
6+ def uuid_and_instance (server ):
7+ """server => uuid, instance"""
8+ if isinstance (server , Server ):
9+ return server .uuid , server
10+ else :
11+ return server , None
612
713class FirewallManager (object ):
814 """
@@ -12,40 +18,42 @@ class FirewallManager(object):
1218 directly.
1319 """
1420
15- def get_firewall_rule (self , server_uuid , firewall_rule_position ):
21+ def get_firewall_rule (self , server_uuid , firewall_rule_position , server_instance = None ):
1622 """
1723 Return a FirewallRule object based on server uuid and rule position.
1824 """
1925 url = '/server/{0}/firewall_rule/{1}' .format (server_uuid , firewall_rule_position )
2026 res = self .get_request (url )
2127 return FirewallRule (** res ['firewall_rule' ])
2228
23- def get_firewall_rules (self , server_uuid ):
29+ def get_firewall_rules (self , server ):
2430 """
25- Return all FirewallRule objects based on a server uuid.
31+ Return all FirewallRule objects based on a server instance or uuid.
2632 """
27- url = '/server/{0}/firewall_rule' . format ( server_uuid )
33+ server_uuid , server_instance = uuid_and_instance ( server )
2834
35+ url = '/server/{0}/firewall_rule' .format (server_uuid )
2936 res = self .get_request (url )
3037
31- firewall_rules = []
32- for firewall_rule in res ['firewall_rules' ]['firewall_rule' ]:
33- firewall_rules .append (FirewallRule (** firewall_rule ))
38+ return [
39+ FirewallRule (server = server_instance , ** firewall_rule )
40+ for firewall_rule in res ['firewall_rules' ]['firewall_rule' ]
41+ ]
3442
35- return firewall_rules
36-
37- def create_firewall_rule (self , server_uuid , firewall_rule_body ):
43+ def create_firewall_rule (self , server , firewall_rule_body ):
3844 """
3945 Create a new firewall rule for a given server uuid.
4046
4147 The rule can begiven as a dict or with FirewallRule.prepare_post_body().
4248 Returns a FirewallRule object.
4349 """
44- url = '/server/{0}/firewall_rule' . format ( server_uuid )
50+ server_uuid , server_instance = uuid_and_instance ( server )
4551
52+ url = '/server/{0}/firewall_rule' .format (server_uuid )
4653 body = {'firewall_rule' : firewall_rule_body }
4754 res = self .post_request (url , body )
48- return FirewallRule (** res ['firewall_rule' ])
55+
56+ return FirewallRule (server = server_instance , ** res ['firewall_rule' ])
4957
5058 def delete_firewall_rule (self , server_uuid , firewall_rule_position ):
5159 """
@@ -54,13 +62,13 @@ def delete_firewall_rule(self, server_uuid, firewall_rule_position):
5462 url = '/server/{0}/firewall_rule/{1}' .format (server_uuid , firewall_rule_position )
5563 return self .request ('DELETE' , url )
5664
57- def configure_firewall (self , UUID , firewall_rule_bodies ):
65+ def configure_firewall (self , server , firewall_rule_bodies ):
5866 """
5967 Helper for calling create_firewall_rule in series for a list of firewall_rule_bodies.
6068 """
61- FirewallRules = []
62- for rule in firewall_rule_bodies :
63- FirewallRule = self .create_firewall_rule (UUID , rule )
64- FirewallRules .append (FirewallRule )
69+ server_uuid , server_instance = uuid_and_instance (server )
6570
66- return FirewallRules
71+ return [
72+ self .create_firewall_rule (server_uuid , rule )
73+ for rule in firewall_rule_bodies
74+ ]
0 commit comments