ubicloud/model/kubernetes/kubernetes_node.rb
mohi-kalantari 61f98a4110 Use KubernetesNode instead of Vm in Kubernetes progs
All the logics related to k8s (provisioning, bootstrapping, upgrades)
now all rely on the KuberneteNode object. The former methods for Vm
are still kept in place until the code is deployed and in another
commit those parts with their DB tables will be removed altogether.

Code will no longer try to add vms to the join tables for the
many_to_many tables of both KubernetesCluster and KubernetesNodepool

Instead kubernetes_node object will be used to find the right Vms
of nodepools and clusters.
2025-08-28 10:36:02 +02:00

56 lines
1.6 KiB
Ruby

# frozen_string_literal: true
require_relative "../../model"
class KubernetesNode < Sequel::Model
one_to_one :strand, key: :id
many_to_one :vm
many_to_one :kubernetes_cluster
many_to_one :kubernetes_nodepool
plugin ResourceMethods
plugin SemaphoreMethods, :destroy
def sshable
vm.sshable
end
def billing_record
if kubernetes_nodepool
worker_billing_records
else
control_plane_billing_record
end
end
def worker_billing_records
[
{type: "KubernetesWorkerVCpu", family: vm.family, amount: vm.vcpus},
{type: "KubernetesWorkerStorage", family: "standard", amount: vm.storage_size_gib}
]
end
def control_plane_billing_record
[
{type: "KubernetesControlPlaneVCpu", family: vm.family, amount: vm.vcpus}
]
end
def name
vm.name
end
end
# Table: kubernetes_node
# Columns:
# id | uuid | PRIMARY KEY
# created_at | timestamp with time zone | NOT NULL DEFAULT CURRENT_TIMESTAMP
# vm_id | uuid | NOT NULL
# kubernetes_cluster_id | uuid | NOT NULL
# kubernetes_nodepool_id | uuid |
# Indexes:
# kubernetes_node_pkey | PRIMARY KEY btree (id)
# Foreign key constraints:
# kubernetes_node_kubernetes_cluster_id_fkey | (kubernetes_cluster_id) REFERENCES kubernetes_cluster(id)
# kubernetes_node_kubernetes_nodepool_id_fkey | (kubernetes_nodepool_id) REFERENCES kubernetes_nodepool(id)
# kubernetes_node_vm_id_fkey | (vm_id) REFERENCES vm(id)