Feature Set Mapping
Introduction
The core aspect of any chargeback/Pay-Per-Use system revolves around normalizing the data to enable comparison between usage and purchasing information.
For certain applications, there is no one-to-one match between the licenses (features) used and the application. Often, several applications can share a license, making it difficult to pinpoint which application used it.
Feature set mapping maps the licenses back to applications (feature sets), primarily considering cost. It aims to identify the cheapest possible combination of feature sets that include all features checked out at any given time.
This is applicable for all data types with featureset classification.
Apply the configurations shown in the Open iT Core Server.
Feature Set Mapping Guide
The feature set configuration consists of the DEFAULT, GROUP, and UNMAPPED blocks.
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all
GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"
GROUP "ANSYS CFD Pro"
@count=99999
@cost=4
general:
featureset="ANSYS CFD Pro"
elements:
feature="cfd_base"
feature="cfd_solve_level1"
UNMAPPED
general:
featureset=unmapped
used_licenses=1
licenses=1
DEFAULT
Use the DEFAULT block to set common attributes, rules, and general assignments. There should be only one DEFAULT block in a featureset.map
file and it should be identical to all such files:
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all
As you noticed, the DEFAULT block consists of two sections: rules and general.
Specify the rules as methods with additional details.
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all
Example | Description |
---|---|
ignore used_licenses < 1 | Use this to specify the number of license use to ignore. By default, it is set to ignore any record without actual license use. Other available operators are <= , > , >= , == , and != . |
count used_licenses | Use this to specify the record field that holds the feature count. |
The general sub-block lists a set of assignments of values to record fields. There should be only one assignment of value per line, following the format <name>=<value>
.
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all
The record fields are indexed by the following names:
Name | Description |
---|---|
used_licenses | This specifies the licenses in use. |
licenses | This specifies the maximum available licenses. |
featureset_version | This specifies the feature set version. |
A value can either be a fixed value or a variable. Variable names must be enclosed in %
.
Example | Description |
---|---|
%count% | The number of instances of the group in the current combination. |
%totalcount% | The count value defined for each group (i.e., maximum possible group instances). |
Optionally, you can add the configuration-override sub-block under DEFAULT to override the method
used to generate feature sets.
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all
configuration-override:
method=complete
By default, the method used is defined in the filter's XML configuration file. Specifying a method in the featureset.map
file overrides the default configuration.
Methods | Description |
---|---|
complete | This method produces optimal results but operates at a slow pace. This approach checks for every possible constellation of groups and then picks the optimal one. |
cheapest-first | This method produces sub-optimal results but operates at a fast pace. This approach picks the cheapest groups first and fills them up as much as possible. |
expensive-first | This method produces sub-optimal results. It is not as fast as cheapest-first but has better results. This approach figures out which groups to include (cannot avoid), picks the most expensive first, and then fills it up as much as possible. We're then left with fewer features for the next most expensive group and so on. |
auto | This automatically selects between complete or expensive-first depending on the data size. |
By default, method is set to expensive-first.
The expensive-first method comes with a configurable find-largest algorithm that fills up all the groups at the same (high) cost, then picks the one containing the most features. The result is better but can take more time to complete. This is inactive by default.
To enable this functionality, add expensive-first.find-largest=true
under configuration-override:
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all
configuration-override:
expensive-first.find-largest=true
Here are some reminders when using configuration-override:
- Since
method=expensive-first
is the default, there's no need to specify an override for this method. - The
expensive-first.find-largest
entry applies only whenmethod=expensive-first
, so there is no point in overriding it when any other method is used. - For the above reasons, it's typically unnecessary to specify both entries in a feature set map file. You can either specify a different
method
or usefind-largest
with the defaultmethod=expensive-first
.
GROUP
GROUP blocks are the definition of each feature set.
GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"
This is where you define the attributes, such as the count
, cost
, and validity of the feature set; general details, such as the featureset name; and the elements that lists the individual features, vendor licenses, etc..
Values defined in the DEFAULT block can be overridden by those specified in individual GROUPs.
Attributes are values defined by a keyword (attribute name), and each keyword is preceded by @
.
GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"
Attribute | Description |
---|---|
count | This specifies the maximum number of instances allowed for the group. |
cost | This specifies the cost for the group. |
valid_from (e.g., @valid_from=2010-01-01 ) | This specifies that the group cannot be used before this date (if not specified, then the group is valid from any date). |
expires (e.g., @expires=2012-01-01 ) | This specifies that the group cannot be used on or after this date (if not specified, then there is no expiration). |
Similar to the DEFAULT block, the general sub-block allows you to list general details about the feature set. Refer to the GROUP: General Assignments table below for the available record fields.
GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"
The elements sub-block lists the record indices where the value must match to be eligible for the group.
GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"
Index | Description |
---|---|
feature | This specifies the license feature name. |
feature_version | This specifies the feature version. |
featureset | This specifies the feature set name. |
featureset_version | This specifies the feature set version. |
product | This specifies the vendor license name. |
package | This specifies the license package name. |
Each line defines a unique value set where all values must match. If a record matches any line, then it is eligible.
elements:
feature="Concentric Circles" feature_version=3.14
feature=Squares
product=Geometry
With the example above, if a record's feature name is Concentric Circles and its version is 3.14, or its feature name is Squares, or its vendor license name is Geometry, then it is eligible for this group.
UNMAPPED
Any feature eligible for a feature set but is not actually assigned to a set will be assigned to the UNMAPPED set.
UNMAPPED
general:
featureset=unmapped
used_licenses=1
licenses=1
Configuring Feature Set Mapping
- Windows
- Unix
-
Open
featureset.map
in the Configuration directory, which is by default inC:\Program Files\OpeniT\Core\Configuration
.Notice that it contains instructions on how to edit the file.
-
Modify the mapping file. Refer to the Feature Set Mapping Guide above.
NoteValues containing spaces and/or tabs must be enclosed in double quotes
"
.Empty lines are allowed — any line beginning with
#
as the first non-white character is considered a comment. -
Save the changes.
-
Open
featureset.map
in the etc directory, which is by default in/var/opt/openit/etc
.Notice that it contains instructions on how to edit the file.
-
Modify the mapping file. Refer to the Feature Set Mapping Guide above.
NoteValues containing spaces and/or tabs must be enclosed in double quotes
"
.Empty lines are allowed — any line beginning with
#
as the first non-white character is considered a comment. -
Save the changes.
This mapping may affect the following data types:
Licpoll2
- (45) Total License Use v2.0
- (46) Individual License Use v2.0
- (47) Host License Use v2.0
- (49) Host User License Use
- (71) Usergroup License Use v2.0
- (72) Hostgroup License Use v2.0
- (93) OLAP Raw Hourly
- (94) OLAP User Concurrency
- (95) Usergroup License Use v3.0
- (102) OLAP Total Use
- (124) License Model User Concurrency
- (125) License Model Total Usage
FlexLog2
- (50) Host User License Use Logfile
- (51) Total License Use Logfile
- (75) License Logfile Events
- (76) Total Queued Logfile
- (77) Individual Queued Logfile
- (83) Host License Use Logfile
- (84) Individual License Use Logfile
- (85) Usergroup License Use Logfile
- (86) Hostgroup License Use Logfile
Licenseevents
- (89) Total License Use Licenseevents
- (90) Individual License Use Licenseevents
- (91) Usergroup License Use Licenseevents
- (108) Host License Use Licenseevents
- (109) Hostgroup License Use Licenseevents
Licenseevents2
Next Steps?
Proceed with data regeneration after configuring all the necessary mapping files to apply the changes in the real-time and historical reports.
For real-time reports:
For historical reports: