Webhooks, activation.created

Hi Adnan,
I just put in place a webhook for activation.created, but was surprised to receive this event for an activation already existing. Is it a misuse of LexActivator on our side?
Pat

Hi Adnan,
Another question, still related to the activation.created webHook: we see from the webHook “activation.created” some activations for a license that we do not see in the dashboard. This license is very likely used in docker, and I know that it’s quite difficult to identify each docker instances, but where I’m puzzled is that for these activations, I can look at them though the webAPI (I have the id of the activation), but looks like these activations are zombie activations as there are referring to a valid license, but the license doesn’t refer to them. Do you understand what is going on?
Pat

Hi Pat,

Zombie licenses are not shown on the dashboard and auto-cleaned every 15 minutes. But if you have the id, you can still access it.

Hi Adnan,
Have you seen my first question?
About the zombie licenses, can you provide more details? I mean, why/how are they becoming zombie? What does auto-clean mean they are still accessible after 15mn?
Pat

Hi Pat,

They are actually not zombie licenses, they are the licenses whose lease has expired and have been marked for deletion (will get deleted within 15 mins). Even though they can be accessed, they are ignored in all respects.

Hi Adnan,
Thanks for this.

1- What about my first question:
I just put in place a webhook for activation.created, but was surprised to receive this event for an activation already existing. Is it a misuse of LexActivator on our side?
Note: I’m seeing this with node-locked licenses without VM or docker use

2- For the “zombie” licenses (sorry for the name “zombie”, I don’t have a better one for now): I thought that the lease duration was for floating licenses. Here I’m seeing this with node-locked licenses, which are still valid (not expired). Does it help to understand what is going on?

Pat

If you call ActivateLicense() function on a machine which is already activated, you will get this behaviour. Yes, it seems like a misuse to force a server sync.

This should not happen for node-locked licenses. All the activation should appear irrespective of status. Do they have the correct license id?

Hi Adnan,

1- That’s correct, our system is calling ActivateLicense at startup when IsLicenseGenuine returns the “grace period over”. How should we manage this? I was expecting in this scenario (activation already done but grace period over) to get an “activation.updated” event.

2- Yes the license id is correct. But after a closer look, they all have the same activation id, while reporting a different hostname through the webhook event. These activations are from docker instances, so they probably have all the same fingerprint. Is there a way to include the hostname in the fingerprint? I’m asking because we are still trying to work around the docker use issue with node-locked licenses. FYI, the floating licenses in this scenario are not an option because the devices used for “production” are usually not connected to internet for security reasons.

Pat

Hi Pat,

1- ActivateLicense() will trigger activation.created event for existing activation too. If grace period is over then wait for the status in the license callback and take action accordingly.

2- All Docker containers will return the same fingerprint and will try to overwrite the same activation with slightly different data (e.g. hostname).

The only practical way to license Dockerized apps is to use floating licenses with leasing strategy set to ‘per-instance’.

In case of offline scenarios you can use LexFloatServer.