You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by da...@apache.org on 2017/01/27 16:53:32 UTC
[11/36] incubator-trafficcontrol git commit: Formatting changes
Formatting changes
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/faa86192
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/faa86192
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/faa86192
Branch: refs/heads/master
Commit: faa86192b1bcf611e33f65ced805e0d34d5e62c0
Parents: ce47eb8
Author: peryder <pe...@cisco.com>
Authored: Mon Nov 14 15:47:00 2016 -0500
Committer: Dan Kirkwood <da...@gmail.com>
Committed: Fri Jan 27 09:52:53 2017 -0700
----------------------------------------------------------------------
traffic_ops/install/bin/postinstall-new | 609 ++++++++++++++-------------
1 file changed, 306 insertions(+), 303 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/faa86192/traffic_ops/install/bin/postinstall-new
----------------------------------------------------------------------
diff --git a/traffic_ops/install/bin/postinstall-new b/traffic_ops/install/bin/postinstall-new
index 6d3ca0f..d1d497b 100755
--- a/traffic_ops/install/bin/postinstall-new
+++ b/traffic_ops/install/bin/postinstall-new
@@ -19,54 +19,54 @@ use Scalar::Util qw(looks_like_number);
use Getopt::Long;
sub errorOut {
- die @_;
+ die @_;
}
sub getDbDriver {
- return "mymysql";
+ return "mymysql";
}
sub getInstallPath {
- my $relPath = shift;
- return join( '/', "/tmp/traffic_ops", $relPath );
+ my $relPath = shift;
+ return join( '/', "/tmp/traffic_ops", $relPath );
}
# question: The question given in the config file
# config_answer: The answer given in the config file - if no config file given will be defaultInput
# fileName: The name of the output config file given by the input config file
#
-# Determines an answer to the questions asked. If an input question and answer pair is given, will return the
+# Determines an answer to the questions asked. If an input question and answer pair is given, will return the
# answer. If a question is given but no answer, it will prompt the user if interactive mode is enabled, but if
# interactive mode is not enabled it will return the default answer to the question. If there is no default answer
# to the question and interactive mode is not enabled it will return an error and quit.
sub getField {
- my $question = shift;
- my $config_answer = shift;
- my $fileName = shift;
-
- # if answer provided in config file use it
- if ($config_answer) {
- return $config_answer;
- }
- else {
- # if no config value and in interactive mode prompt user
- if ($::interactive) {
- return promptUser($question);
- }
-
- # if no answer given in input file attempt to use default answer
- foreach my $var (@{ $::defaultInputs->{$fileName} }) {
- if ( defined $var->{$question} ) {
- return $var->{$question};
- }
- }
-
- #No way of getting answer
- errorOut("No config answer given for question \'$question\'\n");
- }
-
- errorOut("error: end of function");
+ my $question = shift;
+ my $config_answer = shift;
+ my $fileName = shift;
+
+ # if answer provided in config file use it
+ if ($config_answer) {
+ return $config_answer;
+ }
+ else {
+ # if no config value and in interactive mode prompt user
+ if ($::interactive) {
+ return promptUser($question);
+ }
+
+ # if no answer given in input file attempt to use default answer
+ foreach my $var ( @{ $::defaultInputs->{$fileName} } ) {
+ if ( defined $var->{$question} ) {
+ return $var->{$question};
+ }
+ }
+
+ #No way of getting answer
+ errorOut("No config answer given for question \'$question\'\n");
+ }
+
+ errorOut("error: end of function");
}
# userInput: The entire input config file which is either user input or the defaults
@@ -76,29 +76,29 @@ sub getField {
# and returns the hash of answers
sub getConfig {
- my $userInput = shift;
- my $fileName = shift;
-
- my %config;
-
- if (!defined $userInput->{$fileName}) {
- print "Error: No $fileName found in config\n";
- }
-
- if ($::debug) {
- print "===========$fileName===========\n";
- }
-
- foreach my $var (@{ $userInput->{$fileName} }) {
- my $question = ( (keys $var)[0] eq "config_var" ? (keys $var)[1] : (keys $var)[0] );
- my $answer = $config{$var->{"config_var"}} = getField($question, $var->{$question}, $fileName);
-
- $config{$var->{"config_var"}} = $answer;
- if ($::debug) {
- print "$question: $answer\n";
- }
- }
- return %config;
+ my $userInput = shift;
+ my $fileName = shift;
+
+ my %config;
+
+ if ( !defined $userInput->{$fileName} ) {
+ print "Error: No $fileName found in config\n";
+ }
+
+ if ($::debug) {
+ print "===========$fileName===========\n";
+ }
+
+ foreach my $var ( @{ $userInput->{$fileName} } ) {
+ my $question = ( ( keys $var )[0] eq "config_var" ? ( keys $var )[1] : ( keys $var )[0] );
+ my $answer = $config{ $var->{"config_var"} } = getField( $question, $var->{$question}, $fileName );
+
+ $config{ $var->{"config_var"} } = $answer;
+ if ($::debug) {
+ print "$question: $answer\n";
+ }
+ }
+ return %config;
}
# userInput: The entire input config file which is either user input or the defaults
@@ -109,29 +109,29 @@ sub getConfig {
# Generates a config file for the database based on the questions and answers in the input config file
sub generateDbConf {
- my $userInput = shift;
- my $dbFileName = shift;
- my $toDBFileName = shift;
- my $dbAccessFileName = shift;
-
- my %dbconf = getConfig($userInput, $dbFileName);
-
- make_path( dirname($dbFileName), { mode => 0755 } );
- writeJson( $dbFileName, \%dbconf );
-
- # broken out into separate file/config area
- my %todbconf = getConfig($userInput, $toDBFileName);
-
- # No YAML library installed, but this is a simple file..
- open( my $fh, '>', $dbAccessFileName ) or errorOut("Can't write to $dbAccessFileName $!");
- print $fh "version: 1.0\n";
- print $fh "name: dbconf.yml\n\n";
- print $fh "production:\n";
- print $fh " driver: ", getDbDriver() . "\n";
- print $fh " open: tcp:$dbconf{hostname}:$dbconf{port}*$dbconf{dbname}/$dbconf{root_user}/$dbconf{root_passwd}\n";
- close $fh;
-
- return \%todbconf;
+ my $userInput = shift;
+ my $dbFileName = shift;
+ my $toDBFileName = shift;
+ my $dbAccessFileName = shift;
+
+ my %dbconf = getConfig( $userInput, $dbFileName );
+
+ make_path( dirname($dbFileName), { mode => 0755 } );
+ writeJson( $dbFileName, \%dbconf );
+
+ # broken out into separate file/config area
+ my %todbconf = getConfig( $userInput, $toDBFileName );
+
+ # No YAML library installed, but this is a simple file..
+ open( my $fh, '>', $dbAccessFileName ) or errorOut("Can't write to $dbAccessFileName $!");
+ print $fh "version: 1.0\n";
+ print $fh "name: dbconf.yml\n\n";
+ print $fh "production:\n";
+ print $fh " driver: ", getDbDriver() . "\n";
+ print $fh " open: tcp:$dbconf{hostname}:$dbconf{port}*$dbconf{dbname}/$dbconf{root_user}/$dbconf{root_passwd}\n";
+ close $fh;
+
+ return \%todbconf;
}
# userInput: The entire input config file which is either user input or the defaults
@@ -140,29 +140,29 @@ sub generateDbConf {
# Generates a config file for the CDN
sub generateCdnConf {
- my $userInput = shift;
- my $fileName = shift;
-
- # First, read existing one -- already loaded with a bunch of stuff
- my $cdnConf = Safe->new->rdo($fileName) or errorOut("Error loading $fileName: $@");
-
- my %cdnconf = getConfig($userInput, $fileName);
-
- if (! looks_like_number($cdnconf{keepSecrets}) ) {
- errorOut("Error: Number of secrets to keep must be a number\n");
- }
-
- if ( lc $cdnconf{genSecret} =~ /^y(?:es)?/ ) {
- my @secrets = @{ $cdnConf->{secrets} };
- my $newSecret = randomWord();
- unshift @secrets, randomWord();
- if ( $cdnconf{keepSecrets} > 0 && $#secrets > $cdnconf{keepSecrets} - 1 ) {
-
- # Shorten the array to requested length
- $#secrets = $cdnconf{keepSecrets} - 1;
- }
- }
- writePerl( $fileName, $cdnConf );
+ my $userInput = shift;
+ my $fileName = shift;
+
+ # First, read existing one -- already loaded with a bunch of stuff
+ my $cdnConf = Safe->new->rdo($fileName) or errorOut("Error loading $fileName: $@");
+
+ my %cdnconf = getConfig( $userInput, $fileName );
+
+ if ( !looks_like_number( $cdnconf{keepSecrets} ) ) {
+ errorOut("Error: Number of secrets to keep must be a number\n");
+ }
+
+ if ( lc $cdnconf{genSecret} =~ /^y(?:es)?/ ) {
+ my @secrets = @{ $cdnConf->{secrets} };
+ my $newSecret = randomWord();
+ unshift @secrets, randomWord();
+ if ( $cdnconf{keepSecrets} > 0 && $#secrets > $cdnconf{keepSecrets} - 1 ) {
+
+ # Shorten the array to requested length
+ $#secrets = $cdnconf{keepSecrets} - 1;
+ }
+ }
+ writePerl( $fileName, $cdnConf );
}
# userInput: The entire input config file which is either user input or the defaults
@@ -171,54 +171,54 @@ sub generateCdnConf {
# Generates an LDAP config file
sub generateLdapConf {
- my $userInput = shift;
- my $fileName = shift;
-
- my $useLdap = $userInput->{$fileName}[0]->{"Do you want to set up LDAP?"};
-
- if ($useLdap eq "no" || $useLdap eq "n" ) {
- if ($::debug) {
- print "Not setting up ldap\n";
- }
- return;
- }
-
- my %ldapConf = getConfig($userInput, $fileName);
-
- if ( $::debug && $ldapConf{setupLdap} eq "no" ) {
- print "Not setting up ldap\n";
- return;
- }
-
- make_path( dirname($fileName), { mode => 0755 } );
- writeJson( $fileName, \%ldapConf );
+ my $userInput = shift;
+ my $fileName = shift;
+
+ my $useLdap = $userInput->{$fileName}[0]->{"Do you want to set up LDAP?"};
+
+ if ( $useLdap eq "no" || $useLdap eq "n" ) {
+ if ($::debug) {
+ print "Not setting up ldap\n";
+ }
+ return;
+ }
+
+ my %ldapConf = getConfig( $userInput, $fileName );
+
+ if ( $::debug && $ldapConf{setupLdap} eq "no" ) {
+ print "Not setting up ldap\n";
+ return;
+ }
+
+ make_path( dirname($fileName), { mode => 0755 } );
+ writeJson( $fileName, \%ldapConf );
}
sub generatePostInstallConf {
- my $userInput = shift;
- my $fileName = shift;
+ my $userInput = shift;
+ my $fileName = shift;
- my $userIn = $userInput->{$fileName};
+ my $userIn = $userInput->{$fileName};
}
sub generateUsersConf {
- my $userInput = shift;
- my $fileName = shift;
-
- my %user = ();
- my %config = getConfig($userInput, $fileName);
+ my $userInput = shift;
+ my $fileName = shift;
+
+ my %user = ();
+ my %config = getConfig( $userInput, $fileName );
- $user{username} = $config{tmAdminUser};
- $user{password} = sha1_hex($config{tmAdminPw});
+ $user{username} = $config{tmAdminUser};
+ $user{password} = sha1_hex( $config{tmAdminPw} );
- writeJson( $fileName, \%user );
+ writeJson( $fileName, \%user );
}
sub generateProfilesDir {
- my $userInput = shift;
- my $fileName = shift;
+ my $userInput = shift;
+ my $fileName = shift;
- my $userIn = $userInput->{$fileName};
+ my $userIn = $userInput->{$fileName};
}
# userInput: The entire input config file which is either user input or the defaults
@@ -230,126 +230,126 @@ sub generateProfilesDir {
# file will not be checked
sub sanityCheckConfig {
- my $userInput = shift;
- my $diffs = 0;
-
- foreach my $file ( (keys $::defaultInputs) ) {
- if (!defined $userInput->{$file}) {
- print "Warning: File \'$file\' found in defaults but not config file\n";
- next;
- }
-
- foreach my $defaultValue (@ { $::defaultInputs->{$file} }) {
-
- my $found = 0;
- foreach my $configValue (@ { $userInput->{$file} }) {
- if ($defaultValue->{"config_var"} eq $configValue->{"config_var"} ) {
- $found = 1;
- }
- }
-
- if (!$found) {
- print "Warning: Value " . Dumper($defaultValue) . "found in defaults but not in \'$file\'\n";
- $diffs++;
- }
- }
- }
-
- if ($::debug && $diffs == 0) {
- print "File sanity check complete - found $diffs differences\n";
- }
-
- if ($diffs > 0) {
- print "File sanity check complete - found $diffs difference(s)\n";
- }
+ my $userInput = shift;
+ my $diffs = 0;
+
+ foreach my $file ( ( keys $::defaultInputs ) ) {
+ if ( !defined $userInput->{$file} ) {
+ print "Warning: File \'$file\' found in defaults but not config file\n";
+ next;
+ }
+
+ foreach my $defaultValue ( @{ $::defaultInputs->{$file} } ) {
+
+ my $found = 0;
+ foreach my $configValue ( @{ $userInput->{$file} } ) {
+ if ( $defaultValue->{"config_var"} eq $configValue->{"config_var"} ) {
+ $found = 1;
+ }
+ }
+
+ if ( !$found ) {
+ print "Warning: Value " . Dumper($defaultValue) . "found in defaults but not in \'$file\'\n";
+ $diffs++;
+ }
+ }
+ }
+
+ if ( $::debug && $diffs == 0 ) {
+ print "File sanity check complete - found $diffs differences\n";
+ }
+
+ if ( $diffs > 0 ) {
+ print "File sanity check complete - found $diffs difference(s)\n";
+ }
}
-
+
# A function which returns the default inputs data structure. These questions and answers will be used if there is no
# user input config file or if there are questions in the input config file which do not have answers
-sub getDefaults{
- return {
- "testdb.conf" => [
- {
- "Database type" => "mysql",
- "config_var" => "type"
- },
- {
- "Database name" => "traffic_ops",
- "config_var" => "dbname"
- },
- {
- "Database server hostname IP or FQDN" => "localhost",
- "config_var" => "hostname"
- },
- {
- "Database port number" => 3306,
- "config_var" => "port"
- },
- {
- "Root database user" => "root",
- "config_var" => "root_user"
- },
- {
- "Root database password" => "default",
- "config_var" => "root_passwd"
- }
- ],
- "testtodb.conf" => [
- {
- "Traffic Ops database user" => "root",
- "config_var" => "dbAdminUser"
- },
- {
- "Password for Traffic Ops database user" => "default",
- "config_var" => "dbAdminPw"
- }
- ],
- "testcdn.conf" => [
- {
- "Generate a new secret?" => "yes",
- "config_var" => "genSecret"
- },
- {
- "Number of secrets to keep?" => "10",
- "config_var" => "keepSecrets"
- }
- ],
- "testldap.conf" => [
- {
- "Do you want to set up LDAP?" => "no",
- "config_var" => "setupLdap"
- },
- {
- "LDAP server hostname" => "",
- "config_var" => "hostname"
- },
- {
- "LDAP Admin DN" => "",
- "config_var" => "admin_dn"
- },
- {
- "LDAP Admin Password" => "",
- "config_var" => "password"
- },
- {
- "LDAP Search Base" => "",
- "config_var" => "search_base"
- }
+sub getDefaults {
+ return {
+ "testdb.conf" => [
+ {
+ "Database type" => "mysql",
+ "config_var" => "type"
+ },
+ {
+ "Database name" => "traffic_ops",
+ "config_var" => "dbname"
+ },
+ {
+ "Database server hostname IP or FQDN" => "localhost",
+ "config_var" => "hostname"
+ },
+ {
+ "Database port number" => 3306,
+ "config_var" => "port"
+ },
+ {
+ "Root database user" => "root",
+ "config_var" => "root_user"
+ },
+ {
+ "Root database password" => "default",
+ "config_var" => "root_passwd"
+ }
+ ],
+ "testtodb.conf" => [
+ {
+ "Traffic Ops database user" => "root",
+ "config_var" => "dbAdminUser"
+ },
+ {
+ "Password for Traffic Ops database user" => "default",
+ "config_var" => "dbAdminPw"
+ }
+ ],
+ "testcdn.conf" => [
+ {
+ "Generate a new secret?" => "yes",
+ "config_var" => "genSecret"
+ },
+ {
+ "Number of secrets to keep?" => "10",
+ "config_var" => "keepSecrets"
+ }
+ ],
+ "testldap.conf" => [
+ {
+ "Do you want to set up LDAP?" => "no",
+ "config_var" => "setupLdap"
+ },
+ {
+ "LDAP server hostname" => "",
+ "config_var" => "hostname"
+ },
+ {
+ "LDAP Admin DN" => "",
+ "config_var" => "admin_dn"
+ },
+ {
+ "LDAP Admin Password" => "",
+ "config_var" => "password"
+ },
+ {
+ "LDAP Search Base" => "",
+ "config_var" => "search_base"
+ }
],
"testpost_install.json" => [],
- "testusers.json" => [
- {
- "Administration username for Traffic Ops" => "admin",
- "config_var" => "tmAdminUser"
- },
- {
- "Password for the admin user" => "default",
- "config_var" => "tmAdminPw"
- }
- ],
+ "testusers.json" => [
+ {
+ "Administration username for Traffic Ops" => "admin",
+ "config_var" => "tmAdminUser"
+ },
+ {
+ "Password for the admin user" => "default",
+ "config_var" => "tmAdminPw"
+ }
+ ],
"testprofiles/" => []
- };
+ };
}
# -d - Debug Mode: More output to the terminal
@@ -360,64 +360,67 @@ sub getDefaults{
# In interactive mode: prompt if no value in cfile
-# Not in interactive mode: if answer in cfile, use if. If no answer in cfile, use answer in default.
+# Not in interactive mode: if answer in cfile, use if. If no answer in cfile, use answer in default.
# if no answer in default die
sub main {
- my $inputFile = "";
- my $help = 0;
- our $interactive = 0;
- our $debug = 0;
-
- GetOptions( "cfile=s" => \$inputFile,
- "i" => \$interactive,
- "d" => \$debug,
- "h" => \$help,
- "help" => \$help)
- or die ("Error in command line arguments");
-
- # stores the default questions and answers
- our $defaultInputs = getDefaults();
-
- if ($help) {
- print "Usage: postinstall [-i] [-d] -cfile=[config_file]\n";
- exit(0);
- }
-
- if ($::debug) {
- print "Debug is on\n";
- }
-
- if ($::debug && $::interactive) {
- print "Running in interactive mode\n";
- }
-
- # used to store the questions and answers - will either be input config file or defaults
- my $userInput;
-
- if ($inputFile eq "") {
- print "No input file given - using defaults\n";
- $userInput = $::defaultInputs;
- }
- else {
- print "Using input file $inputFile\n";
- $userInput = readJson($inputFile);
- }
-
- # check the input config file against the defaults to check for missing questions
- if ($inputFile ne "") {
- sanityCheckConfig($userInput);
- }
-
- # The generator functions handle checking input/default/interactive mode
-
- # todbconf will be used later when setting up the database
- my $todbconf = generateDbConf( $userInput, 'testdb.conf', 'testtodb.conf', 'testdbconf.yml' );
- generateCdnConf( $userInput, 'testcdn.conf' );
- generateLdapConf( $userInput, 'testldap.conf' );
- generatePostInstallConf( $userInput, 'testpost_install.json' );
- generateUsersConf( $userInput, 'testusers.json' );
- generateProfilesDir( $userInput, 'testprofiles/' );
+ my $inputFile = "";
+ my $help = 0;
+ our $interactive = 0;
+ our $debug = 0;
+
+ GetOptions(
+ "cfile=s" => \$inputFile,
+ "i" => \$interactive,
+ "d" => \$debug,
+ "h" => \$help,
+ "help" => \$help
+ ) or die("Error in command line arguments");
+
+ # stores the default questions and answers
+ our $defaultInputs = getDefaults();
+
+ if ($help) {
+ print "Usage: postinstall [-i] [-d] -cfile=[config_file]\n";
+ exit(0);
+ }
+
+ if ($::debug) {
+ print "Debug is on\n";
+ }
+
+ if ( $::debug && $::interactive ) {
+ print "Running in interactive mode\n";
+ }
+
+ # used to store the questions and answers -
+ # will either be input config file or defaults
+ my $userInput;
+
+ if ( $inputFile eq "" ) {
+ print "No input file given - using defaults\n";
+ $userInput = $::defaultInputs;
+ }
+ else {
+ print "Using input file $inputFile\n";
+ $userInput = readJson($inputFile);
+ }
+
+ # check the input config file against the defaults
+ # to check for missing questions
+ if ( $inputFile ne "" ) {
+ sanityCheckConfig($userInput);
+ }
+
+ # The generator functions handle checking input/default/interactive mode
+
+ # todbconf will be used later when setting up the database
+ my $todbconf = generateDbConf( $userInput, 'testdb.conf', 'testtodb.conf', 'testdbconf.yml' );
+ generateCdnConf( $userInput, 'testcdn.conf' );
+ generateLdapConf( $userInput, 'testldap.conf' );
+ generatePostInstallConf( $userInput, 'testpost_install.json' );
+ generateUsersConf( $userInput, 'testusers.json' );
+ generateProfilesDir( $userInput, 'testprofiles/' );
}
main;