Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Config::Model::IdElemeUserfContributed PerConfig::Model::IdElementReference(3)

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

VERSION
       version 2.140

SYNOPSIS
	# 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
	$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 $steps = '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( steps => $steps );

	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 is	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::Role::Grab 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 "referred_to" hash element or the	values
       of the "referred_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	referred_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

AUTHOR
       Dominique Dumont

COPYRIGHT AND LICENSE
       This software is	Copyright (c) 2005-2020	by Dominique Dumont.

       This is free software, licensed under:

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

perl v5.32.0			  2020-08-Config::Model::IdElementReference(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | CONSTRUCTOR | Config class parameters | Methods | AUTHOR | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Config::Model::IdElementReference&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help