# 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.from .db import Databasefrom .configFileOps import configFileOpsfrom .serviceConfig import serviceCfgBasefrom .cloudException import CloudRuntimeException, CloudInternalExceptionfrom .utilities import bashimport osclass cloudManagementConfig(serviceCfgBase):def __init__(self, syscfg):super(cloudManagementConfig, self).__init__(syscfg)self.serviceName = "CloudStack Management Server"def config(self):def checkHostName():ret = bash("hostname --fqdn")if not ret.isSuccess():raise CloudInternalException("Cannot get hostname, 'hostname --fqdn failed'")if self.syscfg.env.svrMode == "mycloud":cfo = configFileOps("/usr/share/cloudstack-management/conf/environment.properties", self)cfo.addEntry("cloud-stack-components-specification", "components-cloudzones.xml")cfo.save()cfo = configFileOps("/usr/share/cloudstack-management/conf/db.properties", self)dbHost = cfo.getEntry("db.cloud.host")dbPort = cfo.getEntry("db.cloud.port")dbUser = cfo.getEntry("db.cloud.username")dbPass = cfo.getEntry("db.cloud.password")if dbPass.strip() == "":dbPass = NonedbName = cfo.getEntry("db.cloud.name")db = Database(dbUser, dbPass, dbHost, dbPort, dbName)try:db.testConnection()except CloudRuntimeException as e:raise eexcept:raise CloudInternalException("Failed to connect to Mysql server")try:statement = """ UPDATE configuration SET value='%s' WHERE name='%s'"""db.execute(statement%('true','use.local.storage'))db.execute(statement%('20','max.template.iso.size'))statement = """ UPDATE vm_template SET url='%s',checksum='%s' WHERE id='%s' """db.execute(statement%('https://rightscale-cloudstack.s3.amazonaws.com/kvm/RightImage_CentOS_5.4_x64_v5.6.28.qcow2.bz2', '90fcd2fa4d3177e31ff296cecb9933b7', '4'))statement="""UPDATE disk_offering set use_local_storage=1"""db.execute(statement)except:raise e#add DNAT 443 to 8250if not bash("iptables-save |grep PREROUTING | grep 8250").isSuccess():bash("iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-port 8250 ")elif self.syscfg.env.svrMode == "HttpsServer":if not bash("iptables-save |grep PREROUTING | grep 8443").isSuccess():bash("iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-port 8443")bash("touch /var/run/cloudstack-management.pid")bash("chown cloud.cloud /var/run/cloudstack-management.pid")checkHostName()bash("mkdir -p /var/lib/cloudstack/")bash("chown cloud:cloud -R /var/lib/cloudstack/")#set max process per account is unlimitedif os.path.exists("/etc/security/limits.conf"):cfo = configFileOps("/etc/security/limits.conf")cfo.add_lines("cloud soft nproc -1\n")cfo.add_lines("cloud hard nproc -1\n")cfo.save()if self.syscfg.env.noStart == False:self.syscfg.svo.stopService("cloudstack-management")if self.syscfg.svo.enableService("cloudstack-management"):return Trueelse:raise CloudRuntimeException("Failed to configure %s, please see the /var/log/cloudstack/management/setupManagement.log for detail"%self.serviceName)else:print("Configured successfully, but not starting management server.")return True
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型