from ganeti import mcpu
from ganeti import constants
from ganeti import opcodes
+from ganeti import luxi
from optparse import (OptionParser, make_option, TitledHelpFormatter,
Option, OptionValueError, SUPPRESS_HELP)
-__all__ = ["DEBUG_OPT", "NOHDR_OPT", "SEP_OPT", "GenericMain", "SubmitOpCode",
+__all__ = ["DEBUG_OPT", "NOHDR_OPT", "SEP_OPT", "GenericMain",
+ "SubmitOpCode", "SubmitJob", "SubmitQuery",
"cli_option", "GenerateTable", "AskUser",
"ARGS_NONE", "ARGS_FIXED", "ARGS_ATLEAST", "ARGS_ANY", "ARGS_ONE",
"USEUNITS_OPT", "FIELDS_OPT", "FORCE_OPT",
return proc.ExecOpCode(op)
+def SubmitJob(job, cl=None):
+ if cl is None:
+ cl = luxi.Client()
+ jid = cl.SubmitJob(job)
+ return jid
+
+
+def SubmitQuery(data, cl=None):
+ if cl is None:
+ cl = luxi.Client()
+ result = cl.Query(data)
+ if not result['success']:
+ raise ValueError(result)
+ return result['result']
+
+
def FormatError(err):
"""Return a formatted error message for a given error.
import time
from ganeti import opcodes
+from ganeti import constants
KEY_REQUEST = 'request'
implements data serialization/deserialization.
"""
- def __init__(self, address, timeouts=None, transport=Transport):
+ def __init__(self, address=None, timeouts=None, transport=Transport):
"""Constructor for the Client class.
Arguments:
class are used.
"""
+ if address is None:
+ address = constants.MASTER_SOCKET
self.transport = transport(address, timeouts=timeouts)
def SendRequest(self, request, data):