| #!/usr/bin/python3 | |
| # 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 | |
| # ---- This snippet of code adds the sources path and the waf configured PYTHONDIR to the Python path ---- | |
| # ---- We do this so cloud_utils can be looked up in the following order: | |
| # ---- 1) Sources directory | |
| # ---- 2) waf configured PYTHONDIR | |
| # ---- 3) System Python path | |
| for pythonpath in ( | |
| "@PYTHONDIR@", | |
| os.path.join(os.path.dirname(__file__),os.path.pardir,os.path.pardir,"python","lib"), | |
| ): | |
| if os.path.isdir(pythonpath): sys.path.insert(0,pythonpath) | |
| # ---- End snippet of code ---- | |
| from cloudutils.syscfg import sysConfigFactory | |
| from cloudutils.utilities import initLoging, UnknownSystemException | |
| from cloudutils.cloudException import CloudRuntimeException, CloudInternalException | |
| from cloudutils.globalEnv import globalEnv | |
| from cloudutils.serviceConfigServer import cloudManagementConfig | |
| from optparse import OptionParser | |
| if __name__ == '__main__': | |
| initLoging("@MSLOGDIR@/setupManagement.log") | |
| glbEnv = globalEnv() | |
| parser = OptionParser() | |
| parser.add_option("--https", action="store_true", dest="https", help="Enable HTTPs connection of management server") | |
| parser.add_option("--tomcat7", action="store_true", dest="tomcat7", help="Depreciated option, don't use it") | |
| parser.add_option("--no-start", action="store_true", dest="nostart", help="Do not start management server after successful configuration") | |
| (options, args) = parser.parse_args() | |
| if options.https: | |
| glbEnv.svrMode = "HttpsServer" | |
| if options.tomcat7: | |
| print("The --tomcat7 option is deprecated, CloudStack now uses embedded Jetty server.") | |
| if options.nostart: | |
| glbEnv.noStart = True | |
| glbEnv.mode = "Server" | |
| print("Starting to configure CloudStack Management Server:") | |
| try: | |
| syscfg = sysConfigFactory.getSysConfigFactory(glbEnv) | |
| except UnknownSystemException: | |
| print("Error: CloudStack failed to detect your " | |
| "operating system. Exiting.", file=sys.stderr) | |
| sys.exit(1) | |
| try: | |
| syscfg.registerService(cloudManagementConfig) | |
| syscfg.config() | |
| print("CloudStack Management Server setup is Done!") | |
| print("Please ensure ports 8080, 8250, 8443, and 9090 are opened and not firewalled for the management server and not in use by other processes on this host.") | |
| except (CloudRuntimeException, CloudInternalException) as e: | |
| print(e) | |
| print("Try to restore your system:") | |
| try: | |
| syscfg.restore() | |
| except: | |
| pass |