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:31 UTC
[10/36] incubator-trafficcontrol git commit: Changed command line
argument -i to -a and interactive mode is now default mode of operation
Changed command line argument -i to -a and interactive mode is now default mode of operation
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/7046baa6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/7046baa6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/7046baa6
Branch: refs/heads/master
Commit: 7046baa6c104f2e6b5d7f9d102d4842a2464ffa5
Parents: 9edf9d7
Author: peryder <pe...@cisco.com>
Authored: Tue Nov 15 13:56:52 2016 -0500
Committer: Dan Kirkwood <da...@gmail.com>
Committed: Fri Jan 27 09:52:53 2017 -0700
----------------------------------------------------------------------
traffic_ops/install/bin/postinstall-new | 130 +++++++++++++++++----------
1 file changed, 84 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/7046baa6/traffic_ops/install/bin/postinstall-new
----------------------------------------------------------------------
diff --git a/traffic_ops/install/bin/postinstall-new b/traffic_ops/install/bin/postinstall-new
index abd2170..ce5fe9c 100755
--- a/traffic_ops/install/bin/postinstall-new
+++ b/traffic_ops/install/bin/postinstall-new
@@ -1,8 +1,10 @@
#!/usr/bin/perl
-use lib qw(/opt/traffic_ops/install/lib /opt/traffic_ops/install/lib/perl5 /opt/traffic_ops/app/local/lib/perl5 /opt/traffic_ops/app/lib);
-$ENV{PATH} = "/opt/traffic_ops/install/bin:$ENV{PATH}";
-$ENV{PERL5LIB} = "/opt/traffic_ops/install/lib:/opt/traffic_ops/install/lib/perl5:/opt/traffic_ops/app/local/lib/perl5:/opt/traffic_ops/app/lib";
+use lib
+ qw(/opt/traffic_ops/install/lib /opt/traffic_ops/install/lib/perl5 /opt/traffic_ops/app/local/lib/perl5 /opt/traffic_ops/app/lib);
+$ENV{PATH} = "/opt/traffic_ops/install/bin:$ENV{PATH}";
+$ENV{PERL5LIB} =
+"/opt/traffic_ops/install/lib:/opt/traffic_ops/install/lib/perl5:/opt/traffic_ops/app/local/lib/perl5:/opt/traffic_ops/app/lib";
use strict;
use warnings;
@@ -36,7 +38,7 @@ sub getInstallPath {
# 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
-# answer. If a question is given but no answer, it will prompt the user if interactive mode is enabled, but if
+# 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.
@@ -45,8 +47,8 @@ sub getField {
my $config_answer = shift;
my $fileName = shift;
- # if there is no config file and interactive mode prompt for all questions with default answers
- if ( $::inputFile eq "" && $::interactive ) {
+# if there is no config file and not in automatic mode prompt for all questions with default answers
+ if ( $::inputFile eq "" && !$::automatic ) {
return promptUser( $question, $config_answer );
}
@@ -55,8 +57,8 @@ sub getField {
return $config_answer;
}
else {
- # if no config value and in interactive mode prompt user
- if ($::interactive) {
+ # if no config value and not in automatic mode prompt user
+ if ( !$::automatic ) {
return promptUser($question);
}
@@ -95,9 +97,13 @@ sub getConfig {
}
foreach my $var ( @{ $userInput->{$fileName} } ) {
- my $question = ( ( keys $var )[0] eq "config_var" ? ( keys $var )[1] : ( keys $var )[0] );
+ 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 );
+ my $answer = $config{ $var->{"config_var"} } =
+ getField( $question, $var->{$question}, $fileName );
$config{ $var->{"config_var"} } = $answer;
if ($::debug) {
@@ -129,12 +135,14 @@ sub generateDbConf {
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 $!");
+ 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";
+ print $fh
+" open: tcp:$dbconf{hostname}:$dbconf{port}*$dbconf{dbname}/$dbconf{root_user}/$dbconf{root_passwd}\n";
close $fh;
return \%todbconf;
@@ -150,7 +158,8 @@ sub generateCdnConf {
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 = Safe->new->rdo($fileName)
+ or errorOut("Error loading $fileName: $@");
my %cdnconf = getConfig( $userInput, $fileName );
@@ -162,7 +171,9 @@ sub generateCdnConf {
my @secrets = @{ $cdnConf->{secrets} };
my $newSecret = randomWord();
unshift @secrets, randomWord();
- if ( $cdnconf{keepSecrets} > 0 && $#secrets > $cdnconf{keepSecrets} - 1 ) {
+ if ( $cdnconf{keepSecrets} > 0
+ && $#secrets > $cdnconf{keepSecrets} - 1 )
+ {
# Shorten the array to requested length
$#secrets = $cdnconf{keepSecrets} - 1;
@@ -230,13 +241,24 @@ sub generateProfilesDir {
sub sanityCheckDefaults {
foreach my $file ( ( keys $::defaultInputs ) ) {
foreach my $defaultValue ( @{ $::defaultInputs->{$file} } ) {
- my $question = ( ( keys $defaultValue )[0] eq "config_var" ? ( keys $defaultValue )[1] : ( keys $defaultValue )[0] );
- if ( !defined $defaultValue->{$question} || $defaultValue->{$question} eq "" ) {
- errorOut("Error: question \'$question\' in file \'$file\' has no default answer\n");
+ my $question =
+ ( ( keys $defaultValue )[0] eq "config_var"
+ ? ( keys $defaultValue )[1]
+ : ( keys $defaultValue )[0] );
+ if ( !defined $defaultValue->{$question}
+ || $defaultValue->{$question} eq "" )
+ {
+ errorOut(
+"Error: question \'$question\' in file \'$file\' has no default answer\n"
+ );
}
- if ( !defined $defaultValue->{"config_var"} || $defaultValue->{"config_var"} eq "" ) {
- errorOut("Error: question \'$question\' in file \'$file\' has no config_var");
+ if ( !defined $defaultValue->{"config_var"}
+ || $defaultValue->{"config_var"} eq "" )
+ {
+ errorOut(
+"Error: question \'$question\' in file \'$file\' has no config_var"
+ );
}
}
}
@@ -256,7 +278,8 @@ sub sanityCheckConfig {
foreach my $file ( ( keys $::defaultInputs ) ) {
if ( !defined $userInput->{$file} ) {
- print "Warning: File \'$file\' found in defaults but not config file\n";
+ print
+ "Warning: File \'$file\' found in defaults but not config file\n";
next;
}
@@ -264,27 +287,40 @@ sub sanityCheckConfig {
my $found = 0;
foreach my $configValue ( @{ $userInput->{$file} } ) {
- if ( $defaultValue->{"config_var"} eq $configValue->{"config_var"} ) {
+ if ( $defaultValue->{"config_var"} eq
+ $configValue->{"config_var"} )
+ {
$found = 1;
}
}
- # if the question is not found in the config file add it from defaults
+ # if the question is not found in the config file add it from defaults
if ( !$found ) {
- print "Warning: Value " . Dumper($defaultValue) . "found in defaults but not in \'$file\'\n";
+ print "Warning: Value "
+ . Dumper($defaultValue)
+ . "found in defaults but not in \'$file\'\n";
- my $question = ( ( keys $defaultValue )[0] eq "config_var" ? ( keys $defaultValue )[1] : ( keys $defaultValue )[0] );
+ my $question =
+ ( ( keys $defaultValue )[0] eq "config_var"
+ ? ( keys $defaultValue )[1]
+ : ( keys $defaultValue )[0] );
my %temp;
- # if interactive add the question without default answer
- if ($::interactive) {
- %temp = ( "config_var" => $defaultValue->{"config_var"}, $question => "" );
+ # if not in automatic mode add the question without default answer
+ if ( !$::automatic ) {
+ %temp = (
+ "config_var" => $defaultValue->{"config_var"},
+ $question => ""
+ );
}
- # if not interactive add question with default answer
+ # if in automatic mode add question with default answer
else {
- %temp = ( "config_var" => $defaultValue->{"config_var"}, $question => $defaultValue->{$question} );
+ %temp = (
+ "config_var" => $defaultValue->{"config_var"},
+ $question => $defaultValue->{$question}
+ );
}
push $userInput->{$file}, \%temp;
@@ -392,26 +428,22 @@ sub getDefaults {
}
# -d - Debug Mode: More output to the terminal
-# -i - Interactive mode: Any questions which do not have answersin config file will result in blocking prompts going
-# to the user
+# -a - Automatic mode: If there are questions in the config file which do not have answers, the script
+# will look to the defaults for the answer. If the answer is not in the defaults
+# the script will exit
# -h - Help: Basic command line help menu
# -cfile - Input File: The input config file used to ask and answer questions
-# 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.
-# if no answer in default die
-
sub main {
our $inputFile = "";
+ our $automatic = 0;
+ our $debug = 0;
my $help = 0;
- our $interactive = 0;
- our $debug = 0;
GetOptions(
"cfile=s" => \$inputFile,
"c=s" => \$inputFile,
- "i" => \$interactive,
+ "a" => \$automatic,
"d" => \$debug,
"h" => \$help,
"help" => \$help
@@ -421,7 +453,7 @@ sub main {
our $defaultInputs = getDefaults();
if ($help) {
- print "Usage: postinstall [-i] [-d] -cfile=[config_file]\n";
+ print "Usage: postinstall [-a] [-d] -cfile=[config_file]\n";
exit(0);
}
@@ -429,8 +461,8 @@ sub main {
print "Debug is on\n";
}
- if ( $::debug && $::interactive ) {
- print "Running in interactive mode\n";
+ if ( $::debug && $::automatic ) {
+ print "Running in automatic mode\n";
}
# used to store the questions and answers -
@@ -443,11 +475,16 @@ sub main {
}
else {
print "Using input file $::inputFile\n";
+
+ if ( !-e $::inputFile ) {
+ errorOut("Error: file \'$::inputFile\' not found\n");
+ }
+
$userInput = readJson($::inputFile);
}
- # check the defaults
- if ( $::inputFile eq "" && !$::interactive ) {
+ # check the defaults if running them automatically
+ if ( $::inputFile eq "" && $::automatic ) {
sanityCheckDefaults();
}
@@ -457,10 +494,11 @@ sub main {
sanityCheckConfig($userInput);
}
- # The generator functions handle checking input/default/interactive mode
+ # The generator functions handle checking input/default/automatic mode
# todbconf will be used later when setting up the database
- my $todbconf = generateDbConf( $userInput, 'testdb.conf', 'testtodb.conf', 'testdbconf.yml' );
+ my $todbconf = generateDbConf( $userInput, 'testdb.conf', 'testtodb.conf',
+ 'testdbconf.yml' );
generateCdnConf( $userInput, 'testcdn.conf' );
generateLdapConf( $userInput, 'testldap.conf' );
generatePostInstallConf( $userInput, 'testpost_install.json' );