Files
ubicloud/serializers/vm.rb
Furkan Sahin d503dadcd3 Add private_ipv4 and private_ipv6 utility functions
Our code base had many vm.nics.first.private_ipv(4/6) calls. This commit
moves these into 2 util functions in the vm model and reuses that to
improve code readability and maintainability.
2025-01-30 12:24:20 +01:00

38 lines
923 B
Ruby

# frozen_string_literal: true
class Serializers::Vm < Serializers::Base
def self.serialize_internal(vm, options = {})
base = {
id: vm.ubid,
name: vm.name,
state: vm.display_state,
location: vm.display_location,
size: vm.display_size,
unix_user: vm.unix_user,
storage_size_gib: vm.storage_size_gib,
ip6: vm.ephemeral_net6&.nth(2),
ip4_enabled: vm.ip4_enabled,
ip4: vm.ephemeral_net4
}
if options[:include_path]
base[:path] = vm.path
end
if options[:detailed]
base.merge!(
firewalls: Serializers::Firewall.serialize(vm.firewalls, {include_path: true}),
private_ipv4: vm.private_ipv4,
private_ipv6: vm.private_ipv6,
subnet: vm.nics.first.private_subnet.name
)
end
if options[:load_balancer]
base[:load_balancer_state] = vm.load_balancers_vms.state
end
base
end
end