X-Git-Url: http://git.rot13.org/?p=perl-cwmp.git;a=blobdiff_plain;f=lib%2FCWMP%2FVendor.pm;h=9613528f47476625c3c5f167799aeafec8ebe2c2;hp=8712f0ae57727342b3a31209ff6f333d91459e33;hb=485fd0158e5c7ab2f5bf72f8f3f815dee57e8e44;hpb=b3f35798ca497b3d02382bfb9f80f97247694e3f diff --git a/lib/CWMP/Vendor.pm b/lib/CWMP/Vendor.pm index 8712f0a..9613528 100644 --- a/lib/CWMP/Vendor.pm +++ b/lib/CWMP/Vendor.pm @@ -14,7 +14,7 @@ CWMP::Vendor - implement vendor specific logic into ACS server =cut -my $debug = 0; +my $debug = 1; sub all_parameters { my ( $self, $store, $uid, $queue ) = @_; @@ -64,7 +64,7 @@ sub all_parameters { return; } -our $set_tried; +our $tried; sub vendor_config { my ( $self, $store, $uid, $queue ) = @_; @@ -74,21 +74,32 @@ sub vendor_config { my @refresh; my $vendor = YAML::LoadFile 'vendor.yaml'; - $vendor = $vendor->{Parameter} || die "no Parameter in vendor.yaml"; + $vendor = $vendor->{Parameter} || die "no Parameter in vendor.yaml"; + $stored = $stored->{Parameter} || warn "no Parameter in stored ", dump($stored); + + warn "# vendor.yaml ",dump $vendor; foreach my $n ( keys %$vendor ) { - if ( defined $stored->{$n} && $vendor->{$n} ne $stored->{$n} ) { - next if $set_tried->{$uid}->{$n}++; + if ( ! exists $stored->{$n} ) { + warn "# $uid missing $n\n"; push @refresh, $n; + } elsif ( $vendor->{$n} ne $stored->{$n} + && ( ! $tried->{$uid}->{$n}->{set} || $tried->{$uid}->{$n}->{set} ne $vendor->{$n} ) + ) { $queue->enqueue( 'SetParameterValues', { $n => $vendor->{$n} } ); + push @refresh, $n; + $tried->{$uid}->{$n}->{set} = $vendor->{$n}; + warn "# set $uid $n $stored->{$n} -> $vendor->{$n}\n"; + } elsif ( $tried->{$uid}->{$n}->{set} eq $vendor->{$n} && $vendor->{$n} ne $stored->{$n} ) { + warn "ERROR $uid $n $stored->{$n} != $vendor->{$n}\n"; + } else { + warn "# ok $uid $n = $stored->{$n}\n"; } } - if ( @refresh ) { - $queue->enqueue( 'GetParameterValues', [ @refresh ] ); - warn "vendor_hook $uid SetParameterValues ", dump( @refresh ); - return ( 'GetParameterValues', [ @refresh ] ); - } + return ( 'GetParameterValues', [ @refresh ] ) if @refresh; + + warn "# tried ",dump $tried; return; }