Ignore:
Timestamp:
2016-05-09T22:38:09+12:00 (8 years ago)
Author:
ak19
Message:

Refactoring activate.pl into activate.pm (class, OOP) and activate.pl. Now buildcolutils.pm uses do_deactivate() from activate.pm.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/bin/script/activate.pl

    r30517 r30520  
    9090use File::Find;
    9191
    92 use HTTP::Response;
    93 use LWP::Simple qw($ua !head); # import useragent object as $ua from the full LWP to use along with LWP::Simple
    94         # don't import LWP::Simple's head function by name since it can conflict with CGI:head())           
    95 #use CGI qw(:standard);  # then only CGI.pm defines a head()
    96 use Net::Ping;
    97 use URI;
    98 
     92# Greenstone modules
     93use activate;
    9994use colcfg;
    10095use scriptutil;
    10196use util;
    102 #use enum;
    103 
    104 # enumerations in perl, http://stackoverflow.com/questions/473666/does-perl-have-an-enumeration-type
    105 # Unfortunately, not part of perl's core
    106 #use enum qw(LEVEL_NONE LEVEL_ERROR LEVEL_INFO LEVEL_DEBUG); # debugging levels NONE == 0, ERROR=1 INFO=2 DEBUG=3
    107 
    108 # global variables
    109 #my $default_verbosity = LEVEL_ERROR; # by default we display basic error messages
    110 
    111 my $default_verbosity = 2; # by default we display basic error and info messages
    112 
    113 sub print_task_msg {
    114     my ($task_msg, $verbosity_setting) = @_;
    115    
    116     $verbosity_setting = $default_verbosity unless $verbosity_setting;
    117     #$verbosity_setting = 1 unless defined $verbosity;
    118     if($verbosity_setting >= 1) {
    119     print STDERR "\n";
    120     print STDERR "************************\n";
    121     print STDERR "* $task_msg\n";
    122     print STDERR "************************\n";
    123     }
    124 }
    125 
    126 # Prints messages if the verbosity is right. Does not add new lines.
    127 sub print_msg {
    128     my ($msg, $min_verbosity, $verbosity_setting) = @_;
    129    
    130     # only display error messages if the current
    131     # verbosity setting >= the minimum verbosity level
    132     # needed for that message to be displayed.
    133    
    134     $verbosity_setting = $default_verbosity unless defined $verbosity_setting;
    135     $min_verbosity = 1 unless defined $min_verbosity;
    136     if($verbosity_setting >= $min_verbosity) { # by default display all 1 messages
    137     print STDERR "$msg";
    138     }
    139 }
    140 
    141 # Method to send a command to a GS2 or GS3 library_URL
    142 # the commands used in this script can be activate, deactivate, ping,
    143 # and is-persistent (is-persistent only implemented for GS2).
    144 sub config {
    145     my ($library_url, $command, $check_message_against_regex, $site, $expected_error_code, $silent) = @_;
    146     # Gatherer.java's configGS3Server doesn't use the site variable
    147     # so we don't have to either
    148    
    149     # for GS2, getting the HTTP status isn't enough, we need to read the output
    150     # since this is what CollectionManager.config() stipulates.
    151     # Using LWP::UserAgent::get($url) for this 
    152    
    153     if(!defined $library_url) {
    154     return 0;
    155     }
    156     else {
    157     $ua->timeout(5); # set LWP useragent to 5s max timeout for testing the URL
    158     # Need to set this, else it takes I don't know how long to timeout
    159     # http://www.perlmonks.org/?node_id=618534
    160    
    161     # http://search.cpan.org/~gaas/libwww-perl-6.04/lib/LWP/UserAgent.pm
    162     # use LWP::UserAgent's get($url) since it returns an HTTP::Response code
    163    
    164     my $response_obj = $ua->get( $library_url.$command);
    165    
    166     # $response_obj->content stores the content and $response_obj->code the HTTP response code
    167     my $response_code = $response_obj->code();
    168    
    169     if(LWP::Simple::is_success($response_code)) {# $response_code eq RC_OK) { # LWP::Simple::is_success($response_code)
    170         &print_msg("*** Command $library_url$command\n", 3);
    171         &print_msg("*** HTTP Response Status: $response_code - Complete.", 3);
    172        
    173         # check the page content is as expected
    174         my $response_content = $response_obj->content;
    175         my $resultstr = $response_content;
    176         $resultstr =~ s@.*gs_content\"\>@@s;       
    177         $resultstr =~ s@</div>.*@@s;
    178        
    179         if($response_content =~ m/$check_message_against_regex/) {
    180         &print_msg(" Response as expected.\n", 3);
    181         &print_msg("@@@@@@ Got result:\n$resultstr\n", 4);
    182         return 1;
    183         } else {
    184         # if we expect the collection to be inactive, then we'd be in silent mode: if so,
    185         # don't print out the "ping did not succeed" response, but print out any other messages
    186        
    187         # So we only suppress the ping col "did not succeed" response if we're in silent mode
    188         # But if any message other than ping "did not succeed" is returned, we always print it
    189         if($response_content !~ m/did not succeed/ || !$silent) {
    190             &print_msg("\n\tBUT: command $library_url$command response UNEXPECTED.\n", 3);
    191             &print_msg("*** Got message:\n$response_content.\n", 4);
    192             &print_msg("*** Got result:\n$resultstr\n", 3);
    193         }
    194         return 0; # ping on a collection may "not succeed."
    195         }
    196     }
    197     elsif(LWP::Simple::is_error($response_code)) { # method exported by LWP::Simple, along with HTTP::Status constants
    198         # check the page content is as expected
    199         if(defined $expected_error_code && $response_code == $expected_error_code) {
    200         &print_msg(" Response status $response_code as expected.\n", 3);
    201         } else {
    202         &print_msg("*** Command $library_url$command\n");
    203         &print_msg("*** Unexpected error. HTTP Response Status: $response_code - Failed.\n");
    204         }
    205         return 0; # return false, since the response_code was an error, expected or not
    206     }
    207     else {
    208         &print_msg("*** Command $library_url$command\n");
    209         &print_msg("*** Unexpected error. HTTP Response Status: $response_code - Failed.\n");
    210         return 0;
    211     }
    212     }   
    213 }
    214 
    215 sub deactivate_collection {
    216     my ($library_url, $gs_mode, $qualified_collection, $site) = @_;
    217    
    218     if($gs_mode eq "gs2") {
    219     my $DEACTIVATE_COMMAND = "?a=config&cmd=release-collection&c=";
    220     my $check_message_against_regex = q/configured release-collection/;
    221     config($library_url, $DEACTIVATE_COMMAND.$qualified_collection, $check_message_against_regex);
    222     }
    223     elsif ($gs_mode eq "gs3") {
    224     my $DEACTIVATE_COMMAND = "?a=s&sa=d&st=collection&sn=";
    225     my $check_message_against_regex = "collection: $qualified_collection deactivated";
    226     config($library_url, $DEACTIVATE_COMMAND.$qualified_collection, $check_message_against_regex, $site);
    227     }   
    228 }
    229 
    230 sub activate_collection {
    231     my ($library_url, $gs_mode, $qualified_collection, $site) = @_;
    232    
    233     if($gs_mode eq "gs2") {
    234     my $ACTIVATE_COMMAND = "?a=config&cmd=add-collection&c=";
    235     my $check_message_against_regex = q/configured add-collection/;
    236     config($library_url, $ACTIVATE_COMMAND.$qualified_collection, $check_message_against_regex);
    237     }
    238     elsif ($gs_mode eq "gs3") {
    239     my $ACTIVATE_COMMAND = "?a=s&sa=a&st=collection&sn=";
    240     my $check_message_against_regex = "collection: $qualified_collection activated";
    241     config($library_url, $ACTIVATE_COMMAND.$qualified_collection, $check_message_against_regex, $site);
    242     }   
    243 }
    244 
    245 sub ping {
    246     my ($library_url, $command, $gs_mode, $site, $silent) = @_;
    247    
    248     # If the GS server is not running, we *expect* to see a "500" status code.
    249     # If the GS server is running, then "Ping" ... "succeeded" is expected on success.
    250     # When pinging an inactive collection, it will say it did "not succeed". This is
    251     # a message of interest to return.
    252     my $check_responsemsg_against_regex = q/(succeeded)/;
    253     my $expected_error_code = 500;
    254    
    255     &print_msg("*** COMMAND WAS: |$command|***\n", 4);
    256    
    257     return config($library_url, $command, $check_responsemsg_against_regex, $site, $expected_error_code, $silent);
    258 }
    259 
    260 # send a pingaction to the GS library. General server-level ping.
    261 sub ping_library {
    262     my ($library_url, $gs_mode, $site) = @_;
    263    
    264     my $command = "";
    265     if($gs_mode eq "gs2") {     
    266     $command = "?a=ping";       
    267     }
    268     elsif ($gs_mode eq "gs3") {     
    269     $command = "?a=s&sa=ping";
    270     }
    271     return &ping($library_url, $command, $gs_mode, $site);
    272 }
    273 
    274 
    275 # send a pingaction to a collection in GS library to check if it's active
    276 sub ping_library_collection {
    277     my ($library_url, $gs_mode, $qualified_collection, $site, $silent) = @_;
    278    
    279     my $command = "";
    280     if($gs_mode eq "gs2") {     
    281     $command = "?a=ping&c=$qualified_collection";
    282     }
    283     elsif ($gs_mode eq "gs3") {     
    284     $command = "?a=s&sa=ping&st=collection&sn=$qualified_collection";       
    285     }
    286     return &ping($library_url, $command, $gs_mode, $site, $silent);
    287 }
    288 
    289 # return true if server is persistent, by calling is-persistent on library_url
    290 # this is only for GS2, since the GS3 server is always persistent
    291 sub is_persistent {
    292     my ($library_url, $gs_mode) = @_;
    293    
    294     if($gs_mode eq "gs3") { # GS3 server is always persistent
    295     return 1;
    296     }
    297    
    298     my $command = "?a=is-persistent";   
    299     my $check_responsemsg_against_regex = q/true/;  # isPersistent: true versus isPersistent: false     
    300     return config($library_url, $command, $check_responsemsg_against_regex);
    301 }
    302 
    303 sub get_library_URL {
    304     my ($gs_mode, $lib_name) = @_; # gs_mode can be gs3 or gs2, lib_name is the custom servlet name
    305    
    306     # If we get here, we are dealing with a server included with GS.
    307     # For GS3, we ask ant for the library URL.
    308     # For GS2, we derive the URL from the llssite.cfg file.
    309    
    310     my $url = undef;   
    311    
    312     if($gs_mode eq "gs2") {     
    313     my $llssite_cfg = &FileUtils::filenameConcatenate($ENV{'GSDLHOME'}, "llssite.cfg");
    314    
    315     if(-f $llssite_cfg) {
    316         # check llssite.cfg for line with url property
    317         # for server.exe also need to use portnumber and enterlib properties           
    318        
    319         # Read in the entire contents of the file in one hit
    320         if (!open (FIN, $llssite_cfg)) {
    321         &print_msg("activate.pl::get_library_URL failed to open $llssite_cfg ($!)\n");
    322         return undef;
    323         }
    324        
    325         my $contents;
    326         sysread(FIN, $contents, -s FIN);           
    327         close(FIN);
    328        
    329         my @lines = split(/[\n\r]+/, $contents); # split on carriage-returns and/or linefeeds
    330         my $enterlib = "";
    331         my $portnumber = ""; # will remain empty (implicit port 80) unless it's specifically been assigned
    332        
    333         foreach my $line (@lines) {             
    334         if($line =~ m/^url=(.*)$/) {
    335             $url = $1;                 
    336         } elsif($line =~ m/^enterlib=(.*)$/) {
    337             $enterlib = $1;                 
    338         } elsif($line =~ m/^portnumber=(.*)$/) {
    339             $portnumber = $1;                   
    340         }   
    341         }
    342        
    343         if(!$url) {
    344         return undef;
    345         }
    346         elsif($url eq "URL_pending") { # library is not running
    347         # do not process url=URL_pending in the file, since for server.exe
    348         # this just means the Enter Library button hasn't been pressed yet             
    349         $url = undef;
    350         }
    351         else {
    352         # In the case of server.exe, need to do extra work to get the proper URL
    353         # But first, need to know whether we're indeed dealing with server.exe:
    354        
    355         # compare the URL's domain to the full URL
    356         # E.g. for http://localhost:8383/greenstone3/cgi-bin, the domain is localhost:8383
    357         my $uri = URI->new( $url );
    358         my $host = $uri->host;
    359         #print STDERR "@@@@@ host: $host\n";
    360         if($url =~ m/http:\/\/$host(\/)?$/) {
    361             #if($url !~ m/http:\/\/$host:$portnumber(\/)?/ || $url =~ m/http:\/\/$host(\/)?$/) {
    362             # (if the URL does not contain the portnumber, OR if the port is implicitly 80 and)                 
    363             # If the domain with http:// prefix is completely the same as the URL, assume server.exe
    364             # then the actual URL is the result of suffixing the port and enterlib properties in llssite.cfg
    365             $url = $url.":".$portnumber.$enterlib;         
    366         } # else, apache web server         
    367                
    368         }           
    369     }
    370     } elsif($gs_mode eq "gs3") {
    371     # Either check build.properties for tomcat.server, tomcat.port and app.name (and default servlet name).
    372     # app.name is stored in app.path by build.xml. Need to move app.name in build.properties from build.xml
    373    
    374     # Or, run the new target get-default-servlet-url
    375     # the output can look like:
    376     #
    377     # Buildfile: build.xml
    378     #   [echo] os.name: Windows Vista
    379     #
    380     # get-default-servlet-url:
    381     #   [echo] http://localhost:8383/greenstone3/library
    382     # BUILD SUCCESSFUL
    383     # Total time: 0 seconds
    384    
    385     #my $output = qx/ant get-default-servlet-url/; # backtick operator, to get STDOUT (else 2>&1)
    386     # see http://stackoverflow.com/questions/799968/whats-the-difference-between-perls-backticks-system-and-exec
    387    
    388     # The get-default-servlet-url ant target can be run from anywhere by specifying the
    389     # location of GS3's ant build.xml buildfile. Activate.pl can be run from anywhere for GS3
    390     # GSDL3SRCHOME will be set for GS3 by gs3-setup.sh, a step that would have been necessary
    391     # to run the activate.pl script in the first place
    392     my $perl_command = "ant -buildfile \"$ENV{'GSDL3SRCHOME'}/build.xml\" get-default-servlet-url";
    393    
    394     if (open(PIN, "$perl_command |")) {
    395         while (defined (my $perl_output_line = <PIN>)) {
    396         if($perl_output_line =~ m@http:\/\/(\S*)@) { # grab all the non-whitespace chars
    397             $url="http://".$1;
    398         }
    399         }
    400         close(PIN);
    401     } else {
    402         &print_msg("activate.pl::get_library_URL: Failed to run $perl_command to work out library URL for $gs_mode\n");
    403     }
    404     if(defined $lib_name) {
    405         # replace the servlet_name portion of the url found, with the given library_name
    406         $url =~ s@/[^/]*$@/$lib_name@;
    407     }
    408     }
    409    
    410     # either the url is still undef or it is now set
    411     #print STDERR "\n@@@@@ final URL:|$url|\n" if $url;     
    412     #print STDERR "\n@@@@@ URL still undef\n" if !$url;
    413     return $url;
    414 }
    415 
    416 ### UNUSED METHODS TO MOVE TO util.pm?
    417 
    418 # This method is now unused. Using ping_library instead to send the ping action to a
    419 # GS2/GS3 server. This method can be used more generally to test whether a URL is alive.
    420 # http://search.cpan.org/dist/libwww-perl/lib/LWP/Simple.pm
    421 # and http://www.perlmonks.org/?node_id=618534
    422 sub is_URL_active {
    423     my $url = shift(@_); # gs3 or gs2 URL   
    424    
    425     my $status = 0;
    426     if(defined $url) {
    427     $ua->timeout(10); # set LWP useragent to 5s max timeout for testing the URL
    428     # Need to set this, else it takes I don't know how long to timeout
    429     # http://www.perlmonks.org/?node_id=618534
    430    
    431     $status = LWP::Simple::head($url); # returns empty list of headers if it fails
    432     # LWP::Simple::get($url) is more intensive, so don't need to do that
    433     #print STDERR "**** $url is alive.\n" if $status;
    434     }
    435     return $status;
    436 }
    437 
    438 # Pinging seems to always return true, so this method doesn't work
    439 sub pingHost {
    440     my $url = shift(@_); # gs3 or gs2 URL
    441    
    442     my $status = 0;
    443     if(defined $url) {
    444     # Get just the domain. "http://localhost/gsdl?uq=332033495" becomes "localhost"
    445     # "http://localhost/greenstone/cgi-bin/library.cgi" becomes "localhost" too
    446    
    447     #my $host = $url;       
    448     #$host =~ s@^http:\/\/(www.)?@@;       
    449     #$host =~ s@\/.*@@;
    450     #print STDERR "**** HOST: $host\n";
    451    
    452     # More robust way
    453     # http://stackoverflow.com/questions/827024/how-do-i-extract-the-domain-out-of-an-url
    454     my $uri = URI->new( $url );
    455     my $host = $uri->host;
    456    
    457     # Ping the host. http://perldoc.perl.org/Net/Ping.html 
    458     my $p = Net::Ping->new();       
    459     $status = $p->ping($host); # || 0. Appears to set to undef rather than 0
    460     print STDERR "**** $host is alive.\n" if $status; #print "$host is alive.\n" if $p->ping($host);
    461     $p->close();       
    462     }
    463     # return whether pinging was a success or failure
    464     return $status;
    465 }
    466 
    467 sub do_deactivate {
    468     my($is_persistent_server, $library_url, $gs_mode, $site, $qualified_collection) = @_;
    469 
    470 
    471     &print_msg("Pinging $library_url\n");       
    472     if (&ping_library($library_url, $gs_mode, $site)) { # server running
    473        
    474         # server is running, so release the collection if
    475         # the server is persistent and the collection is active
    476         &print_msg("Checking if Greenstone server is persistent\n");
    477         $is_persistent_server = &is_persistent($library_url, $gs_mode);         
    478        
    479         if ($is_persistent_server) { # only makes sense to issue activate and deactivate cmds to a persistent server
    480        
    481         &print_msg("Checking if the collection $qualified_collection is already active\n");
    482         my $collection_active = &ping_library_collection($library_url, $gs_mode, $qualified_collection, $site);
    483        
    484         if ($collection_active) {
    485             &print_msg("De-activating collection $qualified_collection\n");
    486             &deactivate_collection($library_url, $gs_mode, $qualified_collection, $site);
    487         }
    488         else {
    489             &print_msg("Collection is not active => No need to deactivate\n");
    490         }
    491         }
    492         else {
    493         &print_msg("Server is not persistent => No need to deactivate collection\n");
    494         }
    495     }
    496     else {
    497         &print_msg("No response to Ping => Taken to mean server is not running\n");
    498     }
    499 
    500     return $is_persistent_server;
    501 }
    502 
    503 sub do_activate {
    504     my($is_persistent_server, $library_url, $gs_mode, $site, $qualified_collection) = @_;
    505 
    506 
    507         &print_msg("Pinging $library_url\n");
    508         if (&ping_library($library_url, $gs_mode, $site)) { # server running
    509        
    510         # don't need to work out persistency of server more than once, since the libraryURL hasn't changed             
    511         if (!defined $is_persistent_server) {
    512             &print_msg("Checking if Greenstone server is persistent\n");
    513             $is_persistent_server = &is_persistent($library_url, $gs_mode);
    514         }
    515        
    516        
    517         if ($is_persistent_server) { # persistent server, so can try activating collection
    518            
    519             &print_msg("Checking if the collection $qualified_collection is not already active\n");
    520            
    521             # Since we could have deactivated the collection at this point,
    522             # it is likely that it is not yet active. When pinging the collection
    523             # a "ping did not succeed" message is expected, therefore tell the ping
    524             # to proceed silently
    525             my $silent = 1;
    526             my $collection_active = &ping_library_collection($library_url, $gs_mode, $qualified_collection, $site, $silent);
    527            
    528             if (!$collection_active) {
    529             &print_msg(" Collection is not active.\n");
    530             &print_msg("Activating collection $qualified_collection\n");
    531             &activate_collection($library_url, $gs_mode, $qualified_collection, $site);
    532            
    533             # unless an error occurred, the collection should now be active:
    534             $collection_active = &ping_library_collection($library_url, $gs_mode, $qualified_collection, $site); # not silent if ping did not succeed
    535             if(!$collection_active) {
    536                 &print_msg("ERROR: collection $qualified_collection did not get activated\n");
    537             }
    538             }
    539             else {
    540             &print_msg("Collection is already active => No need to activate\n");
    541             }
    542         }
    543         else {
    544             &print_msg("Server is not persistent => No need to activate collection\n");
    545         }
    546         }
    547         else {
    548         &print_msg("No response to Ping => Taken to mean server is not running\n");
    549         }
    550 
    551     return $is_persistent_server;
    552 }
    55397
    55498
     
    577121   
    578122    # http://stackoverflow.com/questions/6156742/how-can-i-capture-the-complete-commandline-in-perl
    579     #print STDERR "@@@@@@@@@ ACTIVATE CMD: " . join " ", $0, @ARGV;
     123    #print STDERR "@@@@@@@@@ ACTIVATE CMD: " . join " ", $0, @ARGV . "\n";
    580124   
    581125    # get the collection details
     
    592136    my $keepold = 0;
    593137    my $incremental = 0; # used by solr
    594    
    595     # some further parameters
    596     my $just_activate = 0; # don't do anything else than activating the collection if the server is running
    597     my $just_deactivate = 0; # don't do anything else than deactivating the collection if the server is running
    598 
    599 
    600     my $library_url = $ENV{'GSDL_LIBRARY_URL'} || undef; # to be specified on the cmdline if not using a GS-included web server
     138
     139    my $default_verbosity = 2;
     140
     141    my $library_url = undef; # to be specified on the cmdline if not using a GS-included web server
    601142    # the GSDL_LIBRARY_URL env var is useful when running cmdline buildcol.pl in the linux package manager versions of GS3
    602143   
     
    627168    elsif ($arg eq "-incremental") {
    628169        $incremental = 1;
    629     }   
    630     elsif ($arg eq "-justactivate") {
    631         $just_activate = 1;
    632     }
    633     elsif ($arg eq "-justdeactivate") {
    634         $just_deactivate = 1;
    635170    }
    636171    elsif ($arg eq "-library_url") {
     
    653188    $build_dir = &FileUtils::filenameConcatenate($collection_dir, "building") unless (defined $build_dir);
    654189    $index_dir = &FileUtils::filenameConcatenate($collection_dir, "index") unless (defined $index_dir);
    655    
    656     &print_task_msg("Running  Collection  Activation  Stage");
     190
     191    my $gsserver = new activate($qualified_collection, $site, $default_verbosity, $build_dir, $index_dir, $collect_dir, $library_url, $library_name);
     192
     193    $gsserver->print_task_msg("Running  Collection  Activation  Stage");
    657194   
    658195    # get and check the collection name
    659196    if ((&colcfg::use_collection($site, $qualified_collection, $collect_dir)) eq "") {
    660     &print_msg("Unable to use collection \"$qualified_collection\" within \"$collect_dir\"\n");
     197    $gsserver->print_msg("Unable to use collection \"$qualified_collection\" within \"$collect_dir\"\n");
    661198    exit -1;
    662199    }
     
    665202    # Beware: Only if $site is specified in the cmdline does collectionConfig.xml get
    666203    # generated and does $gs_mode=gs3, else collect.cfg gets generated and $gs_mode=gs2
    667     my $gs_mode = "gs2";
    668     if ((defined $site) && ($site ne "")) { # GS3
    669     $gs_mode = "gs3";
    670     }
     204    my $gs_mode = $gsserver->{'gs_mode'}; # "gs2" or "gs3", based on $site variable
     205
    671206    my $collect_cfg_filename = &colcfg::get_collect_cfg_name(STDERR, $gs_mode);
    672207    my $collectcfg = &colcfg::read_collection_cfg ($collect_cfg_filename,$gs_mode);
     
    701236    # activate and deactivate collections including for the incremental case
    702237    if(!&FileUtils::directoryExists($build_dir)) {
    703     &print_msg("No building folder at $build_dir to move to index.\n");
     238    $gsserver->print_msg("No building folder at $build_dir to move to index.\n");
    704239    exit -1 unless ($buildtype eq "solr"); #&& $incremental);
    705240    } elsif (&FileUtils::isDirectoryEmpty($build_dir)) {
    706     &print_msg("Nothing in building folder $build_dir to move into index folder.\n");
     241    $gsserver->print_msg("Nothing in building folder $build_dir to move into index folder.\n");
    707242    exit -1 unless ($buildtype eq "solr"); #&& $incremental);
    708243    }
     
    718253    # and apache for GS2), we work out the library URL:
    719254    if(!$library_url) {
    720     $library_url = &get_library_URL($gs_mode, $library_name); # returns undef if no server is running
     255    $library_url = $gsserver->get_library_URL(); # returns undef if no server is running
    721256    }
    722257   
    723258    # CollectionManager's installCollection phase in GLI
    724     # 2. Ping the library URL, and if it's a persistent server and running, release the collection
    725     my $is_persistent_server = undef;
    726     if($library_url && !$skipactivation) { # undef if no valid server URL
    727     if($just_deactivate || !$just_activate) { # either $justdeactivate is provided or neither $justactivate and $justdeactivate are provided
    728         # and deactivation will go through
    729         $is_persistent_server = &do_deactivate($is_persistent_server, $library_url, $gs_mode, $site, $qualified_collection);
    730     }
     259    # 2. Ping the library URL, and if it's a persistent server and running, release the collection   
     260    if($library_url && !$skipactivation) { # undef if no valid server URL   
     261    $gsserver->do_deactivate();
    731262    }
    732263
    733264    # 2b. If we're working with a solr collection, then start up the solrserver now.
    734265    my $solr_server;
    735 if(!$just_activate && !$just_deactivate) {
    736266    my @corenames = ();
    737267    if($buildtype eq "solr") { # start up the jetty server 
     
    778308   
    779309    if(&FileUtils::directoryExists($index_dir)) {
    780         &print_task_msg("Removing \"index\"");
     310        $gsserver->print_task_msg("Removing \"index\"");
    781311       
    782312        if ($buildtype eq "solr") {
     
    793323       
    794324        if (&FileUtils::directoryExists($index_dir)) {
    795         &print_msg("The index directory $index_dir could not be deleted.\n"); # CollectionManager.Index_Not_Deleted
     325        $gsserver->print_msg("The index directory $index_dir could not be deleted.\n"); # CollectionManager.Index_Not_Deleted
    796326        }
    797327    }
     
    808338   
    809339    # Move the building directory to become the new index directory
    810     &print_task_msg("Moving \"building\" -> \"index\"");
     340    $gsserver->print_task_msg("Moving \"building\" -> \"index\"");
    811341    &FileUtils::moveFiles($build_dir, $index_dir);
    812342    if(&FileUtils::directoryExists($build_dir) || !&FileUtils::directoryExists($index_dir)) {           
    813         &print_msg("Could not move $build_dir to $index_dir.\n"); # CollectionManager.Build_Not_Moved
     343        $gsserver->print_msg("Could not move $build_dir to $index_dir.\n"); # CollectionManager.Build_Not_Moved
    814344    }
    815345    }
     
    823353   
    824354    if($build_dir eq $index_dir) { # building_dir can have been set to "index" folder, see incremental-buildcol.pl
    825         &print_task_msg("building folder is index folder, not moving");
     355        $gsserver->print_task_msg("building folder is index folder, not moving");
    826356    } else {
    827357        # Copy just the contents of building dir into the index dir, overwriting
    828358        # existing files, but don't replace index with building.
    829         &print_task_msg("Moving \"building\" -> \"index\"");       
     359        $gsserver->print_task_msg("Moving \"building\" -> \"index\"");     
    830360        &FileUtils::moveDirectoryContents($build_dir, $index_dir);
    831361    }
     
    854384    $solr_server->solr_xml_to_solr_xml_in();
    855385    }
    856 }#end if(!$just_activate && !$just_deactivate)
     386
    857387   
    858388    # 4. Ping the library URL, and if it's a persistent server and running, activate the collection again   
     
    861391    if($build_dir eq $index_dir || !&FileUtils::directoryExists($build_dir) || &FileUtils::isDirectoryEmpty($build_dir)) {
    862392   
    863     if($library_url && (!$skipactivation)) { # undef if no valid server URL
    864         if($just_activate || !$just_deactivate) { # either $justactivate is provided or neither $justdeactivate and $justactivate are provided
    865         # then activation will go through       
    866         $is_persistent_server = &do_activate($is_persistent_server, $library_url, $gs_mode, $site, $qualified_collection);
    867         }   
     393    if($library_url && !$skipactivation) { # undef if no valid server URL
     394        $gsserver->do_activate();
    868395    }
    869396    } else { # installcollection failed     
    870397    #CollectionManager.Preview_Ready_Failed
    871     &print_msg("Building directory is not empty or still exists. Failed to properly move $build_dir to $index_dir.\n");
    872     }
    873    
    874     &print_msg("\n");
    875    
    876     if(!$just_activate && !$just_deactivate && $buildtype eq "solr") {
     398    $gsserver->print_msg("Building directory is not empty or still exists. Failed to properly move $build_dir to $index_dir.\n");
     399    }
     400   
     401    $gsserver->print_msg("\n");
     402   
     403    if($buildtype eq "solr") {
    877404    if ($solr_server->explicitly_started()) {
    878405        $solr_server->stop();
Note: See TracChangeset for help on using the changeset viewer.