mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 01:32:18 +02:00
203 lines
5.1 KiB
Python
Executable File
203 lines
5.1 KiB
Python
Executable File
#!/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.
|
|
|
|
# Version @VERSION@
|
|
#
|
|
# A plugin for executing script needed by vmops cloud
|
|
|
|
import os, sys, time
|
|
import XenAPIPlugin
|
|
|
|
if os.path.exists("/opt/xensource/sm"):
|
|
sys.path.extend(["/opt/xensource/sm/", "/usr/local/sbin/", "/sbin/"])
|
|
if os.path.exists("/usr/lib/xcp/sm"):
|
|
sys.path.extend(["/usr/lib/xcp/sm/", "/usr/local/sbin/", "/sbin/"])
|
|
import util
|
|
import socket
|
|
import cloudstack_pluginlib as lib
|
|
import logging
|
|
|
|
lib.setup_logging("/var/log/cloud/cloud.log")
|
|
|
|
|
|
def echo(fn):
|
|
def wrapped(*v, **k):
|
|
name = fn.__name__
|
|
logging.debug("#### CLOUD enter %s ####" % name)
|
|
res = fn(*v, **k)
|
|
logging.debug("#### CLOUD exit %s ####" % name)
|
|
return res
|
|
|
|
return wrapped
|
|
|
|
|
|
@echo
|
|
def forceShutdownVM(session, args):
|
|
domId = args["domId"]
|
|
try:
|
|
cmd = ["/opt/xensource/debug/xenops", "destroy_domain", "-domid", domId]
|
|
txt = util.pread2(cmd)
|
|
except:
|
|
txt = "10#failed"
|
|
return txt
|
|
|
|
|
|
@echo
|
|
def create_privatetemplate_from_snapshot(session, args):
|
|
templatePath = args["templatePath"]
|
|
snapshotPath = args["snapshotPath"]
|
|
tmpltLocalDir = args["tmpltLocalDir"]
|
|
try:
|
|
cmd = [
|
|
"bash",
|
|
"/opt/cloud/bin/create_privatetemplate_from_snapshot.sh",
|
|
snapshotPath,
|
|
templatePath,
|
|
tmpltLocalDir,
|
|
]
|
|
txt = util.pread2(cmd)
|
|
except:
|
|
txt = "10#failed"
|
|
return txt
|
|
|
|
|
|
@echo
|
|
def upgrade_snapshot(session, args):
|
|
templatePath = args["templatePath"]
|
|
snapshotPath = args["snapshotPath"]
|
|
try:
|
|
cmd = ["bash", "/opt/cloud/bin/upgrate_snapshot.sh", snapshotPath, templatePath]
|
|
txt = util.pread2(cmd)
|
|
except:
|
|
txt = "10#failed"
|
|
return txt
|
|
|
|
|
|
@echo
|
|
def copy_vhd_to_secondarystorage(session, args):
|
|
mountpoint = args["mountpoint"]
|
|
vdiuuid = args["vdiuuid"]
|
|
sruuid = args["sruuid"]
|
|
try:
|
|
cmd = [
|
|
"bash",
|
|
"/opt/cloud/bin/copy_vhd_to_secondarystorage.sh",
|
|
mountpoint,
|
|
vdiuuid,
|
|
sruuid,
|
|
]
|
|
txt = util.pread2(cmd)
|
|
except:
|
|
txt = "10#failed"
|
|
return txt
|
|
|
|
|
|
@echo
|
|
def copy_vhd_from_secondarystorage(session, args):
|
|
mountpoint = args["mountpoint"]
|
|
sruuid = args["sruuid"]
|
|
namelabel = args["namelabel"]
|
|
try:
|
|
cmd = [
|
|
"bash",
|
|
"/opt/cloud/bin/copy_vhd_from_secondarystorage.sh",
|
|
mountpoint,
|
|
sruuid,
|
|
namelabel,
|
|
]
|
|
txt = util.pread2(cmd)
|
|
except:
|
|
txt = "10#failed"
|
|
return txt
|
|
|
|
|
|
@echo
|
|
def remove_corrupt_vdi(session, args):
|
|
vdifile = args["vdifile"]
|
|
try:
|
|
cmd = ["rm", "-f", vdifile]
|
|
txt = util.pread2(cmd)
|
|
except:
|
|
txt = "10#failed"
|
|
return txt
|
|
|
|
|
|
@echo
|
|
def setup_heartbeat_sr(session, args):
|
|
host = args["host"]
|
|
sr = args["sr"]
|
|
try:
|
|
cmd = ["bash", "/opt/cloud/bin/setup_heartbeat_sr.sh", host, sr]
|
|
txt = util.pread2(cmd)
|
|
except:
|
|
txt = ""
|
|
return txt
|
|
|
|
|
|
@echo
|
|
def setup_heartbeat_file(session, args):
|
|
host = args["host"]
|
|
sr = args["sr"]
|
|
add = args["add"]
|
|
try:
|
|
cmd = ["bash", "/opt/cloud/bin/setup_heartbeat_file.sh", host, sr, add]
|
|
txt = util.pread2(cmd)
|
|
except:
|
|
txt = ""
|
|
return txt
|
|
|
|
|
|
@echo
|
|
def heartbeat(session, args):
|
|
host = args["host"]
|
|
timeout = args["timeout"]
|
|
interval = args["interval"]
|
|
try:
|
|
cmd = ["/bin/bash", "/opt/cloud/bin/launch_hb.sh", host, timeout, interval]
|
|
txt = util.pread2(cmd)
|
|
except:
|
|
txt = "fail"
|
|
return txt
|
|
|
|
|
|
@echo
|
|
def asmonitor(session, args):
|
|
try:
|
|
perfmod = __import__("perfmon")
|
|
result = perfmod.get_vm_group_perfmon(args)
|
|
return result
|
|
except:
|
|
return "fail"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
XenAPIPlugin.dispatch(
|
|
{
|
|
"forceShutdownVM": forceShutdownVM,
|
|
"upgrade_snapshot": upgrade_snapshot,
|
|
"create_privatetemplate_from_snapshot": create_privatetemplate_from_snapshot,
|
|
"copy_vhd_to_secondarystorage": copy_vhd_to_secondarystorage,
|
|
"copy_vhd_from_secondarystorage": copy_vhd_from_secondarystorage,
|
|
"setup_heartbeat_sr": setup_heartbeat_sr,
|
|
"setup_heartbeat_file": setup_heartbeat_file,
|
|
"heartbeat": heartbeat,
|
|
"asmonitor": asmonitor,
|
|
"remove_corrupt_vdi": remove_corrupt_vdi,
|
|
}
|
|
)
|