update_longvideoapi.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/python
  2. # coding: utf-8
  3. import sys
  4. from aliyunsdkcore import client
  5. from aliyunsdkcore.request import CommonRequest
  6. from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
  7. from aliyunsdkslb.request.v20140515.DescribeLoadBalancerAttributeRequest import DescribeLoadBalancerAttributeRequest
  8. import json
  9. import socket
  10. AccessKey = 'LTAIuPbTPL3LDDKN'
  11. AccessSecret = 'ORcNedKwWuwVtcq4IRFtUDZgS0b1le'
  12. RegionId = 'cn-hangzhou'
  13. slb_id= 'lb-bp1d6hp2ctotgt870miav'
  14. weight_instance = 0
  15. # slb_id= 'lb-bp12usgpoh04qsa6pw42r'
  16. clt = client.AcsClient (AccessKey, AccessSecret, RegionId)
  17. Host = socket.gethostname ()
  18. def setServerWeight(BackendServers):
  19. request = CommonRequest ()
  20. request.set_accept_format ('json')
  21. request.set_domain ('slb.aliyuncs.com')
  22. request.set_version ('2014-05-15')
  23. request.set_method ('POST')
  24. request.set_action_name ('SetBackendServers')
  25. request.add_query_param ('BackendServers', BackendServers)
  26. request.add_query_param ('LoadBalancerId', slb_id)
  27. response = clt.do_action (request)
  28. return json.loads (response)
  29. def get_host_ip():
  30. try:
  31. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  32. s.connect(('8.8.8.8', 80))
  33. ip = s.getsockname()[0]
  34. # ip = '192.168.204.111'
  35. finally:
  36. s.close()
  37. return ip
  38. def check_slb_weight(instance_id):
  39. global weight_instance
  40. request = DescribeLoadBalancerAttributeRequest ()
  41. request.set_accept_format ('json')
  42. request.set_LoadBalancerId (slb_id)
  43. response = clt.do_action_with_exception (request)
  44. result= json.loads (response)
  45. if result["BackendServers"]["BackendServer"]:
  46. for i in range(len( result["BackendServers"]["BackendServer"])):
  47. if instance_id == result["BackendServers"]["BackendServer"][i]["ServerId"]:
  48. weight_instance = result["BackendServers"]["BackendServer"][i]["Weight"]
  49. return weight_instance
  50. if __name__ == "__main__":
  51. ip_add = []
  52. ip_add.append(get_host_ip())
  53. request = DescribeInstancesRequest ()
  54. #request.set_PublicIpAddresses (ip_add)
  55. request.set_PrivateIpAddresses (ip_add)
  56. response = clt.do_action_with_exception (request)
  57. result = json.loads(response)
  58. instance_id = result["Instances"]["Instance"][0]["InstanceId"]
  59. print(instance_id)
  60. back_servers = [{"ServerId": '', "Weight": ''}]
  61. back_servers[0]["ServerId"] = instance_id
  62. back_servers[0]["Weight"] = sys.argv[1]
  63. print(back_servers)
  64. setServerWeight ( back_servers)
  65. weight_instance = check_slb_weight(instance_id)
  66. if weight_instance != back_servers[0]["Weight"]:
  67. setServerWeight ( back_servers)