4.1 Grid Object Facts and Fact Junctions

Every component discovered in a PlateSpin Orchestrate-enabled network is identified and abstracted as an object. Within the PlateSpin Orchestrate management framework, objects are stored within an addressable database called a Grid. Every Grid object has an associated set of facts and constraints that define its properties and characteristics. Essentially, by building, deploying, and running jobs on the PlateSpin Orchestrate Server, you can individually change the functionality of any and all system resources by managing an object’s facts and constraints.

The components that have facts include Jobs, Resources (including physical machines, virtual machines and VM hosts), Virtual Disks (vDisks), Virtual NICs (vNICs), Repositories, Virtual Bridges, and Users. The PlateSpin Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator (unless they are read-only).

The XML fact element defines a fact to be stored in the grid object’s fact namespace. The name, type and value of the fact are specified as attributes. For list or array fact types, the element tag defines list or array members. For dictionary fact types, the dict tag defines dictionary members.

See the examples in the directory, /allTypes.policy. This example policy has an XML representation for all the fact types.

Facts can also be created and modified in JDL and in the Java Client SDK

As a Job Developer, you might want certain constraints to be used for a job and you might specify these in the policy. These comprise a set of logical clauses and operators that are compared with the respective component’s fact values when the job is run by the Job Scheduling Manager. See

Remember, all properties appear in the job context, which is an environment where constraints are evaluated. These constraints provide a multilevel filter for a job in order to ensure the best quality of service the grid can provide.

This section includes the following information:

For further fact information found in jobs, see Section 7.0, Job Examples and Section 2.2.2, Using Facts in Job Scripts.

4.1.1 Fact Type Definitions

The following table explains the abbreviated codes used to describe facts for PlateSpin Orchestrate Grid objects:

Table 4-1 PlateSpin Orchestrate Fact Types

Type

Description

Automatic

The fact should be automatically set after the successful discovery of virtual resources (VM Hosts and VMs).

Boolean

The fact is a Boolean value.

Default

The specified default value of the fact is set.

Dictionary

The fact is selected from a specified dictionary listing.

Dynamic

The fact is dynamically generated.

Enumerate

The fact is a specified enumerated value.

Example

When available, provides an example how a fact might be applied to an object.

Integer

The fact is an integer value.

Real

The fact is a real number.

String

The fact is a string value.

Datagrid

Facts relate to datagrid object types.

Local

Facts relate to local object types.

NAS

Facts relate to Network Attached Storage (NAS) object types.

SAN

Facts relate to Storage Area Network (SAN) object types.

Virtual

Facts relate to virtual object types.

4.1.2 Understanding Fact Junctions

A fact junction is a special type of fact that provides a convenient way to access facts on Grid objects related to the one where the fact lookup is being performed. The following diagram shows the fact junction relationships of all the Grid objects:

Figure 4-1 Fact Junctions Between Objects in a Sample PlateSpin Orchestrate Grid

As an example of how a fact junction works, a fact lookup on vmhost.resource.id is redirected from the VM host object, through the junction onto the underlying physical Resource object. In other words, the value returned is the same as if a fact lookup for resource.id was performed on the underlying physical resource. This is accomplished with the following JDL:

vmhost1 = getMatrix().getGridObject(TYPE_VMHOST, "vmhost1")
print vmhost1.getFact("vmhost.resource.id")

Another example is vdisk.repository.freespace, which returns the amount of free space in the repository that is associated with the virtual disk where the fact lookup is being performed:

vdisk = getMatrix().getGridObject(TYPE_VDISK, "vm1_vdisk1")
print vdisk.getFact("vdisk.repository.freespace")

Note that the fact junction refers to the related Grid object rather than to any of its facts. Therefore, to obtain the ID of the repository associated with a given virtual disk, you must perform a lookup on vdisk.repository.id rather than vdisk.repository.

It is important to understand how the fact name is constructed from the junction, otherwise certain usages of fact junctions can be confusing, especially when used with facts that contain the dot (“.”) character. For example, starting with a vDisk Grid object as above:

vdisk = getMatrix().getGridObject(TYPE_VDISK, "vm1_vdisk1")

vDisk objects have a fact junction, vdisk.vm, that points to the VM associated with the vDisk. If you want to find all VNICs associated with this VM, remember that VMs have a fact resource.vm.vnics that provides the desired array. However, because PlateSpin Orchestrate accesses this fact by using the vdisk.vm fact junction, you must replace the resource component of the resource.vm.vnics fact with vdisk.vm. Therefore, the required code is:

print vdisk.getFact(“vdisk.vm.vm.vnics”)

Some fact junctions return an array of values rather than a single value. For example, the junction vmhost.repositories returns an array of all the repositories visible to the VM host where the lookup is being performed:

vmhost1 = getMatrix().getGridObject(TYPE_VMHOST, "vmhost1")
print host1.getFact("vmhost.repositories")

In this case, you can also single out one of the Grid objects returned in the array and perform fact lookups on that object. For example, if the repository san1 is accessible by vmhost1, then

print vmhost1.getFact("vmhost.repositories[san1].freespace")

returns the amount of free space available in the san1 repository.

repo_host1 = getMatrix().getGridObject(TYPE_REPOSITORY, "host1")
print repo_host1.getFact("repository.vmhosts[host1_demoAdapter].networks")

Fact junction lookups can be chained multiple times, even mixing use of single-valued and array-valued junctions:

vdisk = m.getGridObject(TYPE_VDISK, "vm1_vdisk1")
print vdisk.getFact("vdisk.repository.vmhosts[vmhost1].networks")

host1 = m.getGridObject(TYPE_RESOURCE, "host1")
print host1.getFact("resource.vmhosts[host1_demoAdapter].repositories[san1].freespace")

For a more comprehensive list of available fact junctions, see the example factJunction.job stored at /opt/novell/zenworks/zos/server/examples on your server installation system.

4.1.3 Job, Jobinstance, and Joblet Object Facts and Fact Junctions

This section includes the following information:

Job Object Facts

The Constraints/Facts tab opens a page that shows all of the effective constraints and facts for a Grid object. Each Grid object has an associated set of facts and constraints that define its properties. In essence, by changing the policy constraints and fact values for a job, you can change the behavior of the job and how the PlateSpin Orchestrate Server allocates available system resources to it. The Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator, unless they are read-only.

The following table lists the default facts created by the PlateSpin Orchestrate Server for the Job object.

NOTE:Facts with mode dynamic are dyamic read/write facts, which means you can dynamically change the values for that fact.

Facts with mode r/o have read-only values, which means they can be viewed but changes cannot be made.

Facts with mode del are deleteable, which means they can be deleted at any time. Where facts can be deleted in the Development Client, they can also be deleted in the GridObjectInfo.deleteFact() method in JDL.

Table 4-2 Job Facts

Fact Name

Fact Type

Mode

Description

job.accountinggroup

String

The default job group whose statistics are updated when this job runs.

job.autoterminate

Boolean

Whether this job ends when all child jobs and joblets end

job.cacheresourcematches.ttl

Integer

Indicates the jobs willingness to allow resource maches to be cached if the scheduler becomes too loaded. The value is the TTL of the cache in seconds ('<=0' to disable caching)

job.description

String

Textual description of job

job.enabled

Boolean

True if the job is enabled (able to be run).

job.groups

String[]

r/o

The groups where this job is a member.

job.history.cost.average

Real

dynamic, r/o

The average cost of running this job measured since job deployment or last modification. Only updated if the job finishes successfully.

job.history.cost.total

Real

dynamic, r/o

The total cost of running this job measured since job deployment or last modification

job.history.gcycles.average

Integer

dynamic, r/o

The average amount of normalized grid time (gcycles) taken by running this job. Only updated if the job finishes successfully.

job.history.gcycles.total

Integer

dynamic, r/o

The total amount of normalized grid time (gcycles) consumed by this job since deployment

job.history.jobcount

Integer

dynamic, r/o

