Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/resources/machine_config_v2.md
Original file line number Diff line number Diff line change
Expand Up @@ -372,3 +372,11 @@ The following attributes are exported:
- `create` - (Default `10 minutes`) Used for creating machine configs.
- `update` - (Default `10 minutes`) Used for machine config modifications.
- `delete` - (Default `10 minutes`) Used for deleting machine configs.

## Import

Machine config v2 can be imported using the Machine config ID - <FLEET_NAMESPACE>/<MACHINE_CONFIG_ID>

```bash
terraform import rancher2_machine_config_v2.foo "fleet-default/nc-pool1-yc3fg6"
```
52 changes: 52 additions & 0 deletions rancher2/import_rancher2_machine_config_v2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package rancher2

import (
"fmt"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
)

func resourceRancher2MachineConfigV2Import(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
id := d.Id()
if id == "" {
return []*schema.ResourceData{}, fmt.Errorf("Importing rancher2_machine_config_v2 requires a non-empty ID")
}

cfg, ok := meta.(*Config)
if !ok || cfg == nil {
return []*schema.ResourceData{}, fmt.Errorf("Importing rancher2_machine_config_v2: provider config is nil")
}

// Available kinds - would be good to have it not hardcoded here....
kinds := []string{
machineConfigV2Amazonec2Kind,
machineConfigV2AzureKind,
machineConfigV2DigitaloceanKind,
machineConfigV2HarvesterKind,
machineConfigV2LinodeKind,
machineConfigV2OpenstackKind,
machineConfigV2VmwarevsphereKind,
machineConfigV2GoogleGCEKind,
}

var lastErr error

for _, kind := range kinds {
obj, err := getMachineConfigV2ByID(cfg, id, kind)
if err != nil {
lastErr = err
continue
}

if err := flattenMachineConfigV2(d, obj); err != nil {
return []*schema.ResourceData{}, err
}

return []*schema.ResourceData{d}, nil
}

if lastErr != nil {
return []*schema.ResourceData{}, lastErr
}

return []*schema.ResourceData{}, fmt.Errorf("[ERROR] Unable to find Machine Config V2 %s for any supported driver", id)
}
3 changes: 3 additions & 0 deletions rancher2/resource_rancher2_machine_config_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ func resourceRancher2MachineConfigV2() *schema.Resource {
Read: resourceRancher2MachineConfigV2Read,
Update: resourceRancher2MachineConfigV2Update,
Delete: resourceRancher2MachineConfigV2Delete,
Importer: &schema.ResourceImporter{
State: resourceRancher2MachineConfigV2Import,
},
Schema: machineConfigV2Fields(),
Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(3 * time.Minute),
Expand Down