1Config::Model::IdElemenUtsReerfeCroenntcrei(b3u)ted PerlCoDnofciugm:e:nMtoadteilo:n:IdElementReference(3)
2
3
4

NAME

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

VERSION

10       version 2.129
11

SYNOPSIS

13        # synopsis shows an example of model of a network to use references
14
15        use Config::Model;
16
17        my $model = Config::Model->new;
18
19        # model of several hosts with several NICs
20        $model->create_config_class(
21           name      => 'Host',
22           'element' => [
23               ip_nic => {
24                   type       => 'hash',
25                   index_type => 'string',
26                   cargo      => {
27                       type       => 'leaf',
28                       value_type => 'uniline',
29                   }
30               },
31           ]
32        );
33
34        # model to choose a master host and a master NIC (whatever that may be)
35        # among configured hosts. Once these 2 are configured, the model computes
36        # the master IP
37
38        $model->create_config_class(
39           name => "MyNetwork",
40
41           element => [
42               host => {
43                   type       => 'hash',
44                   index_type => 'string',
45                   cargo      => {
46                       type              => 'node',
47                       config_class_name => 'Host'
48                   },
49               },
50
51               # master_host is one of the configured hosts
52               master_host => {
53                   type       => 'leaf',
54                   value_type => 'reference', # provided by tConfig::Model::IdElementReference
55                   refer_to   => '! host'
56               },
57
58               # master_nic is one NIC of the master host
59               master_nic => {
60                   type              => 'leaf',
61                   value_type        => 'reference', # provided by tConfig::Model::IdElementReference
62                   computed_refer_to => {            # provided by Config::Model::ValueComputer
63                       formula   => '  ! host:$h ip_nic ',
64                       variables => { h => '- master_host' }
65                   }
66               },
67
68               # provided by Config::Model::ValueComputer
69               master_ip => {
70                   type       => 'leaf',
71                   value_type => 'string',
72                   compute    => {
73                       formula   => '$ip',
74                       variables => {
75                           h   => '- master_host',
76                           nic => '- master_nic',
77                           ip  => '! host:$h ip_nic:$nic'
78                       }
79                   }
80               },
81
82           ],
83        );
84
85        my $inst = $model->instance(root_class_name => 'MyNetwork' );
86
87        my $root = $inst->config_root ;
88
89        # configure hosts on my network
90        my $steps = 'host:foo ip_nic:eth0=192.168.0.1 ip_nic:eth1=192.168.1.1 -
91                    host:bar ip_nic:eth0=192.168.0.2 ip_nic:eth1=192.168.1.2 -
92                    host:baz ip_nic:eth0=192.168.0.3 ip_nic:eth1=192.168.1.3 ';
93        $root->load( steps => $steps );
94
95        print "master host can be one of ",
96          join(' ',$root->fetch_element('master_host')->get_choice),"\n" ;
97        # prints: master host can be one of bar baz foo
98
99        # choose master host
100        $root->load('master_host=bar') ;
101
102        print "master NIC of master host can be one of ",
103        join(' ',$root->fetch_element('master_nic')->get_choice),"\n" ;
104        # prints: master NIC of master host can be one of eth0 eth1
105
106        # choose master nic
107        $root->load('master_nic=eth1') ;
108
109        # check what is the master IP computed by the model
110        print "master IP is ",$root->grab_value('master_ip'),"\n";
111        # prints master IP is 192.168.1.2
112

DESCRIPTION

114       This class is user by Config::Model::Value to set up an enumerated
115       value where the possible choice depends on the key of a
116       Config::Model::HashId or the content of a Config::Model::ListId object.
117
118       This class is also used by Config::Model::CheckList to define the
119       checklist items from the keys of another hash (or content of a list).
120

CONSTRUCTOR

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

Config class parameters

125       refer_to
126           "refer_to" is used to specify a hash element that is used as a
127           reference. "refer_to" points to an array or hash element in the
128           configuration tree using the path syntax (See "grab" in
129           Config::Model::Role::Grab for details).
130
131       computed_refer_to
132           When "computed_refer_to" is used, the path is computed using values
133           from several elements in the configuration tree.
134           "computed_refer_to" is a hash with 2 mandatory elements: "formula"
135           and "variables".
136
137       The available choice of this (computed or not) reference value is made
138       from the available keys of the refered_to hash element or the values of
139       the refered_to array element.
140
141       The example means the the value must correspond to an existing host:
142
143        value_type => 'reference',
144        refer_to => '! host'
145
146       This example means the the value must correspond to an existing lan
147       within the host whose Id is specified by hostname:
148
149        value_type => 'reference',
150        computed_refer_to => { formula => '! host:$a lan',
151                               variables => { a => '- hostname' }
152                             }
153
154       If you need to combine possibilities from several hash, use the ""+""
155       token to separate 2 paths:
156
157        value_type => 'reference',
158        computed_refer_to => { formula => '! host:$a lan + ! host:foobar lan',
159                               variables => { a => '- hostname' }
160                             }
161
162       You can specify "refer_to" or "computed_refer_to" with a "choice"
163       argument so the possible enum value will be the combination of the
164       specified choice and the refered_to values.
165

Methods

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

AUTHOR

172       Dominique Dumont, (ddumont at cpan dot org)
173

SEE ALSO

175       Config::Model, Config::Model::Value, Config::Model::AnyId,
176       Config::Model::CheckList
177

AUTHOR

179       Dominique Dumont
180
182       This software is Copyright (c) 2005-2018 by Dominique Dumont.
183
184       This is free software, licensed under:
185
186         The GNU Lesser General Public License, Version 2.1, February 1999
187
188
189
190perl v5.28.1                      2018-12-0C7onfig::Model::IdElementReference(3)
Impressum