def host_command(host_id): logger.debug("host_command({host_id})".format(**locals())) if host_id not in Servers(): return send_result(404) command = get_json(request.body).get('action') if command is None: raise RequestError('Expected body with an {"action": ...}.') result = { 'command_result': Servers().command(host_id, command), 'links': all_server_links(host_id, rel_to='server-command') } result['links'].append(server_link('get-servers')) return send_result(200, result)
def member_update(rs_id, member_id): logger.debug("member_update({rs_id}, {member_id})".format(**locals())) member_id = int(member_id) if rs_id not in ReplicaSets(): return send_result(404) data = get_json(request.body) ReplicaSets().member_update(rs_id, member_id, data) result = ReplicaSets().member_info(rs_id, member_id) result['links'] = _build_member_links(rs_id, result) result['links'].extend(_build_member_parent_links(rs_id)) result['links'].append(replica_set_link( 'update-replica-set-member-config', rs_id, member_id, self_rel=True)) return send_result(200, result)
def sh_command(cluster_id): logger.debug("sh_command({cluster_id})".format(**locals())) if cluster_id not in ShardedClusters(): return send_result(404) command = get_json(request.body).get('action') if command is None: raise RequestError('Expected body with an {"action": ...}.') result = { 'command_result': ShardedClusters().command(cluster_id, command), 'links': all_sharded_cluster_links(cluster_id, rel_to='sharded-cluster-command') } return send_result(200, result)
def host_create(): data = get_json(request.body) data = preset_merge(data, 'servers') result = _host_create(data) result['links'].extend([ base_link('service'), base_link('get-releases'), server_link('get-servers'), server_link('add-server', self_rel=True), replica_set_link('get-replica-sets'), sharded_cluster_link('get-sharded-clusters') ]) return send_result(200, result)
def member_add(rs_id): logger.debug("member_add({rs_id})".format(**locals())) if rs_id not in ReplicaSets(): return send_result(404) data = get_json(request.body) member_id = ReplicaSets().member_add(rs_id, data) result = ReplicaSets().member_info(rs_id, member_id) result['links'] = _build_member_links(rs_id, result) result['links'].extend( _build_member_parent_links(rs_id, 'add-replica-set-member')) result['links'].append( replica_set_link('add-replica-set-member', self_rel=True)) return send_result(200, result)
def rs_command(rs_id): logger.debug("rs_command({rs_id})".format(**locals())) if rs_id not in ReplicaSets(): return send_result(404) command = get_json(request.body).get('action') if command is None: raise RequestError('Expected body with an {"action": ...}.') result = { 'command_result': ReplicaSets().command(rs_id, command), 'links': all_replica_set_links(rs_id, 'replica-set-command') } result['links'].append( replica_set_link('replica-set-command', self_rel=True)) return send_result(200, result)
def router_add(cluster_id): logger.debug("router_add({cluster_id})".format(**locals())) if cluster_id not in ShardedClusters(): return send_result(404) data = get_json(request.body) result = ShardedClusters().router_add(cluster_id, data) router_id = result['id'] result['links'] = [ server_link('get-server-info', router_id), sharded_cluster_link('add-router', cluster_id, self_rel=True), sharded_cluster_link('delete-router', cluster_id, router_id=router_id), sharded_cluster_link('get-sharded-cluster-info', cluster_id), sharded_cluster_link('get-routers', cluster_id), ] return send_result(200, result)
def rs_create_by_id(rs_id): logger.debug("rs_create_by_id()") data = get_json(request.body) data = preset_merge(data, 'replica_sets') data['id'] = rs_id result = _rs_create(data) result['links'].extend([ base_link('service'), base_link('get-releases'), sharded_cluster_link('get-sharded-clusters'), replica_set_link('get-replica-sets'), replica_set_link('add-replica-set'), replica_set_link('add-replica-set-by-id', rs_id, self_rel=True), server_link('get-servers') ]) return send_result(200, result)
def shard_add(cluster_id): logger.debug("shard_add({cluster_id})".format(**locals())) if cluster_id not in ShardedClusters(): return send_result(404) data = get_json(request.body) result = ShardedClusters().member_add(cluster_id, data) resource_id = result['_id'] shard_id = result['id'] result['links'] = [ sharded_cluster_link('get-shard-info', cluster_id, shard_id), sharded_cluster_link('delete-shard', cluster_id, shard_id), sharded_cluster_link('add-shard', cluster_id, self_rel=True), sharded_cluster_link('get-sharded-cluster-info', cluster_id), sharded_cluster_link('get-shards', cluster_id) ] result['links'].append(_server_or_rs_link(result)) return send_result(200, result)