Ejemplo n.º 1
0
def resume(args):
    """Resume the MySQL service.

    @raises Exception should the service fail to start."""
    if not service_resume(MYSQL_SERVICE):
        raise Exception("Failed to resume MySQL service.")
    assess_status()
def main():
    try:
        hooks.execute(sys.argv)
    except UnregisteredHookError as e:
        log('Unknown hook {} - skipping.'.format(e))
    update_shared_db_rels()
    assess_status(register_configs())
Ejemplo n.º 3
0
def bootstrap_pxc(args):
    """ Force a bootstrap on this node

    This action will run bootstrap-pxc on this node bootstrapping the cluster.
    This action should only be run after a cold start requiring a bootstrap.
    This action should only be run on the node with the highest sequence number
    as displayed in workgoup status and found in grastate.dat.
    If this unit has the highest sequence number and is not the juju leader
    node, a subsequent action run of notify-bootstrapped is required.
    """

    try:
        # Force safe to bootstrap
        percona_utils.set_grastate_safe_to_bootstrap()
        # Boostrap this node
        percona_utils.bootstrap_pxc()
        percona_utils.notify_bootstrapped()
    except (percona_utils.GRAStateFileNotFound, OSError) as e:
        action_set({'output': e.output, 'return-code': e.returncode})
        action_fail("The GRAState file does not exist or cannot "
                    "be written to.")
    except (subprocess.CalledProcessError, Exception) as e:
        action_set({
            'output': e.output,
            'return-code': e.returncode,
            'traceback': traceback.format_exc()
        })
        action_fail("The bootstrap-pxc failed. "
                    "See traceback in show-action-output")
    action_set({
        'output':
        "Bootstrap succeeded. "
        "Wait for the other units to run update-status"
    })
    percona_utils.assess_status(percona_utils.register_configs())
 def test_assess_status(self):
     with mock.patch.object(percona_utils, 'assess_status_func') as asf:
         callee = mock.MagicMock()
         asf.return_value = callee
         percona_utils.assess_status('test-config')
         asf.assert_called_once_with('test-config')
         callee.assert_called_once_with()
 def test_assess_status(self):
     with mock.patch.object(percona_utils, 'assess_status_func') as asf:
         callee = mock.MagicMock()
         asf.return_value = callee
         percona_utils.assess_status('test-config')
         asf.assert_called_once_with('test-config')
         callee.assert_called_once_with()
Ejemplo n.º 6
0
 def test_bootstrapped_not_in_sync(self):
     self.config.return_value = 3
     self.is_sufficient_peers.return_value = True
     self.is_bootstrapped.return_value = True
     self.cluster_in_sync.return_value = False
     percona_utils.assess_status()
     self.status_set.assert_called_with('blocked', mock.ANY)
def main():
    try:
        hooks.execute(sys.argv)
    except UnregisteredHookError as e:
        log('Unknown hook {} - skipping.'.format(e))
    kvstore = kv()
    if not kvstore.get(INITIAL_CLIENT_UPDATE_KEY, False):
        update_client_db_relations()
    assess_status(register_configs())
def main():
    try:
        hooks.execute(sys.argv)
    except UnregisteredHookError as e:
        log('Unknown hook {} - skipping.'.format(e))
    kvstore = kv()
    if not kvstore.get(INITIAL_CLIENT_UPDATE_KEY, False):
        update_client_db_relations()
    assess_status(register_configs())
Ejemplo n.º 9
0
 def test_assess_status(self, get_upstream_version, application_version_set,
                        determine_packages):
     get_upstream_version.return_value = '5.6.17'
     determine_packages.return_value = ['percona-xtradb-cluster-server-5.6']
     with mock.patch.object(percona_utils, 'assess_status_func') as asf:
         callee = mock.Mock()
         asf.return_value = callee
         percona_utils.assess_status('test-config')
         asf.assert_called_once_with('test-config')
         callee.assert_called_once_with()
         get_upstream_version.assert_called_with(
             'percona-xtradb-cluster-server-5.6')
         application_version_set.assert_called_with('5.6.17')
 def test_assess_status_find_pkg(self, get_upstream_version,
                                 application_version_set,
                                 determine_packages, pxc_installed):
     get_upstream_version.side_effect = [None, None, '5.6.17']
     determine_packages.return_value = ['percona-xtradb-cluster-server']
     pxc_installed.return_value = True
     with mock.patch.object(percona_utils, 'assess_status_func') as asf:
         callee = mock.Mock()
         asf.return_value = callee
         percona_utils.assess_status('test-config')
         asf.assert_called_once_with('test-config')
         callee.assert_called_once_with()
         get_upstream_version.assert_called_with(
             'percona-xtradb-cluster-server-5.6')
         application_version_set.assert_called_with('5.6.17')
 def test_assess_status_find_pkg_fails(self, get_upstream_version,
                                       application_version_set,
                                       determine_packages, pxc_installed,
                                       log):
     get_upstream_version.return_value = None
     determine_packages.return_value = ['percona-xtradb-cluster-server']
     pxc_installed.return_value = True
     with mock.patch.object(percona_utils, 'assess_status_func') as asf:
         callee = mock.Mock()
         asf.return_value = callee
         percona_utils.assess_status('test-config')
         asf.assert_called_once_with('test-config')
         callee.assert_called_once_with()
         get_upstream_version.assert_called_with(
             'percona-xtradb-cluster-server-5.7')
         self.assertFalse(application_version_set.called)
         self.assertTrue(log.called)
def main():
    try:
        hooks.execute(sys.argv)
    except UnregisteredHookError as e:
        log('Unknown hook {} - skipping.'.format(e))
    assess_status(register_configs())
Ejemplo n.º 13
0
 def test_not_bootstrapped(self):
     self.config.return_value = 3
     self.is_sufficient_peers.return_value = True
     self.is_bootstrapped.return_value = False
     percona_utils.assess_status()
     self.status_set.assert_called_with('waiting', mock.ANY)
Ejemplo n.º 14
0
 def test_insufficient_peers(self):
     self.config.return_value = 3
     self.is_sufficient_peers.return_value = False
     percona_utils.assess_status()
     self.status_set.assert_called_with('blocked', mock.ANY)
Ejemplo n.º 15
0
 def test_single_unit(self):
     self.config.return_value = None
     self.is_sufficient_peers.return_value = True
     percona_utils.assess_status()
     self.status_set.assert_called_with('active', mock.ANY)