blob: bd5efa646e10980ec5c4cbc3ea2e4e4d91fc195d [file]
#!/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 sys, getopt, os
# Custom modules.
from cluster_actions import *
def main(argv):
action = ""
cluster_file_name = ""
deploy_path = ""
try:
opts, args = getopt.getopt(argv, "a:c:d:h", ["action=", "deploy_path="])
except getopt.GetoptError:
print 'The file options for cluster_cli.py were not correctly specified.'
print 'To see a full list of options try:'
print ' $ python cluster_cli.py -h'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'Options for pushing a benchmark:'
print ' -a (str) The action to perform (deploy, start, or stop).'
print ' -c The XML cluster configuration file.'
sys.exit()
elif opt in ('-a', "--action"):
# check if file exists.
if arg in ('deploy', 'start', 'stop', 'kill'):
action = arg
else:
print 'Error: Argument must be a string ("deploy", "start", "stop", or "kill") for --action (-a).'
sys.exit()
elif opt in ('-c', "--cluster"):
# check if file exists.
if os.path.exists(arg):
cluster_file_name = arg
else:
print 'Error: Argument must be a file name for --cluster (-c).'
sys.exit()
elif opt in ('-d', "--deploy_folder"):
# check if file exists.
if os.path.exists(arg):
if os.path.basename(arg) == "":
deploy_path = os.path.dirname(arg)
else:
deploy_path = arg
else:
print 'Error: Argument must be a file name for --deploy_folder (-d).'
sys.exit()
# Required fields to run the script.
if cluster_file_name == "" or not os.path.exists(cluster_file_name):
print 'Error: The cluster XML file option must be supplied: --cluster (-c).'
sys.exit()
# The action to take on the cluster.
cluster = ClusterActions(cluster_file_name)
if action == 'start':
cluster.start()
elif action == 'stop':
cluster.stop_cluster()
elif action == 'kill':
cluster.stop()
elif action == 'deploy':
if deploy_path != "":
cluster.deploy(deploy_path)
else:
print 'Error: The cluster cli must have a deploy_folder option when doing the deploy action: --deploy_folder (-d).'
sys.exit()
else:
print 'Error: The cluster cli must have an action option must be supplied: --action (-a).'
sys.exit()
if __name__ == "__main__":
main(sys.argv[1:])