The total number of job instances of this job ever initiated on the system (includes those denied by 'accept' constraints

job.history.jobcount.cancelled

Integer

dynamic, r/o

The total number of job instances of this job that were cancelled

job.history.jobcount.complete

Integer

dynamic, r/o

The total number of job instances of this job that were completed

job.history.jobcount.failed

Integer

dynamic, r/o

The total number of job instances of this type that failed

job.history.queuetime.average

Integer

dynamic, r/o

The average wall time spent waiting for this job to start in seconds

job.history.queuetime.total

Integer

dynamic, r/o

The total amount of time this job has spent in a queued state since last deployment.

job.history.runtime.average

Integer

dynamic, r/o

The average runtime of this job in seconds. Only updated if the job finishes successfully.

job.history.runtime.total

Integer

dynamic, r/o

The total runtime of the job since deployment in seconds

job.history.samplesize

Integer

The number of points used in the trailing average calculation for all historical averages

job.history.time.average

Integer

dynamic, r/o

The average wall time taken by running this job in seconds. This fact is updated only if the job finishes successfully.

job.history.time.total

Integer

dynamic, r/o

The total combined resource wall time of all work performed on behalf of this job since deployment in seconds

job.id

String

r/o

The name of the job.

job.instances.active

Integer

dynamic, r/o

The number of job instances of this type that are active in the system ('running' or 'paused')c

job.instances.queued

Integer

dynamic, r/o

The number of job instances of this type that are in a queued state

job.instances.total

Integer

dynamic, r/o

The total number of job instances of this type that exist in the sytem

job.joblet.immediateretry

Boolean

Specifies whether the system to attempt to immediately retry a joblet rather than waiting until all others are running/complete before retrying

job.joblet.max

Integer

The absolute maximum number of joblets this job may schedule.

job.joblet.maxfailures

Integer

Specifies the number of non-fatal joblet errors to tolerate before failing completely or '-1' to attempt to continue after errorsc

job.joblet.maxperresource

Integer

The absolute maximum number of joblets this job may occupy on any one resource ('-1' indicates no limit)

job.joblet.maxretry

Integer

The maximum number of joblet retries of any type that will be attempted before considering the joblet as failed (0 means don't retry, <0 means keep retrying)

job.joblet.maxrunning

Integer

The absolute maximum number of joblets a job is allowed to have running at one time. This value will never be exceeded ('-1' indicates no limit)

job.joblet.maxwaittime

Integer

The maximum (resource) wait time permitted by a joblet in seconds ('-1' indicates no timeout)

job.joblet.retrylimit.disconnect

Integer

The number of joblet retries caused by unexpected resource disconnect that will be allowed before considering the joblet as failed (0 means don't retry, <0 means keep retrying). Can never exceed job.joblet.maxretry

job.joblet.retrylimit.forced

Integer

The number of forced joblet retries (requested by the joblet to run an another resource) that will be allowed before considering the joblet as failed (0 means don't retry, <0 means keep retrying). Can never exceed job.joblet.maxretry

job.joblet.retrylimit.timeout

Integer

The number of joblet retries caused by server inititated joblet timeout that will be allowed before considering the joblet as failed (0 means don't retry, <0 means keep retrying). Can never exceed job.joblet.maxretry.

job.joblet.retrylimit.unforced

Integer

The number of unforced joblet retries that will be allowed before considering the joblet as failed (0 means don't retry, <0 means keep retrying). Can never exceed job.joblet.maxretry

job.joblet.runtype

String

Specify file and executable operations run in Joblet are in behalf of the Job user or not.

job.joblet.timeout

Integer

The timeout after which the server will take action to cancel the joblet (seconds, '-1' indicates no timeout)

job.joblet.tracing

Boolean

Indicates whether the joblet should include tracing information in the job log when executing joblet events

job.jobtime

The average wall time this job should take to run. Used to override the computed average when job is of type 'fixedtime' (in seconds)

job.jobtype

String

The type of job -- used in completion time calulation (normal, workflow, pspace, fixedtime, fixedcycles)

job.maxnodefailures

Integer

The maximum number of resource failures that are to be tolerated before excluding the node from future joblet processing. A value of -1 indicates that unlimited failures are acceptable.

job.maxresources

Integer

The absolute maximum number of resources that a job is allow to use at one time. This value will never be exceeded. A value of -1 indicates no limit.

job.persistfactsonfinish

Boolean

Whether the Grid objects that this job modifies are to be persisted at job end. Used and applicable only when installed in a high availablity cluster.

job.preemptible

Boolean

Indicates whether this job is willing or able to be preempted. Turned on by setting joblet.preemptible. (can be overridden by the job instance).

job.preemption.rankby

String[]

The ranking specification used to select suitable jobs to automatically preempt a resource on. The syntax for each element in the list is <fact>/<order> where order is either “a” for ascending or “d” for descending.

job.provision.hostselection

String

The strategy used in finding a host for any automatically provisioned resource (queue, immediate).

job.provision.maxcount

Integer

The number of resources that can be automatically provisioned on behalf of this job. A value of 0 turns off automatic provisioning behavior. A value of -1 allows unlimited provisioning.

job.provision.maxnodefailures

Integer

The maximum number of provision failures that will be tolerated before excluding the node from future automatic provisioning. A value of -1 indicates that unlimited failures are acceptable.

job.provision.maxpending

Integer

The number of resources tha can be automatically provisioned at one time (simulataneously) on behalf of this job. A value of <=0 turns off automatic provisioning behavor.

job.provision.rankby

String[]

The ranking specification used to select suitable resources to automatically provision. Element syntax is <fact>/<order> where order is either ascending or descending.

job.queuedtimeout

Integer

The timeout (measured in seconds) after which the server takes action to cancel a queued job, including all joblets and subjobs. A value of -1 indicates no timeout.

job.queuetime

String

The average wall time (measured in seconds) spent waiting for this job to start . Used to override the computed average when queue is of type fixedtime.

job.queuetype

String

The type of queue from which this job is typically accessed. This is used in start time calculation (none, pfifo, fifo, lifo, fixedtime).

job.resourcegroup

String

The default resource group from which resources will be selected for this job (in addition to any resource policies).

job.resources.rankby

String[]

The ranking specification used to select suitable resources. Element syntax is <fact>/<order> where order is either ascending or descending.

job.restartable

Boolean

Indicates whether this job is willing to be restarted on server restarts (can be overridden by the job instance).

job.timeout

Integer

The timeout (measured in seconds) after which the server will take action to cancel the whole job including all joblets and subjobs. A value of -1 indicates no timeout.

job.tracing

Boolean

Indicates whether this job should include tracing information in the job log when executing job events.

job.visible

Boolean

Whether this job should be visible to the client in queries or UI (it does not stop it being run).

Job Object Fact Junctions

The following diagram illustrates the relationship between the Job Grid object facts and other Grid objects. It also shows the relationship between other discrete Grid object facts and the Job Grid object itself.

Figure 4-2 Job Fact Junctions

Job Group Facts

Table 4-3 Job Group Facts

Fact Name

Fact Type

Mode

Description

group.id

String

r/o

The name of the group.

group.jobinstances.active

Integer

dynamic, r/o

The number of job instances that are active on resources in this group ('running' or 'paused').

group.jobinstances.queued

Integer

dynamic, r/o

The number of job instances that are in a queued state awaiting start on resources in this group.

group.jobinstances.total

Integer

dynamic, r/o

The total number of job instances running on, or awaiting start on resources in this group.

Jobinstance Facts

A job instance is a currently running or recently completed job. All jobinstance facts are viewable only in the Policy Debugger page of the Jobs Monitor. You need to select the All Facts check box to view these facts. These facts are not editable.

NOTE:If the job you want to view finished previously, it is possible that it can no longer be viewed in the Policy Debugger if other jobs followed it on the Orchestrate Server.

Table 4-4 Jobinstance Facts

Fact Name

Fact Type

Description

jobinstance.childids

String[]

String array of child job IDs. If no child jobs were launched, the arrayis empty.

jobinstance.cost

Real

The cost (measured in dollars) of this job.

jobinstance.cost.burnrate

Real

The computed moving average burn rate (measured in dollars per hour) of the job.

jobinstance.errors

String

The error messages recorded for a failed job.

jobinstance.id

String

The job instance unique identifier

jobinstance.instancename

String

The optional, human readable name for this job instance.

jobinstance.joblet.pspace

Integer

The number of rows in a fully expanded p-space definition. Will be equal to the number of joblets only if jobinstance.joblet.size is 1.

jobinstance.joblet.size

Integer

The number of p-space rows encapsulated in each joblet. May be explicitly set of derived as a result of specifing joblet count

jobinstance.joblets.cancelled

Integer

The number of joblets that ended in a cancelled state.

jobinstance.joblets.complete

Integer

Number of joblets that completed successfully.

jobinstance.joblets.count

Integer

The number of joblets under management of this job instance.

jobinstance.joblets.failed

Integer

The number of joblets that ended in a failed state.

jobinstance.joblets.running

Integer

The number of joblets that are actively running on resources.

jobinstance.joblets.waiting

Integer

The number of joblets that are waiting for available resources.

jobinstance.matchingresources

Integer

The number of currently active resources that match the resource contraints.

jobinstance.memo

String

A brief memo set by this job instance that can be seen in user/administrator portals.

jobinstance.originid

String

The job identifier of the root job of this hierarchy or this job if a top level job.

jobinstance.parentid

String

The job identifier of the parent job of this hierarchy or empty if this is a top level job with no parent.

jobinstance.preemptible

Boolean

Specifies that this job instance is willing to give up resources if required. Initially set from the equivalent job fact.

jobinstance.priority

Integer

The numeric representation of the current priority of this job instance (1=lowest, 9=highest). Default value is the user's default priority.

jobinstance.priority.string

String

The string representation of the current priority of this job instance.

jobinstance.problemresources

String[]

The number of resources that are excluded from this job instance due to reaching the job.maxnodefailures limit.

jobinstance.provision.avoidresources

String[]

The names of automatically provisioned resources that are currently being avoided (not yet excluded) because of prior provisioning errors.

jobinstance.provision.count

Integer

The total number of resources that have been automaticaly provisioned (or are in progress) for this job.

jobinstance.provision.pending

Integer

The total number of automatically provisioned resources that are pending online status.

jobinstance.provision.problemresources

String[]

The names of automatically provisioned resources that encountered provisioning errors and have been excluded.

jobinstance.provision.problemresources.count

Integer

The number of automatically provisioned resources that encountered provisioning errors and have been excluded.

jobinstance.resources

String[]

The resources currently in use by this job

jobinstance.resources.count

Integer

Number of resources currently in use by this job

jobinstance.restarted

Boolean

Whether this job instance was been restarted due to server restart.

jobinstance.startat

Date

The date/time that this job was requested to start atc

jobinstance.starttime

The formated start date and time for this job instance

jobinstance.state

Integer

The numeric state of this job instance

jobinstance.state.string

String

String representation of the current state of this job instance

jobinstance.terminationtype

String

The cause of the termination for a cancelled or failed job.

jobinstance.time.completed

Date

The time this job instance completed or an estimation if still active

jobinstance.time.elapsed

Integer

The elapsed wall time this job instance has been running or ran (in seconds)

jobinstance.time.elapsed.string

String

The elapsed wall time this job instance has been in a running

jobinstance.time.queued

Integer

The elapsed wall time this job instance has been a queued (in second)s

jobinstance.time.started

Date

The time this job instance was actually started or an estimating if queued

jobinstance.time.submitted

Date

The time this job instance was submitted

Jobinstance Fact Junctions

The following diagram illustrates the relationship between the Jobinstance facts and other Grid objects.

Figure 4-3 Jobinstance Fact Junctions

Joblet Facts

Joblet facts can be accessed only if you write code within the Joblet subclass of a JDL file. If you code a job to expose the joblet fact values, PlateSpin Orchestrate runs the scheduled joblets and you can see the joblet fact values in the Job Log tab of the Devlopment Client.

The available joblet facts and their descriptions are listed in the following table.

Table 4-5 Joblet Facts

Fact Name

Description

joblet.autoterminate

Whether the joblet ends when all events for the joblet ends.

joblet.errors

The list of error dictionaries encapsulating the error history for this joblet. Dictionary keys:

  • ts: timestamp in milliseconds

  • node: the node name where execution failed

  • error: the error message

joblet.history

The list of resource IDs where the joblet has run.

joblet.id

The unique identifier for this joblet.

joblet.instancename

A human readable name for this joblet instance.

joblet.memo

An (optional) memo field for this joblet that can be displayed in the management console.

joblet.number

The joblet number.

joblet.preemptible

Indicates whether this joblet is willing or able to be preempted.

joblet.retrynumber

The number of retries for this joblet (0 on first attempt).

joblet.state

The numeric state of this joblet instance.

joblet.state.string

String representation of the current state of this joblet instance.

joblet.timeout

The time after which this joblet will be cancelled/retried. (seconds, defaults to job.joblet.timeout).

4.1.4 Resource Object Facts and Fact Junctions

This section includes the following information:

Resource Object Facts

The Resource object (a physical or virtual machine) has an associated set of facts and constraints that define its properties. The PlateSpin Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator, unless they are read-only. Facts with mode r/o have read-only values, which can be viewed but changes cannot be made.

The following table lists the default facts created by the PlateSpin Orchestrate Server for the Resource object.

NOTE:Facts with mode dynamic are dyamic read/write facts, which means you can dynamically change the values for that fact.

Facts with mode r/o have read-only values, which means they can be viewed but changes cannot be made.

Facts with mode del are deleteable, which means they can be deleted at any time.

Table 4-6 Resource Facts

Fact Name

Fact Type

Mode

Description

resource.agent.clustered

Boolean

Whether the agent is clustered (converts duplicate logins to failover logins)

resource.agent.config.datagrid.cache

Boolean

Whether the agent caches datagrid files.

resource.agent.config.datagrid.cache.cleanupinterval

Integer

Wait time (measured in minutes) between cleanup sweeps of the datagrid cache.

resource.agent.config.datagrid.cache.lifetime

Integer

How long inactive files should remain in the agent's datagrid cache (in minutes). 0 turns off the cache.

resource.agent.config.exec.asagentuseronly

Boolean

Whether the agent always runs executables only as the agent user. This overrides any Job fact settings ('job.joblet.runtype').

resource.agent.config.exec.daemon.timeout

Integer

How long for the enhanced exec daemon to remain running (in seconds). 0 means remain running.

resource.agent.config.exec.enhancedused

Boolean

Whether the agent uses the enhanced exec or not.

resource.agent.config.gmond.port

Integer

Setting for gmond port (8649 is the default). 0 or less means values will not be read.

resource.agent.config.joblet.cleanup

Boolean

Whether the agent cleans up temporary directories created for each joblet. Can be turned off for debugging purposes and then “catches up” when re-enabled.

resource.agent.config.logdebug

Boolean

Turns on agent debugging (additive to log level)

resource.agent.config.loglevel

String

Controls the verbosity of agent logging (quiet, normal, verbose)

resource.agent.exec.installed

Boolean

Whether the agent is installed with the enhanced exec or not.

resource.agent.home

String

The home directory of the agent install.

resource.agent.jvm.home

String

The home directory of the JVM in use by the agent.

resource.agent.jvm.memory

Integer

The memory available to the agent (megabytes).

resource.agent.jvm.runtime

String

The Java JVM runtime in use by the agent.

resource.agent.jvm.vendor

String

The Java JVM vendor in use by the agent.

resource.agent.jvm.version

String

The Java JVM version in use by the agent.

resource.agent.version

String

dynamic, r/o

The agent version and build number <major>.<minor>.<point>_<build>

resource.auth.provider

String

dynamic, r/o

The authentication provider to which the node authenticates

resource.becameidle

Date

dynamic, r/o

The date/time the resource became idle or '-1' if not idle

resource.billfor

String

Whether to bill on wall time or grid time (walltime, gcycles)

resource.billingrate

Real

The billing rate for this resources in $/hr

resource.cpu.architecture

String

del

The CPU architecture e.g. x86, x86_64, sparc (requires cpuInfo system job).

resource.cpu.hvm

Boolean

del

True if the CPU has hardware virtualization support.

resource.cpu.mhz

Integer

del

The speed (measured in MHz) of the processor (requires cpuInfo system job)

resource.cpu.model

String

del

The CPU model number (requires cpuInfo system job)

resource.cpu.number

Integer

The number of available CPU cores available for processing. This counts each core in a multicore package as its own core, so a Core 2 duo physical CPU displays as two CPUs.

resource.cpu.vendor

String

del

The CPU vendor (requires cpuInfo system job).

resource.cpuload

Integer

dynamic, r/o

The percent CPU load on the resource.

resource.enabled

Boolean

True if the resource is enabled (allowed to log in and accept work).

resource.groups

String[]

r/o

The groups this node is a member of.

resource.hardware.model

String

The vendor-specific hardware model (for example, Dell PowerEdge 1850).

resource.hardware.vendor

String

The name of the hardware vendor (for example, Dell, IBM, or similar).

resource.health

Boolean

The health of this resource. True indicates good health.

resource.history.cost.total

Real

dynamic, r/o

The cost (measured in matrix dollars ($)) of all work performed on this resource.

resource.history.gcycles.total

Integer

dynamic, r/o

The total grid time (gcycles) of all work performed on this resource.

resource.history.jobletcount

Integer

dynamic, r/o

The total number of joblets ever run on this resource.

resource.history.jobletcount.cancelled

Integer

dyanmic, r/o

The total number of joblets that were canceled.

resource.history.jobletcount.completed

Integer

dynamic, r/o

The total number of joblets that completed successfully.

resource.history.jobletcount.failed

Integer

dynamic, r/o

The total number of joblets that failed.

resource.history.time.total

Integer

dynamic, r/o

The total wall time (measured in seconds) of all work performed on this resource.

resource.hostname

String

del

The resource’s hostname

resource.hostname.full

String

del

The fully qualified hostname.

resource.id

String

r/o

The node’s login name

resource.installed.apps

String[]

del

The installed applications

resource.ip

String

del

The resources IP address

resource.joblets.active

Integer

dynamic, r/o

The number of joblets currently active on this resource

resource.joblets.maxslots

Integer

dynamic, r/o

The absolute maximum number of work slots availabe to regular and privileged joblets.

resource.joblets.slots

Integer

The number of regular joblets that this resource runs at one time.

resource.joblets.systemslots

Integer

The number of extra slots that will be made available to privileged “system” joblets.

resource.loadaverage

Real

dynamic, r/o

The load average on the resource (from 'uptime' or equivalent).

resource.memory.physical.available

Integer

del

The amount (measured in Mb) of free physical memory available on the resource.

resource.memory.physical.total

Integer

del

The total amount (measured in Mb) of physical memory on the resource.

resource.memory.swap.available

Integer

del

The amount (measured in Mb) of free swap space.

resource.memory.swap.total

Integer

del

The total amount (measured in Mb) of external VM swap space configured on the host. Wwap space allows the hypervisor or OS to swap out infrequently used memory pages to disk or other storages to make it appear that virtual memory is larger than physical memory.

resource.memory.virtual.available

Integer

del

The amount of available (free) virtual memory (measured in Mb) on the system. This might be more than the amount of physical memor if the host hypervisor or Operating system supports paging of VM to disk or other swap storage.

resource.memory.virtual.total

Integer

del

The total amount (measured in Mb) of virtual memory on the resources.

resource.network.agent.address

The agent side IP address for the current connection

resource.network.agent.port

The agent side TCP port number for the current connection

resource.network.config.server.address

The IP address used by the agent to connect to the server

resource.network.config.server.hostname

The host name used by the agent to connect to the server

resource.network.config.server.port

The TCP port number used by the agent to connect to the server

resource.network.server.address

The server side IP address for the current connection

resource.network.server.port

The server side TCP port number for the current connection

resource.network.throughput

The measured average network connection throughput in Mbits/sec to neighouring resource (requires netInfo system job)

resource.network.throughput.max

The maximium network connection speed in Mbits/sec (requires netInfo system job)

resource.online

Boolean

dynamic, r/o

True if the agent is online

resource.os.arch

String

del

The operating system architecture e.g. x86, amd64, i386, sparc

resource.os.family

String

The family of operating system (windows, linux, solaris, unix, aix, mac

resource.os.file.separator

String

del

The resource operating system file separator

resource.os.name

String

The name of the resource operating system

resource.os.type

String

Unique string identifier for each OS release (e.g. 'sles11')

resource.os.vendor

String

The operating system vendor (SuSE for SLES/SLED)

resource.os.vendor.string

String

del

The operating system full identification string (requires osInfo system job)

resource.os.vendor.version

String

del

The vendor defined version number, for example, 10 for SUSE v10.

resource.os.version

String

del

The operating system version numberc

resource.os.version.string

String

del

The operating system vendor full identification string (requires osInfo system job)

resource.password

string

dynamic

The agents's login password

resource.powerfactor

Real

dynamic, r/o

The normalized power index of this machine relative to a 2.0Ghz, Intel Pentium 4

resource.provision.automatic

Boolean

dynamic, r/o

Signifies that this resource was cloned/provisioned automatically and thus will be shutdown/destroyed automatically as well

resource.provision.currentaction

String

dynamic, r/o

The current management action in progress on this provisionable resource

resource.provision.jobid

String

dynamic, r/o

The current or last job id that performed a provisioning action on this resource. Useful for viewing job log.

resource.provision.resync

Boolean

dynamic

Specifies that the provisioned resource's state needs to be resynced with the underlying provisioning technology and the next opportunity

resource.provision.state

String

dynamic, r/o

The current state of this provisioned instance ('down', 'suspended', 'up', 'paused') or 'unknown' if an admin action is currently being performed.

resource.provision.status

String

dynamic, r/o

The current descriptive status of the provisioned resource

resource.provision.template

String

dynamic, r/o

The id of the template resource that this instance was created from (if applicable)

resource.provision.time.hostwait

Integer

dynamic, r/o

The time (seconds) this resource has been waiting / waited for a suitable host

resource.provision.time.request

Date

dynamic, r/o

The time when the last provision (or other administrative action) request was made

resource.provision.time.shutdown

Date

dynamic, r/o

The time when the resource was last shutdown

resource.provision.time.start

Date

dynamic, r/o

The time when the resource was last successfully provisionedc

resource.provision.vmhost

String

dynamic

The id of the host currently housing this provisioned resource

resource.provisionable

Boolean

dynamic, r/o

True if the resources is a provisionable type

resource.provisioner.autoprep.DNSServers

List of DNS servers for name lookup. This is only for cloning/personalize actions.

resource.provisioner.autoprep.DNSSuffixes

List of suffixes to append to a name for lookup. This is only for cloning/personalize actions.

resource.provisioner.autoprep.Gateways

List of internet gateways available to this VM. This is only for cloning/personalize actions.

resource.provisioner.autoprep.linuxglobal.ComputerName

Host name of new VM. An asterisk (*) means use the new VM's ID.

resource.provisioner.autoprep.linuxglobal.Domain

The name of the domain where the new new VM belongs.

resource.provisioner.autoprep.options.changeSID

The Windows Security ID. If true, sysprep generates a new Security ID.

resource.provisioner.autoprep.options.deleteAccounts

If true, removes all accounts from the destination VM. If false, existing accounts from the source VM are retained.

resource.provisioner.autoprep.sysprep.GuiRunOnce.Command

List of commands that r un the first time a user logs on after the new VM is created. Commands are sched uled using the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce registry key.

resource.provisioner.autoprep.sysprep.GuiUnattended.AdminPassword.plainText

True if the AdminPassword is plain text.

resource.provisioner.autoprep.sysprep.GuiUnattended.AdminPassword.value

The AdminPassword.

resource.provisioner.autoprep.sysprep.GuiUnattended.AutoLogon

If true, the VM auto logs into the Administrator account using AdminPassword. If false, login is prompted..

resource.provisioner.autoprep.sysprep.GuiUnattended.AutoLogonCount

The limit count for the VM to auto log in with the Administrator account. AutoLogon must be True.

resource.provisioner.autoprep.sysprep.GuiUnattended.TimeZone

The time zone of the new VM. See provisioning reference for values, for example: 04 indicates PST, 10 indicates MST, 20 indicates CST, and 35 indicates EST.

resource.provisioner.autoprep.sysprep.Identification.DomainAdmin

Windows domain administrator name.

resource.provisioner.autoprep.sysprep.Identification.DomainAdminPassword.plainText

True if DomainAdminPassword is in plain text.

resource.provisioner.autoprep.sysprep.Identification.DomainAdminPassword.value

Windows domain administrator account password.

resource.provisioner.autoprep.sysprep.Identification.JoinDomain

Windows domain n ame. If joining a workgroup, then use JoinWorkgroup. For joining a domain, Domai nAdmin and DomainAdminPassword must be defined.

resource.provisioner.autoprep.sysprep.Identification.JoinWorkgroup

Windows workgroup name. If joining a domain, use JoinDomain.

resource.provisioner.autoprep.sysprep.LicenseFilePrintData.AutoMode

Value is either PerServer or PerSeat. If PerServer, AutoUsers must be set.

resource.provisioner.autoprep.sysprep.LicenseFilePrintData.AutoUsers

The number of client licenses. Used only if AutoMode is PerServer.

resource.provisioner.autoprep.sysprep.UserData.ComputerName

The VM's new host na me. An asterisk (*) means to generate the name based on source VM name.

resource.provisioner.autoprep.sysprep.UserData.FullName

The user's full name.

resource.provisioner.autoprep.sysprep.UserData.OrgName

The organization name.

resource.provisioner.autoprep.sysprep.UserData.ProductID

The Windows product key.

resource.provisioner.count

Integer

dynamic, r/o

The total count of operational instances and provisions in progress

resource.provisioner.debug

Boolean

Controls the debug log level in the provisioner

resource.provisioner.host.maxwait

Integer

The maximum time to wait for a suitable host before timing out (in seconds, '<0' to wait indefinitely

resource.provisioner.host.preferredwait

Integer

The time after which some vmhost constraints will be lifted to increase the available pool by, for example, considering moving the disk image (in seconds, '<0' to wait indefinitely

resource.provisioner.instancecount

Integer

dynamic, r/o

The total count of cloned instances of the template

resource.provisioner.instances

String[]

dynamic, r/o

The list of id's of the instances of this template resource (if applicable)

resource.provisioner.job

String

The name of the provisioning job that manages the lifecycle of this resource

resource.provisioner.maxinstances

Integer

The maximum allowed number of instances of this provisionable resource (applicable only to templates)c

resource.provisioner.recommendedhost

String

dynamic

The host on which the image for this resource is associated. E.g. was suspended or is the preferred host for quick start up. Combined with the 'resource.provisioner.host.preferredwait' can lock a VM to one host.

resource.remotedesktop

Boolean

Whether the resource has a remote desktop (or VNC) access enabled.

resource.repositories

The list of VM repositories visible by this resource (aggregated from VM host containers)

resource.runningjobs

String[]

dynamic, r/o

The list of jobs currently running on this resource

resource.sessions

Integer

dynamic, r/o

The number of active sessions (resource instances with active agent). Will be 0 or 1 unless a resource template

resource.shuttingdown

Boolean

dynamic, r/o

True if the node is attempting to shutdown/pause/suspend and does not want new workc

resource.type

String

dynamic

The type of resource (whether or not the resource is a VM and if so what type of image (physical, vm, vmTemplate)

resource.vm.basepath

String

The filesystem location of the VM file(s) either absolute or relative to the 'repository.location'.

resource.vm.cpu.architecture

String

The required cpu architecture e.g. x86, x86_64, sparc, ppcc

resource.vm.cpu.hvm

Boolean

True if the VM requires host HVM support (for para virtualization otherwise only full virtualization will be possible).

resource.vm.cpu.weight

Real

The CPU weight for this VM. A value of 1.0 represents normal weighting; setting another VM to a weight of 2.0 would mean it would get twice as much cpu as this VM.

resource.vm.files

Dictionary

Files that make up this VM. The dictionary key (String) represents the file type (adapter specific), the value is the file path either absolute or relative to repository.location of the resource.vm.repository.

resource.vm.maxinstancespervmhost

Integer

The maximum allowed number of instances of this VM image per vmhost

resource.vm.memory

Integer

The configured virtual memory requirement of this VM image (megabytes)

resource.vm.networks

String[]

dynamic, r/o

The networks associated with the vm network interfaces.

resource.vm.preventmove

Boolean

Administrator set attribute that will prevent moving VM disks and thus consideration potential other hosts.

resource.vm.repositories

String[]

dynamic, r/o

The repositories where the vm disk images are stored.

resource.vm.repositories.moveable

String[]

dynamic, r/o

The repositories where the moveable vm disk images are stored.

resource.vm.repositories.unmoveable

String[]

dynamic, r/o

The repositories where the unmoveable vm disk images are stored.c

resource.vm.repository

String

dynamic

The default repository where this vm disk images and other config files are/will be stored.

resource.vm.spec

Dictionary containing the specification for building this VM. Interpreted by the Provisioning Adapter.

resource.vm.underconstruction

Boolean

True if the VM is currently under construction

resource.vm.uuid

String

The UUID of a virtual machine (vendor/adapter specific).

resource.vm.vcpu.number

Integer

The number of virtual CPUs for this VM.

resource.vm.vdisks

String[]

dynamic, r/o

The list of virtual disks that make up this VM.c

resource.vm.vdisksize

Integer

dynamic, r/o

The total size of all the moveable virtual disks for this VM image (megabytes)

resource.vm.vendor

String

The vendor of a virtual machine

resource.vm.version

Integer

The version number for this VM.

resource.vm.vmhost.rankby

String[]

The ranking specification used to select suitable vm hosts. Element syntax is '<fact>/<order>' where order is either 'ascending' or 'descending'

resource.vm.vnics

String[]

dynamic, r/o

The list of virtual nics that make up this VM. (aggregated from the VNIC containers)

resource.vmhosts

String[]

dynamic, r/o

The list of VM host containers supported by this resource (aggregated from VM host containers)

resource.vnc.ip

String

The port number for a vnc session running on the resource.

resource.vnc.port

Integer

The port number for a vnc session running on the resource.

Resource Object Fact Junctions

The following diagram illustrates the relationship between the Resource Grid object facts and other Grid objects. It also shows the relationship between other discrete Grid object facts and the Resource Grid object itself.

Figure 4-4 Resource Fact Junctions

VM Host Object Facts

The VM Host Resource object has an associated set of facts and constraints that define its properties. The PlateSpin Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator, unless they are read-only. Facts with mode r/o have read-only values, which can be viewed but changes cannot be made.

The following table lists the default facts created by the PlateSpin Orchestrate Server for the VM Host Grid object.

NOTE:Facts with mode dynamic are dyamic read/write facts, which means you can dynamically change the values for that fact.

Facts with mode r/o have read-only values, which means they can be viewed but changes cannot be made.

Facts with mode del are deleteable, which means they can be deleted at any time.

Table 4-7 VM Host Facts

Fact Name

Fact Type

Mode

Description

vmhost.accountinggroup

String

The default VM host group which will be adjusted for VM stats

vmhost.controllingjob

String

dynamic

The ID of a running job that manages VM operations on this host. Setting this informs the VM Manager to prevent other jobs from initiating provisioning actions. This fact is cleared when the managing job ends.

vmhost.enabled

Boolean

True if the VM host is enabled (new VM instances can be provisioned)

vmhost.groups

String[]

r/o

The groups this VM host is a member of

vmhost.health

Boolean

The health of this VM host. True indicates good health

vmhost.hvm

Boolean

True if the hypervisor supports the hardware virtualization.

vmhost.id

String

r/o

The VM host's unique name

vmhost.loadindex.slots

Real

dynamic, r/o

The loading index (the ratio of active hosted VMs to the specified max)

vmhost.loadindex.virtualmemory

Real

dynamic, r/o

The loading index (ratio of consumed memory to the specifed max)

vmhost.location

String

The VM host's physical location

vmhost.maxvmslots

Integer

The maximum number of hosted VM instances

vmhost.memory.available

Integer

dynamic, r/o

The amount of memory available to new virtual machines

vmhost.memory.max

Integer

The maximum amount of memory available to virtual machines (in megabytes)

vmhost.migration

Boolean

True if the VM host can support VM migration (also subject to provision adapter cababilities

vmhost.networks

String[]

dynamic, r/o

List of Networks visible to this VM host

vmhost.online

Boolean

dynamic, r/o

True if the agent on the physical host is online

vmhost.provisioner.job

String

The name of the provisioning adapter job that manages VM discovery on this host

vmhost.provisioner.password

String

The password required for provisioning on the VM host (Used by provisioning adapter)

vmhost.provisioner.username

String

The username required for provisioning on the VM host (Used by provisioning adapter)

vmhost.repositories

String[]

This list of repositories (VM disk stores) visible to this VM host

vmhost.resource

String

r/o

The name of the resource that houses this vm host container

vmhost.resync

Boolean

dynamic

Specifies that the host should be probed to resync all VMs managed on this host at the next opportunity

vmhost.shuttingdown

Boolean

dynamic, r/o

True if the VM host is attempting to shutdown and does not want to be provisioned

vmhost.vbridges

String[]

dynamic, r/o

List of Vbridge objects visible to this VM host

vmhost.vm.available.groups

String[]

The list of resource groups containing VMs that are allowed to run on this host

vmhost.vm.count

Integer

dynamic, r/o

The current number of active VM instances

vmhost.vm.instanceids

String[]

dynamic, r/o

The list of active VM instances

vmhost.vm.placement.score

Integer

dynamic, r/o

The 'cost' (score) of moving the disks for a VM to this vmhost. This is *only* visible and valid during a 'vmhost' constraint match (-1 = not possible, 0 = affinity, >0 = expense)

vmhost.vm.templatecounts

Dictionary

dynamic, r/o

A dictionary of running instance counts for each running VM templatec

VM Host Resource Object Fact Junctions

The following diagram illustrates the relationship between the Vm Host Resource Grid object facts and other Grid objects. It also shows the relationship between other discrete Grid object facts and the VM Host Resource Grid object itself.

Figure 4-5 VM Host Fact Junctions

Resource Group Facts

Table 4-8 Resource Group Facts

Fact Name

Fact Type

Mode

Description

group.id

String

r/o

The group's name

group.loadaverage

Real

dynamic, r/o

The aggregated load average of all the resource in this group (the membership may be dynamic).

group.loadpercent

Integer

dynamic, r/o

The percentage of online resources in this group that are currently busy.

group.resources.busy

Integer

dynamic, r/o

The total number of available resources that are currently busy performing work in this group.

group.resources.idle

Integer

dynamic, r/o

The total number of available resources that are ready for work in this group.

group.resources.online

Integer

dynamic, r/o

The total number of online resources (busy and idle) in this group.

Understanding Resource Metrics Facts

When you install the PlateSpin Orchestrate Agent on a machine, you can optionally install the Orchestrate Monitoring Agent along with it. The Monitoring Agent uses the Ganglia Monitoring Daemon (gmond) to automatically collect metrics and send them to the Orchestrate Monitoring Server. You can use the following command to check the status of an installed Monitoring Agent:

# /etc/init.d/novell-gmond status

If the daemon is operating normally, it returns a running status.

When you install and configure the Orchestrate Monitoring Agent (gmond), it is set by default to report metrics on port 8649, which is also detected by the Orchestrate Agent. When communication is established, the gmond daemon sends out metrics data, which are then gathered by the Orchestrate Agent and set as fact values associated with the resource where the daemon is running. You can verify the connection with the following command:

telnet localhost 8649

If gmond is running and communicating properly, an XML document listing the reported metrics is displayed.

This section includes information about the resource metrics facts that are gathered, the unit conversion performed by Orchestrate on the Ganglia-provided values, and how you can use these facts to help you manage the resources in the grid.

Resource Metrics Facts

The Orchestrate Agent uses the metrics collected by gmond to create fact values for a given resource. These facts are therefore externally generated and are not among the default facts reported by the PlateSpin Orchestrate Agent. The agent updates these externally generated fact values every 30 seconds. All of these fact values have a resource.metrics. prefix.

For example, gmond collects a metrics value called load_one. The Orchestrate Agent sets this value as the resource.metrics.load_one fact.

To see a list of these facts in the Orchestrate Development Client,

  1. In the Explorer panel, select a resource.

  2. In the Workspace panel, select Constraints/Facts.

The names of the resource metrics facts are displayed in bold font (in the Development Client interface) because they were added as new facts to the default fact list. The following sample is a list of the default Ganglia-generated metrics facts with data type and an example value:

<fact name="resource.metrics.boottime" value="1239122234.0000" type="Real" /> 
<fact name="resource.metrics.bytes_in" value="208.8800" type="Real" /> 
<fact name="resource.metrics.bytes_out" value="68.9700" type="Real" /> 
<fact name="resource.metrics.cpu_aidle" value="76.9000" type="Real" /> 
<fact name="resource.metrics.cpu_idle" value="95.2000" type="Real" /> 
<fact name="resource.metrics.cpu_nice" value="0.0000" type="Real" /> 
<fact name="resource.metrics.cpu_num" value="2" type="Integer" /> 
<fact name="resource.metrics.cpu_speed" value="1596" type="Integer" /> 
<fact name="resource.metrics.cpu_system" value="0.3000" type="Real" /> 
<fact name="resource.metrics.cpu_user" value="4.0000" type="Real" /> 
<fact name="resource.metrics.cpu_wio" value="0.4000" type="Real" /> 
<fact name="resource.metrics.disk_free" value="27090" type="Integer" /> 
<fact name="resource.metrics.disk_total" value="48213" type="Integer" /> 
<fact name="resource.metrics.gexec" value="OFF" type="String" /> 
<fact name="resource.metrics.load_fifteen" value="0.2000" type="Real" /> 
<fact name="resource.metrics.load_five" value="0.4100" type="Real" /> 
<fact name="resource.metrics.load_one" value="1.1900" type="Real" /> 
<fact name="resource.metrics.machine_type" value="x86" type="String" /> 
<fact name="resource.metrics.mem_buffers" value="299" type="Integer" /> 
<fact name="resource.metrics.mem_cached" value="761" type="Integer" /> 
<fact name="resource.metrics.mem_free" value="65" type="Integer" /> 
<fact name="resource.metrics.mem_shared" value="0" type="Integer" /> 
<fact name="resource.metrics.mem_total" value="1989" type="Integer" /> 
<fact name="resource.metrics.os_name" value="Linux" type="String" /> 
<fact name="resource.metrics.os_release" value="2.6.27.19-5-pae" type="String" /> 
<fact name="resource.metrics.part_max_used" value="70.8000" type="Real" /> 
<fact name="resource.metrics.part_max_used.units" value="" type="String" /> 
<fact name="resource.metrics.pkts_in" value="0.4500" type="Real" /> 
<fact name="resource.metrics.pkts_out" value="0.6300" type="Real" /> 
<fact name="resource.metrics.proc_run" value="0" type="Integer" /> 
<fact name="resource.metrics.proc_total" value="411" type="Integer" /> 
<fact name="resource.metrics.swap_free" value="2039" type="Integer" /> 
<fact name="resource.metrics.swap_total" value="2047" type="Integer" /> 
<fact name="resource.metrics.vm_type" value="" type="String" /> 
<fact name="resource.metrics.vm_type.units" value="" type="String" /> 

These are the metrics reported in Orchestrate systems that use the gmond.conf created when Orchestrate Monitoring Agent was installed and configured. The open source gmond might include other metrics that can be monitored. You can modify the default Orchestrate gmond configuration file to report these metrics after it is initially installed and configured. For information about modifying the file, see the gmond.conf man page.

By using the XML constraint language, you can utilize these resource metrics facts as you would use any other fact in PlateSpin Orchestrate. For example, you could create an Event that sets thresholds for the amount of incoming network packets. When that threshold is exceeded, a Scheduled Job could be triggered or a notification e-mail sent. For more information, see Section 3.12, Using an Event Notification in a Job.

Interpreting the Units of Metrics Fact Values

The Orchestrate Agent converts most of the Ganglia metrics values to PlateSpin Orchestrate standard units. This allows fact values to be compared in constraints without the need to perform conversions explicitly. In cases where units are not known or cannot be converted, a separate fact with a .units suffix is included.  For example:

<fact name="resource.metrics.bytes_in" value="bytes/sec" type="String" /> 

The following table lists the resource.metrics facts and the units of measure used for each fact value:

Table 4-9 Resource Metrics Facts

Resource Metric Fact With Reported Value

Orchestrate Measurement Unit of the Value

boottime

32-bit seconds timestamp

bytes_in

byte rate measured in bytes per second

bytes_out

byte rate measured in bytes per second

cpu_aidle

percentage

cpu_idle

percentage

cpu_nice

percentage

cpu_num

number of CPUs

cpu_speed

megahertz as an integer

cpu_system

percentage

cpu_user

percentage

cpu_wio

percentage

disk_total

total in binary megabytes

disk_free

total in binary megabytes

gexec

simple string

load_fifteen

real number

load_five

real number

load_one

real number

machine_type

simple string

mem_buffers

memory in megabytes (integer)

mem_cached

memory in megabytes (integer)

mem_free

memory in megabytes (integer)

mem_shared

memory in megabytes (integer)

mem_total

memory in megabytes (integer)

os_name

simple string

os_release

simple string

pkts_in

packet rate in packets per second

pkts_out

packet rate in packets per second

proc_run

processes run (integer)

proc_total

total processes (integer)

swap_free

memory in megabytes (integer)

swap_total

memory in megabytes (integer)

4.1.5 Virtual Disk Object Facts and Fact Junctions

This section includes the following information:

Virtual Disk Object Facts

The vDisk object has an associated set of facts and constraints that define its properties. The PlateSpin Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator, unless they are read-only. Facts with mode r/o have read-only values, which can be viewed but changes cannot be made.

The following table lists the default facts created by the PlateSpin Orchestrate Server for the vDisk Grid object.

NOTE:Facts with mode dynamic are dyamic read/write facts, which means you can dynamically change the values for that fact.

Facts with mode r/o have read-only values, which means they can be viewed but changes cannot be made.

Facts with mode del are deletable, which means they can be deleted at any time.

Table 4-10 vDisk Facts

Fact Name

Fact Type

Mode

Description

vdisk.description

String

Description of vDisk

vdisk.groups

String[]

r/o

The groups this vDisk is a member of

vdisk.health

Boolean

The health of this vDisk. True indicates good health

vdisk.id

String

r/o

The vDisk’s unique ID.

vdisk.location

String

The repository dependent location definition

vdisk.moveable

Boolean

True if the vDisk is moveable.

The vDisk cannot be deleted if this fact is set to false.

vdisk.repository

String

The name of the repository containing the vDisk image

vdisk.size

Integer

The size of this virtual disks (megabytes)

vdisk.type

String

The type of vDisk: - file (file backed disk) - block (block device)

vdisk.vm

String

r/o

The name of the VM that uses this vDisk

Virtual Disk Object Fact Junctions

The following diagram illustrates the relationship between the Virtual Disk object facts and other Grid objects. It also shows the relationship between other discrete Grid object facts and the Virtual Disk Grid object itself.

Figure 4-6 Virtual Disk Fact Junctions

4.1.6 Virtual NIC Object Facts and Fact Junctions

This section includes the following information:

Virtual NIC Object Facts

The VNIC object has an associated set of facts and constraints that define its properties. The PlateSpin Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator, unless they are read-only.

The following table lists the default facts created by the PlateSpin Orchestrate Server for the VNIC Grid object.

NOTE:Facts with mode dynamic are dyamic read/write facts, which means you can dynamically change the values for that fact.

Facts with mode r/o have read-only values, which means they can be viewed but changes cannot be made.

Facts with mode del are deleteable, which means they can be deleted at any time.

Table 4-11 VNIC Facts

Fact Name

Fact Type

Mode

Description

vnic.description

String

Description of vNIC

vnic.groups

String[]

r/o

The groups that this vNIC belongs to.

vnic.health

Boolean

The health of this vNIC. True indicates good health

vnic.id

String

r/o

The unique name of this VNIC.

vnic.mac

String

The MAC address assigned to this VNIC. A empty string implies auto-generate MAC address.

vnic.network

String

The network (vbridge group) on which this Vnic is provisioned or wishes to be provisioned.

vnic.provisioner.autoprep.DNSDomain

String

Windows only. Adapter's Domain.

vnic.provisioner.autoprep.DNSFromDHCP

Boolean

(Optional, SUSE VM only.) If true, then the SUSE VM is configured to retrieve its DNS server settings from DHCP.

vnic.provisioner.autoprep.DNSServers

Adapter's list of DNS servers for name look up.

vnic.provisioner.autoprep.DNSSuffixes

Adapter's suffix appended to name for lookup.

vnic.provisioner.autoprep.Gateways

List of Internet gateways available to the interface.

vnic.provisioner.autoprep.IPAddress

String

del

IP address for this adapter.

vnic.provisioner.autoprep.MACAddress

String

del

MAC address for the interface. Asterisk (*) or not set means to generate a new MAC.

vnic.provisioner.autoprep.UseDHCP

Boolean

del

If true, new VM retrieves its network settings from a DHCP server and any adapter settings are ignored. If false, then any req uired adapter settings must be defined.

vnic.provisioner.autoprep.netBIOS

String

del

NetBios options for VM. The values are:

  • EnableNetBIOSViaDhcp

  • EnableNetBIOS

  • DisableNetBIOS

vnic.provisioner.autoprep.primaryWINS

String

del

Windows only. Adapter's Primary WINS server.

vnic.provisioner.autoprep.secondaryWINS

String

del

Windows only. Adapter's Secondary WINS server.

vnic.provisioner.autoprep.subnetMask

String

del

Subnet mask for this adapter.

vnic.vbridge

String

dynamic, r/o

The name of the Vbridge used by this vNIC

vnic.vm

String

r/o

The name of the VM that uses this vNIC

Virtual NIC Object Fact Junctions

The following diagram illustrates the relationship between the VNIC object facts and other Grid objects. It also shows the relationship between other discrete object facts and the VNIC object itself.

Figure 4-7 Virtual NIC Fact Junctions

4.1.7 Repository Object Facts and Fact Junctions

This section includes the following information:

Repository Object Facts

The Repository object has an associated set of facts and constraints that define its properties. The PlateSpin Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator, unless they are read-only.

The following table lists the default facts created by the PlateSpin Orchestrate Server for the Repository Grid object.

NOTE:Facts with mode dynamic are dyamic read/write facts, which means you can dynamically change the values for that fact.

Facts with mode r/o have read-only values, which means they can be viewed but changes cannot be made.

Facts with mode del are deleteable, which means they can be deleted at any time.

Table 4-12 Repository Facts

Fact Name

Fact Type

Mode

Description

repository.capacity

Integer

The maximum amount of storage space available to virtual machines (in megabytes). -1 means unlimited.

repository.description

String

Description of repository

repository.efficiency

Real

The efficiency coefficient used to calculate the cost of moving VM disk images to and from the repository. This value is multiplied by the disk image size in Mb to determine score (thus 0 means no cost -- very efficient).

repository.enabled

Boolean

True if the Repository is enabled (new VM instances can be provisioned)

repository.freespace

Integer

Dynamic r/o

The amount of storage space available to new virtual machines (in megabytes). -1 means unlimited.

repository.groups

String[]

r/o

The groups to which this repository belongs.

repository.health

Boolean

The health of this repository. True indicates good health

repository.id

String

r/o

The Repository’s unique name

repository.location

String

The Repository's logical root location, for example, / or c:/vm or nas:/vol1

repository.preferredpath

String

The relative path from repository.location to search and place VM files for movement and cloning

repository.provisioner.jobs

String[]

The names of the provisioning adapter jobs that can manage VM's on this repository

repository.san.type

String

The type of SAN (Adapter specific, iSCSI or Fibre Channel)

repository.san.vendor

String

The vendor of SAN (Adapter specific, iqn, npiv, emc). An empty string indicates bind/unbind is a noop.

repository.searchpath

String[]

The relative path from repository.location to search for VM configuration files (implicitly includes resource.preferredpath)

repository.type

String

The type of repository:

  • local (for example, local disk)

  • NAS (for example, NFS mount)

  • SAN (a Storage area Network such as iSCSI or Fibre Channel)

  • datagrid (an Orchestrate built-in, datagrid-backed store)

  • virtual (an externally managed store such as VMware Virtual Center)

repository.usedspace

Integer

Dynamic r/o

The amount of storage space used for virtual machines

repository.vmhosts

String[]

Dynamic r/o

The amount of storage space used for virtual machines

repository.vmimages

String[]

Dynamic r/o

The list of VM images stored in this repository (aggregated from individual VM fact)

Repository Object Fact Junctions

The following diagram illustrates the relationship between the Repository object facts and other Grid objects. It also shows the relationship between other discrete Grid object facts and the Repository object itself.

Figure 4-8 Repository Fact Junctions

Repository Group Facts

Table 4-13 Repository Group Facts

Fact Name

Fact Type

Mode

Description

group.id

String

r/o

The name of the group.

4.1.8 Virtual Bridge Object Facts and Fact Junctions

This section includes the following information:

Virtual Bridge Object Facts

The VNIC object has an associated set of facts and constraints that define its properties. The PlateSpin Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator, unless they are read-only.

The following table lists the default facts created by the PlateSpin Orchestrate Server for the Vbridge Grid object.

NOTE:Facts with mode dynamic are dyamic read/write facts, which means you can dynamically change the values for that fact.

Facts with mode r/o have read-only values, which means they can be viewed but changes cannot be made.

Facts with mode del are deleteable, which means they can be deleted at any time.

Table 4-14 Vbridge Facts

Fact Name

Fact Type

Mode

Description

vbridge.description

String

Description of Vbridge

vbridge.enabled

Boolean

True if the vbridge is enabled

vbridge.groups

String[]

r/o

The groups this Vbridge is a member of

vbridge.health

Boolean

True if the vbridge is in a healthy state

vbridge.id

String

r/o

The unique identifier for the Vbridge.

vbridge.vmhost

String

r/o

The ID of the vmhost containing this vbridge

vbridge.vnics

String[]

dynamic, r/o

The virtual NICs attached to this vbridge

Virtual Bridge Object Fact Junctions

The following diagram illustrates the relationship between the Virtual Bridge (Vbridge) object facts and other Grid objects. It also shows the relationship between other discrete Grid object facts and the Vbridge object itself.

Figure 4-9 Virtual Bridge Fact Junctions

Network Group Facts

Table 4-15 Network Group Facts

Fact Name

Fact Type

Mode

Description

group.id

String

r/o

The group name.

group.provisioner.jobs

String[]

dynamic, r/o

Provision adapters with vBridge instances on this network.

group.provisioner.preferred

String[]

Provision adapters explicitly associated with this network.

group.vlanid

String

The name of the VLAN accessed by this network (Vbridge group).

4.1.9 User Object Facts and Fact Junctions

This section includes the following information:

User Object Facts

The User object has an associated set of facts and constraints that define its properties. The PlateSpin Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator, unless they are read-only.

The following table lists the default facts created by the PlateSpin Orchestrate Server for the User Grid object.

NOTE:Facts with mode dynamic are dyamic read/write facts, which means you can dynamically change the values for that fact.

Facts with mode r/o have read-only values, which means they can be viewed but changes cannot be made.

Facts with mode del are deleteable, which means they can be deleted at any time.

Table 4-16 User Facts

Fact Name

Fact Type

Mode

Description

user.account.balance

Real

dynamic

The amount of matrix dollars spent by this user since last reset ($). Useful for implementation of quotas

user.account.gcycles

Integer

dynamic

The amount of grid time (gcycles) spent by this user since last reset. Useful for implementation of quotas

user.account.maxspendrate

Real

This value is used by the resource scheduler to throttle the rate at which matrix computing cycles are comsumed by the user ($/hr, <=0 turns feature off)

user.account.spendrate

Real

dynamic, r/o

The computed moving average spending over the last hour of user activity ($/hr)

user.account.time

Integer

dynamic

The amount of wall time spent by this user since last reset. Useful for implementation of quotas

user.accountinggroup

String

The default user group which will be billed for work conducted by this user

user.auth.provider

String

The authentication provider to which the user authenticates

user.datagrid.maxhistory

Integer

The maximum number job instance directories that should be kept in the datagrid for this user

user.enabled

Boolean

True if the user is enabled (allowed to log in and run jobs)

user.env

Dictionary

The uploaded and default user environment

user.external.groups

String[]

dynamic, r/o

The external groups (e.g. LDAP) this user is a member ofc

user.groups

String

r/o

The groups this user is a member of

user.health

Boolean

The health of this user. True indicates good health

user.history.cost.total

Real

dynamic, r/o

The total amount of matrix dollars spent by this user on the matrix

user.history.gcycles.total

Integer

dynamic, r/o

The total amount of grid time (gcycles) spent by this user on the matrix

user.history.jobcount

Integer

dynamic, r/o

The total number of jobs a user has ever initiated on the matrix

user.history.time.total

Integer

dynamic, r/o

The total amount of wall time spent by this user on the matrix

user.id

String

r/o

The user's login name

user.jobcount

Integer

dynamic

A counter that records the number of jobs a user has initiated since last reset. Useful for implementation of quotas

user.jobs.active

Integer

dynamic, r/o

The number of top-level jobs a user has in an active state

user.jobs.queued

Integer

dynamic, r/o

The number of top-level jobs that are queued for this user

user.jobs.total

Integer

dynamic, r/o

The total number of top-level jobs a user currently has in the matrix

user.location.city

String

The city of location of the user

user.location.country

String

The country of location of the user

user.location.site

String

The site where the users work, for example, a building number.

user.location.state

String

The state of location of the user

user.name.email

String

The user's email address

user.name.first

String

The user's first name

user.name.last

String

The user's last name

user.online

Boolean

dynamic. r/o

Whether the user is currently logged into the matrix

user.password

String

dynamic

The user's login password

user.preemption.enabled

Boolean

Allows this user to preempt willing jobs of a priority less than the priority of the running job instance

user.preemption.priority.delta

Integer

Indicates the highest job priority band that this user is allowed to preempt resources from (acts as a delta from the current job instance priority). The maximum preemptible priority is always <= user.priority.max

user.priority.default

Integer

The numeric representation of the default priority at which this user's jobs will run (1=lowest, 9=highest)

user.priority.default.string

String

dynamic, r/o

The string representation of the default priority at which this user can run a job (matches user.priority.default)

user.priority.max

Integer

The numeric representation of the maximum priority that this user can run a job at (1=lowest, 9=highest)

user.priority.max.string

String

dynamic, r/o

The string representation of the maximum priority at which this user can run a job (matches user.priority.max)

user.privilegedjobgroups

String[]

Allows this user's to run jobs and thus joblets on resources that have reached their slot maximum or are provisioned resources that have been reserved for another user/job. This is primarily to allow discovery jobs to be 'squeezed' onto the resource

user.sessions

Integer

dynamic, r/o

The number of active sessions (connections) a user currently has with the matrix

user.stealing.enabled

Boolean

Allows this user to steal resources running jobs of a priority less than the priority of running job instance

user.stealing.priority.delta

Integer

Indicates the highest job priority band that this user is allowed to steal resources from (acts as a delta from the current job instance priority, must be < '0')

User Object Fact Junctions

The following diagram illustrates the relationship between the User object facts and other Grid objects. It also shows the relationship between other discrete Grid object facts and the User object itself.

Figure 4-10 User Fact Junctions

User Group Facts

Table 4-17 User Group Facts

Fact Name

Type

Mode

Description

group.account.balance

Real

dynamic

he aggregated cost of work done by members of this group since last reset ($).

group.account.gcycles

Integer

dynamic

The aggregated amount of grid time (gcycles) spent by members of this group since last reset.

group.account.time

Integer

dynamic

The aggregated amount of wall time spent by members of this group since last reset

group.id

String

r/o

The name of the group.

group.jobcount

Integer

dynamic

The aggregated number of jobs run by members of this group since last reset.

4.1.10 Matrix Object Facts

The Matrix object has an associated set of facts and constraints that define its properties. The PlateSpin Orchestrate Server assigns default values to each of the component facts, although they can be changed at any time by the administrator, unless they are read-only.

The following table lists the default facts created by the PlateSpin Orchestrate Server for the Matrix Grid object.

NOTE:Facts with mode dynamic are dyamic read/write facts, which means you can dynamically change the values for that fact.

Facts with mode r/o have read-only values, which means they can be viewed but changes cannot be made.

Facts with mode del are deleteable, which means they can be deleted at any time.

Table 4-18 Matrix Facts

Fact Name

Fact Type

Mode

Description

matrix.activejobs

Integer

dynamic, r/o

The number of active jobs (including child jobs) for this Orchestrate Server.

matrix.clustered

Boolean

dynamic, r/o

Server is configured in a high availabilitly cluster.

matrix.datagrid.root

String

dynamic, r/o

The root directory of the datagrid.

matrix.date

Date

dynamic, r/o

The date of this server.

matrix.date.dayofmonth

Integer

dynamic, r/o

The numerical representation of the current day of the month.

matrix.date.dayofweek

String

dynamic, r/o

The string representation of the current week day.

matrix.date.dayofweek.number

Integer

dynamic, r/o

The numerical representation of the current week day.

matrix.date.month

String

dynamic, r/o

The string representation of the current month.

matrix.date.month.number

Integer

dynamic, r/o

The numerical representation of the current month.

matrix.date.year

Integer

dynamic, r/o

The current year.

matrix.groups.job

String[]

dynamic, r/o

List of Group Names of type Job.

matrix.groups.repository

String[]

dynamic, r/o

List of Group Names of type Repository.

matrix.groups.resource

String[]

dynamic, r/o

List of Group Names of type Resource.

matrix.groups.user

String[]

dynamic, r/o

List of Group Names of type User.

matrix.groups.vbridge

String[]

dynamic, r/o

List of Group Names of type Vbridge.

matrix.hostname

String

dynamic, r/o

The server hostname.

matrix.hostname.full

String

dynamic, r/o

The fully qualified server hostname.

matrix.id

String

r/o

The name of the matrix

matrix.loadaverage

Real

Indicates the average load of the grid server. A value less than 1.0 is unloaded.

matrix.maxactive

Integer

The hard limit for the maximum number of active jobs (including child jobs) allowed on this server at one time. Jobs exceeding this value will be queued.

matrix.maxqueued

Integer

The maximum number of queued jobs that will be accepted by this matrix server

matrix.maxtopjobs

Integer

The maximum number of active jobs after which new top-level jobs will be queued (child jobs may be be able to start). Should be less than matrix.maxactive.

matrix.physical.hostname

String

dynamic, r/o

The physical server hostname

matrix.physical.hostname.full

String

dynamic, r/o

The fully qualified physical server hostname.

matrix.queuedjobs

Integer

dynamic, r/o

The number of queued jobs for this matrix server.

matrix.time

Time

dynamic, r/o

The time of this server.

matrix.timeout.jobfinishing

Integer

The approximate number of seconds to wait for a job to complete its finishing state. That is, to run any failed/canceled/completed JDL event handlers.

matrix.timezone

String

dynamic, r/o

The string description of the time zone in which this matrix server resides.

matrix.uptime

String

dynamic, r/o

The time since the last server restart.

matrix.version

String

dynamic, r/o

The version of this server in form <major>.<minor>.<point>_<buildNumber>