@@ -23,6 +23,12 @@ def __init__(self, name, enabled, data):
2323 self .enabled = enabled
2424 self .data = data
2525
26+ class HostFeatureEntitlement (object ):
27+ def __init__ (self , host_feature_entitlement_dict ):
28+ self .feature_name = host_feature_entitlement_dict .get ("featureName" )
29+ self .value = host_feature_entitlement_dict .get ("value" )
30+
31+
2632class HostConfig (object ):
2733 def __init__ (self , max_offline_lease_duration ):
2834 self .max_offline_lease_duration = max_offline_lease_duration
@@ -234,6 +240,93 @@ def GetHostProductVersionFeatureFlag(name):
234240 return HostProductVersionFeatureFlag (name , isEnabled , LexFloatClientNative .byte_to_string (buffer .value ))
235241 else :
236242 raise LexFloatClientException (status )
243+
244+ @staticmethod
245+ def GetHostLicenseEntitlementSetName ():
246+ """Gets the name of the entitlement set associated with the LexFloatServer license.
247+
248+ Raises:
249+ LexFloatClientException
250+
251+ Returns:
252+ str: host license entitlement set name
253+ """
254+ buffer_size = 256
255+ buffer = LexFloatClientNative .get_ctype_string_buffer (buffer_size )
256+ status = LexFloatClientNative .GetHostLicenseEntitlementSetName (buffer , buffer_size )
257+ if status != LexFloatStatusCodes .LF_OK :
258+ raise LexFloatClientException (status )
259+ return LexFloatClientNative .byte_to_string (buffer .value )
260+
261+ @staticmethod
262+ def GetHostLicenseEntitlementSetDisplayName ():
263+ """Gets the display name of the entitlement set associated with the LexFloatServer license.
264+
265+ Raises:
266+ LexFloatClientException
267+
268+ Returns:
269+ str: host license entitlement set display name
270+ """
271+ buffer_size = 256
272+ buffer = LexFloatClientNative .get_ctype_string_buffer (buffer_size )
273+ status = LexFloatClientNative .GetHostLicenseEntitlementSetDisplayName (buffer , buffer_size )
274+ if status != LexFloatStatusCodes .LF_OK :
275+ raise LexFloatClientException (status )
276+ return LexFloatClientNative .byte_to_string (buffer .value )
277+
278+ @staticmethod
279+ def GetHostFeatureEntitlements ():
280+ """Gets the feature entitlements associated with the LexFloatServer license.
281+
282+ Feature entitlements can be linked directly to a license (license feature entitlements)
283+ or via entitlement sets. If a feature entitlement is defined in both, the value from
284+ the license feature entitlement takes precedence, overriding the entitlement set value.
285+
286+ Raises:
287+ LexFloatClientException
288+
289+ Returns:
290+ HostFeatureEntitlements[]: list of host feature entitlements
291+ """
292+ buffer_size = 4096
293+ buffer = LexFloatClientNative .get_ctype_string_buffer (buffer_size )
294+ status = LexFloatClientNative .GetHostFeatureEntitlements (buffer , buffer_size )
295+ if status == LexFloatStatusCodes .LF_OK :
296+ host_feature_entitlements_json = LexFloatClientNative .byte_to_string (buffer .value )
297+ if not host_feature_entitlements_json .strip ():
298+ return []
299+ else :
300+ host_feature_entitlements = json .loads (host_feature_entitlements_json )
301+ host_feature_entitlements_list = [HostFeatureEntitlement (feature_detail ) for feature_detail in host_feature_entitlements ]
302+ return host_feature_entitlements_list
303+ else :
304+ raise LexFloatClientException (status )
305+
306+ @staticmethod
307+ def GetHostFeatureEntitlement (feature_name ):
308+ """Gets the feature entitlement associated with the LexFloatServer license.
309+
310+ Feature entitlements can be linked directly to a license (license feature entitlements)
311+ or via entitlement sets. If a feature entitlement is defined in both, the value from
312+ the license feature entitlement takes precedence, overriding the entitlement set value.
313+
314+ Raises:
315+ LexFloatClientException
316+
317+ Returns:
318+ HostFeatureEntitlement: host feature entitlement
319+ """
320+ cstring_feature_name = LexFloatClientNative .get_ctype_string (feature_name )
321+ buffer_size = 1024
322+ buffer = LexFloatClientNative .get_ctype_string_buffer (buffer_size )
323+ status = LexFloatClientNative .GetHostFeatureEntitlement (cstring_feature_name , buffer , buffer_size )
324+ if status == LexFloatStatusCodes .LF_OK :
325+ host_feature_entitlement_json = LexFloatClientNative .byte_to_string (buffer .value )
326+ host_feature_entitlement = json .loads (host_feature_entitlement_json )
327+ return HostFeatureEntitlement (host_feature_entitlement )
328+ else :
329+ raise LexFloatClientException (status )
237330
238331 @staticmethod
239332 def GetHostLicenseMetadata (key ):
0 commit comments