Fix resource account, add comment for a resource account sample

gos_tech_4.4.3
stSolo 3 years ago
parent 95ab4e37c4
commit c73a6e0d71

@ -69,24 +69,56 @@ func resourceAccountCreate(d *schema.ResourceData, m interface{}) error {
if resLimits, ok := d.GetOk("resource_limits"); ok {
resLimit := resLimits.([]interface{})[0]
resLimitConv := resLimit.(map[string]interface{})
if resLimitConv["cu_m"] != nil {
urlValues.Add("maxMemoryCapacity", strconv.Itoa(int(resLimitConv["cu_m"].(float64))))
maxMemCap := int(resLimitConv["cu_m"].(float64))
if maxMemCap == 0 {
urlValues.Add("maxMemoryCapacity", strconv.Itoa(-1))
} else {
urlValues.Add("maxMemoryCapacity", strconv.Itoa(maxMemCap))
}
}
if resLimitConv["cu_d"] != nil {
urlValues.Add("maxVDiskCapacity", strconv.Itoa(int(resLimitConv["cu_d"].(float64))))
maxDiskCap := int(resLimitConv["cu_d"].(float64))
if maxDiskCap == 0 {
urlValues.Add("maxVDiskCapacity", strconv.Itoa(-1))
} else {
urlValues.Add("maxVDiskCapacity", strconv.Itoa(maxDiskCap))
}
}
if resLimitConv["cu_c"] != nil {
urlValues.Add("maxCPUCapacity", strconv.Itoa(int(resLimitConv["cu_c"].(float64))))
maxCPUCap := int(resLimitConv["cu_c"].(float64))
if maxCPUCap == 0 {
urlValues.Add("maxCPUCapacity", strconv.Itoa(-1))
} else {
urlValues.Add("maxCPUCapacity", strconv.Itoa(maxCPUCap))
}
}
if resLimitConv["cu_i"] != nil {
urlValues.Add("maxNumPublicIP", strconv.Itoa(int(resLimitConv["cu_i"].(float64))))
maxNumPublicIP := int(resLimitConv["cu_i"].(float64))
if maxNumPublicIP == 0 {
urlValues.Add("maxNumPublicIP", strconv.Itoa(-1))
} else {
urlValues.Add("maxNumPublicIP", strconv.Itoa(maxNumPublicIP))
}
}
if resLimitConv["cu_np"] != nil {
urlValues.Add("maxNetworkPeerTransfer", strconv.Itoa(int(resLimitConv["cu_np"].(float64))))
maxNP := int(resLimitConv["cu_np"].(float64))
if maxNP == 0 {
urlValues.Add("maxNetworkPeerTransfer", strconv.Itoa(-1))
} else {
urlValues.Add("maxNetworkPeerTransfer", strconv.Itoa(maxNP))
}
}
if resLimitConv["gpu_units"] != nil {
urlValues.Add("gpu_units", strconv.Itoa(int(resLimitConv["gpu_units"].(float64))))
gpuUnits := int(resLimitConv["gpu_units"].(float64))
if gpuUnits == 0 {
urlValues.Add("gpu_units", strconv.Itoa(-1))
} else {
urlValues.Add("gpu_units", strconv.Itoa(gpuUnits))
}
}
}
@ -223,22 +255,55 @@ func resourceAccountEdit(d *schema.ResourceData, m interface{}) error {
resLimitConv := resLimit.(map[string]interface{})
if resLimitConv["cu_m"] != nil {
urlValues.Add("maxMemoryCapacity", strconv.Itoa(int(resLimitConv["cu_m"].(float64))))
maxMemCap := int(resLimitConv["cu_m"].(float64))
if maxMemCap == 0 {
urlValues.Add("maxMemoryCapacity", strconv.Itoa(-1))
} else {
urlValues.Add("maxMemoryCapacity", strconv.Itoa(maxMemCap))
}
}
if resLimitConv["cu_d"] != nil {
urlValues.Add("maxVDiskCapacity", strconv.Itoa(int(resLimitConv["cu_d"].(float64))))
maxDiskCap := int(resLimitConv["cu_d"].(float64))
if maxDiskCap == 0 {
urlValues.Add("maxVDiskCapacity", strconv.Itoa(-1))
} else {
urlValues.Add("maxVDiskCapacity", strconv.Itoa(maxDiskCap))
}
}
if resLimitConv["cu_c"] != nil {
urlValues.Add("maxCPUCapacity", strconv.Itoa(int(resLimitConv["cu_c"].(float64))))
maxCPUCap := int(resLimitConv["cu_c"].(float64))
if maxCPUCap == 0 {
urlValues.Add("maxCPUCapacity", strconv.Itoa(-1))
} else {
urlValues.Add("maxCPUCapacity", strconv.Itoa(maxCPUCap))
}
}
if resLimitConv["cu_i"] != nil {
urlValues.Add("maxNumPublicIP", strconv.Itoa(int(resLimitConv["cu_i"].(float64))))
maxNumPublicIP := int(resLimitConv["cu_i"].(float64))
if maxNumPublicIP == 0 {
urlValues.Add("maxNumPublicIP", strconv.Itoa(-1))
} else {
urlValues.Add("maxNumPublicIP", strconv.Itoa(maxNumPublicIP))
}
}
if resLimitConv["cu_np"] != nil {
urlValues.Add("maxNetworkPeerTransfer", strconv.Itoa(int(resLimitConv["cu_np"].(float64))))
maxNP := int(resLimitConv["cu_np"].(float64))
if maxNP == 0 {
urlValues.Add("maxNetworkPeerTransfer", strconv.Itoa(-1))
} else {
urlValues.Add("maxNetworkPeerTransfer", strconv.Itoa(maxNP))
}
}
if resLimitConv["gpu_units"] != nil {
urlValues.Add("gpu_units", strconv.Itoa(int(resLimitConv["gpu_units"].(float64))))
gpuUnits := int(resLimitConv["gpu_units"].(float64))
if gpuUnits == 0 {
urlValues.Add("gpu_units", strconv.Itoa(-1))
} else {
urlValues.Add("gpu_units", strconv.Itoa(gpuUnits))
}
}
urlValues.Add("accountId", strconv.Itoa(d.Get("account_id").(int)))

@ -1,16 +1,16 @@
/*
Пример использования
Ресурса cdrom image
Ресурса account
Ресурс позволяет:
1. Создавать образ
2. Редактировать образ
3. Удалять образ
1. Создавать аккаунт
2. Редактировать аккаунт
3. Удалять аккаунт
*/
#Расскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
/*
terraform {
required_providers {
decort = {
@ -19,7 +19,7 @@ terraform {
}
}
}
*/
provider "decort" {
authenticator = "oauth2"
@ -31,26 +31,126 @@ provider "decort" {
}
resource "decort_account" "a" {
#id аккаунта
#имя аккаунта
#обязательный параметр
#тип - строка
#используется при создании и редактировании аккаунта
account_name = "new_my_account"
#имя пользователя - создателя аккаунта
#обязательный параметр
#тип - строка
username = "username@decs3o"
#доступность аккаунта
#необязательный параметр
#тип - будев тип
#может применяться при редактировании аккаунта
enable = true
#id аккаунта, позволяет сформировать .tfstate, если аккаунт имеет в платформе
#необязательный параметр
#тип - число
account_id = 11111
account_name = "new_my_account"
username = "isername@decs3o"
enable = true
account_id = 11111
#электронная почта, на которую будет отправлена информация о доступе
#необязательный параметр
#тип - строка
#применяется при создании аккаунта
emailaddress = "fff@fff.ff"
#отправлять ли на электронную почту письмо о доступе
#необязательный параметр
#тип - булев тип
#применяется при создании аккаунта и редактировании аккаунта
send_access_emails = true
#добавление/редактирование/удаление пользователей, к которым привязан аккаунт
#необязательный параметр
#тип - объект, кол-во таких объектов не ограничено
/*users {
#id пользователя
#обязательный параметр
#тип - строка
user_id = "username_2@decs3o"
#тип доступа пользователя
#обязательный параметр
#тип - строка
#возможные параметры:
#R - чтение
#RCX - запись
#ARCXDU - админ
access_type = "R"
#рекурсивное удаление пользователя из всех ресурсов аккаунтов
#необязательный параметр
#тип - булев тип
#по-умолчанию - false
#применяется при удалении пользователя из аккаунта
recursive_delete = true
}
users {
user_id = "username_1@decs3o"
access_type = "R"
}*/
#ограничение используемых ресурсов
#необязательный параметр
#тип - объект
#используется при создании и редактировании
resource_limits {
#кол-во используемых ядер cpu
#необязательный параметр
#тип - ичсло
#если установлена -1 - кол-во неограичено
cu_c = 2
#кол-во используемой RAM в МБ
#необязательный параметр
#тип - ичсло
#если установлена -1 - кол-во неограичено
cu_m = 1024
#размер дисков, в ГБ
#необязательный параметр
#тип - ичсло
#если установлена -1 - размер неограичен
cu_d = 23
#кол-во используемых публичных IP
#необязательный параметр
#тип - ичсло
#если установлена -1 - кол-во неограичено
cu_i = 2
#ограничения на кол-во передачи данных, в ГБ
#необязательный параметр
#тип - ичсло
#если установлена -1 - кол-во неограичено
cu_np = 2
#кол-во графических процессоров
#необязательный параметр
#тип - ичсло
#если установлена -1 - кол-во неограичено
gpu_units = 2
}
#восстановление аккаунта
#необязательный параметр
#тип - булев тип
#применяется к удаленным аккаунтам
#по-умолчанию - false
#retore = false
#мгновеное удаление аккаунта, если да - то аккаунт невозможно будет восстановить
#необязательный параметр
#тип - булев тип
#используется при удалении аккаунта
#по-умолчанию - false
#permanently = true
}

Loading…
Cancel
Save