mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-46 : Removing mycloud, due to the agreed on deprecation of that feature.
This commit is contained in:
parent
2afd076921
commit
c979425ce3
@ -1,153 +0,0 @@
|
||||
#!/usr/bin/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 logging
|
||||
import sys
|
||||
import socket
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
from cloudutils.cloudException import CloudRuntimeException, CloudInternalException
|
||||
from cloudutils.utilities import initLoging, bash
|
||||
from cloudutils.configFileOps import configFileOps
|
||||
from cloudutils.globalEnv import globalEnv
|
||||
from cloudutils.networkConfig import networkConfig
|
||||
from cloudutils.syscfg import sysConfigFactory
|
||||
|
||||
from optparse import OptionParser
|
||||
|
||||
url="http://rightscale-cloudstack.s3.amazonaws.com/kvm/centos/5.4/RightImage_CentOS_5.4_x64_v5.6.34.qcow2.bz2"
|
||||
destFolder="/mnt/template/tmpl/1/4/"
|
||||
metaFile="template.properties"
|
||||
|
||||
def getUserInputs():
|
||||
print "Welcome to myCloud Setup:"
|
||||
|
||||
mgtSvr = "myagent.cloud.com"
|
||||
|
||||
cfo = configFileOps("/etc/cloud/agent/agent.properties")
|
||||
oldToken = cfo.getEntry("zone")
|
||||
if oldToken == "default":
|
||||
oldToken = ""
|
||||
zoneToken = raw_input("Please input the Zone Token:[%s]"%oldToken)
|
||||
|
||||
if zoneToken == "":
|
||||
if oldToken == "":
|
||||
print "Please input a valid zone token"
|
||||
exit(1)
|
||||
zoneToken = oldToken
|
||||
|
||||
try:
|
||||
defaultNic = networkConfig.getDefaultNetwork()
|
||||
except:
|
||||
print "Failed to get default route. Please configure your network to add a default route"
|
||||
exit(1)
|
||||
|
||||
network = defaultNic.name
|
||||
|
||||
return [mgtSvr, zoneToken, network]
|
||||
|
||||
def downloadTemplate():
|
||||
if not os.path.exists(destFolder):
|
||||
os.makedirs(destFolder)
|
||||
oldName =url.split("/")[-1]
|
||||
templateFile=url.split("/")[-1].replace(".bz2","")
|
||||
|
||||
templateFullPath = destFolder + templateFile
|
||||
metaFullPath = destFolder + metaFile
|
||||
if os.path.exists(templateFullPath):
|
||||
if os.path.exists(metaFullPath):
|
||||
return True
|
||||
os.remove(templateFullPath)
|
||||
|
||||
print "Need to download myCloud template into your local disk, from " + url + " to " + destFolder + " :"
|
||||
try:
|
||||
proc = subprocess.Popen(["/bin/bash", "-c", "wget -O - " + url + " | bunzip2 > " + destFolder + templateFile])
|
||||
proc.communicate()
|
||||
ret = proc.poll()
|
||||
if ret is None or ret < 0:
|
||||
raise CloudRuntimeException("Failed to download template")
|
||||
except KeyboardInterrupt:
|
||||
if os.path.exists(templateFullPath):
|
||||
os.remove(templateFullPath)
|
||||
raise CloudRuntimeException("Downloading process is interrupted")
|
||||
|
||||
file = open(metaFullPath, "w")
|
||||
physicalSize = os.stat(templateFullPath).st_size
|
||||
virtualSize = bash("qemu-img info " + templateFullPath + " |grep virtual").getStdout().split("(")[1].split(" ")[0]
|
||||
cfo = configFileOps(metaFullPath)
|
||||
cfo.addEntry("filename", templateFile)
|
||||
cfo.addEntry("id", "4")
|
||||
cfo.addEntry("qcow2.size", str(physicalSize))
|
||||
cfo.addEntry("public", "true")
|
||||
cfo.addEntry("uniquename", "Rightscale CentOS 5.4")
|
||||
cfo.addEntry("qcow2.virtualsize", virtualSize)
|
||||
cfo.addEntry("virtualsize", virtualSize)
|
||||
cfo.addEntry("hvm", "true")
|
||||
cfo.addEntry("description", "Rightscale CentOS 5.4")
|
||||
cfo.addEntry("qcow2", "true")
|
||||
cfo.addEntry("qcow2.filename", templateFile)
|
||||
cfo.addEntry("size", str(physicalSize))
|
||||
cfo.save()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
initLoging("/var/log/cloud/setupAgent.log")
|
||||
|
||||
glbEnv = globalEnv()
|
||||
|
||||
glbEnv.mode = "Agent"
|
||||
glbEnv.agentMode = "myCloud"
|
||||
parser = OptionParser()
|
||||
parser.add_option("-z", "--zone-token", dest="zone", help="zone token")
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
if options.zone is None:
|
||||
userInputs = getUserInputs()
|
||||
glbEnv.mgtSvr = userInputs[0]
|
||||
glbEnv.zone = userInputs[1]
|
||||
glbEnv.defaultNic = userInputs[2]
|
||||
else:
|
||||
glbEnv.zone = options.zone
|
||||
try:
|
||||
defaultNic = networkConfig.getDefaultNetwork()
|
||||
glbEnv.defaultNic = defaultNic.name
|
||||
except:
|
||||
print "Failed to get default route. Please configure your network to have a default route"
|
||||
sys.exit(2)
|
||||
|
||||
#generate UUID
|
||||
glbEnv.uuid = configFileOps("/etc/cloud/agent/agent.properties").getEntry("guid")
|
||||
if glbEnv.uuid == "":
|
||||
glbEnv.uuid = bash("uuidgen").getStdout()
|
||||
|
||||
print "Starting to configure your system:"
|
||||
syscfg = sysConfigFactory.getSysConfigFactory(glbEnv)
|
||||
try:
|
||||
syscfg.config()
|
||||
downloadTemplate()
|
||||
syscfg.svo.stopService("cloud-agent")
|
||||
syscfg.svo.enableService("cloud-agent")
|
||||
print "myCloud setup is Done!"
|
||||
except (CloudRuntimeException,CloudInternalException), e:
|
||||
print e
|
||||
print "Try to restore your system:"
|
||||
try:
|
||||
syscfg.restore()
|
||||
except:
|
||||
pass
|
||||
Loading…
x
Reference in New Issue
Block a user