github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/acceptancetests/repository/charms/mediawiki/hooks/slave-relation-changed (about) 1 #!/usr/bin/php 2 <?php 3 require_once '/usr/share/mediawiki/includes/Defines.php'; 4 $nodes = array(); 5 $ret = 0; 6 exec('relation-list',$units,$ret); 7 8 if ( $ret ) { 9 print 'relation-list failed\n'; 10 exit($ret); 11 } 12 13 global $argv; 14 if ( $argv[0] == 'slave-relation-departed' ) { 15 $departing = getenv('JUJU_REMOTE_UNIT'); 16 echo "Filtering out departing node $departing\n"; 17 $newunits = array(); 18 foreach ( $units as $node ) { 19 if ( trim($node) != trim($departing) ) { 20 $newunits[]=$node; 21 } 22 } 23 $units = $newunits; 24 } 25 26 $dbservers = array(); 27 foreach ( $units as $node ) { 28 $relout = popen("relation-get --format json - $node", 'r'); 29 $json = stream_get_contents($relout); 30 $node = json_decode($json); 31 if ( $node->slave == 'True' ) { 32 $dbservers[] = array( 33 'host' => $node->{'private-address'}, 34 'dbname' => $node->database, 35 'user' => $node->user, 36 'password' => $node->password, 37 'type' => 'mysql', 38 'load' => 1, 39 'flags' => DBO_DEFAULT 40 ); 41 } 42 } 43 44 if ( count($dbservers) < 1 ) { 45 @unlink('/etc/mediawiki/slaves.data'); 46 exit(0); 47 } 48 49 # This file is only for root, desired mode is 0600 50 umask(0077); 51 file_put_contents('/etc/mediawiki/slaves.data', serialize($dbservers)); 52 $home = dirname(__FILE__); 53 exec($home . '/combine-dbservers');