Exemplo n.º 1
0
    def configure(server, features, parent, partition, memory, cpu, disk):
        """Create, get or modify server configuration"""
        if parent:
            path = parent.split('/')
            bucket = None
            for bucket, bucket_parent in zip(path, [None] + path[:-1]):
                masterapi.create_bucket(context.GLOBAL.zk.conn, bucket,
                                        bucket_parent)
            assert bucket is not None, 'server topology missing.'

            masterapi.create_server(context.GLOBAL.zk.conn,
                                    server,
                                    bucket,
                                    partition=partition)

        features = cli.combine(features)
        if features:
            # This is special case - reset features to empty.
            if features == ['-']:
                features = []

            masterapi.update_server_features(context.GLOBAL.zk.conn, server,
                                             features)

        if memory or cpu or disk:
            masterapi.update_server_capacity(context.GLOBAL.zk.conn,
                                             server,
                                             memory=memory,
                                             cpu=cpu,
                                             disk=disk)

        server_obj = masterapi.get_server(context.GLOBAL.zk.conn, server)
        server_obj['name'] = server

        cli.out(formatter(server_obj))
Exemplo n.º 2
0
    def test_update_server_features(self):
        """Tests master.update_server_features()."""
        zkclient = kazoo.client.KazooClient()
        kazoo.client.KazooClient.create.return_value = '/events/000-servers-1'

        masterapi.update_server_features(zkclient, 'foo.ms.com', ['test'])

        kazoo.client.KazooClient.set.assert_has_calls(
            [
                mock.call('/servers/foo.ms.com', b'features: [test]\n'),
            ],
            any_order=True
        )
        # Verify that event is placed correctly.
        kazoo.client.KazooClient.create.assert_called_with(
            '/events/000-servers-', mock.ANY,
            makepath=True, acl=mock.ANY, sequence=True, ephemeral=False
        )