saltstack二次开发构建自己的api-itnihao的运维技术博客
# Create your views here.# coding=utf-8
# author:itnihao#qq.com
# http://www.itnihao.com
# date: 2013-12-05
from django.http import HttpResponse
from django.contrib import auth
from django.views.decorators.csrf import csrf_exempt
import salt
import json
import yaml
@csrf_exempt
def control(request):
if request.method == "POST":
for k in ['id','status']:
if k not in request.POST:
data='give arg "{0}" a value'.format(k)
return HttpResponse(data,mimetype='application/json')
id=request.POST['id']
#servicename=request.POST['servicename']
status=request.POST['status']
id=str(id)
#servicename=str(servicename)
status=str(status)
result={}
'''
必须接的参数是status,可接的参数为id,servicename
available 服务是否有效,参数id,servicename
get_all 获取所有的服务状态,参数id
get_enabled 获取所有已经开启的服务,参数id
enable 设置开机自启动,参数id,servicename
enabled 返回开机是否为自启动状态,参数id,servicename
get_disabled获取所有已经关闭的服务,参数id
disable 设置开机不自启动,参数id,servicename
disabled 返回开机是否为不自启动状态,参数id,servicename
start 开启服务,参数id,servicename
stop 停止服务,参数id,servicename
restart 重启服务,参数id,servicename
reload 热加载配置文件,参数id,servicename
status 查看服务状态,参数id,servicename
'''
if status not in ['get_all','get_disabled','get_enabled','available','disable','disabled','enable','enabled','start','stop','restart','reload','status']:
data='status must in '
return HttpResponse(data,mimetype='application/json')
cmd='service.{0}'.format(status)
id=id.split(',')
if status in ['get_all','get_disabled','get_enabled']:
ret_dict=salt.client.LocalClient().cmd(id,cmd,expr_form='list',timeout=30)
if status in ['available','disable','disabled','enable','enabled','start','stop','restart','reload','status']:
for k in ['servicename']:
if k not in request.POST:
data='give arg "{0}" a value'.format(k)
return HttpResponse(data,mimetype='application/json')
servicename=request.POST['servicename']
ret=salt.client.LocalClient().cmd(id,cmd,,expr_form='list',timeout=300)
ret_dict={}
for k in ret.keys():
is_true=ret
msg='service name: {0},action: {1},result:'.format(servicename,status)
if is_true:
s1={'id':k,'status':'1','msg':msg+'ok'}
ret_dict.update(s1)
else:
s2={'id':k,'status':'0','msg':msg+'not ok'}
ret_dict.update(s2)
result.update(ret_dict)
data=json.dumps(result,sort_keys=True,indent=4,separators=(',',':'))
return HttpResponse(data,mimetype='application/json')
else:
return HttpResponse('method is not allowed',mimetype='application/json')
页:
[1]