This commit is contained in:
175
nhncloud/packages/ApiNks.py
Normal file
175
nhncloud/packages/ApiNks.py
Normal file
@ -0,0 +1,175 @@
|
||||
import json
|
||||
import requests
|
||||
import yaml
|
||||
|
||||
# type : network
|
||||
# Region :
|
||||
# 판교: https://kr1-api-kubernetes-infrastructure.nhncloudservice.com
|
||||
# 평촌: https://kr2-api-kubernetes-infrastructure.nhncloudservice.com
|
||||
|
||||
endpoint_kr1 = "https://kr1-api-kubernetes-infrastructure.nhncloudservice.com"
|
||||
endpoint_kr2 = "https://kr2-api-kubernetes-infrastructure.nhncloudservice.com"
|
||||
|
||||
class ApiNks:
|
||||
def __init__(self, region, token):
|
||||
if region == "kr1" :
|
||||
self.region = region
|
||||
self.url = endpoint_kr1
|
||||
elif region == "kr2" :
|
||||
self.region = region
|
||||
self.url = endpoint_kr2
|
||||
else:
|
||||
self.region = region
|
||||
self.url = endpoint_kr2
|
||||
self.token = token
|
||||
|
||||
|
||||
def getClusterList(self):
|
||||
url = f"{self.url}/v1/clusters"
|
||||
headers={
|
||||
"X-Auth-Token": self.token,
|
||||
"Accept": "application/json",
|
||||
"Content-Type": "application/json",
|
||||
"OpenStack-API-Version": "container-infra latest"
|
||||
}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)
|
||||
return datas
|
||||
|
||||
def getClusterInfo(self, cluster_name):
|
||||
url = f"{self.url}/v1/clusters/{cluster_name}"
|
||||
headers={
|
||||
"X-Auth-Token": self.token,
|
||||
"Accept": "application/json",
|
||||
"Content-Type": "application/json",
|
||||
"OpenStack-API-Version": "container-infra latest"
|
||||
}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)
|
||||
return datas
|
||||
|
||||
def publicClusterCreate(self, parms_dict):
|
||||
print(f"리전정보 {self.region}")
|
||||
if self.region == "kr1" :
|
||||
node_img = "1213d033-bdf6-4d73-9763-4e8e57c745fb" # ubuntu 20.04
|
||||
elif self.region == "kr2" :
|
||||
node_img = "dabb6d10-937d-4952-9ce0-1e576e9164e8" # ubuntu 20.04
|
||||
else:
|
||||
node_img = "dabb6d10-937d-4952-9ce0-1e576e9164e8" # ubuntu 20.04
|
||||
|
||||
url = f"{self.url}/v1/clusters"
|
||||
parms = {
|
||||
"cluster_template_id": "iaas_console",
|
||||
"create_timeout": 60,
|
||||
"fixed_network": str(parms_dict["vpc_id"]),
|
||||
"fixed_subnet": str(parms_dict["subnet_id"]),
|
||||
"flavor_id": str(parms_dict["instance_type"]),
|
||||
"keypair": str(parms_dict["key_pair"]),
|
||||
"labels": {
|
||||
"availability_zone": str(parms_dict["az-zone"]),
|
||||
"boot_volume_size": "50",
|
||||
"boot_volume_type": "General SSD",
|
||||
"ca_enable": "false",
|
||||
# "ca_max_node_count": "10",
|
||||
# "ca_min_node_count": "1",
|
||||
# "ca_scale_down_delay_after_add": "10", # 샘플은3인데 왜 10일 요구하나
|
||||
# "ca_scale_down_enable": "true",
|
||||
# "ca_scale_down_unneeded_time": "3",
|
||||
# "ca_scale_down_util_thresh": "50",
|
||||
# "cert_manager_api": "True",
|
||||
"cert_manager_api": "True",
|
||||
"clusterautoscale": "nodegroupfeature",
|
||||
"external_network_id": str(parms_dict["external_network_id"]), # 외부 연결된경우 적용
|
||||
"external_subnet_id_list": str(parms_dict["external_subnet_id_list"]), # 외부 연결
|
||||
"kube_tag": str(parms_dict["kubernetes-version"]),
|
||||
"master_lb_floating_ip_enabled": "True", # external_network, subnet적용시 True가능.
|
||||
"node_image": node_img,
|
||||
# "user_script_v2": ""
|
||||
},
|
||||
"name": str(parms_dict["cluster_name"]),
|
||||
"node_count": str(parms_dict["nd_cnt"])
|
||||
}
|
||||
|
||||
headers={
|
||||
"Accept": "application/json",
|
||||
"Content-Type": "application/json",
|
||||
"OpenStack-API-Version": "container-infra latest",
|
||||
"X-Auth-Token": self.token
|
||||
}
|
||||
response = requests.post(url, json=parms, headers=headers)
|
||||
print(f"debug:{response}")
|
||||
datas = json.loads(response.text)
|
||||
# print("------------------------")
|
||||
# print(response)
|
||||
# print("------------------------")
|
||||
print(datas)
|
||||
return datas
|
||||
|
||||
def privateClusterCreate(self, parms_dict):
|
||||
if self.region == "kr1" :
|
||||
node_img = "1213d033-bdf6-4d73-9763-4e8e57c745fb" # ubuntu 20.04
|
||||
elif self.region == "kr2" :
|
||||
node_img = "dabb6d10-937d-4952-9ce0-1e576e9164e8" # ubuntu 20.04
|
||||
else:
|
||||
node_img = "dabb6d10-937d-4952-9ce0-1e576e9164e8" # ubuntu 20.04
|
||||
|
||||
url = f"{self.url}/v1/clusters"
|
||||
parms = {
|
||||
"cluster_template_id": "iaas_console",
|
||||
"create_timeout": 60,
|
||||
"fixed_network": str(parms_dict["vpc_id"]),
|
||||
"fixed_subnet": str(parms_dict["subnet_id"]),
|
||||
"flavor_id": str(parms_dict["instance_type"]),
|
||||
"keypair": str(parms_dict["key_pair"]),
|
||||
"labels": {
|
||||
"availability_zone": str(parms_dict["az-zone"]),
|
||||
"boot_volume_size": "50",
|
||||
"boot_volume_type": "General SSD",
|
||||
"ca_enable": "false",
|
||||
"cert_manager_api": "True",
|
||||
"clusterautoscale": "nodegroupfeature",
|
||||
"kube_tag": str(parms_dict["kubernetes-version"]),
|
||||
"master_lb_floating_ip_enabled": "False", # external_network, subnet적용시 True가능.
|
||||
"node_image": node_img,
|
||||
},
|
||||
"name": str(parms_dict["cluster_name"]),
|
||||
"node_count": str(parms_dict["nd_cnt"])
|
||||
}
|
||||
|
||||
headers={
|
||||
"Accept": "application/json",
|
||||
"Content-Type": "application/json",
|
||||
"OpenStack-API-Version": "container-infra latest",
|
||||
"X-Auth-Token": self.token
|
||||
}
|
||||
response = requests.post(url, json=parms, headers=headers)
|
||||
datas = json.loads(response.text)
|
||||
# print("DEBUG MODE")
|
||||
# print(response)
|
||||
# print("DEBUG MODE")
|
||||
# print(datas)
|
||||
return datas
|
||||
|
||||
def nksDelete(self, cluster_name):
|
||||
url = f"{self.url}/v1/clusters/{cluster_name}"
|
||||
headers={
|
||||
"X-Auth-Token": self.token,
|
||||
"Accept": "application/json",
|
||||
"Content-Type": "application/json",
|
||||
"OpenStack-API-Version": "container-infra latest"
|
||||
}
|
||||
response = requests.delete(url, headers=headers)
|
||||
|
||||
return
|
||||
|
||||
def getClusterConfig(self, cluster_name): # 작성만 하였음 확인 필요.
|
||||
url = f"{self.url}/v1/clusters/{cluster_name}/config"
|
||||
headers={
|
||||
"X-Auth-Token": self.token,
|
||||
"Accept": "application/json",
|
||||
"Content-Type": "application/json",
|
||||
"OpenStack-API-Version": "container-infra latest"
|
||||
}
|
||||
response = requests.get(url, headers=headers)
|
||||
datas = json.loads(response.text)
|
||||
return datas['config']
|
Reference in New Issue
Block a user