问题描述:

    解决云主机临时关机,自动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())"""