From e1622b7078f8a66d94512db39e5ce3bd1aa02727 Mon Sep 17 00:00:00 2001 From: Pierre Lafievre Date: Tue, 18 Jul 2023 13:25:56 +0200 Subject: [PATCH 1/3] B #470: templates datasource shouldn't filter on ID --- CHANGELOG.md | 4 +++- opennebula/data_opennebula_template.go | 25 ++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62ebe1433..cd12340f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,9 @@ DEPRECATION: * `quotas` section of `opennebula_user` resource (#448) * `quotas` section of `opennebula_group` resource (#447) -# 1.2.2 (Unreleased) +BUG FIXES: + +* data/opennebula_template: fix filtering and documentation (#470) # 1.2.2 (May 31st, 2023) diff --git a/opennebula/data_opennebula_template.go b/opennebula/data_opennebula_template.go index 765ebfb2c..b0b4252c3 100644 --- a/opennebula/data_opennebula_template.go +++ b/opennebula/data_opennebula_template.go @@ -129,7 +129,6 @@ func commonTemplatesFilter(d *schema.ResourceData, meta interface{}) ([]*templat } // filter templates with user defined criterias - id := d.Get("id") name, nameOk := d.GetOk("name") hasCPU := d.Get("has_cpu").(bool) hasVCPU := d.Get("has_vcpu").(bool) @@ -143,10 +142,6 @@ func commonTemplatesFilter(d *schema.ResourceData, meta interface{}) ([]*templat match := make([]*templateSc.Template, 0, 1) for i, template := range templates.Templates { - if id != -1 && template.ID != id { - continue - } - if nameOk && template.Name != name { continue } @@ -186,19 +181,31 @@ func commonTemplatesFilter(d *schema.ResourceData, meta interface{}) ([]*templat func templateFilter(d *schema.ResourceData, meta interface{}) (*templateSc.Template, error) { - match, err := commonTemplatesFilter(d, meta) + matched, err := commonTemplatesFilter(d, meta) if err != nil { return nil, err } + newMatched := make([]*templateSc.Template, 0) + + id := d.Get("id").(int) + if id != -1 { + for _, tpl := range matched { + if tpl.ID != id { + continue + } + newMatched = append(newMatched, tpl) + } + } + // the template datasource should match at most one element - if len(match) == 0 { + if len(newMatched) == 0 { return nil, fmt.Errorf("no templates match the constraints") - } else if len(match) > 1 { + } else if len(newMatched) > 1 { return nil, fmt.Errorf("several templates match the constraints") } - return match[0], nil + return newMatched[0], nil } func datasourceOpennebulaTemplateRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { From efd5ed5cd9797f00ca30ce9c1b84affbe6914198 Mon Sep 17 00:00:00 2001 From: Pierre Lafievre Date: Tue, 18 Jul 2023 13:32:40 +0200 Subject: [PATCH 2/3] B #470: fix templates doc --- opennebula/data_opennebula_templates.go | 2 +- website/docs/d/templates.html.markdown | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opennebula/data_opennebula_templates.go b/opennebula/data_opennebula_templates.go index a86d398dd..7f2b436c3 100644 --- a/opennebula/data_opennebula_templates.go +++ b/opennebula/data_opennebula_templates.go @@ -33,7 +33,7 @@ func dataOpennebulaTemplates() *schema.Resource { "order": { Type: schema.TypeString, Optional: true, - Description: "Ordering of the sort: asc or desc", + Description: "Ordering of the sort: ASC or DESC", }, "templates": { Type: schema.TypeList, diff --git a/website/docs/d/templates.html.markdown b/website/docs/d/templates.html.markdown index b72681226..ae46a00ad 100644 --- a/website/docs/d/templates.html.markdown +++ b/website/docs/d/templates.html.markdown @@ -17,7 +17,7 @@ data "opennebula_templates" "example" { name_regex = "test.*" has_cpu = true sort_on = "register_date" - sort_on = "ASC" + order = "ASC" } ``` @@ -32,7 +32,7 @@ data "opennebula_templates" "example" { * `has_memory` - (Optional) Indicate if a memory value has been defined. * `memory` - (Optional) Amount of RAM assigned to the VM in MB. * `tags` - (Optional) Template tags (Key = Value). -* `order` - (Optional) Ordering of the sort: asc or desc. +* `order` - (Optional) Ordering of the sort: ASC or DESC. ## Attribute Reference From 3498a7bf8795b71af1bc3e55fb0fc520d86f1e1c Mon Sep 17 00:00:00 2001 From: Pierre Lafievre Date: Tue, 18 Jul 2023 13:29:12 +0200 Subject: [PATCH 3/3] VM: fix check on context --- CHANGELOG.md | 1 + opennebula/resource_opennebula_virtual_machine.go | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd12340f2..e34fd8822 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ DEPRECATION: BUG FIXES: * data/opennebula_template: fix filtering and documentation (#470) +* resources/opennebula_virtual_machine: fix a check on context # 1.2.2 (May 31st, 2023) diff --git a/opennebula/resource_opennebula_virtual_machine.go b/opennebula/resource_opennebula_virtual_machine.go index 15d755a41..c71ba4fd7 100644 --- a/opennebula/resource_opennebula_virtual_machine.go +++ b/opennebula/resource_opennebula_virtual_machine.go @@ -2190,8 +2190,12 @@ func generateVm(d *schema.ResourceData, meta interface{}, templateContent *vm.Te log.Printf("Number of CONTEXT vars: %d", len(context)) log.Printf("CONTEXT Map: %s", context) + var tplContext *dyn.Vector if templateContent != nil { - tplContext, _ := templateContent.GetVector(vmk.ContextVec) + tplContext, _ = templateContent.GetVector(vmk.ContextVec) + } + + if tplContext != nil { // Update existing context: // - add new pairs