X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fbroadband_shellcommands.pm;h=44280a2009041ad2bca5b7691f4b73f6b2dcb81e;hb=fbb0b4a9c32444f89e0b5aacfebdf883070c3b21;hp=c7f0fbb33f57d82f7c5486e833d944db3c8010d8;hpb=0fb307c305e4bc2c9c27dc25a3308beae3a4d33c;p=freeside.git
diff --git a/FS/FS/part_export/broadband_shellcommands.pm b/FS/FS/part_export/broadband_shellcommands.pm
index c7f0fbb33..44280a200 100644
--- a/FS/FS/part_export/broadband_shellcommands.pm
+++ b/FS/FS/part_export/broadband_shellcommands.pm
@@ -8,21 +8,26 @@ use FS::part_export;
@ISA = qw(FS::part_export);
tie my %options, 'Tie::IxHash',
- 'user' => { label=>'Remote username', default=>'freeside' },
- 'insert' => { label=>'Insert command',
- default=>'php provision.php --mac=$mac_addr --plan=$plan_id --account=active',
- },
- 'delete' => { label=>'Delete command',
- default=>'',
- },
- 'suspend' => { label=>'Suspension command',
- default=>'php provision.php --mac=$mac_addr --plan=$plan_id --account=suspend',
- },
- 'unsuspend'=> { label=>'Unsuspension command',
- default=>'',
- },
- 'uppercase_mac' => { label => 'Force MACs to uppercase',
- type => 'checkbox', }
+ 'user' => { label => 'Remote username',
+ default => 'freeside' },
+ 'insert' => { label => 'Insert command',
+ default => 'php provision.php --mac=$mac_addr --plan=$plan_id --account=active',
+ },
+ 'delete' => { label => 'Delete command',
+ default => '',
+ },
+ 'replace' => { label => 'Modification command',
+ default => '',
+ },
+ 'suspend' => { label => 'Suspension command',
+ default => 'php provision.php --mac=$mac_addr --plan=$plan_id --account=suspend',
+ },
+ 'unsuspend' => { label => 'Unsuspension command',
+ default => '',
+ },
+ 'uppercase_mac' => { label => 'Force MACs to uppercase',
+ type => 'checkbox',
+ }
;
%info = (
@@ -30,6 +35,10 @@ tie my %options, 'Tie::IxHash',
'desc' => 'Run remote commands via SSH, for svc_broadband services',
'options' => \%options,
'notes' => <<'END'
+Run remote commands via SSH, for broadband services.
+
+All fields in svc_broadband are available for interpolation, as well as pkgnum, locationnum and custnum (prefixed with new_
or old_
+for replace operations).
END
);
@@ -61,28 +70,63 @@ sub _export_command {
my $command = $self->option($action);
return '' if $command =~ /^\s*$/;
- #set variable for the command
+ #set variables for the command
no strict 'vars';
{
no strict 'refs';
${$_} = $svc_broadband->getfield($_) foreach $svc_broadband->fields;
}
- if ( $self->option('uppercase_mac') ) {
- $mac_addr = uc $mac_addr;
- }
+ $mac_addr = uc $mac_addr
+ if $self->option('uppercase_mac');
+
+ my $cust_pkg = $svc_broadband->cust_svc->cust_pkg;
+ $pkgnum = $cust_pkg ? $cust_pkg->pkgnum : '';
+ $locationnum = $cust_pkg ? $cust_pkg->locationnum : '';
+ $custnum = $cust_pkg ? $cust_pkg->custnum : '';
#done setting variables for the command
$self->shellcommands_queue( $svc_broadband->svcnum,
- user => $self->option('user')||'root',
- host => $self->machine,
- command => eval(qq("$command")),
+ user => $self->option('user')||'root',
+ host => $self->machine,
+ command => eval(qq("$command")),
);
}
sub _export_replace {
- '';
+ my($self, $new, $old ) = (shift, shift, shift);
+ my $command = $self->option('replace');
+
+ #set variable for the command
+ no strict 'vars';
+ {
+ no strict 'refs';
+ ${"old_$_"} = $old->getfield($_) foreach $old->fields;
+ ${"new_$_"} = $new->getfield($_) foreach $new->fields;
+ }
+
+ if ( $self->option('uppercase_mac') ) {
+ $old_mac_addr = uc $old_mac_addr;
+ $new_mac_addr = uc $new_mac_addr;
+ }
+
+ my $old_cust_pkg = $old->cust_svc->cust_pkg;
+ my $new_cust_pkg = $new->cust_svc->cust_pkg;
+ $old_pkgnum = $old_cust_pkg ? $old_cust_pkg->pkgnum : '';
+ $old_locationnum = $old_cust_pkg ? $old_cust_pkg->locationnum : '';
+ $old_custnum = $old_cust_pkg ? $old_cust_pkg->custnum : '';
+ $new_pkgnum = $new_cust_pkg ? $new_cust_pkg->pkgnum : '';
+ $new_locationnum = $new_cust_pkg ? $new_cust_pkg->locationnum : '';
+ $new_custnum = $new_cust_pkg ? $new_cust_pkg->custnum : '';
+
+ #done setting variables for the command
+
+ $self->shellcommands_queue( $new->svcnum,
+ user => $self->option('user')||'root',
+ host => $self->machine,
+ command => eval(qq("$command")),
+ );
}
#a good idea to queue anything that could fail or take any time
@@ -107,3 +151,4 @@ sub ssh_cmd { #subroutine, not method
'';
}
+1;