mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-21 11:12:04 +00:00
77 lines
2.3 KiB
Python
Executable File
77 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- encoding: utf-8 -*-
|
|
# just for test
|
|
from __future__ import print_function
|
|
|
|
import argparse
|
|
import json
|
|
import os
|
|
import socket
|
|
import sys
|
|
from common import utils
|
|
|
|
class ClientShell(object):
|
|
def get_base_parser(self):
|
|
parser = argparse.ArgumentParser(
|
|
prog='agentclient',
|
|
add_help=False,
|
|
formatter_class=HelpFormatter,
|
|
)
|
|
parser.add_argument('-h', '--help',
|
|
action='store_true',
|
|
help=argparse.SUPPRESS,
|
|
)
|
|
parser.add_argument('--sock',
|
|
help="The unix domain sock file to communicate "
|
|
"with the server",
|
|
default='/var/run/xcat/agent.sock',
|
|
type=str)
|
|
return parser
|
|
|
|
def do_help(self, args):
|
|
self.parser.print_help()
|
|
|
|
def main(self, argv):
|
|
self.parser = self.get_base_parser()
|
|
(options, args) = self.parser.parse_known_args(argv)
|
|
|
|
if options.help:
|
|
self.do_help(options)
|
|
return 0
|
|
|
|
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
|
nodes = ['node1', 'node2']
|
|
nodeinfo = {'node1':{'bmc':'10.0.0.1', 'bmcip':'10.0.0.1', 'username':'root', 'password': 'xxxxxx'},
|
|
'node2':{'bmc':'10.0.0.2', 'bmcip':'10.0.0.2', 'username':'root', 'password': 'xxxxxx'}}
|
|
|
|
s.connect(options.sock)
|
|
req = {'module': 'openbmc',
|
|
'command': 'rpower',
|
|
'args': ['state'],
|
|
'cwd': os.getcwd(),
|
|
'nodes': nodes,
|
|
'nodeinfo': nodeinfo,
|
|
'envs': {'debugmode': 1}}
|
|
|
|
buf = json.dumps(req)
|
|
s.send(utils.int2bytes(len(buf)))
|
|
s.send(buf.encode('utf-8'))
|
|
while True:
|
|
sz = s.recv(4)
|
|
if len(sz) == 0:
|
|
break
|
|
sz = utils.bytes2int(sz)
|
|
data = s.recv(sz).decode('utf-8')
|
|
print(data)
|
|
|
|
|
|
class HelpFormatter(argparse.HelpFormatter):
|
|
def start_section(self, heading):
|
|
# Title-case the headings
|
|
heading = '%s%s' % (heading[0].upper(), heading[1:])
|
|
super(HelpFormatter, self).start_section(heading)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
ClientShell().main(sys.argv[1:])
|