Size: a a a

2020 October 17

m

manefesto in ru_hashicorp
Записался
источник

VT

Victor Tur in ru_hashicorp
Vladimir Samoylov
Доброго всем времени суток
Приглашаю принять участие в небольшом онлайн мероприятии:
"Что нового в мире Hashicorp. HashiConf 2020. Terraform 0.14"
во вторник, 27 октября 2020 г. 13:00 до 14:00 GMT+3
https://www.meetup.com/ru-RU/Moscow-HashiCorp-User-Group/events/273269624/
Было бы очень замечательно, если кто то мог бы прийти помучить выступающих разными каверзными вопросами:)
эх, что ж всё время неудобное.
источник
2020 October 19

L

Leozak in ru_hashicorp
всем привет
знатоки разработки провайдеров terraform есть?
как при импорте, если из АПИ значение не приходит, выставить то значение, которое описано в ресурсе?
во время Read.
источник

JR

Jürgen Romins in ru_hashicorp
Leozak
всем привет
знатоки разработки провайдеров terraform есть?
как при импорте, если из АПИ значение не приходит, выставить то значение, которое описано в ресурсе?
во время Read.
берешь ответ и если в джейсоне или что там у тебя нет в ключе значения используешь что у тебя есть в ресурсе
источник

JR

Jürgen Romins in ru_hashicorp
По факту  берешь из схемы в схеме нужно указать что параметр опциональный
источник
2020 October 20

L

Leozak in ru_hashicorp
Jürgen Romins
берешь ответ и если в джейсоне или что там у тебя нет в ключе значения используешь что у тебя есть в ресурсе
вроде того?
d.Set("key"), thisResource.Schema["key"].Default)
источник

L

Leozak in ru_hashicorp
у меня просто значение это - int, а в go если переменная не задана, то int == 0
источник

L

Leozak in ru_hashicorp
но при этом этот int может принимать значения 0...N
источник

L

Leozak in ru_hashicorp
короче, непонятно, как узнать, задана переменная или просто там int == 0...
источник

JR

Jürgen Romins in ru_hashicorp
Leozak
вроде того?
d.Set("key"), thisResource.Schema["key"].Default)
set это установка, вначале нужен get для получения перменной из ресурса
источник

L

Leozak in ru_hashicorp
Jürgen Romins
set это установка, вначале нужен get для получения перменной из ресурса
ага, понял
к слову, как все же понять, приходит из API false или там просто нет значения этого?
источник

JR

Jürgen Romins in ru_hashicorp
Leozak
ага, понял
к слову, как все же понять, приходит из API false или там просто нет значения этого?
если нет значения то у тебя либо пусто либо нет ключа тут уже нужно смотреть по апи, а так что то типа
dl_url,err:=jsonParsed.JSONPointer("/assets/0/browser_download_url")
if err != nil {
что-то там
}

если я правильно понял что ты хочешь
источник

JR

Jürgen Romins in ru_hashicorp
Ну как пример вот такая проверка у меня в одном из правайдере
dir, err := os.Getwd()
if err != nil {
fmt.Println(err)
}
module_path := d.Get("module_path").(string)
if module_path == ""{
module_path=dir
}
источник

L

Leozak in ru_hashicorp
Jürgen Romins
если нет значения то у тебя либо пусто либо нет ключа тут уже нужно смотреть по апи, а так что то типа
dl_url,err:=jsonParsed.JSONPointer("/assets/0/browser_download_url")
if err != nil {
что-то там
}

если я правильно понял что ты хочешь
короче, в чем суть
я импортирую ресурс, при импорте, как я понял, вызывается Read
API отдает JSON, в котором нет некоторых значений, которые из провайдера я сам создаю и назначаю в tfstate (например, ключ "restart", который создается только при Create и выставляется по-умолчанию как true)
источник

L

Leozak in ru_hashicorp
когда я делаю импорт (Read), то у меня не забирается значение "restart", его нужно генерить на ходу
источник

L

Leozak in ru_hashicorp
так вот, нужно понять, или "restart" у нас уже выставлен в false или же его просто не существует
источник

JR

Jürgen Romins in ru_hashicorp
Leozak
короче, в чем суть
я импортирую ресурс, при импорте, как я понял, вызывается Read
API отдает JSON, в котором нет некоторых значений, которые из провайдера я сам создаю и назначаю в tfstate (например, ключ "restart", который создается только при Create и выставляется по-умолчанию как true)
if response_restart == ""{
respose_restart=d.Get("restart")
}

ну примерно так))) в общем идея в том что при запросе в апи у тебя респонс будет либо пустой/null что угодно либо значение, вначале надо проверить что тебе придет из api и если у тебя там бред прилетает берешь get  из провайдера
источник

JR

Jürgen Romins in ru_hashicorp
Leozak
когда я делаю импорт (Read), то у меня не забирается значение "restart", его нужно генерить на ходу
в read ты что угодно можешь заусунуть
Read:   resourceModuleGitRead,

а там
func resourceModuleGitRead(d *schema.ResourceData, meta interface{}) error {
id := d.Id()
if id  == ""{
 return nil
}
return nil
}
источник

L

Leozak in ru_hashicorp
Jürgen Romins
в read ты что угодно можешь заусунуть
Read:   resourceModuleGitRead,

а там
func resourceModuleGitRead(d *schema.ResourceData, meta interface{}) error {
id := d.Id()
if id  == ""{
 return nil
}
return nil
}
а как проверить, что в текущем tfstate ещё нет "restart"?
например, из апи никогда нельзя получить "restart", он либо задан в ресурсе либо нет. Т.е. при Read нужно проверять, есть ли в ресурсе (стейте) такой ключ как "restart" и уже потом от этого плясать.
Непонятно, как такое узнать, правда...
источник

L

Leozak in ru_hashicorp
прикол в том, что "restart" может быть по-умолчанию "true"
источник