问题描述:
解决云主机临时关机,自动running 云主机,减少登机器操作,采用的模块是openstack 组件相关模块,需要在控制节点上开发
"""@Item : cheetah v1.0@Author : william@Group : System YunWei@Date : 2017-03-15@E-mail : swq.499809608@hotmail.com@Funtion:"""import os,sys,time,socket,json,threading,traceback,shutil,requestsreload(sys) sys.setdefaultencoding('utf8') import datetimefrom keystoneclient.auth.identity import v2from keystoneclient.v2_0 import client as kclientfrom novaclient import client as nclientfrom cinderclient import client as cinderclifrom keystoneclient import sessionfrom oslo_log import log as loggingdef LOG(level,info): fp = open('/var/log/nova/shutdonw.log','a') fp.write("%s %s %s \n"%(time.ctime(),level,info)) fp.close()class Openstack(object): def __init__(self): version = "v1.0" def get_node_instances(self): ops_dict = dict() auths = v2.Password( auth_url = 'http://127.0.0.1:35357/v2.0/', username = 'admin', password = 'adminxxxx', tenant_name = 'admin', ) # session connect try: sess = session.Session(auth=auths) nova_client = nclient.Client('2',session=sess) except: LOG("Error",'OpenStack %s auth conn faild '%(k)) # time sleep 3 ,get nova-manager service list result instances = nova_client.servers.list(search_opts={'all_tenants': 1}) for ins in instances: if ins.status == 'SHUTOFF': time.sleep(3) ins.start() LOG("INFO","%s,%s,%s"%(ins.id,ins.name,ins.addresses)) if __name__ == "__main__": sc = Openstack() sc.get_node_instances()""" try: pid = os.fork() if pid > 0 : sys.exit(0) os.setsid() os.chdir('/') sys.stdin = open("/dev/null","r+") sys.stdout = os.dup(sys.stdin.fileno()) sys.stderr = os.dup(sys.stdin.fileno()) print 'yes' while True: LOG("INFO","Shutting start") time.sleep(6) sc = Openstack() sc.get_node_instances() except IOError,e: print e LOG("Error",traceback.format_exc())"""