def configure(server, features, parent, memory, cpu, disk): """Create, get or modify server configuration""" if parent: path = parent.split('/') bucket = None for bucket, parent in zip(path, [None] + path[:-1]): master.create_bucket(context.GLOBAL.zk.conn, bucket, parent) assert bucket is not None, 'server topology missing.' master.create_server(context.GLOBAL.zk.conn, server, bucket) features = cli.combine(features) if features: # This is special case - reset features to empty. if features == ['-']: features = [] master.update_server_features(context.GLOBAL.zk.conn, server, features) if memory or cpu or disk: master.update_server_capacity(context.GLOBAL.zk.conn, server, memory=memory, cpu=cpu, disk=disk) server_obj = master.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' master.update_server_features(zkclient, 'foo.ms.com', ['webauthd']) kazoo.client.KazooClient.set.assert_has_calls( [mock.call('/servers/foo.ms.com', 'features: [webauthd]\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)