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 )