def reserve_route_advertisement(self, vpc_region, vpc_id, network): 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) utils.add_vpc_route(vpc_region, vpc_id, network, settings.local.host.aws_id) 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, ) 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, )