This commit is contained in:
143
nhncloud/packages/ApiCompute.py
Normal file
143
nhncloud/packages/ApiCompute.py
Normal file
@ -0,0 +1,143 @@
|
||||
import json
|
||||
import requests
|
||||
|
||||
# type : network
|
||||
# Region :
|
||||
# 판교: https://kr1-api-instance-infrastructure.nhncloudservice.com
|
||||
# 평촌: https://kr2-api-instance-infrastructure.nhncloudservice.com
|
||||
|
||||
endpoint_cpt_kr1 = "https://kr1-api-instance-infrastructure.nhncloudservice.com"
|
||||
endpoint_cpt_kr2 = "https://kr2-api-instance-infrastructure.nhncloudservice.com"
|
||||
endpoint_img_kr1 = "https://kr1-api-image-infrastructure.nhncloudservice.com"
|
||||
endpoint_img_kr2 = "https://kr2-api-image-infrastructure.nhncloudservice.com"
|
||||
|
||||
|
||||
class ApiCompute:
|
||||
def __init__(self, region, tenant_id, token):
|
||||
if region == "kr1":
|
||||
self.cptUrl = endpoint_cpt_kr1
|
||||
self.imgUrl = endpoint_img_kr1
|
||||
elif region == "kr2":
|
||||
self.cptUrl = endpoint_cpt_kr2
|
||||
self.imgUrl = endpoint_img_kr2
|
||||
else:
|
||||
self.cptUrl = endpoint_cpt_kr2
|
||||
self.imgUrl = endpoint_img_kr2
|
||||
self.token = token
|
||||
self.tenantId = tenant_id
|
||||
|
||||
def getFlavorList(self):
|
||||
url = f"{self.cptUrl}/v2/{self.tenantId}/flavors"
|
||||
headers = {"X-Auth-Token": self.token}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)
|
||||
return datas
|
||||
|
||||
def getFlavorId(self, flavor_name):
|
||||
url = f"{self.cptUrl}/v2/{self.tenantId}/flavors"
|
||||
headers = {"X-Auth-Token": self.token}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)['flavors']
|
||||
|
||||
for var in datas:
|
||||
foo = str(var['name'])
|
||||
if foo.count(flavor_name) == 1:
|
||||
return var['id']
|
||||
|
||||
def getKeypairList(self):
|
||||
url = f"{self.cptUrl}/v2/{self.tenantId}/os-keypairs"
|
||||
headers = {"X-Auth-Token": self.token}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)
|
||||
return datas
|
||||
|
||||
def getKeypairInfo(self, keypair_name):
|
||||
url = f"{self.cptUrl}/v2/{self.tenantId}/os-keypairs/{keypair_name}"
|
||||
headers = {"X-Auth-Token": self.token}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)
|
||||
return datas
|
||||
|
||||
def InstanceList(self):
|
||||
pass
|
||||
|
||||
def InstanceStatus(self, serverId):
|
||||
url = f"{self.cptUrl}/v2/{self.tenantId}/servers/{serverId}"
|
||||
headers = {"X-Auth-Token": self.token}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)['server']['status']
|
||||
return datas
|
||||
|
||||
def InstanceInfo(self, serverId):
|
||||
url = f"{self.cptUrl}/v2/{self.tenantId}/servers/{serverId}"
|
||||
headers = {"X-Auth-Token": self.token}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text) # ['server']['status']
|
||||
return datas
|
||||
|
||||
def InstanceId(self, instance_name):
|
||||
pass
|
||||
|
||||
def deleteInstance(self, instance_id):
|
||||
pass
|
||||
|
||||
def createInstance(self, instance_name, instance_image_id, flavor_id, subnet_id, kepair_name):
|
||||
url = f"{self.cptUrl}/v2/{self.tenantId}/servers"
|
||||
parms = {
|
||||
"server": {
|
||||
"name": instance_name,
|
||||
"imageRef": instance_image_id,
|
||||
"flavorRef": flavor_id,
|
||||
"networks": [
|
||||
{
|
||||
"subnet": f"{subnet_id}",
|
||||
}
|
||||
],
|
||||
# "availability_zone": "kr-pub-b",
|
||||
"key_name": kepair_name,
|
||||
"max_count": 1,
|
||||
"min_count": 1,
|
||||
"block_device_mapping_v2": [
|
||||
{
|
||||
"uuid": f"{instance_image_id}",
|
||||
"boot_index": 0,
|
||||
"volume_size": 50,
|
||||
"device_name": "vda",
|
||||
"source_type": "image",
|
||||
"destination_type": "volume",
|
||||
"delete_on_termination": 1,
|
||||
}
|
||||
],
|
||||
"security_groups": [{"name": "default"}],
|
||||
}
|
||||
}
|
||||
|
||||
headers = {
|
||||
"X-Auth-Token": self.token,
|
||||
}
|
||||
# print(parms)
|
||||
response = requests.post(url, json=parms, headers=headers)
|
||||
datas = json.loads(response.text)['server']
|
||||
# print("------------------------")
|
||||
# print(response)
|
||||
# print("------------------------")
|
||||
# print(datas)
|
||||
return datas['id']
|
||||
|
||||
def getImgListAll(self):
|
||||
url = f"{self.imgUrl}/v2/images"
|
||||
headers = {"X-Auth-Token": self.token}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)
|
||||
return datas
|
||||
|
||||
def getInstanceImgId(self, img_name):
|
||||
url = f"{self.imgUrl}/v2/images"
|
||||
headers = {"X-Auth-Token": self.token}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)['images']
|
||||
|
||||
for var in datas:
|
||||
foo = str(var['name'])
|
||||
if foo.startswith(img_name) and foo.count("Container") == 0:
|
||||
return var['id']
|
Reference in New Issue
Block a user