Some ISV deployment strategies may involve deploying on-premise installations of the software for each client. This may make it difficult to replace the Yellowfin license when it requires replacement.
There are two approaches that can be used to update a license in a remote environment. One involves pushing a license via the REST service, and the other allows for a pull mechanism that can be configured in the Yellowfin instance itself.
Updating a license via the REST API
Updating a license in a running instance of Yellowfin is possible with the POST /api/rpc/licence-management/upload-licence end-point (https://developers.yellowfinbi.com/dev/api-docs/current/#operation/uploadLicence ).
This particular endpoint uses a form based submission paradigm. A single form body is required named “newLicence” which should contain the license file’s contents.
The following code examples illustrate how to upload a license via the POST /api/rpc/licence-management/upload-licence end-point:
Java | C# | Go | JavaScript | PHP | Python
License Auto Provisioning
License Auto Provisioning is an inbuilt mechanism that allows for a Yellowfin instance to look for a new license file on a remote server. This can be configured by enabling the LicenceAutoProvision servlet in the web.xml.
This can be configured so that Yellowfin will connect to a server periodically to look for a new license. If a license file downloaded from the server differs from the currently installed license, it will be ingested and the license replaced. This allows an ISV with distributed installs to manage license updates remotely by updating the license at the defined server location.
The server can operate on HTTP, HTTPS or SFTP. HTTP and HTTPS support basic authentication. SFTP requires user authentication to connect.
<servlet>
<servlet-name>LicenceAutoProvision</servlet-name>
<servlet-class>com.hof.servlet.LicenceAutoProvision</servlet-class>
<init-param>
<param-name>Enabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>TaskPeriodInterval</param-name>
<param-value>360</param-value>
</init-param>
<init-param>
<param-name>Protocol</param-name>
<param-value>http</param-value>
<!-- <param-value>https</param-value>-->
<!-- <param-value>sftp</param-value>-->
</init-param>
<init-param>
<param-name>Hostname</param-name>
<param-value>localhost</param-value>
</init-param>
<init-param>
<param-name>Port</param-name>
<param-value>8100</param-value>
</init-param>
<init-param>
<param-name>PathToLicenceFile</param-name>
<param-value>/static/licence.lic</param-value>
</init-param>
<init-param>
<param-name>Username</param-name>
<param-value>demo</param-value>
</init-param>
<init-param>
<param-name>Password</param-name>
<param-value>demo</param-value>
</init-param>
<load-on-startup><!-- can use 9 or greater, as long as its one of the last servlet initialized --></load-on-startup>
</servlet>