From 6567ac4b7ba4993e1e6046b6743e6cd655e72b76 Mon Sep 17 00:00:00 2001 From: Daniele Moro Date: Mon, 16 Jun 2025 15:27:21 +0200 Subject: [PATCH 1/3] feat: Eager load OS when querying Hosts --- inventory/internal/store/host.go | 8 ++++++-- inventory/internal/store/host_test.go | 11 +++++++++++ inventory/internal/store/instance_test.go | 6 ++++++ inventory/pkg/testing/testing_utils.go | 2 ++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/inventory/internal/store/host.go b/inventory/internal/store/host.go index d8318eba8..91d133c12 100644 --- a/inventory/internal/store/host.go +++ b/inventory/internal/store/host.go @@ -173,7 +173,9 @@ func getHostQuery(ctx context.Context, tx *ent.Tx, tenantID, resourceID string, WithHostGpus() if nestedLoad { query.WithInstance(func(query *ent.InstanceResourceQuery) { - query.WithDesiredOs().WithCurrentOs() + query.WithDesiredOs(). + WithCurrentOs(). + WithOs() }) } else { query.WithInstance() @@ -470,7 +472,9 @@ func filterHosts(ctx context.Context, client *ent.Client, filter *inv_v1.Resourc WithHostUsbs(). WithHostGpus(). WithInstance(func(query *ent.InstanceResourceQuery) { - query.WithDesiredOs().WithCurrentOs() + query.WithDesiredOs(). + WithCurrentOs(). + WithOs() }). Where(pred). Order(orderOpts...) diff --git a/inventory/internal/store/host_test.go b/inventory/internal/store/host_test.go index 95c153660..18655b6e7 100644 --- a/inventory/internal/store/host_test.go +++ b/inventory/internal/store/host_test.go @@ -377,6 +377,7 @@ func Test_Host_BackReferences_Read(t *testing.T) { instance := inv_testing.CreateInstance(t, host, os) instance.DesiredOs = os instance.CurrentOs = os + instance.Os = os host.Instance = instance gpu := inv_testing.CreatHostGPU(t, host) host.HostStorages = append(host.HostStorages, storage) @@ -1725,6 +1726,7 @@ func Test_FilterHosts(t *testing.T) { instance1 := inv_testing.CreateInstance(t, &expHost1, os1) instance1.DesiredOs = os1 instance1.CurrentOs = os1 + instance1.Os = os1 expHost1.Instance = instance1 hostStorage1 := inv_testing.CreateHostStorage(t, &expHost1) @@ -2629,6 +2631,7 @@ func Test_NestedFilterHost(t *testing.T) { instance.DesiredOs = os instance.CurrentOs = os + instance.Os = os hostGpu1 := inv_testing.CreatHostGPU(t, host1) host1.Site = site1 @@ -2682,6 +2685,14 @@ func Test_NestedFilterHost(t *testing.T) { resources: []*computev1.HostResource{host1}, valid: true, }, + "FilterByOsID2": { + in: &inv_v1.ResourceFilter{ + Filter: fmt.Sprintf(`%s.%s.%s = %q`, hostresource.EdgeInstance, instanceresource.EdgeOs, + operatingsystemresource.FieldResourceID, os.GetResourceId()), + }, + resources: []*computev1.HostResource{host1}, + valid: true, + }, "FilterByHasHostStorages": { in: &inv_v1.ResourceFilter{ Filter: fmt.Sprintf(`has(%s)`, hostresource.EdgeHostStorages), diff --git a/inventory/internal/store/instance_test.go b/inventory/internal/store/instance_test.go index 98dbd6676..7d605135c 100644 --- a/inventory/internal/store/instance_test.go +++ b/inventory/internal/store/instance_test.go @@ -1324,6 +1324,7 @@ func Test_NestedFilterInstances(t *testing.T) { instance1.Host = host1 instance1.DesiredOs = os1 instance1.CurrentOs = os1 + instance1.Os = os1 instance2 := inv_testing.CreateInstance(t, host2, os1) workload2 := inv_testing.CreateWorkload(t) @@ -1336,21 +1337,25 @@ func Test_NestedFilterInstances(t *testing.T) { instance4.Host = host5 instance4.DesiredOs = os2 instance4.CurrentOs = os2 + instance4.Os = os2 instance2.WorkloadMembers = append(instance2.WorkloadMembers, workloadMember2) instance2.Host = host2 instance2.DesiredOs = os1 instance2.CurrentOs = os1 + instance2.Os = os1 instance3 := inv_testing.CreateInstance(t, host3, os2) instance3.Host = host3 instance3.DesiredOs = os2 instance3.CurrentOs = os2 + instance3.Os = os2 provider := inv_testing.CreateProvider(t, "Test Provider1") instanceWithProvider := inv_testing.CreateInstanceWithProvider(t, host4, os2, provider) instanceWithProvider.Host = host4 instanceWithProvider.DesiredOs = os2 instanceWithProvider.CurrentOs = os2 + instanceWithProvider.Os = os2 instanceWithProvider.Provider = provider localaccount := inv_testing.CreateLocalAccount(t, @@ -1361,6 +1366,7 @@ func Test_NestedFilterInstances(t *testing.T) { instanceWithLocalAccount.Host = host6 instanceWithLocalAccount.DesiredOs = os2 instanceWithLocalAccount.CurrentOs = os2 + instanceWithLocalAccount.Os = os2 instanceWithLocalAccount.Localaccount = localaccount testcases := map[string]struct { diff --git a/inventory/pkg/testing/testing_utils.go b/inventory/pkg/testing/testing_utils.go index 6118dc859..6a7acb86d 100644 --- a/inventory/pkg/testing/testing_utils.go +++ b/inventory/pkg/testing/testing_utils.go @@ -1047,6 +1047,7 @@ func (c *InvResourceDAO) createInstanceWithOpts( DesiredState: computev1.InstanceState_INSTANCE_STATE_RUNNING, DesiredOs: osRes, CurrentOs: osRes, // always create with desired OS == current OS for testing + Os: osRes, Host: hostRes, SecurityFeature: osv1.SecurityFeature_SECURITY_FEATURE_UNSPECIFIED, TenantId: tenantID, @@ -1073,6 +1074,7 @@ func (c *InvResourceDAO) createInstanceWithOpts( // embedded objects for edges. instResp.DesiredOs = nil instResp.CurrentOs = nil + instResp.Os = nil instResp.Host = nil instResp.WorkloadMembers = nil instResp.Provider = nil From 1bb36de2eff5bc406e477b55631164ccaf72ca59 Mon Sep 17 00:00:00 2001 From: Daniele Moro Date: Mon, 16 Jun 2025 16:25:01 +0200 Subject: [PATCH 2/3] bump dev version --- inventory/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inventory/VERSION b/inventory/VERSION index a5f3e61bd..06cd103b3 100644 --- a/inventory/VERSION +++ b/inventory/VERSION @@ -1 +1 @@ -2.27.0 +2.27.1-dev From b2ce26d8476e129f3c3416363d797aa3b7ccce78 Mon Sep 17 00:00:00 2001 From: Daniele Moro Date: Mon, 16 Jun 2025 16:25:35 +0200 Subject: [PATCH 3/3] Add ignore for gitleaks --- .gitleaksignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitleaksignore b/.gitleaksignore index 03b4796d5..f94a2a2fc 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -2,6 +2,7 @@ api/internal/server/manager_test.go:generic-api-key:767 inventory/internal/store/host_test.go:generic-api-key:996 inventory/internal/store/host_test.go:generic-api-key:1010 inventory/internal/store/host_test.go:generic-api-key:1050 +inventory/internal/store/host_test.go:generic-api-key:1051 apiv2/pkg/api/v2/edge-infrastructure-manager-openapi-server.gen.go:generic-api-key:2555 apiv2/pkg/api/v2/edge-infrastructure-manager-openapi-server.gen.go:generic-api-key:2739 apiv2/pkg/api/v2/edge-infrastructure-manager-openapi-server.gen.go:generic-api-key:2707