-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New Resource: azurerm_system_center_virtual_machine_manager_virtual_machine_instance
#27622
base: main
Are you sure you want to change the base?
New Resource: azurerm_system_center_virtual_machine_manager_virtual_machine_instance
#27622
Conversation
…machinemanagervirtualmachineinstance
24f425f
to
9d7a3b3
Compare
@ms-zhenhua , thanks for the comments. Please take another look. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @neil-yechenwei ,
Thank you for your updates. LGTM~
Hi @rcskosir Requesting review of this PR so that we are able to complete our support for our RP on Terraform. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for this @neil-yechenwei - I left a couple of comments for you to consider but once those are addressed we can take another look. Thanks!
func TestAccSystemCenterVirtualMachineManagerVirtualMachineInstanceSequential(t *testing.T) { | ||
// NOTE: this is a combined test rather than separate split out tests because only one System Center Virtual Machine Manager Server can be onboarded at a time on a given Custom Location | ||
|
||
if os.Getenv("ARM_TEST_CUSTOM_LOCATION_ID") == "" || os.Getenv("ARM_TEST_FQDN") == "" || os.Getenv("ARM_TEST_USERNAME") == "" || os.Getenv("ARM_TEST_PASSWORD") == "" || os.Getenv("ARM_TEST_VIRTUAL_NETWORK_INVENTORY_NAME") == "" { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it necessary to require an ARM_TEST_CUSTOM_LOCATION_ID
env var here? It looks like we have a resource that could be used for this here.
Also, would it be possible to omit ARM_TEST_USERNAME
and ARM_TEST_PASSWORD
and just specify these in the test config?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test custom location was provided by the service team because provisioning this resource requires additional configurations for SCVMM VM Instance. So we have to use the custom location provided by service team.
ARM_TEST_USERNAME is provided by the service team. It must specify the real username, and the username currently in use is associated with the resources/configurations in the lab. So we have to use ARM_TEST_USERNAME.
provider "azurerm" { | ||
features {} | ||
} | ||
|
||
data "azurerm_system_center_virtual_machine_manager_inventory_items" "test" { | ||
inventory_type = "Cloud" | ||
system_center_virtual_machine_manager_server_id = azurerm_system_center_virtual_machine_manager_server.test.id | ||
} | ||
|
||
resource "azurerm_system_center_virtual_machine_manager_cloud" "test" { | ||
name = "acctest-scvmmc-%d" | ||
location = azurerm_resource_group.test.location | ||
resource_group_name = azurerm_resource_group.test.name | ||
custom_location_id = azurerm_system_center_virtual_machine_manager_server.test.custom_location_id | ||
system_center_virtual_machine_manager_server_inventory_item_id = data.azurerm_system_center_virtual_machine_manager_inventory_items.test.inventory_items[0].id | ||
} | ||
|
||
data "azurerm_system_center_virtual_machine_manager_inventory_items" "test2" { | ||
inventory_type = "VirtualMachineTemplate" | ||
system_center_virtual_machine_manager_server_id = azurerm_system_center_virtual_machine_manager_server.test.id | ||
} | ||
|
||
resource "azurerm_system_center_virtual_machine_manager_virtual_machine_template" "test" { | ||
name = "acctest-scvmmvmt-%d" | ||
location = azurerm_resource_group.test.location | ||
resource_group_name = azurerm_resource_group.test.name | ||
custom_location_id = azurerm_system_center_virtual_machine_manager_server.test.custom_location_id | ||
system_center_virtual_machine_manager_server_inventory_item_id = data.azurerm_system_center_virtual_machine_manager_inventory_items.test2.inventory_items[0].id | ||
} | ||
|
||
data "azurerm_system_center_virtual_machine_manager_inventory_items" "test3" { | ||
inventory_type = "VirtualNetwork" | ||
system_center_virtual_machine_manager_server_id = azurerm_system_center_virtual_machine_manager_server.test.id | ||
} | ||
|
||
resource "azurerm_system_center_virtual_machine_manager_virtual_network" "test" { | ||
name = "acctest-scvmmvnet-%d" | ||
location = azurerm_resource_group.test.location | ||
resource_group_name = azurerm_resource_group.test.name | ||
custom_location_id = azurerm_system_center_virtual_machine_manager_server.test.custom_location_id | ||
system_center_virtual_machine_manager_server_inventory_item_id = [for item in data.azurerm_system_center_virtual_machine_manager_inventory_items.test3.inventory_items : item.id if item.name == "%s"][0] | ||
} | ||
|
||
resource "azurerm_system_center_virtual_machine_manager_availability_set" "test" { | ||
name = "acctest-scvmmas-%d" | ||
resource_group_name = azurerm_resource_group.test.name | ||
location = azurerm_resource_group.test.location | ||
custom_location_id = azurerm_system_center_virtual_machine_manager_server.test.custom_location_id | ||
system_center_virtual_machine_manager_server_id = azurerm_system_center_virtual_machine_manager_server.test.id | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could some of this be moved into a template?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have moved the common parts in the test cases to the template.
parameters.Properties.AvailabilitySets = availabilitySets | ||
} | ||
|
||
needToRestart := metadata.ResourceData.HasChange("hardware") || metadata.ResourceData.HasChange("network_interface") || metadata.ResourceData.HasChange("storage_disk") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should we note in the docs that changing these will cause a restart?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
result := virtualmachineinstances.HardwareProfile{} | ||
|
||
// As TF always sets bool value to false when it isn't set, so it has to use d.GetRawConfig() to determine whether it is set in the tf config | ||
if v := d.GetRawConfig().AsValueMap()["hardware"].AsValueSlice()[0].AsValueMap()["limit_cpu_for_migration_enabled"]; !v.IsNull() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is there a default value for this that would make sense for this property so we could avoid this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The default value of limit_cpu_for_migration_enabled would be changed based on the different configurations. So we can't set a default value for it. The service team also suggested that we should not set a default value.
} | ||
|
||
if !regexp.MustCompile("^[a-zA-Z0-9]{1,}$").MatchString(v) { | ||
errors = append(errors, fmt.Errorf("%q may contain alphanumeric characters", k)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
errors = append(errors, fmt.Errorf("%q may contain alphanumeric characters", k)) | |
errors = append(errors, fmt.Errorf("%q must only contain alphanumeric characters", k)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
…machinemanagervirtualmachineinstance
@catriona-m , thanks for the comments. I updated PR. Please take another look. Below is the latest test result that I just now triggered.
|
…machinemanagervirtualmachineinstance
Community Note
Description
This PR is to support System Center Virtual Machine Manager Virtual Machine Instance. It is a virtual machine instance management tool primarily used for managing virtual resources in private and hybrid cloud environments.
Note: SCVMM is part of Microsoft System Center and is specifically designed to centrally manage data center virtualization infrastructure.
API reference: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/scvmm/resource-manager/Microsoft.ScVmm/stable/2023-10-07/scvmm.json
Overview: https://learn.microsoft.com/en-us/azure/azure-arc/system-center-virtual-machine-manager/overview
PR Checklist
For example: “
resource_name_here
- description of change e.g. adding propertynew_property_name_here
”Changes to existing Resource / Data Source
Testing
Change Log
Below please provide what should go into the changelog (if anything) conforming to the Changelog Format documented here.
azurerm_system_center_virtual_machine_manager_virtual_machine_instance
This is a (please select all that apply):
Note
If this PR changes meaningfully during the course of review please update the title and description as required.