private PriamInstance claimToken()

in priam/src/main/java/com/netflix/priam/identity/token/TokenRetriever.java [288:317]


    private PriamInstance claimToken(PriamInstance originalInstance) {
        String hostIP =
                config.usePrivateIP() ? myInstanceInfo.getPrivateIP() : myInstanceInfo.getHostIP();
        if (originalInstance.getInstanceId().equals(myInstanceInfo.getInstanceId())
                && originalInstance.getHostName().equals(myInstanceInfo.getHostname())
                && originalInstance.getHostIP().equals(hostIP)
                && originalInstance.getRac().equals(myInstanceInfo.getRac())) {
            return originalInstance;
        }
        PriamInstance newInstance = new PriamInstance();
        newInstance.setApp(config.getAppName());
        newInstance.setId(originalInstance.getId());
        newInstance.setInstanceId(myInstanceInfo.getInstanceId());
        newInstance.setHost(myInstanceInfo.getHostname());
        newInstance.setHostIP(hostIP);
        newInstance.setRac(myInstanceInfo.getRac());
        newInstance.setVolumes(originalInstance.getVolumes());
        newInstance.setToken(originalInstance.getToken());
        newInstance.setDC(originalInstance.getDC());
        try {
            factory.update(originalInstance, newInstance);
        } catch (Exception ex) {
            long sleepTime = randomizer.nextInt(MAX_VALUE_IN_MILISECS);
            String token = newInstance.getToken();
            logger.warn("Failed updating token: {}; sleeping {} millis", token, sleepTime);
            sleeper.sleepQuietly(sleepTime);
            throw ex;
        }
        return newInstance;
    }