示例#1
0
def _blackout_server(zkclient, server, reason):
    """Blackout server."""
    if not reason:
        raise click.UsageError('--reason is required.')

    path = z.path.blackedout_server(server)
    zkutils.ensure_exists(zkclient,
                          path,
                          acl=[zkutils.make_host_acl(server, 'rwcda')],
                          data=str(reason))
    presence.kill_node(zkclient, server)
示例#2
0
    def test_kill(self):
        """Checks removal of the endpoints."""
        zk_content = {
            'running': {
                'myproid.aaa': b'xxx.xx.com',
                'myproid.bbb': b'yyy.xx.com'
            },
            'endpoints': {
                'myproid': {
                    'aaa:tcp:http': b'xxx.xx.com:1234',
                    'bbb:tcp:http': b'yyy.xx.com:1234',
                },
            },
            'servers': {
                'xxx.xx.com': {},
            },
            'server.presence': {
                'xxx.xx.com': {},
            },
            'placement': {
                'xxx.xx.com': {
                    'myproid.aaa': {},
                    'myproid.bbb': {},
                }
            },
            'scheduled': {
                'myproid.aaa': {
                    'endpoints': [{
                        'name': 'http',
                        'port': 8888
                    }],
                },
                'myproid.bbb': {
                    'endpoints': [{
                        'name': 'http',
                        'port': 8888
                    }],
                },
            }
        }
        self.make_mock_zk(zk_content)
        presence.kill_node(self.zkclient, 'xxx.xx.com')

        # aaa running node is removed.
        self.assertNotIn('myproid.aaa', zk_content['running'])
        # bbb is not removed, as 'running' node has different hostname.
        self.assertIn('myproid.bbb', zk_content['running'])

        # Same for endpoints - aaa is removed, bbb is not.
        self.assertNotIn('aaa:tcp:http', zk_content['endpoints']['myproid'])
        self.assertIn('bbb:tcp:http', zk_content['endpoints']['myproid'])

        self.assertNotIn('xxx.xx.com', zk_content['server.presence'])
示例#3
0
def delete_servers_by_name(servers, pool=None):
    """Delete servers by name."""
    _LOGGER.info('Deleting servers: %r', servers)

    zkclient = context.GLOBAL.zk.conn
    for server in servers:
        try:
            presence.kill_node(zkclient, server)
        except kazoo.exceptions.NoNodeError:
            pass

    if pool:
        batches = _split_list(servers, pool.workers)
        for _res, err in pool.map(_delete_hosts_no_exc, batches):
            if err:
                raise err
    else:
        _delete_hosts(servers)
示例#4
0
def delete_servers_by_name(servers):
    """Delete servers by name."""
    ec2_conn = awscontext.GLOBAL.ec2
    ipa_client = awscontext.GLOBAL.ipaclient
    admin_srv = context.GLOBAL.admin.server()
    zkclient = context.GLOBAL.zk.conn

    _LOGGER.info('Deleting servers: %r', servers)

    for server in servers:
        try:
            presence.kill_node(zkclient, server)
        except kazoo.exceptions.NoNodeError:
            pass

    hostmanager.delete_hosts(ipa_client=ipa_client,
                             ec2_conn=ec2_conn,
                             hostnames=servers)

    for server in servers:
        admin_srv.delete(server)