update_longvideoapi.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. print(response)
  29. return json.loads (response)
  30. def get_host_ip():
  31. try:
  32. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  33. s.connect(('8.8.8.8', 80))
  34. ip = s.getsockname()[0]
  35. # ip = '192.168.204.111'
  36. finally:
  37. s.close()
  38. return ip
  39. def check_slb_weight(instance_id):
  40. global weight_instance
  41. request = DescribeLoadBalancerAttributeRequest ()
  42. request.set_accept_format ('json')
  43. request.set_LoadBalancerId (slb_id)
  44. response = clt.do_action_with_exception (request)
  45. result= json.loads (response)
  46. print(result)
  47. if result["BackendServers"]["BackendServer"]:
  48. for i in range(len( result["BackendServers"]["BackendServer"])):
  49. if instance_id == result["BackendServers"]["BackendServer"][i]["ServerId"]:
  50. weight_instance = result["BackendServers"]["BackendServer"][i]["Weight"]
  51. return weight_instance
  52. if __name__ == "__main__":
  53. ip_add = []
  54. ip_add.append(get_host_ip())
  55. request = DescribeInstancesRequest ()
  56. request.set_PublicIpAddresses (ip_add)
  57. # request.set_PrivateIpAddresses (ip_add)
  58. response = clt.do_action_with_exception (request)
  59. result = json.loads(response)
  60. instance_id = result["Instances"]["Instance"][0]["InstanceId"]
  61. print(instance_id)
  62. back_servers = [{"ServerId": '', "Weight": ''}]
  63. back_servers[0]["ServerId"] = instance_id
  64. back_servers[0]["Weight"] = sys.argv[1]
  65. print(back_servers)
  66. setServerWeight ( back_servers)
  67. weight_instance = check_slb_weight(instance_id)
  68. if weight_instance != back_servers[0]["Weight"]:
  69. setServerWeight ( back_servers)