Config::Model::IdElementReference man page on Pidora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Pidora logo
[printable version]

Config::Model::IdElemeUserfContributed PerConfig::Model::IdElementReference(3)

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

VERSION
       version 1.235

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

	use Config::Model;
	use Log::Log4perl qw(:easy);
	Log::Log4perl->easy_init($WARN);

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

	# model of several hosts with several NICs
	$model->create_config_class(
	   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

	$model->create_config_class(
	   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=192.168.0.1 ip_nic:eth1=192.168.1.1 -
		    host:bar ip_nic:eth0=192.168.0.2 ip_nic:eth1=192.168.1.2 -
		    host:baz ip_nic:eth0=192.168.0.3 ip_nic:eth1=192.168.1.3 ';
	$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 192.168.1.2

DESCRIPTION
       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).

CONSTRUCTOR
       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.

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

AUTHOR
       Dominique Dumont, (ddumont at cpan dot org)

SEE ALSO
       Config::Model, Config::Model::Value, Config::Model::AnyId,
       Config::Model::CheckList

perl v5.14.1			  2011-07-Config::Model::IdElementReference(3)
[top]

List of man pages available for Pidora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net