| #!/usr/bin/env python |
| |
| # ----------------------------------------------------------------------- |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # ----------------------------------------------------------------------- |
| |
| |
| |
| import os |
| import sys |
| import getopt |
| import subprocess |
| import re |
| import string |
| |
| global DUCC_HOME |
| global autostart |
| |
| |
| DUCC_HOME = os.environ['HOME'] + '/ducc/install' |
| autostart = True |
| |
| |
| def usage(msg): |
| if (msg != None): |
| print msg |
| |
| print 'Runs a ping-only service on the indicated endpoint.' |
| print '' |
| print 'Usage:' |
| print '' |
| print ' customsvc options' |
| print '' |
| print ' -r, --runtime <ducc_home> The location of DUCC_HOME. Default is ', DUCC_HOME |
| print ' --na No autostart Default is', (not autostart) |
| print ' -h, -? --help This message' |
| print '' |
| print 'This always runs as a CUSTOM pinger.' |
| print '' |
| sys.exit(0) |
| |
| def format_classpath(cp): |
| toks = cp.split(':') |
| for c in toks: |
| print ' ', c |
| |
| def main(): |
| |
| global DUCC_HOME |
| global autostart |
| global log_pinger |
| |
| try: |
| opts, args = getopt.getopt(sys.argv[1:], 'r:?h', ['na', 'runtime=', 'help']) |
| except: |
| print "Unknown option" |
| usage(None) |
| |
| for ( o, a ) in opts: |
| if o in ('-r', '--runtime') : |
| DUCC_HOME = a |
| elif o in ('--na'): |
| autostart = False |
| elif o in ('-?', '-h'): |
| usage(None) |
| else: |
| usage(None) |
| |
| DUCCLIB = os.environ['HOME'] + '/ducclib' |
| |
| project_home = os.path.abspath('..') |
| |
| if(autostart): |
| description = 'Custom Service Type auto-start' |
| else: |
| description = 'Custom Service Type on-demand' |
| |
| props = { |
| 'description' : description, |
| 'service_request_endpoint' : 'CUSTOM:localhost:7175', |
| |
| 'service_ping_dolog' : 'false', |
| 'autostart' : str(autostart), |
| 'service_ping_class' : 'CustomPing', |
| 'service_ping_classpath' : os.getcwd(), |
| 'service_ping_timeout' : '10000', |
| 'process_executable' : 'service', |
| 'process_executable_args' : '7175' |
| |
| } |
| |
| print 'Service setup using' |
| print ' project_home : ' + project_home |
| print ' DUCC_HOME : ' + DUCC_HOME |
| print ' autostart : ' + str(autostart) |
| print ' CLASSPATH:' |
| format_classpath(props['service_ping_classpath']) |
| |
| print 'Register new service' |
| CMD = DUCC_HOME + '/bin/ducc_services --register ' |
| for k in props.keys(): |
| v = props[k] |
| if ( v == None ): |
| CMD = CMD + '--' + k + ' ' |
| else: |
| CMD = CMD + '--' + k + ' ' + "'" + props[k] + "' " |
| print CMD |
| os.system(CMD) |
| return |
| |
| main() |