package Common::RSDB;

use constant 'ENVDBFILE' => '/var/run/royaltyshare/envdb';

use strict;
use warnings;

use FileHandle;

#use DBI;
use Carp qw(cluck croak carp confess);

use lib '/app/tools/common/lib';
use Common::Log;
use Common::RSDB::DirectIO;
use Common::RSDB::StaticList;
use Common::Assert qw(assert);

# in seconds
use constant RECONNECT_DELAY => 5;
use constant RETRY_LIMIT     => 60;

# client DB types
use constant DB_PREFIX_RPS     => 'C_';
use constant DB_PREFIX_BOOKPUB => 'BP_';

# database info

# !!! JPK - I would rather this be declared 'my', not 'our'.
# !!! Exposing the hash violates encapsulation... I'd prefer to
# !!! add a static accessor method that does whatever you might want
# !!! to accomplish.
#

our %CLIENT_DB = Common::RSDB::StaticList::clientDB;

sub new {
    my $class = shift;
    my %args  = @_;
    my $self  = {};
    bless $self, $class;

    $self->_init(%args);

    $self->connect();
    return $self;
}

sub _init {
    my ( $self, %args ) = @_;

    $self->{dbi_attr} = ( defined $args{dbi_attr} && ref( $args{dbi_attr} ) eq 'HASH' ) ? $args{dbi_attr} : undef;
    $self->{client_id} = defined $args{client_id} ? $args{client_id} : $ENV{CLIENT_ID};

    # We will default to using the custom class that
    # transforms all into utf8.
    #
    $self->{useRSDBI} = ( defined $args{use_rs_dbi} ? $args{use_rs_dbi} : 1 );
    $self->{root}     = ( defined $args{root}       ? $args{root}       : 0 );

    return $self;
}

sub connect {
    my $self = shift;
    my %args = @_;

    my $dbi_attr  = $self->{dbi_attr};
    my $client_id = $self->{client_id};
    assert( defined $client_id );

    use Carp;
    confess "unknown client_id ($client_id)" unless ( $CLIENT_DB{$client_id} );
    $self->{CLIENT_ID} = $client_id;

    # get the username/password
    my $server   = $CLIENT_DB{$client_id}->{server};
    my $db_name  = $CLIENT_DB{$client_id}->{db_name};
    my $username = $self->{root} ? 'root' : $CLIENT_DB{$client_id}->{username};
    my $password = $self->{root} ? '' : $CLIENT_DB{$client_id}->{password};

    # jpk - allow overrides
    #
    if ( $args{db_name} ) {
        $db_name = $args{db_name};
    }

    # Force DBI to be aware of UTF8.
    #
    $dbi_attr = {} unless defined $dbi_attr;
    $dbi_attr->{mysql_enable_utf8} = 1;

    my $dbh;
    my $try = 0;

    while ( $try < RETRY_LIMIT ) {
        my $dbiClass = 'DBI';

        eval { $dbh = $dbiClass->connect( "DBI:mysql:database=$db_name;host=$server", $username, $password, $dbi_attr ); };

        last if ( defined $dbh );

        Common::Log::Print("Error: unable to connect to $db_name on $server : exception: $@");

        # last if(!$args{reconnect});
        sleep RECONNECT_DELAY;

        $try++;
    }

    if ($dbh) {
        $self->{DBH} = $dbh;

        # This tells mysql that we're going to be sending UTF-8 characters, and
        # that it ought not to treat them as latin1.   This seems to fix the
        # problems we were having with our search queries (namely that search string
        # with 'foreign' characters were not working).
        #
        #    $self->DoCmd('SET CHARACTER SET utf8');
        $self->DoCmd('SET NAMES utf8');

        # This tells mysql to _NOT_ do any 'helpful' character set translations.
        # So no matter what, we're just going to get the actual bytes held in the
        # table back (even for text or character fields).
        #
        $self->DoCmd('SET character_set_results=NULL');

    } else {
        croak "unable to connect to $db_name on $server";
    }
}

sub disconnect {
    my ($self) = @_;

    # Probably a cleaner way to do this...
    #
    $self->{DBH} = undef;
}

