From 55e743b2e9d7be19dc8b6a804c9666517dc68539 Mon Sep 17 00:00:00 2001 From: Bach Dániel <bach.daniel@cloud.bme.hu> Date: Wed, 25 Mar 2015 17:10:23 +0100 Subject: [PATCH] firewall: rewrite management command --- circle/dashboard/management/commands/init.py | 67 +++++++++++++++++++++++++++---------------------------------------- 1 file changed, 27 insertions(+), 40 deletions(-) diff --git a/circle/dashboard/management/commands/init.py b/circle/dashboard/management/commands/init.py index b7eb627..44580af 100644 --- a/circle/dashboard/management/commands/init.py +++ b/circle/dashboard/management/commands/init.py @@ -23,8 +23,7 @@ from optparse import make_option from django.contrib.auth.models import User from django.core.management.base import BaseCommand -from firewall.models import (Vlan, VlanGroup, Domain, Firewall, Rule, - SwitchPort, EthernetDevice, Host) +from firewall.models import Vlan, VlanGroup, Domain, Firewall, Rule from storage.models import DataStore from vm.models import Lease @@ -35,13 +34,12 @@ logger = logging.getLogger(__name__) class Command(BaseCommand): option_list = BaseCommand.option_list + ( make_option('--force', action="store_true"), - make_option('--portal-ip'), make_option('--external-net'), make_option('--management-net'), make_option('--vm-net'), make_option('--external-if'), make_option('--management-if'), - make_option('--trunk-if'), + make_option('--vm-if'), make_option('--datastore-queue'), make_option('--firewall-queue'), make_option('--admin-user'), @@ -91,20 +89,28 @@ class Command(BaseCommand): suspend_interval_seconds=3600 * 24 * 365, delete_interval_seconds=3600 * 24 * 365 * 3) - domain = self.create(Domain, 'name', name='example.com', owner=admin) + net_domain = self.create(Domain, 'name', name='net.example.com', + owner=admin) + man_domain = self.create(Domain, 'name', name='man.example.com', + owner=admin) + vm_domain = self.create(Domain, 'name', name='vm.example.com', + owner=admin) # vlans - net = self.create(Vlan, 'name', name='net', vid=4, - network4=options['external_net'], domain=domain) + net = self.create(Vlan, 'vid', name=options['external_if'], vid=4, + network4=options['external_net'], domain=net_domain) - man = self.create(Vlan, 'name', name='man', vid=3, dhcp_pool='manual', - network4=options['management_net'], domain=domain, + man = self.create(Vlan, 'vid', name=options['management_if'], vid=3, + dhcp_pool='manual', + network4=options['management_net'], + domain=man_domain, snat_ip=options['external_net'].split('/')[0]) man.snat_to.add(net) man.snat_to.add(man) - vm = self.create(Vlan, 'name', name='vm', vid=2, dhcp_pool='manual', - network4=options['vm_net'], domain=domain, + vm = self.create(Vlan, 'vid', name=options['vm_if'], vid=2, + dhcp_pool='manual', + network4=options['vm_net'], domain=vm_domain, snat_ip=options['external_net'].split('/')[0]) vm.snat_to.add(net) vm.snat_to.add(vm) @@ -119,14 +125,6 @@ class Command(BaseCommand): vg_net = self.create(VlanGroup, 'name', name='net') vg_net.vlans.add(net) - # portal host - portal = self.create(Host, 'hostname', hostname='portal', vlan=man, - mac='11:22:33:44:55:66', owner=admin, - shared_ip=True, external_ipv4=man.snat_ip, - ipv4=options['portal_ip']) - portal.add_port(proto='tcp', public=443, private=443) - portal.add_port(proto='tcp', public=22, private=22) - # firewall rules fw = self.create(Firewall, 'name', name=options['firewall_queue']) @@ -134,8 +132,16 @@ class Command(BaseCommand): direction='out', action='accept', foreign_network=vg_all, firewall=fw) - self.create(Rule, 'description', description='default input rule', - direction='in', action='accept', + self.create(Rule, 'description', description='portal https', + direction='in', action='accept', proto='tcp', dport=443, + foreign_network=vg_all, firewall=fw) + + self.create(Rule, 'description', description='portal http', + direction='in', action='accept', proto='tcp', dport=80, + foreign_network=vg_all, firewall=fw) + + self.create(Rule, 'description', description='ssh', + direction='in', action='accept', proto='tcp', dport=22, foreign_network=vg_all, firewall=fw) # vlan rules @@ -147,23 +153,4 @@ class Command(BaseCommand): direction='out', action='accept', foreign_network=vg_net, vlan=man) - # switch - # uplink interface - sp_net = self.create(SwitchPort, 'untagged_vlan', untagged_vlan=net) - self.create(EthernetDevice, 'switch_port', switch_port=sp_net, - name=options['external_if']) - - # management interface - if options['management_if']: - sp_man = self.create( - SwitchPort, 'untagged_vlan', untagged_vlan=man) - self.create(EthernetDevice, 'switch_port', switch_port=sp_man, - name=options['management_if']) - - # vm interface - sp_trunk = self.create( - SwitchPort, 'tagged_vlans', untagged_vlan=man, tagged_vlans=vg_all) - self.create(EthernetDevice, 'switch_port', switch_port=sp_trunk, - name=options['trunk_if']) - return self.print_state() -- libgit2 0.26.0