????
Current Path : /proc/324102/root/usr/sbin/ |
Current File : //proc/324102/root/usr/sbin/cl-link-to-cln |
#!/usr/bin/python import sys import optparse import json import time from pyexpat import ExpatError sys.path.append("/usr/share/rhn/") from up2date_client import rhnserver from up2date_client import up2dateAuth from up2date_client import up2dateErrors from up2date_client import rhnreg def print_error_and_exit(error): print(json.dumps({'result': error, 'timestamp': time.time()})) sys.exit(-1) def main(): parser = optparse.OptionParser() parser.add_option('-t', '--linking-token', dest='token', help='Token to link the server') parser.add_option('-s', '--linking-status', dest='status', action='store_true', help='Show if status linked or not') options, args = parser.parse_args() if options.token and options.status: print_error_and_exit("Invalid usage, --linking-status and --linking-token could not " "be specified simultaneously") if not options.token and not options.status: print_error_and_exit("Invalid usage, --linking-status or --linking-token must be specified") system_id_xml = up2dateAuth.getSystemId() if not system_id_xml: print_error_and_exit('Unable to read system id, please ensure your server is registered in CLN') if options.token: link_server(system_id_xml, options.token) print(json.dumps({'result': 'success', 'timestamp': time.time()})) elif options.status: linked_info = get_linked_info(system_id_xml) print(json.dumps({'result': 'success', 'timestamp': time.time(), 'linked': linked_info['linked'], 'linkable': linked_info['linkable']})) else: print_error_and_exit('Invalid usage, only supported options are: --linking-status or --linking-token') def link_server(system_id, token): s = rhnserver.RhnServer() try: s.up2date.link_server(system_id, token) except ExpatError as e: # CLN returns empty response when success if 'no element found' not in e.message: raise rhnreg.getAndWriteJWTTokenToFile(system_id) def get_linked_info(system_id): s = rhnserver.RhnServer() return {'linked': s.up2date.is_server_linked(system_id), 'linkable': s.up2date.is_server_linkable(system_id)} if __name__ == "__main__": try: main() except up2dateErrors.UnknownMethodException as e: print_error_and_exit('CLN does not support method for linking server. %s \n' 'Contact CloudLinux support in case you need help: ' 'https://cloudlinux.zendesk.com/' % str(e)) except up2dateErrors.RhnServerException as e: print_error_and_exit('Server exception, reason: %s \n' 'Contact CloudLinux support in case you need help: ' 'https://cloudlinux.zendesk.com/' % str(e)) except Exception as e: print_error_and_exit('Failed with common exception: %s \n' 'Contact CloudLinux support in case you need help: ' 'https://cloudlinux.zendesk.com/' % str(e))