|
问题描述:
解决云主机临时关机,自动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,requests
reload(sys)
sys.setdefaultencoding('utf8')
import datetime
from keystoneclient.auth.identity import v2
from keystoneclient.v2_0 import client as kclient
from novaclient import client as nclient
from cinderclient import client as cindercli
from keystoneclient import session
from oslo_log import log as logging
def 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())
""" |
|