Resource types
Deployable resources
System and component instances are deployable resources: they become part of a project descriptor that can be provisioned on the target infrastructure, published on marketplaces and data catalogs, and tested by the Witboost Computational Governance.
The kind property in the descriptor of a system or component represents its resource type and reflects the value of the spec.resourceTypeId property of its type (system type or component type). More on this in the descriptor section.
Deployable resources and resource instances are distinct concepts. Deployable resources refer to system and component instances that make up a project. In contrast, resource instances are Witboost entities with kind Resource, used to track external systems that are not managed within Witboost.
Witboost Computational Governance
As reported in the Witboost Computational Governance (WCG) documentation, policies and metrics are bound to a specific resource type. The evaluation of a descriptor (a resource) on WCG always requires the information on the resource type, used to select the related set of governance entities.
There are different ways to manually register a new resource type on WCG, however the Practice Shaper, if properly configured (i.e., configuration ui.appConfig.practiceShaper.resourceTypesProcessor.enabled is true), will automatically take care of this.
Automatic resource type registration
When a system type is created or updated, the Practice Shaper registers (or updates) its related resource type on WCG by sending an HTTP request to the /v1/computational-governance/resource-types WCG endpoint (refer to the API reference section of the documentation).
The system type properties used to register its resource type are:
spec.resourceTypeId- unique resource type identifierspec.resourceTypeConfig- optional resource type configuration. If not provided, the default settings under configurationui.appConfig.practiceShaper.resourceTypesProcessor.resourceTypeConfigurationwill be used instead
Properties of spec.resourceTypeConfig:
| Property | Type | Required | Description | Example |
|---|---|---|---|---|
displayName | string | No | Resource type display name. If not provided, it will default to the display name of the system type; if this is also not provided, spec.resourceTypeId will be used | Data Product |
descriptorConfiguration | object | No | Information about the shape of descriptors of this resource type. If not provided, the default configuration under ui.appConfig.practiceShaper.resourceTypesProcessor.resourceTypeConfiguration.descriptorConfiguration will be used instead.More about the structure of this object in the Practice Shaper configuration section | |
resolverConfiguration | object | No | Details about the perimeter resolver of this resource type. If not provided, the default configuration under ui.appConfig.practiceShaper.resourceTypesProcessor.resourceTypeConfiguration.resolverConfiguration will be used instead.More about the structure of this object in the Practice Shaper configuration section | |
cuePreprocessScript | string | No | Preprocessing script in CUE language to modify the resource descriptor before it gets evaluated | Script { env: _data.environment } generates a descriptor by extracting only the environment field from the original one |