#!/usr/bin/env python
#coding:utf-8
import os
import json
import subprocess

##conf path
cfg_json="/usr/local/open_falcon/agent/config/cfg.json"

host_info={
        "192.168.0.50":"252m-api-50",
        "192.168.0.71":"250m-elkstatck01-71",
	"192.1698.0.72":"250m-elkstatck01-72",
	"192.1698.0.73":"250m-elkstatck01-73",
	"192.1698.0.77":"250m-buffer-77",
	"192.1698.0.91":"253m-svn-91",
	"192.1698.0.92":"253m-jenkins-92",
	"192.1698.0.95":"250m-ftp-95",
	"192.1698.0.97":"251m-openvpn-97",
	"192.1698.0.110":"251m-qa-110",
	"192.1698.0.111":"251m-qa-111",
	"192.1698.0.112":"251m-qa-112",
	"192.1698.0.131":"251m-rd-131",
	"192.1698.0.132":"251m-rd-132",
	"192.1698.0.133":"251m-rd-133",
	"192.1698.0.198":"nfs-198",
	"192.1698.0.199":"nfs-199",
	"192.1698.0.205":"190m-crm-205",
	"192.1698.0.209":"196m-buffer-209",
	"192.1698.0.210":"252m-api-210",
	"192.1698.0.211":"250m-openvpn-211",
	"192.1698.0.217":"196m-buffer-217",
	"192.1698.0.229":"252m-qa-trac-229",
	"192.1698.0.230":"252m-qa-230"
        }


##get ip address

def get_ipaddr():
	import socket
	##get hostname
	hostname = socket.getfqdn(socket.gethostname())
	ip_addr=socket.gethostbyname(hostname)
	return ip_addr

##change file 

def change_file(*args,**kargs):
	##打开文件,重新赋值
	with open(cfg_json,"rb") as f:
		old_dict=json.load(f)
		old_dict["heartbeat"]["addr"] = "192.168.0.206:6030"
                old_dict["transfer"]["addrs"] = "192.168.0.206:8433"
		for hostname,ip in kargs.items():
			old_dict["hostname"] = hostname
			old_dict["ip"] = ip
	##打开文件,并覆盖写入修改后内容
	with open(cfg_json,"wb") as f:
		json.dump(old_dict,f)

## start open falcon agent

def start_openfalcon_agent():
        p=subprocess.Popen("sudo ./open-falcon start agent",shell=True,cwd="/usr/local/open_falcon/",stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        stdout,stderr=p.communicate()
        return stdout,stderr

def main():
	tmp_dict={}
        ip_addr=get_ipaddr()
        hostname=host_info[ip_addr]
        tmp_dict[hostname]=ip_addr
        change_file(**tmp_dict)
        print start_openfalcon_agent() 

if __name__=="__main__":
	main()