Я создаю приложение RoR, которое извлекает мой экземпляр Netbox (IPAM с открытым исходным кодом) для отображения наших виртуальных машин.
Я использую Lib netbox в ruby (https://github.com/ninech/netbox-client-ruby) ), это также работает, но у меня есть проблемы с получением переменной.
Возможно, это мой низкий уровень в Ruby причина, но я не могу найти ответ.
Я выбираю виртуальные машины в моем контроллере
vms = NetboxClientRuby.virtualization.virtual_machines.filter(cluster_id: cluster_id)
Я использую переменную @vms в моих файлах ERB html
<% @vms.each do |vm| %>
<tr>
# This Work well
<td><%= vm.name %></td>
<td><%= vm.vcpus %></td>
<td><%= vm.memory %>Mo</td>
<td><%= vm.disk %>Go</td>
# This doesn't work
<td> <%= vm.primary_ip.address %></td>
</tr>
<% end %>
Я пробовал vm.primary_ip['address'], vm.primary_ip('address')
и несколько других способов, но Мне не удается получить основной IP-адрес виртуальной машины.
Я получил ошибку, подобную этой:
undefined method `address' for #NetboxClientRuby::IPAM::IpAddress:0x00007ffff51d63c8
Есть идеи?
Объект Json из библиотеки lib выглядеть так:
{"id"=>159,
"name"=>"VM1",
"status"=>{"value"=>"active", "label"=>"Active", "id"=>1},
"tenant"=>nil,
"primary_ip"=>{"id"=>916, "url"=>"", "family"=>6, "address"=>"200e::1/64"},
"config_context"=>{},
"created"=>"2018-07-19",
"last_updated"=>"2018-08-16T11:29:17.695587+11:00"
}
Заранее спасибо