-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8107830
commit 8759c79
Showing
5 changed files
with
172 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
// (C) Copyright 2024 Hewlett Packard Enterprise Development LP | ||
//go:build simulation | ||
|
||
package system | ||
|
||
import ( | ||
"github.com/HewlettPackard/hpegl-pcbe-terraform-resources/internal/simulator" | ||
) | ||
|
||
func init() { | ||
simulator.System() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{"offset":0,"count":1,"items":[{"id":"126fd201-9e6e-5e31-9ffb-a766265b1fd3","generation":53033,"customerId":"bb20052ac81011ed895f7a6e2fba2c57","onPremAgentId":"AF-836032","name":"array-5305-grp","resourceUri":"/private-cloud-business/v1beta1/systems/126fd201-9e6e-5e31-9ffb-a766265b1fd3","type":"system","stackType":"DHCI","hypervisorClusters":[{"id":"acd4daea-e5e3-5f35-8be3-ce4a4b6d946c","name":"5305-CL","resourceUri":"/api/v1/hypervisor-clusters/acd4daea-e5e3-5f35-8be3-ce4a4b6d946c","hypervisorManagerId":"c47b89e9-3a66-4fb9-9a22-cdec3c51604d","hypervisorManagerName":"16.182.107.157","hypervisorManagerAddress":"16.182.107.157","hypervisorManagerAdminPasswordSecret":null},{"id":"87cb93a5-659b-5339-a91d-817459d482e3","name":"mclaren05","resourceUri":"/api/v1/hypervisor-clusters/87cb93a5-659b-5339-a91d-817459d482e3","hypervisorManagerId":"c47b89e9-3a66-4fb9-9a22-cdec3c51604d","hypervisorManagerName":"16.182.107.157","hypervisorManagerAddress":"16.182.107.157","hypervisorManagerAdminPasswordSecret":null},{"id":"298a299e-78f5-5acb-86ce-4e9fdc290ab7","name":"mclaren01","resourceUri":"/api/v1/hypervisor-clusters/298a299e-78f5-5acb-86ce-4e9fdc290ab7","hypervisorManagerId":"c47b89e9-3a66-4fb9-9a22-cdec3c51604d","hypervisorManagerName":"16.182.107.157","hypervisorManagerAddress":"16.182.107.157","hypervisorManagerAdminPasswordSecret":null},{"id":"7410577a-6503-5a2b-9cc7-523a7da4bcb9","name":"mclaren03","resourceUri":"/api/v1/hypervisor-clusters/7410577a-6503-5a2b-9cc7-523a7da4bcb9","hypervisorManagerId":"c47b89e9-3a66-4fb9-9a22-cdec3c51604d","hypervisorManagerName":"16.182.107.157","hypervisorManagerAddress":"16.182.107.157","hypervisorManagerAdminPasswordSecret":null},{"id":"71617591-2b06-5c9c-8393-dce7347ccb4a","name":"mclaren02","resourceUri":"/api/v1/hypervisor-clusters/71617591-2b06-5c9c-8393-dce7347ccb4a","hypervisorManagerId":"c47b89e9-3a66-4fb9-9a22-cdec3c51604d","hypervisorManagerName":"16.182.107.157","hypervisorManagerAddress":"16.182.107.157","hypervisorManagerAdminPasswordSecret":null},{"id":"ce08efe7-3ccf-56e7-95b0-7390d8f389a7","name":"mclaren04","resourceUri":"/api/v1/hypervisor-clusters/ce08efe7-3ccf-56e7-95b0-7390d8f389a7","hypervisorManagerId":"c47b89e9-3a66-4fb9-9a22-cdec3c51604d","hypervisorManagerName":"16.182.107.157","hypervisorManagerAddress":"16.182.107.157","hypervisorManagerAdminPasswordSecret":null},{"id":"fee25736-db8e-55a8-a2f3-06f5ae0e7923","name":"mclaren07","resourceUri":"/api/v1/hypervisor-clusters/fee25736-db8e-55a8-a2f3-06f5ae0e7923","hypervisorManagerId":"c47b89e9-3a66-4fb9-9a22-cdec3c51604d","hypervisorManagerName":"16.182.107.157","hypervisorManagerAddress":"16.182.107.157","hypervisorManagerAdminPasswordSecret":null}],"state":"ONLINE","health":{"servers":"WARNING","networks":"OK","storage":"CRITICAL","overallHealth":"CRITICAL"},"configAnalysisStatus":{"createdAt":"2024-07-30T08:08:13Z","nextScheduledRunTime":"2024-07-31T08:07:20.502Z","totalFailed":0,"totalPassed":66,"totalWarning":1,"createdBy":"ONPREM","ruleRunStartTime":"2024-07-30T08:07:20.484Z"},"softwareInfo":{"currentUpdateStatus":{"state":"NOT_READY"},"hypervisorClusters":[{"id":"acd4daea-e5e3-5f35-8be3-ce4a4b6d946c","name":"5305-CL","resourceUri":"/api/v1/hypervisor-clusters/acd4daea-e5e3-5f35-8be3-ce4a4b6d946c","type":"hypervisor-cluster","customerId":"bb20052ac81011ed895f7a6e2fba2c57","generation":1271,"currentUpdateStatus":{"state":"NOT_READY"},"currentSoftwareCatalog":{"version":"Unavailable","hypervisor":{"name":"ESXi","version":"8.0.1-21495797"},"hypervisorManager":{},"storageSoftware":{"name":"Nimble OS"},"serverFirmware":{},"storageConnectionManager":{"name":"HPE Storage Connection Manager","version":"7.0.2-700014"},"reasons":["Unable to fetch HPE Storage Software version. Cannot determine current catalog version"]},"unavailableSoftwareCatalogs":[{"version":"7.7.38.18.40","hypervisor":{"name":"ESXi 7U3 May 2024","releaseDate":"2024-05-29","version":"7.0.3-23794027","releaseNotesUrl":"https://support.hpe.com/hpesc/public/docDisplay?docId=sd00004409en_us\u0026docLocale=en_US"},"hypervisorManager":{},"storageSoftware":{"name":"Nimble OS","releaseDate":"2024-05-22","version":"6.1.2.500-1053701","releaseNotesUrl":"https://support.hpe.com/hpesc/public/docDisplay?docId=sd00004501en_us"},"serverFirmware":{"name":"Service Pack for ProLiant","releaseDate":"2024-05-27","version":"2024.04.00","releaseNotesUrl":"https://support.hpe.com/hpesc/public/docDisplay?docId=dp00004505en_us"},"storageConnectionManager":{"name":"Nimble Connection Manager","releaseDate":"2021-05-18","version":"7.0.2-700014","releaseNotesUrl":"https://infosight.hpe.com/InfoSight/media/cms/active/public/pubs_HPE_Storage_Connection_Manager_7_0_2_for_VMware_Release_Notes_7_0_2.pdf"},"releaseDate":"2024-06-06","reasons":["Current HPE Storage Software version has no direct update path to the version in the target catalog.","Current ESXi version has no direct update path to the version in the target catalog."]},{"version":"7.7.39.18.40","hypervisor":{"name":"ESXi 8U3 June 2024","releaseDate":"2024-06-24","version":"8.0.3-24022510","releaseNotesUrl":"https://support.hpe.com/hpesc/public/docDisplay?docId=sd00004661en_us\u0026docLocale=en_US"},"hypervisorManager":{},"storageSoftware":{"name":"Nimble OS","releaseDate":"2024-05-22","version":"6.1.2.500-1053701","releaseNotesUrl":"https://support.hpe.com/hpesc/public/docDisplay?docId=sd00004501en_us"},"serverFirmware":{"name":"Service Pack for ProLiant","releaseDate":"2024-05-27","version":"2024.04.00","releaseNotesUrl":"https://support.hpe.com/hpesc/public/docDisplay?docId=dp00004505en_us"},"storageConnectionManager":{"name":"Nimble Connection Manager","releaseDate":"2021-05-18","version":"7.0.2-700014","releaseNotesUrl":"https://infosight.hpe.com/InfoSight/media/cms/active/public/pubs_HPE_Storage_Connection_Manager_7_0_2_for_VMware_Release_Notes_7_0_2.pdf"},"releaseDate":"2024-06-25","reasons":["Current HPE Storage Software version has no direct update path to the version in the target catalog."]}]}],"precheckValidUntil":"0001-01-01T00:20:00Z"},"storageUsage":{"sizeInBytes":11522365489152,"usageInBytes":6855793},"storageSystem":{"id":"0072c65541fc2058ba000000000000000000000001","name":"array-5305-grp","resourceUri":"/api/v1/storage-systems/device-type2/0072c65541fc2058ba000000000000000000000001","groupName":"array-5305-grp","groupState":"initialized","groupLeaderName":"array-5305","groupLeaderSerialNumber":"AF-836032","dedupeRatio":3.9530692100524902,"compressionRatio":41.610069274902344,"serialNumber":"AF-836032","storageType":"Alletra","numberOfJbofs":0,"numberOfNodes":0,"numberOfCores":0},"associatedResourceCounts":{"hypervisorClusterCount":7,"datastoreCount":6,"vmCount":0,"serversCount":1,"switchesCount":0,"storageArrayCount":1},"computeUsage":{"cpuUsedMhz":178,"cpuCapacityMhz":63480,"memoryUsedBytes":6039797760,"memoryCapacityBytes":549481267200},"location":{"stateCode":"","zipCode":"","city":"","countryCode":"","latitude":"","longitude":""},"systemVms":null}],"total":1} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// (C) Copyright 2024 Hewlett Packard Enterprise Development LP | ||
|
||
package simulator | ||
|
||
import ( | ||
_ "embed" | ||
|
||
"github.com/h2non/gock" | ||
) | ||
|
||
// TODO: (API) Replace fake data with real data when possible | ||
// | ||
//go:embed fixtures/systems/getByName.json | ||
var systemsByName string | ||
|
||
func simulateSystemGetByName() { | ||
systemName := "array-5305-grp" | ||
|
||
gock.New("http://localhost"). | ||
Get("/private-cloud-business/v1beta1/systems"). | ||
MatchParam("filter", "name eq "+systemName). | ||
Reply(200). | ||
SetHeader("Content-Type", "application/json"). | ||
BodyString(systemsByName) | ||
} | ||
|
||
func System() { | ||
simulateSystemGetByName() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
// (C) Copyright 2024 Hewlett Packard Enterprise Development LP | ||
//go:build simulation | ||
// +build simulation | ||
|
||
package acceptance | ||
|
||
func init() { | ||
simulation = true | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
// (C) Copyright 2024 Hewlett Packard Enterprise Development LP | ||
|
||
package acceptance | ||
|
||
import ( | ||
"fmt" | ||
"regexp" | ||
"testing" | ||
|
||
"github.com/HewlettPackard/hpegl-pcbe-terraform-resources/internal/provider" | ||
"github.com/google/uuid" | ||
"github.com/hashicorp/terraform-plugin-framework/providerserver" | ||
"github.com/hashicorp/terraform-plugin-go/tfprotov6" | ||
"github.com/hashicorp/terraform-plugin-testing/helper/resource" | ||
"github.com/hashicorp/terraform-plugin-testing/terraform" | ||
) | ||
|
||
const ( | ||
providerConfig = ` | ||
terraform { | ||
required_providers { | ||
hpegl = { | ||
source = "github.com/HewlettPackard/hpegl-pcbe-terraform-resources" | ||
} | ||
} | ||
} | ||
provider "hpegl" { | ||
pc { | ||
host = "http://localhost:8080" | ||
token = "abcdefghijklmnopqrstuvwxyz-0123456789" | ||
http_dump = true | ||
poll_interval = 0.001 | ||
max_polls = 10 | ||
} | ||
} | ||
` | ||
) | ||
|
||
var simulation = false | ||
|
||
var testAccProtoV6ProviderFactories = map[string]func() ( | ||
tfprotov6.ProviderServer, error, | ||
){ | ||
"scaffolding": providerserver.NewProtocol6WithError( | ||
provider.New("test")(), | ||
), | ||
} | ||
|
||
func checkUUIDAttr(resource string, attr string) func(*terraform.State) error { | ||
return func(s *terraform.State) error { | ||
rs, ok := s.RootModule().Resources[resource] | ||
if !ok { | ||
return fmt.Errorf("resource not found: %s", resource) | ||
} | ||
|
||
attrValue := rs.Primary.Attributes[attr] | ||
_, err := uuid.Parse(attrValue) | ||
|
||
return err | ||
} | ||
} | ||
|
||
func TestAccSystemDataSource(t *testing.T) { | ||
config := providerConfig + ` | ||
data "hpegl_pc_system" "test" { | ||
name = "array-5305-grp" | ||
} | ||
` | ||
|
||
checks := []resource.TestCheckFunc{ | ||
resource.TestCheckResourceAttr( | ||
"data.hpegl_pc_system.test", | ||
"name", | ||
"array-5305-grp", | ||
), | ||
checkUUIDAttr("data.hpegl_pc_system.test", "id"), | ||
} | ||
|
||
if simulation { | ||
// In simulation mode the ID value is known in advance | ||
checks = append(checks, | ||
resource.TestCheckResourceAttr( | ||
"data.hpegl_pc_system.test", | ||
"id", | ||
"126fd201-9e6e-5e31-9ffb-a766265b1fd3", | ||
), | ||
) | ||
} | ||
|
||
checkFn := resource.ComposeAggregateTestCheckFunc(checks...) | ||
|
||
resource.Test(t, resource.TestCase{ | ||
ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: config, | ||
Check: checkFn, | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func TestAccSystemDataSourceMissingName(t *testing.T) { | ||
config := providerConfig + ` | ||
data "hpegl_pc_system" "test" { | ||
} | ||
` | ||
expected := `The argument "name" is required, but no definition was found.` | ||
resource.Test(t, resource.TestCase{ | ||
ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: config, | ||
ExpectError: regexp.MustCompile(expected), | ||
PlanOnly: true, | ||
}, | ||
}, | ||
}) | ||
} |