#!/usr/bin/env python


import sys
import os

def error(message):
	sys.stderr.write(str(message))
	sys.stderr.flush()

def usage():
	error("usage: msctl [ stop | setload load_value ]\n")

if len(sys.argv) < 2:
	usage()
	sys.exit(1)

command = sys.argv[1]
if command not in [ "stop","setload" ]:
	usage()
	sys.exit(1)

from MetadataService import Config
config = Config.get()
sockaddr = config.get_socket()


import xmlrpclib
from UnixSocketTransport import UnixSocketTransport
import socket

# Create an object to represent our server.
server_url = 'http://localhost:2081/';
socket_filename = sockaddr
server = xmlrpclib.ServerProxy(server_url,UnixSocketTransport(socket_filename))

def handle_socket_error(e):
	error("Cannot contact metadata service through %s\n"%socket_filename)
	sys.exit(3)

if command == "setload":
	try: target_load = float(sys.argv[2])
	except:
		usage()
		sys.exit(1)

	try: results = server.loadController.setTargetLoad(target_load)
	except socket.error,e:
		handle_socket_error(e)
	if results is not True:
		error("Cannot set target load: ")
		error(results)
		error("\n")
		sys.exit(2)

if command == "stop":
	try: results = server.metadataService.shutDown()
	except socket.error,e:
		handle_socket_error(e)
	if results is not True:
		error("Cannot stop metadata service: ")
		error(results)
		error("\n")
		sys.exit(2)


sys.exit(0)
