Static Model API
The Lua Static Model makes the definition of all object classes and properties available using the Lua API. It allows to come up with custom generic operations, e.g., customized CRUD (create-read-update-delete) or automatic tests and migrations after a version upgrade. It enables Lua API users to have more autonomy and increases the possibilities for customization and automation within the Lua scripting environment.
Using the Lua Static Model, the following can be achieved:
-
Retrieve details about classes and properties
-
Determine which properties are available for each class
-
Determine which performance counters are available for each class
-
Various types of hierarchical relationships between objects and properties
The static model provides a read-only view of the underlying system model data.
Class
Class is a definition of an object; it is exposed as a userdata datatype in the Lua API. Its fields are described
below. In order to obtain a class userdata, can index
syslib.model.classes
by a numeric code (see a full list of
classes).
Fields
Name | Type | Description |
---|---|---|
code |
integer |
Class code |
tag |
string |
Class name |
toplevel |
Boolean |
|
version_major |
integer |
A version major component of the class definition |
version_minor |
integer |
A version minor component of the class definition |
sortorder |
integer |
Recommended position of a subclass in UI |
subclasses |
|
A list of classes of all possible subobjects of object |
properties |
|
A list of object properties |
models |
|
A class can only belong to this list of models |
attributes |
|
|
performance |
|
A list of object performance counters |
parents |
|
Objects of these classes can be parents of an object of this class in a model hierarchy. |
children |
|
Objects of these classes can be children of an object of this class in a model hierarchy. |
Subclasses/Subobjects
An object can have subobjects, which extend its functionality. A class of such object is called a top level class and
its toplevel
field is true
. A list of classes of possible subobjects is available as class.subclasses
. Some
subobjects are present unconditionally, but for some subobjects only one subobject can be present at the same time;
those are selected in accordance with a value of a special selector property. The subclasses
property enumerates
classes of both kinds of subobjects, thus all possible subclasses.
One can see subobjects in a property path, e.g., TimeSeriesDataStore
in
/System.TimeSeriesDataStore.MongoDBConnection.UserName
.
Property
Property is a definition of an object property; it is exposed a userdata datatype in the Lua API. Its fields are
described below. In order to obtain a property userdata one can index
syslib.model.properties
by a numeric code (see a full list of
properties).
Fields
Name | Type | Description |
---|---|---|
code |
integer |
Property code |
tag |
string |
Property name |
type |
integer |
Property type code from
|
iscompound |
Boolean |
|
flaggroup |
integer |
Code of corresponding flag group is returned if the
PropertyTypes is equal to FLAGGROUP (otherwise |
codegroup |
integer |
Code of corresponding flag group is returned if the
PropertyTypes is equal to CODINGGROUP (otherwise |
table |
boolean |
returns |
tableschema |
string |
returns the table schema if if PropertyTypes is
TABLESCHEMABOUND (otherwise |
default |
variant |
default data if specified, nil otherwise. NOTE: This is the specified default, not default value which is implicitly created if it’s not specified. |
datatype |
integer |
returns a syslib.model.codes.VariantTypes. Warning: it can be ORed with syslib.model.flags.VariantTypeFlags.ARRAY |
max |
variant |
returns the maximum value if specified, nil otherwise. |
min |
variant |
returns the minimum value if specified, nil otherwise. |
properties |
userdata |
returns properties userdata |
attributes |
userdata |
returns attributes userdata |
capabilities |
userdata |
returns capabilities userdata |
Performance counter
Performance counter is a definition of an object performance counter; it is exposed a userdata datatype in the Lua
API. Its fields are described below. In order to obtain a performance counter userdata one can index
syslib.model.counters
by a numeric code (see a full list of
performance counters).
Fields
Name | Type | Description |
---|---|---|
code |
integer |
Performance counter code |
tag |
string |
Performance counter name |
meaning |
string |
Description of the performance counter |
engunit_name |
string |
Measurement unit name |
engunit_meaning |
returns |
Description of the measurement unit |
performancegroup_name |
string |
Performance counter belongs to this group, e.g., "Hardware", "Lua", "Objects", etc. |
timebase_name |
string |
Timebase name, e.g., "SECOND" |
show_timebase |
boolean |
|
Performance counter tag
can be used in order to "create a performance counter generic item". E.g., CPU
in the value
/System/Core.Performance.CPU
of a Performance Assignment property of a generic item.
Capabilities
Capability is a definition of a property capability; it is exposed a userdata datatype in the Lua API. Its fields are described below.
Fields
Name | Type | Description |
---|---|---|
code |
integer |
Returns code for the capability userdata |
tag |
string |
Returns capability name |
meaning |
string |
Description of the capability |
coding_code |
integer |
Returns code of a coding from the |
property |
userdata |
Returns a property userdata for the property in question |
Indexing and Iteration
The following table gives reference information on the indexing for entities in the Lua Static Model, the expected return values and what can be iterated using the Lua pairs function.
Entity | Indexed by | Return Value | Pairs Iteration |
---|---|---|---|
class |
field_string |
depends on a field |
- |
property |
field_string |
depends on a field |
- |
class |
property_userdata, class_userdata |
property_userdata or class_userdata |
- |
property |
property_userdata |
property_userdata |
- |
property.propertiesclass.properties |
code, property_name_string |
property_userdata |
<code,property_userdata> |
class.subclasses |
code, class_name_string |
class_userdata |
<code,class_userdata> |
class.parents class.children |
code, class_userdata |
class_userdata |
<code,class_userdata> |
class.models |
code |
model_name_string |
<code,name_string> |
class.performance |
code |
performance_counter_userdata |
<code,performance_counter_userdata> |
property.attributes class.attributes |
number |
boolean |
|
syslib.model.properties |
name_stringcode |
codeproperty_userdata |
<code,property_userdata> |
syslib.model.classes |
name_stringcode |
codeclass_userdata |
<code,class_userdata> |
syslib.model.counters |
name_stringcode |
codeperformance_counter_userdata |
<code,performance_counter_userdata> |
syslib.model.codes |
name_string |
key-value lua table, where key is a coding name and value is it’s value |
- |
syslib.model.flags |
name_string |
key-value lua table, where key is a flag and value is it’s value (number) |
- |