lb_response = client.add_load_balancer(server_id=new_server['id'], ip_id=server1.first_ip['id'], load_balancer_id=new_load_balancer['id']) ## Wait for Load Balancer to be added print 'Adding load balancer to Server...' print server1.wait_for() # Add Firewall Policy to New Server fw_response = client.add_firewall_policy(server_id=new_server['id'], ip_id=server1.first_ip['id'], firewall_id=new_firewall['id']) ## Wait for Firewall Policy to be added print 'Adding firewall policy to Server...' print server1.wait_for() print 'Everything looks good!' # Cleanup the rubbish print 'Cleaning up the mess we just made...\n' print 'Deleting server...' client.delete_server(server_id=new_server['id']) print 'Deleting load balancer...' client.delete_load_balancer(load_balancer_id=new_load_balancer['id']) print 'Deleting firewall...' client.delete_firewall(firewall_id=new_firewall['id']) print '\nAll done!'
server_ips=servers) # Modify a firewall from oneandone.client import OneAndOneService client = OneAndOneService('675fbe491b27896b57e76867604f8255') modified_firewall = client.modify_firewall(name='New Name', description='New Description') # Delete a firewall from oneandone.client import OneAndOneService client = OneAndOneService('675fbe491b27896b57e76867604f8255') response = client.delete_firewall(firewall_id='') # Remove a firewall rule from oneandone.client import OneAndOneService client = OneAndOneService('675fbe491b27896b57e76867604f8255') response = client.remove_firewall_rule(firewall_id='', rule_id='') # Remove a firewall server from oneandone.client import OneAndOneService client = OneAndOneService('675fbe491b27896b57e76867604f8255') response = client.remove_firewall_server(firewall_id='', server_ip_id='')
class TestFirewallPolicy(unittest.TestCase): def setUp(self): self.client = OneAndOneService('USER-API-KEY') # 'GET' Methods @responses.activate def test_list_policies(self): with open('mock-api/list-firewalls.json') as f: data = json.load(f) test_id = data[0]['id'] responses.add(responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies', body=json.dumps(data), status=200, content_type="application/json") r = self.client.list_firewall_policies() self.assertEqual(r[0]['id'], test_id) @responses.activate def test_get_policy(self): with open('mock-api/get-firewall.json') as f: data = json.load(f) firewall_id = data['id'] responses.add( responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s' % firewall_id, body=json.dumps(data), status=200, content_type="application/json") r = self.client.get_firewall(firewall_id=firewall_id) self.assertEqual(r['id'], firewall_id) @responses.activate def test_list_firewall_servers(self): with open('mock-api/list-server-ips-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' server_ip_id = data[0]['id'] responses.add( responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/server_ips' % firewall_id, body=json.dumps(data), status=200, content_type="application/json") r = self.client.list_firewall_servers(firewall_id=firewall_id) self.assertEqual(r[0]['id'], server_ip_id) @responses.activate def test_get_firewall_server(self): with open('mock-api/get-server-ip-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' server_ip_id = data['id'] responses.add( responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/server_ips/%s' % (firewall_id, server_ip_id), body=json.dumps(data), status=200, content_type="application/json") r = self.client.get_firewall_server(firewall_id=firewall_id, server_ip_id=server_ip_id) self.assertEqual(r['id'], server_ip_id) @responses.activate def test_list_policy_rules(self): with open('mock-api/list-fp-rules.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' rule_id = data[0]['id'] responses.add( responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/rules' % firewall_id, body=json.dumps(data), status=200, content_type="application/json") r = self.client.list_firewall_policy_rules(firewall_id=firewall_id) self.assertEqual(r[0]['id'], rule_id) @responses.activate def test_get_policy_rule(self): with open('mock-api/get-fp-rule.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' rule_id = data['id'] responses.add( responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/rules/%s' % (firewall_id, rule_id), body=json.dumps(data), status=200, content_type="application/json") r = self.client.get_firewall_policy_rule(firewall_id=firewall_id, rule_id=rule_id) self.assertEqual(r['id'], rule_id) # 'PUT' Methods @responses.activate def test_modify_firewall(self): with open('mock-api/modify-fp.json') as f: data = json.load(f) firewall_id = data['id'] name = data['name'] description = data['description'] responses.add( responses.PUT, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s' % firewall_id, body=json.dumps(data), status=200, content_type="application/json") r = self.client.modify_firewall(firewall_id=firewall_id, description=description) self.assertEqual(r['name'], name) self.assertEqual(r['description'], description) # 'POST' Methods @responses.activate def test_create_firewall_policy(self): with open('mock-api/create-fp.json') as f: data = json.load(f) fp1 = FirewallPolicy(name=data['name'], description=data['description']) rule1 = FirewallPolicyRule(protocol=data['rules'][0]['protocol'], port_from=data['rules'][0]['port_from'], port_to=data['rules'][0]['port_to'], source=data['rules'][0]['source']) rule2 = FirewallPolicyRule(protocol=data['rules'][1]['protocol'], port_from=data['rules'][1]['port_from'], port_to=data['rules'][1]['port_to'], source=data['rules'][1]['source']) rules = [rule1, rule2] responses.add(responses.POST, 'https://cloudpanel-api.1and1.com/v1/firewall_policies', body=json.dumps(data), status=202, content_type="application/json") r = self.client.create_firewall_policy(firewall_policy=fp1, firewall_policy_rules=rules) self.assertEqual(r['name'], fp1.specs['name']) self.assertEqual(r['description'], fp1.specs['description']) self.assertEqual(r['rules'][0]['protocol'], rule1.rule_set['protocol']) self.assertEqual(r['rules'][1]['protocol'], rule2.rule_set['protocol']) @responses.activate def test_assign_servers(self): with open('mock-api/assign-ip-fp.json') as f: data = json.load(f) firewall_id = data['id'] server1 = AttachServer(server_ip_id=data['server_ips'][0]['id']) servers = [server1] responses.add( responses.POST, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/server_ips' % firewall_id, body=json.dumps(data), status=202, content_type="application/json") r = self.client.attach_server_firewall_policy(firewall_id=firewall_id, server_ips=servers) self.assertEqual(r['id'], firewall_id) self.assertEqual(r['server_ips'][0]['id'], server1.server_ip_id) @responses.activate def test_add_rule(self): with open('mock-api/add-rule-fp.json') as f: data = json.load(f) firewall_id = data['id'] rule1 = FirewallPolicyRule(protocol=data['rules'][2]['protocol'], port_from=data['rules'][2]['port_from'], port_to=data['rules'][2]['port_to'], source=data['rules'][2]['source']) rules = [rule1] responses.add( responses.POST, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/rules' % firewall_id, body=json.dumps(data), status=202, content_type="application/json") r = self.client.add_firewall_policy_rule(firewall_id=firewall_id, firewall_policy_rules=rules) self.assertEqual(r['rules'][2]['protocol'], rule1.rule_set['protocol']) self.assertEqual(r['rules'][2]['port_from'], rule1.rule_set['port_from']) self.assertEqual(r['rules'][2]['port_to'], rule1.rule_set['port_to']) self.assertEqual(r['rules'][2]['source'], rule1.rule_set['source']) # 'DELETE' Methods @responses.activate def test_remove_server_firewall(self): with open('mock-api/remove-ip-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' server_ip_id = 'SERVER_IP_ID' responses.add( responses.DELETE, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/server_ips/%s' % (firewall_id, server_ip_id), body=json.dumps(data), status=202, content_type="application/json") r = self.client.remove_firewall_server(firewall_id=firewall_id, server_ip_id=server_ip_id) self.assertEqual(r['state'], 'CONFIGURING') self.assertEqual(r['server_ips'], []) @responses.activate def test_remove_firewall_rule(self): with open('mock-api/delete-rule-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' rule_id = 'RULE_ID' responses.add( responses.DELETE, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/rules/%s' % (firewall_id, rule_id), body=json.dumps(data), status=202, content_type="application/json") r = self.client.remove_firewall_rule(firewall_id=firewall_id, rule_id=rule_id) self.assertNotEqual(len(r['rules']), 3) @responses.activate def test_delete_firewall(self): with open('mock-api/delete-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' responses.add( responses.DELETE, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s' % firewall_id, body=json.dumps(data), status=202, content_type="application/json") r = self.client.delete_firewall(firewall_id=firewall_id) self.assertEqual(r['state'], 'REMOVING')
firewall_policy_rules=new_rules) # List all rules of a firewall rules = client.list_firewall_policy_rules(firewall_id=new_firewall['id']) # Retrieve a firewall rule rule = client.get_firewall_policy_rule(firewall_id=new_firewall['id'], rule_id=new_rule['rules'][0]['id']) # Modify a firewall modified_firewall = client.modify_firewall(firewall_id=new_firewall['id'], name='New Name', description='New Description') # Remove a firewall rule response = client.remove_firewall_rule(firewall_id=new_firewall['id'], rule_id=new_rule['rules'][0]['id']) print fp1.wait_for() print server1.wait_for() # Delete the server response = client.delete_server(server_id=new_server['id'], keep_ips=None, keep_hdds=None) server1.wait_deleted() print fp1.wait_for() # Delete a firewall response = client.delete_firewall(firewall_id=new_firewall['id'])
server_id=new_server['id'], ip_id=server1.first_ip['id'], load_balancer_id=new_load_balancer['id']) ## Wait for Load Balancer to be added print 'Adding load balancer to Server...' print server1.wait_for() # Add Firewall Policy to New Server fw_response = client.add_firewall_policy(server_id=new_server['id'], ip_id=server1.first_ip['id'], firewall_id=new_firewall['id']) ## Wait for Firewall Policy to be added print 'Adding firewall policy to Server...' print server1.wait_for() print 'Everything looks good!' # Cleanup the rubbish print 'Cleaning up the mess we just made...\n' print 'Deleting server...' client.delete_server(server_id=new_server['id']) print 'Deleting load balancer...' client.delete_load_balancer(load_balancer_id=new_load_balancer['id']) print 'Deleting firewall...' client.delete_firewall(firewall_id=new_firewall['id']) print '\nAll done!'
class TestFirewallPolicy(unittest.TestCase): def setUp(self): self.client = OneAndOneService('USER-API-KEY') # 'GET' Methods @responses.activate def test_list_policies(self): with open('mock-api/list-firewalls.json') as f: data = json.load(f) test_id = data[0]['id'] responses.add(responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies', body=json.dumps(data), status=200, content_type="application/json") r = self.client.list_firewall_policies() self.assertEqual(r[0]['id'], test_id) @responses.activate def test_get_policy(self): with open('mock-api/get-firewall.json') as f: data = json.load(f) firewall_id = data['id'] responses.add(responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s' % firewall_id, body=json.dumps(data), status=200, content_type="application/json") r = self.client.get_firewall(firewall_id=firewall_id) self.assertEqual(r['id'], firewall_id) @responses.activate def test_list_firewall_servers(self): with open('mock-api/list-server-ips-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' server_ip_id = data[0]['id'] responses.add(responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/server_ips' % firewall_id, body=json.dumps(data), status=200, content_type="application/json") r = self.client.list_firewall_servers(firewall_id=firewall_id) self.assertEqual(r[0]['id'], server_ip_id) @responses.activate def test_get_firewall_server(self): with open('mock-api/get-server-ip-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' server_ip_id = data['id'] responses.add(responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/server_ips/%s' % (firewall_id, server_ip_id), body=json.dumps(data), status=200, content_type="application/json") r = self.client.get_firewall_server(firewall_id=firewall_id, server_ip_id=server_ip_id) self.assertEqual(r['id'], server_ip_id) @responses.activate def test_list_policy_rules(self): with open('mock-api/list-fp-rules.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' rule_id = data[0]['id'] responses.add(responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/rules' % firewall_id, body=json.dumps(data), status=200, content_type="application/json") r = self.client.list_firewall_policy_rules(firewall_id=firewall_id) self.assertEqual(r[0]['id'], rule_id) @responses.activate def test_get_policy_rule(self): with open('mock-api/get-fp-rule.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' rule_id = data['id'] responses.add(responses.GET, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/rules/%s' % (firewall_id, rule_id), body=json.dumps(data), status=200, content_type="application/json") r = self.client.get_firewall_policy_rule(firewall_id=firewall_id, rule_id=rule_id) self.assertEqual(r['id'], rule_id) # 'PUT' Methods @responses.activate def test_modify_firewall(self): with open('mock-api/modify-fp.json') as f: data = json.load(f) firewall_id = data['id'] name = data['name'] description = data['description'] responses.add(responses.PUT, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s' % firewall_id, body=json.dumps(data), status=200, content_type="application/json") r = self.client.modify_firewall(firewall_id=firewall_id, description=description) self.assertEqual(r['name'], name) self.assertEqual(r['description'], description) # 'POST' Methods @responses.activate def test_create_firewall_policy(self): with open('mock-api/create-fp.json') as f: data = json.load(f) fp1 = FirewallPolicy(name=data['name'], description=data['description']) rule1 = FirewallPolicyRule(protocol=data['rules'][0]['protocol'], port_from=data['rules'][0]['port_from'], port_to=data['rules'][0]['port_to'], source=data['rules'][0]['source']) rule2 = FirewallPolicyRule(protocol=data['rules'][1]['protocol'], port_from=data['rules'][1]['port_from'], port_to=data['rules'][1]['port_to'], source=data['rules'][1]['source']) rules = [rule1, rule2] responses.add(responses.POST, 'https://cloudpanel-api.1and1.com/v1/firewall_policies', body=json.dumps(data), status=202, content_type="application/json") r = self.client.create_firewall_policy(firewall_policy=fp1, firewall_policy_rules=rules) self.assertEqual(r['name'], fp1.specs['name']) self.assertEqual(r['description'], fp1.specs['description']) self.assertEqual(r['rules'][0]['protocol'], rule1.rule_set['protocol']) self.assertEqual(r['rules'][1]['protocol'], rule2.rule_set['protocol']) @responses.activate def test_assign_servers(self): with open('mock-api/assign-ip-fp.json') as f: data = json.load(f) firewall_id = data['id'] server1 = AttachServer(server_ip_id=data['server_ips'][0]['id']) servers = [server1] responses.add(responses.POST, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/server_ips' % firewall_id, body=json.dumps(data), status=202, content_type="application/json") r = self.client.attach_server_firewall_policy(firewall_id=firewall_id, server_ips=servers) self.assertEqual(r['id'], firewall_id) self.assertEqual(r['server_ips'][0]['id'], server1.server_ip_id) @responses.activate def test_add_rule(self): with open('mock-api/add-rule-fp.json') as f: data = json.load(f) firewall_id = data['id'] rule1 = FirewallPolicyRule(protocol=data['rules'][2]['protocol'], port_from=data['rules'][2]['port_from'], port_to=data['rules'][2]['port_to'], source=data['rules'][2]['source']) rules = [rule1] responses.add(responses.POST, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/rules' % firewall_id, body=json.dumps(data), status=202, content_type="application/json") r = self.client.add_firewall_policy_rule(firewall_id=firewall_id, firewall_policy_rules=rules) self.assertEqual(r['rules'][2]['protocol'], rule1.rule_set['protocol']) self.assertEqual(r['rules'][2]['port_from'], rule1.rule_set['port_from']) self.assertEqual(r['rules'][2]['port_to'], rule1.rule_set['port_to']) self.assertEqual(r['rules'][2]['source'], rule1.rule_set['source']) # 'DELETE' Methods @responses.activate def test_remove_server_firewall(self): with open('mock-api/remove-ip-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' server_ip_id = 'SERVER_IP_ID' responses.add(responses.DELETE, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/server_ips/%s' % (firewall_id, server_ip_id), body=json.dumps(data), status=202, content_type="application/json") r = self.client.remove_firewall_server(firewall_id=firewall_id, server_ip_id=server_ip_id) self.assertEqual(r['state'], 'CONFIGURING') self.assertEqual(r['server_ips'], []) @responses.activate def test_remove_firewall_rule(self): with open('mock-api/delete-rule-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' rule_id = 'RULE_ID' responses.add(responses.DELETE, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s/rules/%s' % (firewall_id, rule_id), body=json.dumps(data), status=202, content_type="application/json") r = self.client.remove_firewall_rule(firewall_id=firewall_id, rule_id=rule_id) self.assertNotEqual(len(r['rules']), 3) @responses.activate def test_delete_firewall(self): with open('mock-api/delete-fp.json') as f: data = json.load(f) firewall_id = 'FIREWALL_ID' responses.add(responses.DELETE, 'https://cloudpanel-api.1and1.com/v1/firewall_policies/%s' % firewall_id, body=json.dumps(data), status=202, content_type="application/json") r = self.client.delete_firewall(firewall_id=firewall_id) self.assertEqual(r['state'], 'REMOVING')