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