#!/usr/bin/perl use strict; use FS::UID qw(adminsuidsetup); use FS::Record qw(qsearch qsearchs); use FS::svc_Common; use FS::part_svc_router; use FS::svc_broadband; use FS::router; use FS::addr_block; $FS::svc_Common::noexport_hack = 1; #Disable exports! my $user = shift if $ARGV[0] or die &usage; adminsuidsetup($user); my $remapfile = shift if $ARGV[0] or die &usage; my $old_blocknum = shift if $ARGV[0] or die &usage; my $new_blocknum = shift if $ARGV[0] or die &usage; my $old_svcnum = shift if $ARGV[0]; my %ipmap; open(REMAP, "<$remapfile") or die $!; while () { next unless (/^([0-9\.]+)\s+([0-9\.]+)$/); my ($old_ip, $new_ip) = ($1, $2); $ipmap{$old_ip} = $new_ip; } close(REMAP); my @svcs; if ($old_svcnum) { @svcs = ( qsearchs('svc_broadband', { svcnum => $old_svcnum, blocknum => $old_blocknum }) ); } else { @svcs = qsearch('svc_broadband', { blocknum => $old_blocknum }); } foreach my $old_sb (@svcs) { my $old_ip = $old_sb->ip_addr; my $new_ip = $ipmap{$old_ip}; print "Renumbering ${old_ip} (${old_blocknum}) => ${new_ip} (${new_blocknum})...\n"; my $new_sb = new FS::svc_broadband { $old_sb->hash, ip_addr => $new_ip, blocknum => $new_blocknum, svcpart => $old_sb->cust_svc->svcpart, }; my $error = $new_sb->replace($old_sb); die $error if $error; } exit(0); sub usage { my $usage = <