# Issue a database command
sub DoCmd {
    my ( $self, $sql_cmd, $in_sth ) = @_;
    my $sth;

    # print STDERR "RSDB sql: $sql_cmd\n";
    #    Common::Log::Print("SQL: $sql_cmd");

    # allow a ref for the sth to be passed in
    if ($in_sth) {
        $sth = $in_sth;
    } else {
        my $sth2;
        $sth = \$sth2;
    }

    if ( !$self->{DBH} ) {
        croak("Error: Sql \"$sql_cmd\" not executed because there is no database connection");
        return undef;
    }

    # In a non-mod-perl environment (ie a script of some sort) we want to try and reconnect if
    # we lose connectivity for some reason.
    # On the web server, though, we just want to crap out immediately.
    #
    my $retryLimit;
    if ( $ENV{MOD_PERL} ) {
        $retryLimit = 0;
    } else {
        $retryLimit = RETRY_LIMIT;
    }

    my $tries = 0;
    while (1) {
        $$sth = $self->{DBH}->prepare($sql_cmd);

        return $$sth if ( $$sth->execute );

        # we got trouble
        if ( $self->{DBH}->err >= 2000 ) {
            my $error = "Error: Sql \"$sql_cmd\" not executed because there is no database connection - DBH err: " . $self->{DBH}->err;

            Common::Log::Print($error);
            if ( $tries < $retryLimit ) {
                Common::Log::Print("... going to try to re-connect");
                $self->disconnect();
                sleep RECONNECT_DELAY;
                $self->connect();
                $tries++;
            } else {
                croak($error);
            }
        } elsif ( $self->{DBH}->err == 1205 ) {    # Timeout
            my $error = "Error: Sql \"$sql_cmd\" encountered lock timeout - DBH err: " . $self->{DBH}->err;
            Common::Log::Print($error);
            if ( $tries < $retryLimit ) {
                sleep RECONNECT_DELAY;
                $tries++;
            } else {
                croak($error);
            }
        } elsif ( $self->{DBH}->err == 1213 ) {    # Deadlock
            my $error = "Error: Sql \"$sql_cmd\" encountered deadlock - DBH err: " . $self->{DBH}->err;
            Common::Log::Print($error);
            if ( $tries < $retryLimit ) {
                sleep RECONNECT_DELAY;
                $tries++;
            } else {
                croak($error);
            }
        } else {
            $self->ReportSQLErr($sql_cmd);         # probably just a syntax error
            return undef;
        }
    }
}

sub DoCmdWithPlaceholders {
    my ( $self, $sql_cmd, $params ) = @_;

    if ( ref($params) ne 'ARRAY' ) {
        croak("Error: Sql \"$sql_cmd\" executed with invalid params ($params)");
        return undef;
    }

    if ( !$self->{DBH} ) {
        croak("Error: Sql \"$sql_cmd\" not executed because there is no database connection");
        return undef;
    }

    # In a non-mod-perl environment (ie a script of some sort) we want to try and reconnect if
    # we lose connectivity for some reason.
    # On the web server, though, we just want to crap out immediately.
    #
    my $retryLimit;
    if ( $ENV{MOD_PERL} ) {
        $retryLimit = 0;
    } else {
        $retryLimit = RETRY_LIMIT;
    }

    my $tries = 0;
    my $sth;
    while (1) {
        $sth = $self->{DBH}->prepare($sql_cmd);

        return $sth if ( $sth->execute(@$params) );

        # we got trouble

        if ( $self->{DBH}->err >= 2000 ) {
            my $error = "Error: Sql \"$sql_cmd\" not executed because there is no database connection - DBH err: " . $self->{DBH}->err;

            Common::Log::Print($error);
            if ( $tries < $retryLimit ) {
                Common::Log::Print("... going to try to re-connect");
                $self->disconnect();
                sleep RECONNECT_DELAY;
                $self->connect();
                $tries++;
            } else {
                croak($error);
            }
        } elsif ( $self->{DBH}->err == 1205 ) {    # Timeout
            my $error = "Error: Sql \"$sql_cmd\" encountered lock timeout - DBH err: " . $self->{DBH}->err;
            Common::Log::Print($error);
            if ( $tries < $retryLimit ) {
                sleep RECONNECT_DELAY;
                $tries++;
            } else {
                croak($error);
            }
        } elsif ( $self->{DBH}->err == 1213 ) {    # Deadlock
            my $error = "Error: Sql \"$sql_cmd\" encountered deadlock - DBH err: " . $self->{DBH}->err;
            Common::Log::Print($error);
            if ( $tries < $retryLimit ) {
                sleep RECONNECT_DELAY;
                $tries++;
            } else {
                croak($error);
            }
        } else {
            $self->ReportSQLErr( $sql_cmd . "PARAMS: " . join( ',', @$params ) );    # probably just a syntax error
            return undef;
        }
    }
}

sub Prepare {
    my $self = shift;
    my $sql  = shift;

    if ( $self->{DBH} ) {
        return $self->{DBH}->prepare($sql);
    } else {
        croak "RSDB: Prepare failed! No database connection. sql: $sql";
    }
}

# Issue a database command
# jpk - MERGE - This appears to be very similar to DoCmdWithPlaceholders.
# The only difference, really, is that DoCmdWithPlaceholders expects an array ref for the 3rd argument.
# It seems silly to have both.
# I am going to let DoCmdWithPlaceholders win... I'll keep DoCmdParams, but just have it call DoCmdWithPlaceholders and
# print out a warning...
#
sub DoCmdParams {
    my $self    = shift;
    my $sql_cmd = shift;
    my @params  = @_;

    warn "RSDB::DoCmdParams is deprecated!  Use DoCmdWithPlaceholders instead...\n";
    return $self->DoCmdWithPlaceholders( $sql_cmd, \@params );

}

# return the database handle
sub DBH {
    my $self = shift;
    return $self->{DBH};
}

sub DirectIO {
    my $self = shift;
    return Common::RSDB::DirectIO->new($self);
}

# jpk - MERGE - Deprecating this call.
# We should be using RSAPP::GetClientID() instead.
#
# actually, let's keep this here so that Raptor will
# run properly and we can phase it out during the merge. -jff-
#

