91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

結合django動態生成salt的pillar數據

發布時間:2020-06-26 11:46:14 來源:網絡 閱讀:2077 作者:lihuipeng 欄目:開發技術

一、首先要讓salt-master找到我們自定義的腳本(/etc/salt/master):

結合django動態生成salt的pillar數據

使用ext_pillar 擴展自定義腳本,gameInfo就是腳本的名字,腳本的目錄要放在/usr/lib/python2.6/site-packages/salt/pillar這個目錄下面

新版可以支持自定義目錄,使用參數extension_modules: /srv/salt/modules


二、自定義腳本需要返回字典數據,gameInfo腳本如下:

#!/usr/bin/python
#coding:utf-8

import urllib2
import json
import logging

# Set up logging
log = logging.getLogger(__name__)

def __virtual__():
    return  True

def ext_pillar(minion_id, pillar, *args, **kwargs):
    try:
        ip = minion_id.split('-')[-1]
        url = 'http://xxx.xxx.com/public/api/SaltPillarInfo/{ip}/'.format(ip=ip)
        request = urllib2.urlopen(url=url, timeout=30)
        response = request.read()
        data = json.loads(response)
        logging.info("From URL:{url} get data:{data}".format(url=url, data=data))
    except Exception as e:
        logging.error(str(e))
        data = {}

    return {'gameInfo': data}

因為我的minionid是'game-192.168.1.1' 這種用途-ip的形式命名,minion_id.split('-')[-1]獲取出minion的IP,然后請求django提供的接口,將django返回的數據轉換成python數據格式直接返回出來


三、django代碼就很簡單了

url配置

from django.conf.urls import patterns, include, url
from views import *

urlpatterns = patterns('',
    url(r'^api/SaltPillarInfo/(?P<ip>.*)/$', SaltPillarInfoApiView.as_view()),
    以下省略。。。

)

views:

class SaltPillarInfoApiView(View):
    def get(self, request, ip):
        try:
            hostobj = GameHost.objects.using('res').get(Q(ip1=ip)|Q(ip2=ip), state=1)
            gamename = GameInfo.objects.using('res').get(id=hostobj.gameid).code
            plat = GamePlatform.objects.using('res').get(id=hostobj.platid).code
            serverlist = [ gsobj.serverid for gsobj in GameServer.objects.using('res').filter(hostid=hostobj.id, mergetarget__isnull=True) ]
            ret = {
                'gamename': gamename,
                'plat': plat,
                'serverlist': serverlist
            }
        except Exception as e:
            print str(e)
            ret = {}

        return HttpResponse(json.dumps(ret))

直接請求就是這個效果啦:

結合django動態生成salt的pillar數據


四、測試:

結合django動態生成salt的pillar數據

妥妥地給機器打上游戲,平臺,區服的標志了。。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

同仁县| 虎林市| 青岛市| 巴林右旗| 新巴尔虎左旗| 万载县| 嘉禾县| 新泰市| 集贤县| 抚顺县| 五寨县| 南昌县| 房山区| 青河县| 犍为县| 北川| 鲁甸县| 抚州市| 舞阳县| 武宁县| 炎陵县| 丹东市| 厦门市| 永康市| 靖安县| 泉州市| 红安县| 民丰县| 仪征市| 双江| 洛宁县| 通榆县| 沧州市| 乌拉特后旗| 太谷县| 江华| 四会市| 东台市| 托里县| 郴州市| 普格县|