The Cybernode represents the qualitative and quantitative attributes of a compute resource. Quantitative attributes are essentially the depletion oriented resources (CPU, Memory, Disk) that are consumable by processes (applications) that the compute resource hosts. The Rio Cybernode provides capabilities to measure, monitor, set thresholds on and be notified of the use of quantitative resources for a compute resource, but also provides an approach to determine whether a compute resource (as represented by a Cybernode) can support the requirements of a service.
Rio provides a very basic approach to this; basically compute resource have capabilities (CPU, disk, connectivity, operating systems, patch levels, software components, required versions...) and software components (services) need to run on the most appropriate compute resource based on some definable criteria.
The Cybernode defines these as qualitative capabilities, indicating a specific type of mechanism or quality associated with a compute resource. The qualitative capability is defined using org.rioproject.system.capability.PlatformCapability objects. You can add your own platform classes if you need to, Rio comes with the following classes (as part of the PlatformCapability hierarchy):

Determination of whether a Cybernode can support the requirements of a service is determined by PlatformCapability objects, not by administartive configurations. The selection policy is enabled using a mobile code approach that supports regular expressions matching and declared attribute values as well as version support.
PlatformCapability attributes are stored as (key, value) pairs in a HashMap and tested for supportability. Attributes obtained from the SystemRequirement class are also tested for supportability using regular expression matching.
| The declaration of a SystemRequirement in the operational string matches the name of a PlatformCapability class |
If the SystemRequirement class contains a Version requirement, the required version value is processed as follows:
The Version determines which version of the PlatformCapability is required. Without this key set, your service may not launch with the desired version of the PlatformCapability. The "Version" value can use the asterisk
or plus
symbols to determine version requirements.
| Requirement | Support Criteria |
|---|---|
| 1.2.7 | Specifies an exact version |
| 2* | Supported for all minor versions of 2 |
| 3.4* | Supported for all minor versions of 3.4, including 3.4 |
| 1.2+ | Supported for version 1.2 or abov |
| Version requirements are expected to be a "." separated String of integers. Character values are ignored. For example; a version declaration of "2.0-M3" will be processed as "2.0.0.3" |
Enabling Persistent Provisioning
Persistent Provisioning allows Rio to provision software or data a service needs prior to instantiation. Once software has been provisioning using this approach, the Cybernode advertises the provisioned software as a new PlatformCapability, making it available for other services.
In order for a Cybernode to be enabled for persistent provisioning, the following property needs to be set in the Cybernode's configuration file:
org.rioproject.cybernode {
provisionEnabled = Boolean.valueOf(true);
}
The configuration that ships with Rio (RIO_HOME/config/cybernode.config) has this value set. If not set, it defaults to false.
If the provisioned software is not removed on service termination, RIo will generate a new platform capability file, allowing the Cybernode to advertise the PlatformCapability upon re-instantiation.
| Persistent provisioning is currently available for POSIX based systems only |