# return the client_id used to establish this connection
sub ClientID {
    my $self = shift;
    return $self->{CLIENT_ID};
}

# Quote a string
sub DBQuote {
    my $self   = shift;
    my $string = shift;

    return undef if ( !$self->{DBH} );

    return $self->{DBH}->quote($string);
}

# UnQuote a string
sub DBUnQuote {
    my $self   = shift;
    my $string = shift;

    return undef if ( !$self->{DBH} );
    return undef unless ($string);

    $string =~ s/^['"`]//g;
    $string =~ s/([^\\])['"`]/$1/g;

    return $string;
}

# Return the most recent auto_increment ID value inserted
sub LastInsertID {
    my $self = shift;

    return undef if ( !$self->{DBH} );

    return $self->{DBH}->{mysql_insertid};
}

# Handle reporting a SQL query error
sub ReportSQLErr {
    my $self = shift;
    my $cmd  = shift;
    croak( "ERROR: $cmd resulted in " . $self->{DBH}->errstr );
}

sub LastErrorStr {
    my ($self) = @_;

    return undef unless $self->{DBH};
    return $self->{DBH}->errstr;
}

sub DESTROY {
    my $self = shift;

}

sub ClientIDToDBName {
    my ($clientID) = @_;
    my $dbName = $CLIENT_DB{$clientID}->{db_name};
    return $dbName;
}

sub DBNameToClientID {
    my ($dbName) = @_;

    foreach my $id ( keys %CLIENT_DB ) {
        if ( $CLIENT_DB{$id}{db_name} eq $dbName ) {
            return $id;
        }
    }

    return;
}

sub GetAllClientIDs {
    my @ids;
    foreach my $id ( sort { $a <=> $b } keys %CLIENT_DB ) {
        next unless $id > 0;
        push @ids, $id;
    }
    return @ids;
}

sub GetAllRPSClientIDs {
    my @ids;
    foreach my $id ( GetAllClientIDs() ) {
        next unless ( $id > 0 && _isRPSClient($id) );
        push @ids, $id;
    }
    return @ids;
}

sub GetAllBookPubClientIDs {
    my @ids;
    foreach my $id ( GetAllClientIDs() ) {
        next unless ( $id > 0 && _isBookPubClient($id) );
        push @ids, $id;
    }
    return @ids;
}

## need to read clients from remote databases for RDS support - jg 20190306
## replaces localhost lookups in GetLocalClientIDs
sub getEnvDB {
    my $dbEnv;
    if ( -e ENVDBFILE ) {
        my $fh = FileHandle->new( ENVDBFILE, 'r' );
        read $fh, $dbEnv, -s $fh;
        $fh->close;
        chomp($dbEnv) if defined $dbEnv;
    }
    $dbEnv;
}

#
# Query the local mysql database and return the client ids that have a
# database setup.
#
sub GetLocalClientIDs {
    my $envDB = shift || Common::RSDB::getEnvDB();

    my $username = $CLIENT_DB{0}->{'username'};
    my $password = $CLIENT_DB{0}->{'password'};

    my $dbsRaw;
    if ( defined $envDB ) {
        $dbsRaw = `MYSQL_PWD=$password mysql -u $username -h $envDB -e "show databases"`;
    } else {
        $dbsRaw = `MYSQL_PWD=$password mysql -u $username -h localhost -e "show databases"`;
    }

    # Doesn't seem to be a way to get a simple list - so we have to parse the
    # names out from all the extra display frosting this command returns.
    my @dbIDs;
    my @dbNames;

    my @lines = split( "\n", $dbsRaw );
    foreach my $db (@lines) {
        my $id = Common::RSDB::DBNameToClientID($db);
        if ($id) {
            push @dbIDs,   $id;
            push @dbNames, $db;
        }
    }

    return @dbIDs;

}

sub GetLocalRPSClientIDs {
    my @ids = GetLocalClientIDs();
    my @result;

    foreach my $id (@ids) {
        next unless _isRPSClient($id);
        push @result, $id;
    }

    return @result;
}

sub GetLocalBookPubClientIDs {
    my @ids = GetLocalClientIDs();
    my @result;

    foreach my $id (@ids) {
        next unless _isBookPubClient($id);
        push @result, $id;
    }

    return @result;
}

sub GetClientIDs {
    my $host = shift;
    my @ids;

    assert($host);

    foreach my $id ( GetAllClientIDs() ) {
        next unless ( $id > 0 && $CLIENT_DB{$id}->{'host_id'} eq $host );
        push @ids, $id;
    }

    return @ids;
}

sub GetRPSClientIDs {
    my $host = shift;
    my @ids;

    assert($host);

    foreach my $id ( GetAllClientIDs() ) {
        next unless ( $id > 0 && _isRPSClient($id) && $CLIENT_DB{$id}->{host_id} eq $host );
        push @ids, $id;
    }

    return @ids;
}

sub GetBookPubClientIDsByHost {
    my $host = shift;
    my @ids;

    assert($host);

    foreach my $id ( GetAllClientIDs() ) {
        next unless ( $id > 0 && _isBookPubClient($id) && $CLIENT_DB{$id}->{host_id} eq $host );
        push @ids, $id;
    }

    return @ids;
}

sub _isRPSClient {
    my $id       = shift;
    my $dbPrefix = DB_PREFIX_RPS;

    return ( $CLIENT_DB{$id}{host_id} =~ /^(rps|bp)/ && $CLIENT_DB{$id}{db_name} =~ m/^$dbPrefix/ ) ? 1 : 0;
}

sub _isBookPubClient {
    my $id       = shift;
    my $dbPrefix = DB_PREFIX_BOOKPUB;

    return $CLIENT_DB{$id}{db_name} =~ m/^$dbPrefix/ ? 1 : 0;
}

# We are subclassing DBI to override the 'fetch' method.
# Why?  So we can ensure that the 'utf-8' flag is properly
# set when we read UTF-8 strings out of the database.
#

package RS_DBI;
use strict;
use DBI;
use vars qw(@ISA);
@ISA = qw(DBI);

package RS_DBI::db;
use vars qw(@ISA);
@ISA = qw(DBI::db);

package RS_DBI::st;
use vars qw(@ISA);
@ISA = qw(DBI::st);

use lib '/app/tools/common/lib';
use Common::UTF8;
use Data::Dumper;
use Encode;

sub ___DEPRECATED___fetch {
    my ( $sth, @args ) = @_;
    my $row = $sth->SUPER::fetch(@args) or return;

    for ( my $i = 0 ; $i < scalar @$row ; $i++ ) {
        if ( defined $row->[$i] ) {
            $row->[$i] = Common::UTF8::Encode( $row->[$i] );

            # This assumes that everything that comes out of the DB is utf8.
            # This avoids out complex data validation that occurs with the Encode
            # method called above.
            #$row->[$i] = Common::UTF8::SetUTF8Flag($row->[$i]);
        }
    }
    return $row;
}

###
1;    # Play nicely.
###

__END__

#1=>{'server'=>'rpsdb22','db_name'=>'C_EPITAPH','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#2=>{'server'=>'rpsdb22','db_name'=>'C_ALLIGATOR','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#5=>{'server'=>'localhost','db_name'=>'C_SONY','username'=>'sony','password'=>'rootkit','host_id'=>''},
#6=>{'server'=>'rpsdb22','db_name'=>'C_LUMBERJACK_MORDAM','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#7=>{'server'=>'rpsdb22','db_name'=>'C_KOCH_RECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#8=>{'server'=>'rpsdb22','db_name'=>'C_KOCH_DISTRIBUTION','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#12=>{'server'=>'rpsdb22','db_name'=>'C_GNP_CRESCENDO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#17=>{'server'=>'rpsdb22','db_name'=>'C_SUNNYSIDE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#18=>{'server'=>'rpsdb23','db_name'=>'C_BEGGARS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb03'},
#19=>{'server'=>'rpsdb22','db_name'=>'C_MATADOR','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#21=>{'server'=>'localhost','db_name'=>'C_WARNER','username'=>'root','password'=>'','host_id'=>'raptor02'},
#24=>{'server'=>'rpsdb22','db_name'=>'C_BIG_DADDY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#25=>{'server'=>'rpsdb22','db_name'=>'C_PIAS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#26=>{'server'=>'rpsdb21','db_name'=>'C_HARMONIA_MUNDI','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#27=>{'server'=>'rpsdb22','db_name'=>'C_RAZOR_AND_TIE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#28=>{'server'=>'rpsdb22','db_name'=>'C_TOMMYBOY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#29=>{'server'=>'rpsdb22','db_name'=>'C_NACIONAL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#30=>{'server'=>'rpsdb22','db_name'=>'C_SHERIDANSQUARE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#31=>{'server'=>'rpsdb21','db_name'=>'C_SANCTUARY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#32=>{'server'=>'rpsdb22','db_name'=>'C_ACONY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#33=>{'server'=>'rpsdb22','db_name'=>'C_FOXMUSIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#34=>{'server'=>'rpsdb22','db_name'=>'C_WORLDSFAIR','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#35=>{'server'=>'rpsdb22','db_name'=>'C_TOUCHANDGO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#36=>{'server'=>'rpsdb22','db_name'=>'C_NITRO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#37=>{'server'=>'rpsdb22','db_name'=>'C_V2MUSIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#39=>{'server'=>'rpsdb22','db_name'=>'C_CONCORD','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#40=>{'server'=>'rpsdb21','db_name'=>'C_GO_DIGITAL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#41=>{'server'=>'rpsdb21','db_name'=>'C_AUDIOBEE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#42=>{'server'=>'rpsdb21','db_name'=>'C_IDEA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#43=>{'server'=>'rpsdb21','db_name'=>'C_ICERECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#44=>{'server'=>'localhost','db_name'=>'D_MUZAK','username'=>'root','password'=>'','host_id'=>'raptor01'},
#47=>{'server'=>'rpsdb21','db_name'=>'C_MADACY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#48=>{'server'=>'rpsdb21','db_name'=>'C_LOOKOUT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#49=>{'server'=>'rpsdb22','db_name'=>'C_HYBRID','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#50=>{'server'=>'rpsdb22','db_name'=>'C_LACUPULA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#52=>{'server'=>'rpsdb21','db_name'=>'C_NINJATUNE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#54=>{'server'=>'rpsdb21','db_name'=>'C_DEFINITIVE_JUX','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#55=>{'server'=>'rpsdb21','db_name'=>'C_DELICIOUS_VINYL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#56=>{'server'=>'rpsdb22','db_name'=>'C_MERGERECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#57=>{'server'=>'rpsdb21','db_name'=>'C_CRCJ','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#59=>{'server'=>'rpsdb21','db_name'=>'C_ONWARD_AND_UPWARD','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#61=>{'server'=>'rpsdb21','db_name'=>'C_BARNONE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#62=>{'server'=>'rpsdb21','db_name'=>'C_SRGIUK','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#63=>{'server'=>'rpsdb21','db_name'=>'C_SUSTAIN','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#65=>{'server'=>'rpsdb21','db_name'=>'C_PUTUMAYO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#67=>{'server'=>'rpsdb21','db_name'=>'C_DMM','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#70=>{'server'=>'rpsdb22','db_name'=>'C_OMRECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#71=>{'server'=>'rpsdb22','db_name'=>'C_V2RECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#72=>{'server'=>'rpsdb23','db_name'=>'C_SEED_DISTRIBUTION','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#73=>{'server'=>'rpsdb21','db_name'=>'C_ALPHAPUP','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#74=>{'server'=>'rpsdb21','db_name'=>'C_BLAZETHEWORLD','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#76=>{'server'=>'rpsdb22','db_name'=>'C_FRONTIER','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#77=>{'server'=>'rpsdb22','db_name'=>'C_MASTERWERKS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#79=>{'server'=>'rpsdb22','db_name'=>'C_AIRESOL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#80=>{'server'=>'rpsdb22','db_name'=>'C_AKOYA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#81=>{'server'=>'rpsdb22','db_name'=>'C_ANTIBALAS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#82=>{'server'=>'rpsdb22','db_name'=>'C_ANTIBEMUSIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#83=>{'server'=>'rpsdb22','db_name'=>'C_BLACKROSE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#84=>{'server'=>'rpsdb22','db_name'=>'C_BOSSSOUNDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#86=>{'server'=>'rpsdb22','db_name'=>'C_CYCLONE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#87=>{'server'=>'rpsdb22','db_name'=>'C_DESIHITS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#88=>{'server'=>'rpsdb22','db_name'=>'C_DOWNLOADTALES','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#89=>{'server'=>'rpsdb22','db_name'=>'C_ERIKSIMMS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#90=>{'server'=>'rpsdb22','db_name'=>'C_HOMESTYLECOOKING','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#91=>{'server'=>'rpsdb22','db_name'=>'C_JEREMYTOBACK','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#92=>{'server'=>'rpsdb22','db_name'=>'C_JETSOVERHEAD','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#93=>{'server'=>'rpsdb22','db_name'=>'C_MANIFEST','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#94=>{'server'=>'rpsdb22','db_name'=>'C_MARANATHA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#95=>{'server'=>'rpsdb22','db_name'=>'C_MISSMABRY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#96=>{'server'=>'rpsdb22','db_name'=>'C_MODERNSKY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#97=>{'server'=>'rpsdb22','db_name'=>'C_MUSICMIND','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#98=>{'server'=>'rpsdb22','db_name'=>'C_PHELPS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#99=>{'server'=>'rpsdb22','db_name'=>'C_RDKKOMBO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#100=>{'server'=>'rpsdb22','db_name'=>'C_RICHFERGUSON','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#101=>{'server'=>'rpsdb22','db_name'=>'C_RUNRIOT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#102=>{'server'=>'rpsdb22','db_name'=>'C_SOLSELECTAS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#103=>{'server'=>'rpsdb22','db_name'=>'C_SOUNDINK','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#104=>{'server'=>'rpsdb22','db_name'=>'C_STONEQUARRY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#105=>{'server'=>'rpsdb22','db_name'=>'C_TOMROSSI','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#106=>{'server'=>'rpsdb22','db_name'=>'C_THEBATTERIE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#107=>{'server'=>'rpsdb22','db_name'=>'C_TRUTH_SOUL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#108=>{'server'=>'rpsdb22','db_name'=>'C_TYPETWO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#109=>{'server'=>'rpsdb22','db_name'=>'C_WOLFRAYET','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#110=>{'server'=>'rpsdb22','db_name'=>'C_WATUNES','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#111=>{'server'=>'rpsdb22','db_name'=>'C_BACCIBROS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#113=>{'server'=>'rpsdb22','db_name'=>'C_CHPMEDIA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#114=>{'server'=>'rpsdb22','db_name'=>'C_THEMILITIAGROUP','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#115=>{'server'=>'rpsdb22','db_name'=>'C_HOPEFULTRAGEDY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#116=>{'server'=>'rpsdb22','db_name'=>'C_MB_ENTERTAINMENT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#117=>{'server'=>'rpsdb22','db_name'=>'C_REAMP','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#119=>{'server'=>'rpsdb22','db_name'=>'C_JAZZHEADS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#120=>{'server'=>'rpsdb22','db_name'=>'C_NEWRENAISSANCE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#121=>{'server'=>'rpsdb22','db_name'=>'C_RAINMAN','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#122=>{'server'=>'rpsdb22','db_name'=>'C_CENTAUR','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#124=>{'server'=>'rpsdb22','db_name'=>'C_BAGPAK','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#125=>{'server'=>'rpsdb22','db_name'=>'C_RAGBABY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#126=>{'server'=>'rpsdb22','db_name'=>'C_REVOLVER','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#128=>{'server'=>'rpsdb22','db_name'=>'C_VINERIPE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#129=>{'server'=>'rpsdb22','db_name'=>'C_TESLA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#130=>{'server'=>'rpsdb22','db_name'=>'C_ELEVENSEVEN_INTL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#131=>{'server'=>'rpsdb22','db_name'=>'C_ALIVE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#132=>{'server'=>'rpsdb22','db_name'=>'C_BOMP','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#133=>{'server'=>'rpsdb22','db_name'=>'C_OUTLOOK','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#134=>{'server'=>'rpsdb22','db_name'=>'C_OSEAO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#135=>{'server'=>'rpsdb22','db_name'=>'C_DRE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#136=>{'server'=>'rpsdb22','db_name'=>'C_RUSK','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#137=>{'server'=>'rpsdb22','db_name'=>'C_SONGCAST','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#139=>{'server'=>'rpsdb22','db_name'=>'C_MUSSO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#140=>{'server'=>'rpsdb22','db_name'=>'C_FANCORPS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#142=>{'server'=>'rpsdb22','db_name'=>'C_CRUSADE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#143=>{'server'=>'rpsdb22','db_name'=>'C_GONER','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#145=>{'server'=>'rpsdb22','db_name'=>'C_KUFALA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#147=>{'server'=>'rpsdb22','db_name'=>'C_CRYPTOGRAMOPHONE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#148=>{'server'=>'rpsdb22','db_name'=>'C_TESHMEDIA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#151=>{'server'=>'rpsdb22','db_name'=>'C_QUALITON','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#152=>{'server'=>'rpsdb22','db_name'=>'C_BMCDONALD','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#153=>{'server'=>'rpsdb22','db_name'=>'C_REGOIRISH','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#154=>{'server'=>'rpsdb22','db_name'=>'C_SAWDOCTORS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#155=>{'server'=>'rpsdb25','db_name'=>'C_CHERRYRED','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb03'},
#156=>{'server'=>'rpsdb22','db_name'=>'C_TOMPKINS_SQ','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#157=>{'server'=>'rpsdb22','db_name'=>'C_COUNTDOWN','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#158=>{'server'=>'rpsdb22','db_name'=>'C_DITTO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#159=>{'server'=>'rpsdb22','db_name'=>'C_SPG_ENTERTAINMENT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#160=>{'server'=>'rpsdb22','db_name'=>'C_BRAINTOY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#161=>{'server'=>'rpsdb22','db_name'=>'C_RAPALOT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#163=>{'server'=>'rpsdb22','db_name'=>'C_ESPDISK','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#165=>{'server'=>'rpsdb22','db_name'=>'C_DESTRA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#166=>{'server'=>'rpsdb22','db_name'=>'C_SOUNDENSTUDIOS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#167=>{'server'=>'rpsdb22','db_name'=>'C_HUDSON','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#168=>{'server'=>'rpsdb22','db_name'=>'C_LATINMUSIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#169=>{'server'=>'rpsdb22','db_name'=>'C_KILLROCKSTARS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#170=>{'server'=>'rpsdb22','db_name'=>'C_PINECASTLE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#171=>{'server'=>'rpsdb22','db_name'=>'C_OWNEDANDOPERATED','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#172=>{'server'=>'rpsdb22','db_name'=>'C_SOUNDISSUE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#173=>{'server'=>'rpsdb22','db_name'=>'C_SUPER_D','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#174=>{'server'=>'rpsdb22','db_name'=>'C_REBELMIX','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#175=>{'server'=>'rpsdb22','db_name'=>'C_INFINITY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#176=>{'server'=>'rpsdb22','db_name'=>'C_JANMAR','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#177=>{'server'=>'rpsdb22','db_name'=>'C_WILDPALMS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#179=>{'server'=>'rpsdb22','db_name'=>'C_NEDE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#180=>{'server'=>'rpsdb22','db_name'=>'C_GRAPEWIRE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#184=>{'server'=>'rpsdb22','db_name'=>'C_REINER','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#185=>{'server'=>'rpsdb22','db_name'=>'C_604RECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#186=>{'server'=>'rpsdb22','db_name'=>'C_ALMARECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#187=>{'server'=>'rpsdb22','db_name'=>'C_ANTHEMGROUP','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#188=>{'server'=>'rpsdb22','db_name'=>'C_BOREALISRECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#189=>{'server'=>'rpsdb22','db_name'=>'C_DISTORTENT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#190=>{'server'=>'rpsdb22','db_name'=>'C_JUSTINTIME','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#191=>{'server'=>'rpsdb22','db_name'=>'C_LASTGANG','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#192=>{'server'=>'rpsdb22','db_name'=>'C_MARQUIS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#193=>{'server'=>'rpsdb22','db_name'=>'C_MINTRECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#194=>{'server'=>'rpsdb22','db_name'=>'C_ORANGERECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#195=>{'server'=>'rpsdb22','db_name'=>'C_OUTSIDEMUSIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#196=>{'server'=>'rpsdb22','db_name'=>'C_ROYALTYRECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#197=>{'server'=>'rpsdb22','db_name'=>'C_SONICUNYON','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#198=>{'server'=>'rpsdb22','db_name'=>'C_TRUENORTH','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#199=>{'server'=>'rpsdb22','db_name'=>'C_KOCH_CA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#200=>{'server'=>'rpsdb22','db_name'=>'C_360DEGREES','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#204=>{'server'=>'rpsdb22','db_name'=>'C_ALTERNATIVETENTACLES','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#206=>{'server'=>'rpsdb22','db_name'=>'C_CARROTTOP_RECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#208=>{'server'=>'rpsdb22','db_name'=>'C_LOST_GOLD','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#210=>{'server'=>'rpsdb22','db_name'=>'C_MOUNTAIN_APPLE_DISTRIBUTION','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#211=>{'server'=>'rpsdb22','db_name'=>'C_TARAMUSIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#212=>{'server'=>'rpsdb22','db_name'=>'C_PYPER','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#213=>{'server'=>'rpsdb22','db_name'=>'C_BOOMTOWN','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#214=>{'server'=>'rpsdb22','db_name'=>'C_BPA','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#215=>{'server'=>'rpsdb22','db_name'=>'C_COOLPOOL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#217=>{'server'=>'rpsdb22','db_name'=>'C_BROADSTREET','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#218=>{'server'=>'rpsdb21','db_name'=>'C_STYLUS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#219=>{'server'=>'rpsdb21','db_name'=>'C_SKINT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#221=>{'server'=>'rpsdb21','db_name'=>'C_DOME','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#222=>{'server'=>'rpsdb21','db_name'=>'C_MBOP','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#225=>{'server'=>'rpsdb21','db_name'=>'C_NU_URBAN','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#227=>{'server'=>'rpsdb21','db_name'=>'C_MULTIVERSE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#228=>{'server'=>'rpsdb21','db_name'=>'C_ZAUDIO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#229=>{'server'=>'rpsdb21','db_name'=>'C_MEERKAT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#231=>{'server'=>'rpsdb21','db_name'=>'C_ELECTROMODE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#233=>{'server'=>'rpsdb21','db_name'=>'C_HARDTIMEZ','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#234=>{'server'=>'rpsdb21','db_name'=>'C_MONDO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#235=>{'server'=>'rpsdb21','db_name'=>'C_4REAL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#236=>{'server'=>'rpsdb21','db_name'=>'C_MUSICRESPONSE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#237=>{'server'=>'rpsdb21','db_name'=>'C_ANGELAIR','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#238=>{'server'=>'rpsdb21','db_name'=>'C_MARKETSQUARE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#241=>{'server'=>'rpsdb21','db_name'=>'C_LABELWORX','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#243=>{'server'=>'rpsdb22','db_name'=>'C_TITANIUMDIGITALS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#244=>{'server'=>'rpsdb22','db_name'=>'C_RENAIZZANCE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#245=>{'server'=>'rpsdb22','db_name'=>'C_TAANG','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#246=>{'server'=>'rpsdb22','db_name'=>'C_REPUBLIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#247=>{'server'=>'rpsdb22','db_name'=>'C_RAF','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#248=>{'server'=>'rpsdb22','db_name'=>'C_AAOMUSIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#249=>{'server'=>'rpsdb22','db_name'=>'C_GROOVESMITH','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#250=>{'server'=>'rpsdb22','db_name'=>'C_GIGATONE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#251=>{'server'=>'rpsdb22','db_name'=>'C_LOT49','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#253=>{'server'=>'rpsdb22','db_name'=>'C_LENCHMOB','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#254=>{'server'=>'rpsdb22','db_name'=>'C_JEEPERS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#255=>{'server'=>'rpsdb22','db_name'=>'C_ONECELL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#256=>{'server'=>'rpsdb22','db_name'=>'C_BLACKLEDGE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#259=>{'server'=>'rpsdb22','db_name'=>'C_CMTEST','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#260=>{'server'=>'rpsdb22','db_name'=>'C_PETROL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#261=>{'server'=>'rpsdb22','db_name'=>'C_HARDCOREBEATS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#264=>{'server'=>'rpsdb22','db_name'=>'C_TWINSISTERS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#265=>{'server'=>'rpsdb22','db_name'=>'C_CACAO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#267=>{'server'=>'rpsdb21','db_name'=>'C_MUSICSALES','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#269=>{'server'=>'rpsdb21','db_name'=>'C_NURAVE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#270=>{'server'=>'rpsdb21','db_name'=>'C_HOT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#272=>{'server'=>'rpsdb21','db_name'=>'C_METRIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#273=>{'server'=>'rpsdb21','db_name'=>'C_PINNACLE_PRODUCTIONS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#274=>{'server'=>'rpsdb21','db_name'=>'C_REFORM','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#275=>{'server'=>'rpsdb21','db_name'=>'C_FUNMACHINE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#276=>{'server'=>'rpsdb21','db_name'=>'C_WMGTRIAL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#277=>{'server'=>'rpsdb21','db_name'=>'C_YEPROC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#278=>{'server'=>'rpsdb21','db_name'=>'C_DORADO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#279=>{'server'=>'rpsdb21','db_name'=>'C_DFSB','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#280=>{'server'=>'rpsdb21','db_name'=>'C_MUSICALLYSPEAKING','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#281=>{'server'=>'rpsdb21','db_name'=>'C_SOULSPAZM','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#282=>{'server'=>'rpsdb21','db_name'=>'C_MUSICKITCHEN','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#285=>{'server'=>'rpsdb21','db_name'=>'C_MOS_US','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#286=>{'server'=>'rpsdb21','db_name'=>'C_DANCETOTHERADIO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#289=>{'server'=>'rpsdb21','db_name'=>'C_MALACO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#291=>{'server'=>'rpsdb21','db_name'=>'C_NYCRECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#293=>{'server'=>'rpsdb21','db_name'=>'C_QUANGO','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#295=>{'server'=>'rpsdb21','db_name'=>'C_GDE','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#296=>{'server'=>'rpsdb21','db_name'=>'C_DISTORT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#297=>{'server'=>'rpsdb24','db_name'=>'BP_PEARSON','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#298=>{'server'=>'rpsdb21','db_name'=>'C_REVELMUSIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#300=>{'server'=>'rpsdb21','db_name'=>'C_DITTOMUSIC','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#301=>{'server'=>'rpsdb21','db_name'=>'C_PROPERAMERICAN','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#303=>{'server'=>'rpsdb21','db_name'=>'C_HOUSEPLANET','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#305=>{'server'=>'rpsdb24','db_name'=>'BP_SIMONANDSCHUSTER','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#307=>{'server'=>'rpsdb21','db_name'=>'C_AWAL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#308=>{'server'=>'rpsdb24','db_name'=>'BP_HACHETTE','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#309=>{'server'=>'rpsdb21','db_name'=>'C_STRAWBERRYBIRD','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#312=>{'server'=>'rpsdb24','db_name'=>'BP_FABERANDFABER','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#313=>{'server'=>'rpsdb24','db_name'=>'BP_FABERFACTORY','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#316=>{'server'=>'rpsdb24','db_name'=>'BP_RANDOMHOUSE','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#321=>{'server'=>'rpsdb24','db_name'=>'BP_PENGUIN','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#322=>{'server'=>'rpsdb24','db_name'=>'BP_WORKMAN','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#323=>{'server'=>'rpsdb24','db_name'=>'BP_RANDOMHOUSEUK','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#325=>{'server'=>'rpsdb21','db_name'=>'C_ABOVEBOARD','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#326=>{'server'=>'rpsdb24','db_name'=>'BP_OPENROAD','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#327=>{'server'=>'rpsdb24','db_name'=>'BP_WWNORTON','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#329=>{'server'=>'rpsdb24','db_name'=>'BP_OUP','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#330=>{'server'=>'rpsdb24','db_name'=>'BP_DISNEYBOOKS','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#331=>{'server'=>'rpsdb23','db_name'=>'C_DSMDEMO','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#336=>{'server'=>'rpsdb22','db_name'=>'C_HORNBLOW','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#338=>{'server'=>'indy01','db_name'=>'C_EMI','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#340=>{'server'=>'rpsdb22','db_name'=>'C_LYNDHURST','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#341=>{'server'=>'rpsdb21','db_name'=>'C_HMDIGITAL','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#342=>{'server'=>'rpsdb21','db_name'=>'C_ST_HOLDINGS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb01'},
#343=>{'server'=>'rpsdb25','db_name'=>'C_CHERRYRED_ROYALTY','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb03'},
#344=>{'server'=>'rpsdb23','db_name'=>'C_MEMPHIS_INDUSTRIES','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb03'},
#347=>{'server'=>'rpsdb24','db_name'=>'BP_HYPERION','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#352=>{'server'=>'rpsdb22','db_name'=>'C_CULT_RECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#361=>{'server'=>'rpsdb24','db_name'=>'BP_BLOOMSBURYUS','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#362=>{'server'=>'rpsdb22','db_name'=>'C_PANDA_RECORDS','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#367=>{'server'=>'rpsdb22','db_name'=>'C_SWITCH_MUSIC_GROUP','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#380=>{'server'=>'rpsdb22','db_name'=>'C_PODWALL_ENTERTAINMENT','username'=>'dbuser','password'=>'redStripe','host_id'=>'rpsweb02'},
#2000000001=>{'server'=>'rpsdb24','db_name'=>'BP_HBG_BETA','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#2000000002=>{'server'=>'rpsdb23','db_name'=>'C_SONY_BETA','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
#2000000003=>{'server'=>'rpsdb23','db_name'=>'P_PORTAL_DEMO','username'=>'dbuser','password'=>'redStripe','host_id'=>'bpweb01'},
