Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  CONFIG::MODEL::IDELEMENTREFERENCE (3)

.ds Aq ’


Config::Model::IdElementReference - Refer to id element(s) and extract keys



version 2.082


 # synopsis shows an example of model of a network to use references

 use Config::Model;

 my $model = Config::Model->new;

 # model of several hosts with several NICs
    name      => Host,
    element => [
        ip_nic => {
            type       => hash,
            index_type => string,
            cargo      => {
                type       => leaf,
                value_type => uniline,

 # model to choose a master host and a master NIC (whatever that may be)
 # among configured hosts. Once these 2 are configured, the model computes
 # the master IP

    name => "MyNetwork",

    element => [
        host => {
            type       => hash,
            index_type => string,
            cargo      => {
                type              => node,
                config_class_name => Host

        # master_host is one of the configured hosts
        master_host => {
            type       => leaf,
            value_type => reference, # provided by tConfig::Model::IdElementReference
            refer_to   => ! host

        # master_nic is one NIC of the master host
        master_nic => {
            type              => leaf,
            value_type        => reference, # provided by tConfig::Model::IdElementReference
            computed_refer_to => {            # provided by Config::Model::ValueComputer
                formula   =>   ! host:$h ip_nic ,
                variables => { h => - master_host }

        # provided by Config::Model::ValueComputer
        master_ip => {
            type       => leaf,
            value_type => string,
            compute    => {
                formula   => $ip,
                variables => {
                    h   => - master_host,
                    nic => - master_nic,
                    ip  => ! host:$h ip_nic:$nic


 my $inst = $model->instance(root_class_name => MyNetwork );

 my $root = $inst->config_root ;

 # configure hosts on my network
 my $step = host:foo ip_nic:eth0= ip_nic:eth1= -
             host:bar ip_nic:eth0= ip_nic:eth1= -
             host:baz ip_nic:eth0= ip_nic:eth1= ;
 $root->load( step => $step );

 print "master host can be one of ",
   join( ,$root->fetch_element(master_host)->get_choice),"\n" ;
 # prints: master host can be one of bar baz foo

 # choose master host
 $root->load(master_host=bar) ;

 print "master NIC of master host can be one of ",
 join( ,$root->fetch_element(master_nic)->get_choice),"\n" ;
 # prints: master NIC of master host can be one of eth0 eth1

 # choose master nic
 $root->load(master_nic=eth1) ;

 # check what is the master IP computed by the model
 print "master IP is ",$root->grab_value(master_ip),"\n";
 # prints master IP is


This class is user by Config::Model::Value to set up an enumerated value where the possible choice depends on the key of a Config::Model::HashId or the content of a Config::Model::ListId object.

This class is also used by Config::Model::CheckList to define the checklist items from the keys of another hash (or content of a list).


Construction is handled by the calling object (Config::Model::Node).

Config class parameters

refer_to refer_to is used to specify a hash element that will be used as a reference. refer_to points to an array or hash element in the configuration tree using the path syntax (See grab in Config::Model::Node for details).
computed_refer_to When computed_refer_to is used, the path is computed using values from several elements in the configuration tree. computed_refer_to is a hash with 2 mandatory elements: formula and variables.
The available choice of this (computed or not) reference value is made from the available keys of the refered_to hash element or the values of the refered_to array element.

The example means the the value must correspond to an existing host:

 value_type => reference,
 refer_to => ! host

This example means the the value must correspond to an existing lan within the host whose Id is specified by hostname:

 value_type => reference,
 computed_refer_to => { formula => ! host:$a lan,
                        variables => { a => - hostname }

If you need to combine possibilities from several hash, use the "+" token to separate 2 paths:

 value_type => reference,
 computed_refer_to => { formula => ! host:$a lan + ! host:foobar lan,
                        variables => { a => - hostname }

You can specify refer_to or computed_refer_to with a choice argument so the possible enum value will be the combination of the specified choice and the refered_to values.



Returns a human readable string with explains how is retrieved the reference. This method is mostly used to construct an error messages.


Dominique Dumont, (ddumont at cpan dot org)


Config::Model, Config::Model::Value, Config::Model::AnyId, Config::Model::CheckList


Dominique Dumont


This software is Copyright (c) 2005-2016 by Dominique Dumont.

This is free software, licensed under:

  The GNU Lesser General Public License, Version 2.1, February 1999

Search for    or go to Top of page |  Section 3 |  Main Index

perl v5.20.3 CONFIG::MODEL::IDELEMENTREFERENCE (3) 2016-04-03

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.