def __init__(self, vxlan_id, server_id, ipv6): self.vxlan_id = vxlan_id self.vxlan_mac = None self.vxlan_addr = None self.vxlan_addr6 = None self.vxlan_net = settings.vpn.vxlan_net_prefix + str( self.vxlan_id) + '.0/24' self.vxlan_net6 = utils.net4to6x64( settings.vpn.ipv6_prefix, self.vxlan_net, ) self.server_id = server_id self.ipv6 = ipv6 self.host_vxlan_id = None self.running = False self.running_lock = threading.Lock() _vxlans[(self.vxlan_id, self.server_id)] = self
def __init__(self, vxlan_id, server_id, instance_id, ipv6): self.vxlan_id = vxlan_id self.vxlan_mac = None self.vxlan_addr = None self.vxlan_addr6 = None self.vxlan_net = settings.vpn.vxlan_net_prefix + str( self.vxlan_id) + '.0/24' self.vxlan_net6 = utils.net4to6x64( settings.vpn.ipv6_prefix, self.vxlan_net, ) self.server_id = server_id self.instance_id = instance_id self.ipv6 = ipv6 self.host_vxlan_id = None self.running = False self.running_lock = threading.Lock() _vxlans[(self.vxlan_id, self.server_id)] = self _vxlan_instances[self.vxlan_id] = self.instance_id
def network6(self): routed_subnet6 = settings.local.host.routed_subnet6 if routed_subnet6: return utils.net4to6x96(routed_subnet6, self.network) return utils.net4to6x64(settings.vpn.ipv6_prefix, self.network)
def network6(self): routed_subnet6 = settings.local.host.routed_subnet6 if routed_subnet6: return utils.net4to6x96(routed_subnet6, self.network) return utils.net4to6x64(settings.vpn.ipv6_prefix, self.network)
def get_vxlan_net6(server_id): vxlan_id = get_vxlan_id(server_id) return utils.net4to6x64( settings.vpn.ipv6_prefix, vxlan_id, )
def get_vxlan_net6(server_id): vxlan_id = get_vxlan_id(server_id) return utils.net4to6x64( settings.vpn.ipv6_prefix, vxlan_id, )
def reserve_route_advertisement(self, vpc_region, vpc_id, network): cloud_provider = settings.app.cloud_provider if not cloud_provider: return ra_id = '%s_%s_%s' % (self.server.id, vpc_id, network) timestamp_spec = utils.now() - datetime.timedelta( seconds=settings.vpn.route_ping_ttl) try: self.routes_collection.update_one({ '_id': ra_id, 'timestamp': {'$lt': timestamp_spec}, }, {'$set': { 'instance_id': self.id, 'server_id': self.server.id, 'vpc_region': vpc_region, 'vpc_id': vpc_id, 'network': network, 'timestamp': utils.now(), }}, upsert=True) if cloud_provider == 'aws': utils.add_vpc_route(network) elif cloud_provider == 'oracle': utils.oracle_add_route(network) else: logger.error('Unknown cloud provider type', 'server', cloud_provider=settings.app.cloud_provider, network=network, ) if self.vxlan: if network == self.server.network: vxlan_net = self.vxlan.vxlan_net if cloud_provider == 'aws': utils.add_vpc_route(vxlan_net) elif cloud_provider == 'oracle': utils.oracle_add_route(vxlan_net) elif network == self.server.network6: vxlan_net6 = utils.net4to6x64( settings.vpn.ipv6_prefix, self.vxlan.vxlan_net, ) if cloud_provider == 'aws': utils.add_vpc_route(vxlan_net6) elif cloud_provider == 'oracle': utils.oracle_add_route(vxlan_net6) self.route_advertisements.add(ra_id) except pymongo.errors.DuplicateKeyError: return except: logger.exception('Failed to add vpc route', 'server', server_id=self.server.id, instance_id=self.id, vpc_region=vpc_region, vpc_id=vpc_id, network=network, )
def reserve_route_advertisement(self, vpc_region, vpc_id, network): cloud_provider = settings.app.cloud_provider if not cloud_provider: return ra_id = '%s_%s_%s' % (self.server.id, vpc_id, network) timestamp_spec = utils.now() - datetime.timedelta( seconds=settings.vpn.route_ping_ttl) try: self.routes_collection.update_one({ '_id': ra_id, 'timestamp': {'$lt': timestamp_spec}, }, {'$set': { 'instance_id': self.id, 'server_id': self.server.id, 'vpc_region': vpc_region, 'vpc_id': vpc_id, 'network': network, 'timestamp': utils.now(), }}, upsert=True) if cloud_provider == 'aws': utils.add_vpc_route(network) elif cloud_provider == 'oracle': utils.oracle_add_route(network) else: logger.error('Unknown cloud provider type', 'server', cloud_provider=settings.app.cloud_provider, network=network, ) if self.vxlan: if network == self.server.network: vxlan_net = self.vxlan.vxlan_net if cloud_provider == 'aws': utils.add_vpc_route(vxlan_net) elif cloud_provider == 'oracle': utils.oracle_add_route(vxlan_net) elif network == self.server.network6: vxlan_net6 = utils.net4to6x64( settings.vpn.ipv6_prefix, self.vxlan.vxlan_net, ) if cloud_provider == 'aws': utils.add_vpc_route(vxlan_net6) elif cloud_provider == 'oracle': utils.oracle_add_route(vxlan_net6) self.route_advertisements.add(ra_id) except pymongo.errors.DuplicateKeyError: return except: logger.exception('Failed to add vpc route', 'server', server_id=self.server.id, instance_id=self.id, vpc_region=vpc_region, vpc_id=vpc_id, network=network, )