def _setup_network_on_host(self, context, network): """Sets up network on this host.""" if context.is_admin: if not objects.Network.in_use_on_host(context, network['id'], None): return if not network.vpn_public_address: address = CONF.vpn_ip network.vpn_public_address = address network.save() else: address = network.vpn_public_address network.dhcp_server = self._get_dhcp_ip(context, network) self._initialize_network(network) # NOTE(): only ensure this forward if the address hasn't been set # manually. if address == CONF.vpn_ip and hasattr(self.driver, "ensure_vpn_forward"): self.l3driver.add_vpn(CONF.vpn_ip, network.vpn_public_port, network.vpn_private_address) if not CONF.fake_network: dev = self.driver.get_dev(network) # NOTE(): dhcp DB queries require elevated context if network.enable_dhcp: elevated = context.elevated() self.driver.update_dhcp(elevated, dev, network) if CONF.use_ipv6: self.driver.update_ra(context, dev, network) gateway = utils.get_my_linklocal(dev) network.gateway_v6 = gateway network.save()
def _setup_network(self, context, network_ref): """Sets up network on this host.""" if not network_ref['vpn_public_address']: net = {} address = FLAGS.vpn_ip net['vpn_public_address'] = address network_ref = db.network_update(context, network_ref['id'], net) else: address = network_ref['vpn_public_address'] network_ref['dhcp_server'] = self._get_dhcp_ip(context, network_ref) self.driver.ensure_vlan_bridge(network_ref['vlan'], network_ref['bridge'], network_ref['bridge_interface'], network_ref) # NOTE(vish): only ensure this forward if the address hasn't been set # manually. if address == FLAGS.vpn_ip and hasattr(self.driver, "ensure_vlan_forward"): self.driver.ensure_vlan_forward(FLAGS.vpn_ip, network_ref['vpn_public_port'], network_ref['vpn_private_address']) if not FLAGS.fake_network: self.driver.update_dhcp(context, network_ref) if(FLAGS.use_ipv6): self.driver.update_ra(context, network_ref) gateway = utils.get_my_linklocal(network_ref['bridge']) self.db.network_update(context, network_ref['id'], {'gateway_v6': gateway})
def _setup_network(self, context, network_ref): """Sets up network on this host.""" if not network_ref["vpn_public_address"]: net = {} address = FLAGS.vpn_ip net["vpn_public_address"] = address network_ref = db.network_update(context, network_ref["id"], net) else: address = network_ref["vpn_public_address"] network_ref["dhcp_server"] = self._get_dhcp_ip(context, network_ref) mac_address = self.generate_mac_address() dev = self.driver.plug(network_ref, mac_address) self.driver.initialize_gateway_device(dev, network_ref) # NOTE(vish): only ensure this forward if the address hasn't been set # manually. if address == FLAGS.vpn_ip and hasattr(self.driver, "ensure_vpn_forward"): self.driver.ensure_vpn_forward( FLAGS.vpn_ip, network_ref["vpn_public_port"], network_ref["vpn_private_address"] ) if not FLAGS.fake_network: self.driver.update_dhcp(context, dev, network_ref) if FLAGS.use_ipv6: self.driver.update_ra(context, dev, network_ref) gateway = utils.get_my_linklocal(dev) self.db.network_update(context, network_ref["id"], {"gateway_v6": gateway})
def _setup_network(self, context, network_ref): """Sets up network on this host.""" network_ref['dhcp_server'] = self._get_dhcp_ip(context, network_ref) self.driver.ensure_bridge(network_ref['bridge'], network_ref['bridge_interface'], network_ref) if not FLAGS.fake_network: self.driver.update_dhcp(context, network_ref) if (FLAGS.use_ipv6): self.driver.update_ra(context, network_ref) gateway = utils.get_my_linklocal(network_ref['bridge']) self.db.network_update(context, network_ref['id'], {'gateway_v6': gateway})
def _setup_network_on_host(self, context, network): """Sets up network on this host.""" network["dhcp_server"] = self._get_dhcp_ip(context, network) self.l3driver.initialize_gateway(network) if FLAGS.quantum_use_dhcp and not FLAGS.fake_network: dev = self.driver.get_dev(network) self.driver.update_dhcp(context, dev, network) if FLAGS.use_ipv6: self.driver.update_ra(context, dev, network) gateway = utils.get_my_linklocal(dev) self.db.network_update(context, network["id"], {"gateway_v6": gateway})
def _setup_network(self, context, network_ref): """Sets up network on this host.""" network_ref['dhcp_server'] = self._get_dhcp_ip(context, network_ref) self.driver.ensure_bridge(network_ref['bridge'], network_ref['bridge_interface'], network_ref) if not FLAGS.fake_network: self.driver.update_dhcp(context, network_ref) if(FLAGS.use_ipv6): self.driver.update_ra(context, network_ref) gateway = utils.get_my_linklocal(network_ref['bridge']) self.db.network_update(context, network_ref['id'], {'gateway_v6': gateway})
def _setup_network_on_host(self, context, network): """Sets up network on this host.""" network['dhcp_server'] = self._get_dhcp_ip(context, network) self.l3driver.initialize_gateway(network) if FLAGS.quantum_use_dhcp and not FLAGS.fake_network: dev = self.driver.get_dev(network) self.driver.update_dhcp(context, dev, network) if FLAGS.use_ipv6: self.driver.update_ra(context, dev, network) gateway = utils.get_my_linklocal(dev) self.db.network_update(context, network['id'], {'gateway_v6': gateway})
def _setup_network(self, context, network_ref): """Sets up network on this host.""" network_ref["dhcp_server"] = self._get_dhcp_ip(context, network_ref) mac_address = self.generate_mac_address() dev = self.driver.plug(network_ref, mac_address) self.driver.initialize_gateway_device(dev, network_ref) if not FLAGS.fake_network: self.driver.update_dhcp(context, dev, network_ref) if FLAGS.use_ipv6: self.driver.update_ra(context, dev, network_ref) gateway = utils.get_my_linklocal(dev) self.db.network_update(context, network_ref["id"], {"gateway_v6": gateway})
def update_ra(context, network_id): network_ref = db.network_get(context, network_id) conffile = _ra_file(network_ref['bridge'], 'conf') with open(conffile, 'w') as f: conf_str = """ interface %s { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix %s { AdvOnLink on; AdvAutonomous on; }; }; """ % (network_ref['bridge'], network_ref['cidr_v6']) f.write(conf_str) # Make sure radvd can actually read it (it setuid()s to "nobody") os.chmod(conffile, 0644) pid = _ra_pid_for(network_ref['bridge']) # if radvd is already running, then tell it to reload if pid: out, _err = _execute('cat', '/proc/%d/cmdline' % pid, check_exit_code=False) if conffile in out: try: _execute('sudo', 'kill', pid) except Exception as exc: # pylint: disable=W0703 LOG.debug(_("killing radvd threw %s"), exc) else: LOG.debug(_("Pid %d is stale, relaunching radvd"), pid) command = _ra_cmd(network_ref) _execute(*command) db.network_update( context, network_id, {"gateway_v6": utils.get_my_linklocal(network_ref['bridge'])})
def update_ra(context, network_id): network_ref = db.network_get(context, network_id) conffile = _ra_file(network_ref["bridge"], "conf") with open(conffile, "w") as f: conf_str = """ interface %s { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix %s { AdvOnLink on; AdvAutonomous on; }; }; """ % ( network_ref["bridge"], network_ref["cidr_v6"], ) f.write(conf_str) # Make sure radvd can actually read it (it setuid()s to "nobody") os.chmod(conffile, 0644) pid = _ra_pid_for(network_ref["bridge"]) # if radvd is already running, then tell it to reload if pid: out, _err = _execute("cat /proc/%d/cmdline" % pid, check_exit_code=False) if conffile in out: try: _execute("sudo kill %d" % pid) except Exception as exc: # pylint: disable-msg=W0703 LOG.debug(_("killing radvd threw %s"), exc) else: LOG.debug(_("Pid %d is stale, relaunching radvd"), pid) command = _ra_cmd(network_ref) _execute(command) db.network_update(context, network_id, {"ra_server": utils.get_my_linklocal(network_ref["bridge"])})
def update_ra(context, network_id): network_ref = db.network_get(context, network_id) conffile = _ra_file(network_ref['bridge'], 'conf') with open(conffile, 'w') as f: conf_str = """ interface %s { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix %s { AdvOnLink on; AdvAutonomous on; }; }; """ % (network_ref['bridge'], network_ref['cidr_v6']) f.write(conf_str) # Make sure radvd can actually read it (it setuid()s to "nobody") os.chmod(conffile, 0644) pid = _ra_pid_for(network_ref['bridge']) # if radvd is already running, then tell it to reload if pid: out, _err = _execute('cat', '/proc/%d/cmdline' % pid, check_exit_code=False) if conffile in out: try: _execute('sudo', 'kill', pid) except Exception as exc: # pylint: disable=W0703 LOG.debug(_('killing radvd threw %s'), exc) else: LOG.debug(_('Pid %d is stale, relaunching radvd'), pid) command = _ra_cmd(network_ref) _execute(*command) db.network_update(context, network_id, {'gateway_v6': utils.get_my_linklocal(network_ref['bridge'])})