Config-Model
view release on metacpan or search on metacpan
t/value_refer_to.t view on Meta::CPAN
use warnings;
Test::Log::Log4perl->ignore_priority("info");
my ($model, $trace) = init_test();
$model->create_config_class(
name => 'Host',
'element' => [
if => {
type => 'hash',
index_type => 'string',
cargo => {
type => 'node',
config_class_name => 'If'
},
},
trap => {
type => 'leaf',
value_type => 'string'
}
]
);
$model->create_config_class(
name => 'If',
element => [
ip => {
type => 'leaf',
value_type => 'string'
}
]
);
$model->create_config_class(
name => 'Lan',
element => [
node => {
type => 'hash',
index_type => 'string',
cargo => {
type => 'node',
config_class_name => 'Node',
},
}
]
);
$model->create_config_class(
name => 'Node',
element => [
host => {
type => 'leaf',
value_type => 'reference',
refer_to => '! host'
},
if => {
type => 'leaf',
value_type => 'reference',
computed_refer_to => {
formula => ' ! host:$h if ',
variables => { h => '- host' }
}
},
ip => {
type => 'leaf',
value_type => 'string',
compute => {
formula => '$ip',
variables => {
ip => '! host:$h if:$card ip',
h => '- host',
card => '- if'
}
}
}
]
);
$model->create_config_class(
name => 'Master',
element => [
host => {
type => 'hash',
index_type => 'string',
cargo => {
type => 'node',
config_class_name => 'Host'
}
},
lan => {
type => 'hash',
index_type => 'string',
cargo => {
type => 'node',
config_class_name => 'Lan'
}
},
host_reference => {
type => 'leaf',
value_type => 'reference',
refer_to => '! host ',
},
host_and_choice => {
type => 'leaf',
value_type => 'reference',
refer_to => '! host ',
choice => [qw/foo bar/]
},
host_and_replace => {
type => 'leaf',
value_type => 'reference',
refer_to => '! host ',
replace => { 'fou' => 'Foo', 'barre' => 'Bar' },
},
dumb_list => {
type => 'list',
cargo => {
type => 'leaf',
value_type => 'string'
}
},
refer_to_list_enum => {
type => 'leaf',
value_type => 'reference',
refer_to => '- dumb_list',
},
refer_to_wrong_path => {
( run in 1.122 second using v1.01-cache-2.11-cpan-d7f47b0818f )