From 52616e0d2b35dea19c5d10925036e77d68f46c72 Mon Sep 17 00:00:00 2001 From: Alexander Karl Date: Thu, 27 Jun 2024 09:07:30 +0200 Subject: [PATCH 1/4] =?UTF-8?q?=E2=9C=A8=20feat:=20Add=20filter=20for=20st?= =?UTF-8?q?atus=20in=20virtual=20machines=20data=20source?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- netbox/data_source_netbox_virtual_machines.go | 2 + ...ata_source_netbox_virtual_machines_test.go | 80 +++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/netbox/data_source_netbox_virtual_machines.go b/netbox/data_source_netbox_virtual_machines.go index e5a79696..7b84e84b 100644 --- a/netbox/data_source_netbox_virtual_machines.go +++ b/netbox/data_source_netbox_virtual_machines.go @@ -185,6 +185,8 @@ func dataSourceNetboxVirtualMachineRead(d *schema.ResourceData, m interface{}) e case "tag": tags = append(tags, vString) params.Tag = tags + case "status": + params.Status = &vString default: return fmt.Errorf("'%s' is not a supported filter parameter", k) } diff --git a/netbox/data_source_netbox_virtual_machines_test.go b/netbox/data_source_netbox_virtual_machines_test.go index 40eff57a..b51c2d00 100644 --- a/netbox/data_source_netbox_virtual_machines_test.go +++ b/netbox/data_source_netbox_virtual_machines_test.go @@ -94,6 +94,29 @@ func TestAccNetboxVirtualMachinesDataSource_tags(t *testing.T) { }) } +func TestAccNetboxVirtualMachinesDataSource_status(t *testing.T) { + testSlug := "vm_ds_tags" + testName := testAccGetTestName(testSlug) + dependencies := testAccNetboxVirtualMachineDataSourceDependenciesWithStatus(testName) + resource.ParallelTest(t, resource.TestCase{ + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: dependencies, + }, + { + Config: dependencies + testAccNetboxVirtualMachineDataSourceStatusActive + testAccNetboxVirtualMachineDataSourceStatusDecommissioning, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("data.netbox_virtual_machines.test_active", "vms.#", "1"), + resource.TestCheckResourceAttr("data.netbox_virtual_machines.test_decommissioning", "vms.#", "1"), + resource.TestCheckResourceAttrPair("data.netbox_virtual_machines.test_active", "vms.0.status", "netbox_virtual_machine.test0", "status"), + resource.TestCheckResourceAttrPair("data.netbox_virtual_machines.test_decommissioning", "vms.0.status", "netbox_virtual_machine.test1", "status"), + ), + }, + }, + }) +} + func testAccNetboxVirtualMachineDataSourceDependencies(testName string) string { return testAccNetboxVirtualMachineFullDependencies(testName) + fmt.Sprintf(` resource "netbox_virtual_machine" "test0" { @@ -250,3 +273,60 @@ data "netbox_virtual_machines" "tag-ab" { } }`, testName) } + +const testAccNetboxVirtualMachineDataSourceStatusActive = ` +data "netbox_virtual_machines" "test_active" { + filter { + name = "status" + value = "active" + } +}` + +const testAccNetboxVirtualMachineDataSourceStatusDecommissioning = ` +data "netbox_virtual_machines" "test_decommissioning" { + filter { + name = "status" + value = "decommissioning" + } +}` + +func testAccNetboxVirtualMachineDataSourceDependenciesWithStatus(testName string) string { + return testAccNetboxVirtualMachineFullDependencies(testName) + fmt.Sprintf(` +resource "netbox_tag" "servicea" { + name = "%[1]s_service-a" +} + +resource "netbox_virtual_machine" "test0" { + name = "%[1]s_0" + cluster_id = netbox_cluster.test.id + site_id = netbox_site.test.id + comments = "thisisacomment" + memory_mb = 1024 + disk_size_gb = 256 + tenant_id = netbox_tenant.test.id + role_id = netbox_device_role.test.id + platform_id = netbox_platform.test.id + vcpus = 4 + status = "active" + tags = [ + netbox_tag.servicea.name, + ] +} + +resource "netbox_virtual_machine" "test1" { + name = "%[1]s_1" + cluster_id = netbox_cluster.test.id + site_id = netbox_site.test.id + comments = "thisisacomment" + memory_mb = 1024 + disk_size_gb = 256 + tenant_id = netbox_tenant.test.id + role_id = netbox_device_role.test.id + platform_id = netbox_platform.test.id + vcpus = 4 + status = "decommissioning" + tags = [ + netbox_tag.servicea.name, + ] +}`, testName) +} From 56834a4da0c0279746b023c8fcdc5b465e802c84 Mon Sep 17 00:00:00 2001 From: Alexander Karl Date: Thu, 27 Jun 2024 09:12:07 +0200 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=90=9B=20Fix=20indentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ata_source_netbox_virtual_machines_test.go | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/netbox/data_source_netbox_virtual_machines_test.go b/netbox/data_source_netbox_virtual_machines_test.go index b51c2d00..3194a9aa 100644 --- a/netbox/data_source_netbox_virtual_machines_test.go +++ b/netbox/data_source_netbox_virtual_machines_test.go @@ -297,35 +297,35 @@ resource "netbox_tag" "servicea" { } resource "netbox_virtual_machine" "test0" { - name = "%[1]s_0" - cluster_id = netbox_cluster.test.id - site_id = netbox_site.test.id - comments = "thisisacomment" - memory_mb = 1024 - disk_size_gb = 256 - tenant_id = netbox_tenant.test.id - role_id = netbox_device_role.test.id - platform_id = netbox_platform.test.id - vcpus = 4 + name = "%[1]s_0" + cluster_id = netbox_cluster.test.id + site_id = netbox_site.test.id + comments = "thisisacomment" + memory_mb = 1024 + disk_size_gb = 256 + tenant_id = netbox_tenant.test.id + role_id = netbox_device_role.test.id + platform_id = netbox_platform.test.id + vcpus = 4 status = "active" - tags = [ + tags = [ netbox_tag.servicea.name, ] } resource "netbox_virtual_machine" "test1" { - name = "%[1]s_1" - cluster_id = netbox_cluster.test.id - site_id = netbox_site.test.id - comments = "thisisacomment" - memory_mb = 1024 - disk_size_gb = 256 - tenant_id = netbox_tenant.test.id - role_id = netbox_device_role.test.id - platform_id = netbox_platform.test.id - vcpus = 4 + name = "%[1]s_1" + cluster_id = netbox_cluster.test.id + site_id = netbox_site.test.id + comments = "thisisacomment" + memory_mb = 1024 + disk_size_gb = 256 + tenant_id = netbox_tenant.test.id + role_id = netbox_device_role.test.id + platform_id = netbox_platform.test.id + vcpus = 4 status = "decommissioning" - tags = [ + tags = [ netbox_tag.servicea.name, ] }`, testName) From 862417da50fac091017079023fc9b8726d248488 Mon Sep 17 00:00:00 2001 From: Alexander Karl Date: Thu, 27 Jun 2024 12:30:31 +0200 Subject: [PATCH 3/4] bug: change test strategy from ParallelTest to Test --- netbox/data_source_netbox_virtual_machines_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/data_source_netbox_virtual_machines_test.go b/netbox/data_source_netbox_virtual_machines_test.go index 3194a9aa..fea738bc 100644 --- a/netbox/data_source_netbox_virtual_machines_test.go +++ b/netbox/data_source_netbox_virtual_machines_test.go @@ -98,7 +98,7 @@ func TestAccNetboxVirtualMachinesDataSource_status(t *testing.T) { testSlug := "vm_ds_tags" testName := testAccGetTestName(testSlug) dependencies := testAccNetboxVirtualMachineDataSourceDependenciesWithStatus(testName) - resource.ParallelTest(t, resource.TestCase{ + resource.Test(t, resource.TestCase{ Providers: testAccProviders, Steps: []resource.TestStep{ { From f13c0b4a5ef782b5c4e1e1341de8d7253df9b52c Mon Sep 17 00:00:00 2001 From: Alexander Karl Date: Fri, 28 Jun 2024 20:29:27 +0200 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=90=9B=20fix:=20Change=20test=20slug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- netbox/data_source_netbox_virtual_machines_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netbox/data_source_netbox_virtual_machines_test.go b/netbox/data_source_netbox_virtual_machines_test.go index fea738bc..c9ee154c 100644 --- a/netbox/data_source_netbox_virtual_machines_test.go +++ b/netbox/data_source_netbox_virtual_machines_test.go @@ -95,7 +95,7 @@ func TestAccNetboxVirtualMachinesDataSource_tags(t *testing.T) { } func TestAccNetboxVirtualMachinesDataSource_status(t *testing.T) { - testSlug := "vm_ds_tags" + testSlug := "vm_ds_status" testName := testAccGetTestName(testSlug) dependencies := testAccNetboxVirtualMachineDataSourceDependenciesWithStatus(testName) resource.Test(t, resource.TestCase{