in hostfactory/host_provider/src/cyclecloud_provider.py [0:0]
def main(argv=sys.argv): # pragma: no cover
operation_id = int(time.time())
try:
global logger
# every command has the format cmd -f input.json
cmd, ignore, input_json_path = argv[1:]
provider_config, logger, fine = util.provider_config_from_environment()
data_dir = os.getenv('PRO_DATA_DIR', os.getcwd())
conf_dir = os.getenv('PRO_CONF_DIR', os.getcwd())
hostnamer = util.Hostnamer(provider_config.get("cyclecloud.hostnames.use_fqdn", True))
cluster_name = provider_config.get("cyclecloud.cluster.name")
provider = CycleCloudProvider(config=provider_config,
cluster=cluster.Cluster(cluster_name, provider_config, logger),
hostnamer=hostnamer,
stdout_handler=JsonOutputHandler(quiet=False),
terminate_requests=JsonStore("terminate_requests.json", data_dir),
creation_requests=JsonStore("create_requests.json", data_dir),
clock=true_gmt_clock)
provider.fine = fine
input_json = util.load_json(input_json_path)
logger.info("BEGIN %s %s - %s %s", operation_id, cmd, ignore, input_json_path)
logger.debug("Input: %s", json.dumps(input_json))
if cmd == "validate_templates" or input_json.get("dry-run"):
provider.validate_template()
provider.dry_run = True
if cmd == "generate_templates":
provider.generate_sample_template()
if cmd == "templates":
logger.info("Using azurecc version %s", version.get_version())
provider.templates()
elif cmd == "create_machines":
provider.create_machines(input_json)
elif cmd in ["create_status"]:
if "requests" in input_json:
# provider.status handles both create_status and terminate_status calls.
provider.status(input_json)
else:
# should be impossible
raise RuntimeError("Unexpected input json for cmd %s" % (input_json, cmd))
elif cmd == "get_return_requests":
provider.get_return_requests(input_json)
elif cmd == "terminate_machines":
provider.terminate_machines(input_json)
elif cmd == "debug_completed_nodes":
provider.debug_completed_nodes()
# best effort cleanup.
provider.periodic_cleanup()
except ImportError as e:
logger.exception(str(e))
except Exception as e:
if logger:
logger.exception(str(e))
else:
import traceback
traceback.print_exc()
finally:
logger.info("END %s %s - %s %s", operation_id, cmd, ignore, input_json_path)