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');