# parse command line
###
-use vars qw( $opt_h $opt_v $opt_n $opt_e $opt_s $opt_c $opt_r $opt_p $opt_d );
-getopts('hvnes:c:r:pd:');
+use vars qw( $opt_h $opt_v $opt_n $opt_e $opt_a $opt_s $opt_c $opt_r $opt_p $opt_t $opt_d );
+getopts('hvneas:c:r:pt:d:');
my $user = shift or die &usage;
adminsuidsetup $user;
sub usage { "
Usage:
- svc_broadband_update_speeds [ -h help] [ -v verbose] [ -n only update services with a null up/down speed] [ -e export service ] [ -s service_part_num (required) ] [ -c sibling service_part_num ] [ -r (speed rate in KB 'up,down') ] [ -p (get speed from package fcc rate) ] [ -d directory for exception file (required) ] user (required)\n
+ svc_broadband_update_speeds: [ -h help] [ -v verbose] [ -n only update services with a null up/down speed] [ -e export service ] [ -a update tower_sector_num ] [ -s service_part_num (required) ] [ -c sibling service_part_num ] [ -r (speed rate in KB 'up,down') ] [ -p (get speed from package fcc rate) ] [ -t tower_sector_num ] [ -d directory for exception file (required) ] user (required)\n
A directory for the exception file, freeside user name and a service to update is required.\n
Must set one or more of options p, c, or r. \n
Also must run this report as user freeside.\n
Option r up and down speed seperated by a comma in kbps.
Getting speed from option p (package fcc rates) first if set, if no rates found then checks for option c (rate of sibling service) if set, if still no rates found checks for rate in option r if set. If no rates found service will be placed in exception file.
+ Option a will update tower/sector with that of sibling service if tower sector is null.
+ If option t is set, svc tower/sector will be set to sibling service set in -c, if no sibling service tower/sector found will set tower_sector to option t value. This will only update services with a null tower/sector field.
By default serivce will not export if there is a export assigned to service. Setting option e will perform the export.
" }
warn ("Option r speeds not correct. Must be in kbps up and down seperated by comma. [ -r xxxxxx,xxxxxx ]\n") if $opt_v && (!$speed_up || !$speed_down);
}
- ## update service with new speed.
if ($speed_up && $speed_down) {
$service->set('speed_up', $speed_up);
$service->set('speed_down', $speed_down);
+ }
+
+ ## if option t, then update tower/sector for service.
+ if ($opt_a) {
+ warn ("Getting tower/sector for service ".$service->description."(".$service->svcnum.") from sibling service of package ".$service->pkgnum) if $opt_v;
+ my $tower_sector;
+ my $sibling_service = qsearchs({
+ 'select' => 'svc_broadband.*, cust_svc.svcpart',
+ 'table' => 'svc_broadband',
+ 'addl_from' => ' LEFT JOIN cust_svc USING ( svcnum )',
+ 'extra_sql' => ' WHERE cust_svc.pkgnum = '.$service->pkgnum.' AND cust_svc.svcpart = '.$opt_c.' AND svc_broadband.sectornum IS NOT NULL',
+ }) if $opt_c;
+ $tower_sector = $sibling_service->sectornum if $sibling_service;
+ $tower_sector = $opt_t if (!$tower_sector && $opt_t);
+ $service->set('sectornum', $tower_sector) if $tower_sector;
+ }
- warn("updating service ".$service->description."(".$service->svcnum.") with upload speed ($speed_up) and download speed ($speed_down)\n") if $opt_v;
+ ## update service with new speed and tower/sector num.
+ if ($service->speed_up && $service->speed_down && $service->sectornum) {
+ warn("updating service ".$service->description."(".$service->svcnum.") with upload speed (".$service->speed_up.") and download speed (".$service->speed_down.") and sector num (".$service->sectornum.")\n") if $opt_v;
$service->set('no_export', $opt_e);
my $error = $service->replace();
warn($error) if $error;
###todo: if no error provision service if not provisioned ie new svc_broadband.
}
else {
+ my $error;
+ $error .= " no download speed set," unless $service->speed_down;
+ $error .= " no upload speed set," unless $service->speed_up;
+ $error .= " no tower sector set" unless $service->sectornum;
+
open(FILE, ">>$exception_file")
or die "can't open $opt_d: $!";
- print FILE "Service ".$service->description."(".$service->svcnum.") could not set a up or download speed.\n";
+ print FILE "Service ".$service->description."(".$service->svcnum.") could not be updated.$error.\n";
close FILE or die "can't close $opt_d: $!";
- warn($service->description."(".$service->svcnum.") could not set a up or download speed, added to exception file.\n") if $opt_v;
+ warn("Service ".$service->description."(".$service->svcnum.") could not be updated.$error. added to exception file.\n") if $opt_v;
}
return;
}
the script will obtain the new speed from option p (package fcc rates) first if set,
if no rates found then checks for option c (rate of sibling service) if set,
if still no rates found checks for rate in option r if set.
-If no rates found service will be placed in exception file.
+If no rates found service will be placed in exception file.
+
+If option a is set, will also update tower/sector num with that of sibling service or option t
Script must be run as user freeside.
Options -s, -d and freeside user are required.
example:
sudo -u freeside ./svc_broadband_update_speeds -v -s 4 -c 2 -r 148000,248000 -p -d /home/freeside/ freesideuser
-=cut
\ No newline at end of file
+available options:
+[ -h help]
+[ -v verbose]
+[ -n only update services with a null up/down speed]
+[ -e export service ]
+[ -a update tower_sector_num ]
+[ -s service_part_num (required) ]
+[ -c sibling service_part_num ]
+[ -r (speed rate in KB 'up,down') ]
+[ -p (get speed from package fcc rate) ]
+[ -t tower_sector_num ]
+[ -d directory for exception file (required) ]
+freesideuser
+
+=cut