vike681 发表于 2018-8-1 11:42:43

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]
查看完整版本: saltstack二次开发构建自己的api-itnihao的运维技术博客