def create(tag=None, name=None, password='******', cpu='1', memory=2, diskSpace=50, imageId="uimage-j4fbrn", uhostType='Normal',StorageType='LocalDisk'): ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "CreateUHostInstance", "Region": region, "Zone":zone, "ImageId": imageId, "LoginMode": "Password", "Password": base64.b64encode(password), "Tag": tag, "CPU": cpu, "Memory": int(memory) * 1024, "DiskSpace": int(diskSpace), "Name": name, "StorageType":StorageType, "UHostType": uhostType # SATA_SSD ,BigData } response = ApiClient.get("/", Parameters) if 0 != response['RetCode']: print response exit(1) for i in range(120): time.sleep(1) host = get(name) if host and 'IPSet' in host and 'IP' in host['IPSet'][0]: # and 'Running' in host['State'] print host['IPSet'][0]['IP'] return host raise TypeError("can not get host info")
def flush_cdn(DomainId,UrlList,Type='dir'): ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "RefreshUcdnDomainCache", "Region": region, "Zone":zone, "ProjectId":project_id, "DomainId": DomainId, "Type": Type, "UrlList.0": UrlList } response = ApiClient.get("/", Parameters) if 0 != response['RetCode']: print response exit(1) print response taskId=response['TaskId'] for i in range(1200): status=flush_task_status_cdn(DomainId,taskId) print status if status=="success": return True elif status=="failure": return False time.sleep(1) return False
def get_all(): ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "DescribeUHostInstance", "Region": region, "Limit": '100000' } response = ApiClient.get("/", Parameters); print json.dumps(response, sort_keys=True, indent=4, separators=(',', ': '))
def get_ulb_list(region): """get one user's ulb list""" api_client = UcloudApiClient(config.base_url, config.public_key, config.private_key) params = {}; params['Action'] = "DescribeULB" params['Region'] = "cn-bj1" response = api_client.get("/", params) pprint(response)
def delete(ip): ip = get(ip) ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "ReleaseEIP", "Region": region, "EIPId": ip['EIPId'] } response = ApiClient.get("/", Parameters); print json.dumps(response, sort_keys=True, indent=4, separators=(',', ': '))
def delete(ip): host = get(ip=ip) stop(ip, check=True) ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "TerminateUHostInstance", "Region": region, "UHostId": host['UHostId'] } response = ApiClient.get("/", Parameters); print json.dumps(response, sort_keys=True, indent=4, separators=(',', ': '))
def modify_eip_weight(ip,weight=50): ip = get(ip) print 'start modify_eip_weight {} to weight{} '.format(ip,weight) ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "ModifyEIPWeight", "Region": region, 'Weight':weight, "EIPId": ip['EIPId'] } response = ApiClient.get("/", Parameters); print json.dumps(response, sort_keys=True, indent=4, separators=(',', ': '))
def stop(ip, check=False): host = get(ip=ip) ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "StopUHostInstance", "Region": region, "UHostId": host['UHostId'] } response = ApiClient.get("/", Parameters); if check: checkStatus(ip, 'Stopped') print json.dumps(response, sort_keys=True, indent=4, separators=(',', ': '))
def unbing(ip,hostId): ip = get(ip) ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "UnBindEIP", "Region": region, 'ResourceType':'uhost', 'ResourceId':hostId, #TODO "EIPId": ip['EIPId'] } response = ApiClient.get("/", Parameters); print json.dumps(response, sort_keys=True, indent=4, separators=(',', ': '))
def get_metric(region, resource_type, resource_id, metric_name, timerange=1 * 60 * 60): """Get UCloud monitor data Region: "cn-east-01"|"cn-north-01"|"cn-south-01"|"hk-01"|"cn-north-02" 华东 北京bgpa 华南 香港 北京bgpb ResourceType: 'uhost'|'udb'|'umem'|'ulb' MetricName: uhost: 'NetworkIn' 'NetworkOut' 'CPUUtilization' 'IORead' 'IOWrite' 'DiskReadOps' 'DiskWriteOps' 'NICIn' 'NICOut' 'MemUsage' 'DataSpaceUsage' 'RootSpaceUsage' 'ReadonlyDiskCount' 'RunnableProcessCount' 'BlockProcessCount' udb: 'CPUUtilization' 'MemUsage' 'QPS' 'ExpensiveQuery' ulb: 'NetworkOut' 'CurrentConnections' umem: 'Usage' 'QPS' 'InstanceCount' """ api_client = UcloudApiClient(config.base_url, config.public_key, config.private_key) params = {}; params['Region'] = region params['Action'] = 'GetMetric' params['ResourceType'] = resource_type params['ResourceID'] = resource_id params['MetricName'] = metric_name params['TimeRange'] = timerange response = api_client.get("/", params) pprint(response)
def ReinstallUHostInstance(ip, password='******', imageId='uimage-j4fbrn'): host = get(ip=ip) poweroff(ip, check=True) ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "ReinstallUHostInstance", "Region": region, "UHostId": host['UHostId'], "Password": base64.b64encode(password), "ImageId": imageId } response = ApiClient.get("/", Parameters); print json.dumps(response, sort_keys=True, indent=4, separators=(',', ': '))
def get(ip=None,tag=None): ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "DescribeEIP", "Region": region, "Limit": '100000' } ips = ApiClient.get("/", Parameters) #print ips for ip_tmp in ips['EIPSet']: if ip and ip == ip_tmp['EIPAddr'][0]['IP'] : return ip_tmp if tag and tag == ip_tmp['Tag'] : return ip_tmp
def get_metric(region, resource_type, resource_id, metric_name, timerange=1 * 60 * 60): """Get UCloud monitor data Region: "cn-east-01"|"cn-north-01"|"cn-south-01"|"hk-01"|"cn-north-02" East China Bejing bgpa South China Hong Kong Beijing bgpb ResourceType: 'uhost'|'udb'|'umem'|'ulb' MetricName: uhost: 'NetworkIn' 'NetworkOut' 'CPUUtilization' 'IORead' 'IOWrite' 'DiskReadOps' 'DiskWriteOps' 'NICIn' 'NICOut' 'MemUsage' 'DataSpaceUsage' 'RootSpaceUsage' 'ReadonlyDiskCount' 'RunnableProcessCount' 'BlockProcessCount' udb: 'CPUUtilization' 'MemUsage' 'QPS' 'ExpensiveQuery' ulb: 'NetworkOut' 'CurrentConnections' umem: 'Usage' 'QPS' 'InstanceCount' """ api_client = UcloudApiClient(config.base_url, config.public_key, config.private_key) response = api_client.get("/", Action="GetMetric", Region=region, ResourceType=resource_type, ResourceID=resource_id, MetricName=metric_name, TimeRange=timerange) pprint(response)
def get(host_name='', ip=''): ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "DescribeUHostInstance", "Region": region, "Limit": '100000' } hosts = ApiClient.get("/", Parameters) for host in hosts['UHostSet'] : if 'Name' in host and 'IPSet' in host and len(host['IPSet'])>0 and 'IP' in host['IPSet'][0]: if host_name == host['Name'] or ip == host['IPSet'][0]['IP']: return host else: print "get host Describe err"
def flush_task_status_cdn(DomainId,TaskId): ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "DescribeRefreshCacheTask", "Region": region, "Zone":zone, "ProjectId":project_id, "DomainId": DomainId, "TaskId": TaskId } response = ApiClient.get("/", Parameters) if 0 != response['RetCode']: print response exit(1) return response['TaskSet'][0]['Status']
def get_all(resourceType=None): ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "DescribeEIP", "Region": region, "Limit": '100000' } ips = ApiClient.get("/", Parameters) #print ips result_ips=[] for ip_tmp in ips['EIPSet']: if resourceType and resourceType == ip_tmp['Resource']['ResourceType']: result_ips.append( ip_tmp['EIPAddr'][0]['IP']) elif resourceType is None: result_ips.append( ip_tmp['EIPAddr'][0]['IP']) return result_ips
def getImage(ImageType="Base"): ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "DescribeImage", "Region": region, "Zone":zone, "ImageType": ImageType, "OsType": 'Linux', "Offset": 0, "Limit": 1000, "ProjectId":project_id } response = ApiClient.get("/", Parameters) if 0 != response['RetCode']: print response exit(1) print response
def create(tag='',Bandwidth=2,ChargeType='Dynamic',PayMode='Traffic'): ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "AllocateEIP", "Region": region, "OperatorName": 'Bgp', "Bandwidth": Bandwidth, "ChargeType": ChargeType, "PayMode": PayMode, "Tag": tag, "Remark": 'ip_Remark' } response = ApiClient.get("/", Parameters) #print response if 0 != response['RetCode']: print response exec (1) #print response if 'EIPSet' in response : return response['EIPSet'][0]['EIPAddr'][0]['IP'] raise TypeError("can not get host info")
def Request(Parameters): ApiClient = UcloudApiClient(base_url, public_key, private_key) response = ApiClient.get("/", Parameters) return json.dumps(response, sort_keys=True, indent=4, separators=(",", ": "))
#!/usr/bin/env python # -*- coding: utf-8 -*- from sdk import UcloudApiClient from config import * import sys import json #实例化 API 句柄 if __name__ == '__main__': arg_length = len(sys.argv) ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters = { "Action": "GetUcdnTraffic", } response = ApiClient.get("/", Parameters) print json.dumps(response, sort_keys=True, indent=4, separators=(',', ': '))
#!/usr/bin/python #-*- encoding: utf-8 -*- from sdk import UcloudApiClient from config import * import sys import json ApiClient = UcloudApiClient(base_url, public_key, private_key, 1, 1) #获取当前用户主机列表 response = ApiClient.get('/instances', offset = 0, max_count = 100 ) if response['ret_code'] == 0: print response #获取EIP列表 response = ApiClient.get('/uip/list') if response['ret_code'] == 0: print response #绑定EIP到主机 response = ApiClient.post('/uip/associate', vm_id = "$VM_INSTANCE_UUID", eip_id = "$EIP_UUID"
#!/usr/bin/env python # -*- coding: utf-8 -*- from sdk import UcloudApiClient from config import * import sys import json #API handles instantiation if __name__=='__main__': arg_length = len(sys.argv) ApiClient = UcloudApiClient(base_url, public_key, private_key) response = ApiClient.get("/", Action="GetBalance"); print response;
#!/usr/bin/env python # -*- coding: utf-8 -*- from sdk import UcloudApiClient from config import * import sys import json #实例化 API 句柄 if __name__=='__main__': arg_length = len(sys.argv) ApiClient = UcloudApiClient(base_url, public_key, private_key) Parameters={ "Action":"ReleaseBackend", "Region":"cn-north-03", "ULBId":"ulb-a3qq0o", "BackendId":"6a049334-77dc-49b9-a55d-fce8d3d0d9e8" } response = ApiClient.get("/", Parameters); print json.dumps(response, sort_keys=True, indent=4, separators=(',', ': '))
#-*- encoding: utf-8 -*- from sdk import UcloudApiClient from config import * import sys import json #实例化 API 句柄 ApiClient = UcloudApiClient(base_url, public_key, private_key) def sendsms(phone, message): #调用短信API phone = phone.split("|") response = ApiClient.post('/monitor/sendsms', phone=json.dumps(phone), content=message) if response['ret_code'] == 0: return True return False if __name__=='__main__': arg_length = len(sys.argv) if arg_length == 1 or arg_length == 2 : print "./sendsms.py 1377777777777|137888888888 测试短信" sys.exit() sendsms(sys.argv[1], sys.argv[2]);