Skip to content

Commit

Permalink
RC-35102 system provider tf changes (#655)
Browse files Browse the repository at this point in the history
* system provider support
  • Loading branch information
mvsphani-rafay authored Aug 20, 2024
1 parent 575e043 commit 35c7123
Show file tree
Hide file tree
Showing 4 changed files with 167 additions and 14 deletions.
13 changes: 11 additions & 2 deletions docs/resources/resource_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ resource "rafay_resource_template" "aws-elasticache-rt-example" {

***Required***

- `provider` (String) Specify the resource template provider, Accepted values are `terraform`, `hcpterraform`, `opentofu`, `custom`
- `provider` (String) Specify the resource template provider, Accepted values are `terraform`, `hcpterraform`, `opentofu`, `custom`, `system`
- `repository_options` (Block List, Max: 1) Repository options to be provided (see [below for nested schema](#nestedblock--spec--repository_options))
- `version` (String) Version of the resource template

Expand Down Expand Up @@ -1684,6 +1684,7 @@ resource "rafay_resource_template" "aws-elasticache-rt-example" {
- `hcp_terraform` (Block List, Max: 1) Specify the HCP terraform specific options if any (see [below for nested schema](#nestedblock--spec--provider_options--hcpterraform))
- `open_tofu` (Block List, Max: 1) Specify the opentofu specific options if any (see [below for nested schema](#nestedblock--spec--provider_options--opentofu))
- `custom` (Block List, Max: 1) Specify the custom options if any (see [below for nested schema](#nestedblock--spec--provider_options--custom))
- `system` (Block List, Max: 1) Specify the system options if any (see [below for nested schema](#nestedblock--spec--provider_options--system))

<a id="nestedblock--spec--provider_options--driver"></a>
### Nested Schema for `spec.provider_options.driver`
Expand Down Expand Up @@ -2489,4 +2490,12 @@ Optional:
- `driver` (Block List, Max: 1) Specify the driver responsible for execution (see [below for nested schema](#nestedblock--spec--provider_options--driver))
- `on_failure` (String) Specify the on failure action
- `options` (Block List, Max: 1) Specify the hook options (see [below for nested schema](#nestedblock--spec--hooks--on_completion--options))
- `timeout_seconds` (Number) Specify the timeout in seconds
- `timeout_seconds` (Number) Specify the timeout in seconds


<a id="nestedblock--spec--provider_options--system"></a>
### Nested Schema for `spec.provider_options.system`

***Required***

- `kind` (String) Specify the type of rafay resource, Available options are `credential`, `cluster`.
5 changes: 3 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ toolchain go1.22.4

require (
github.com/RafaySystems/edge-common v1.24.1-0.20240813083948-ba69bed0bc1b
github.com/RafaySystems/rafay-common v1.29.1-rc2.0.20240813084031-834d0909294a
github.com/RafaySystems/rafay-common v1.29.1-rc2.0.20240819105128-51987ba404a9
github.com/RafaySystems/rctl v1.29.1-0.20240813175545-9dc352b7affb
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
github.com/go-yaml/yaml v2.1.0+incompatible
Expand Down Expand Up @@ -68,7 +68,7 @@ require (
github.com/Masterminds/semver/v3 v3.2.1 // indirect
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
github.com/ProtonMail/go-crypto v1.1.0-alpha.2 // indirect
github.com/RafaySystems/eaas-playground v0.0.0-20240725104726-6472e5c291bb // indirect
github.com/RafaySystems/eaas-playground v0.0.0-20240819062521-b1b317f32232 // indirect
github.com/RoaringBitmap/roaring v1.9.4 // indirect
github.com/agext/levenshtein v1.2.3 // indirect
github.com/armon/go-radix v1.0.0 // indirect
Expand Down Expand Up @@ -218,6 +218,7 @@ require (

replace (
cloud.google.com/go => cloud.google.com/go v0.100.2
// github.com/RafaySystems/eaas-playground => ../eaas-playground
// github.com/RafaySystems/rafay-common => ../rafay-common
// github.com/RafaySystems/rctl => github.com/RafaySystems/rctl v1.5.14
// github.com/RafaySystems/terraform-provider-rafay/rafay => ../rafay
Expand Down
12 changes: 6 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/ProtonMail/go-crypto v1.1.0-alpha.2 h1:bkyFVUP+ROOARdgCiJzNQo2V2kiB97LyUpzH9P6Hrlg=
github.com/ProtonMail/go-crypto v1.1.0-alpha.2/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/RafaySystems/eaas-playground v0.0.0-20240725104726-6472e5c291bb h1:YfBdiQgm+b8EOY3oy3WlPex8JG+RVt/2O0mjLVTEBIY=
github.com/RafaySystems/eaas-playground v0.0.0-20240725104726-6472e5c291bb/go.mod h1:nwtRApMyQyH1dBys1rBa2HwDrA44OlNienOEuxZ7vZk=
github.com/RafaySystems/eaas-playground v0.0.0-20240819062521-b1b317f32232 h1:OyvJD5nwBHjM7UUS9nX9DNLKeq2BZfWb/Tcsz3K3DHY=
github.com/RafaySystems/eaas-playground v0.0.0-20240819062521-b1b317f32232/go.mod h1:YN2q7XActj/AHM4F+6Czsip5++l7asf/hxK8YZjrmhU=
github.com/RafaySystems/edge-common v1.24.1-0.20240813083948-ba69bed0bc1b h1:byYrgKmgq+JNPm9u/6/DJQSu8AW/TdgPhgrnzpmHBBs=
github.com/RafaySystems/edge-common v1.24.1-0.20240813083948-ba69bed0bc1b/go.mod h1:Lp/hUW/sjTyEgvhmRsnpDQ0c5ccRHHd3DQC/nbJ/jb4=
github.com/RafaySystems/rafay-common v1.29.1-rc2.0.20240813084031-834d0909294a h1:Z10XQ6dZlb9+Rp3Zdyh6TJB8200rQ6Y63h2xwG8A/mI=
github.com/RafaySystems/rafay-common v1.29.1-rc2.0.20240813084031-834d0909294a/go.mod h1:8StKG6w/b27sf72oU0piJe0qiRBVRc/VdFvpM3mZVtY=
github.com/RafaySystems/rafay-common v1.29.1-rc2.0.20240819105128-51987ba404a9 h1:r5kpECouDiIcNvKqBPOe5Ly1v4oF6vcnhtDU6anlYZA=
github.com/RafaySystems/rafay-common v1.29.1-rc2.0.20240819105128-51987ba404a9/go.mod h1:s28/gkN7ii/bWnsfbnS5uxxYH1aaA/rm4JZu61rLdkM=
github.com/RafaySystems/rctl v1.29.1-0.20240813175545-9dc352b7affb h1:bozmqi6NqEYngix6hO1TnO6bMTn4dRRyJPaiOubIwO8=
github.com/RafaySystems/rctl v1.29.1-0.20240813175545-9dc352b7affb/go.mod h1:lsuKgPhI39u2kWzSOUoFI5jyWnldUif7HTrs4sVzXSc=
github.com/RoaringBitmap/roaring v1.9.4 h1:yhEIoH4YezLYT04s1nHehNO64EKFTop/wBhxv2QzDdQ=
Expand Down Expand Up @@ -59,8 +59,8 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
github.com/bufbuild/protocompile v0.14.0 h1:z3DW4IvXE5G/uTOnSQn+qwQQxvhckkTWLS/0No/o7KU=
github.com/bufbuild/protocompile v0.14.0/go.mod h1:N6J1NYzkspJo3ZwyL4Xjvli86XOj1xq4qAasUFxGups=
github.com/bufbuild/protocompile v0.10.0 h1:+jW/wnLMLxaCEG8AX9lD0bQ5v9h1RUiMKOBOT5ll9dM=
github.com/bufbuild/protocompile v0.10.0/go.mod h1:G9qQIQo0xZ6Uyj6CMNz0saGmx2so+KONo8/KrELABiY=
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
Expand Down
151 changes: 147 additions & 4 deletions rafay/resource_resourcetemplate.go
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,6 @@ func expandHcpTerraformProviderOptions(p []interface{}) *eaaspb.HCPTerraformProv
if len(p) == 0 || p[0] == nil {
return hcpTFOpts
}

in := p[0].(map[string]interface{})

if vfiles, ok := in["var_files"].([]interface{}); ok && len(vfiles) > 0 {
Expand Down Expand Up @@ -584,12 +583,17 @@ func expandHcpTerraformProviderOptions(p []interface{}) *eaaspb.HCPTerraformProv
}

func expandSystemProviderOptions(p []interface{}) *eaaspb.SystemProviderOptions {
spo := &eaaspb.SystemProviderOptions{}
if len(p) == 0 || p[0] == nil {
return nil
return spo
}
in := p[0].(map[string]interface{})

if h, ok := in["kind"].(string); ok {
spo.Kind = h
}
spo := &eaaspb.SystemProviderOptions{}
return spo

return spo
}

func expandTerragruntProviderOptions(p []interface{}) *eaaspb.TerragruntProviderOptions {
Expand Down Expand Up @@ -632,6 +636,10 @@ func expandProviderHooks(p []interface{}) *eaaspb.ResourceTemplateProviderHooks
rtph.HcpTerraform = expandHcpTerraformProviderHooks(h)
}

if h, oj := in["system"].([]interface{}); oj && len(h) > 0 {
rtph.System = expandSystemProviderHooks(h)
}

return rtph

}
Expand Down Expand Up @@ -711,6 +719,24 @@ func expandHcpTerraformProviderHooks(p []interface{}) *eaaspb.HCPTerraformProvid

return tph
}
func expandSystemProviderHooks(p []interface{}) *eaaspb.SystemProviderHooks {
sph := &eaaspb.SystemProviderHooks{}
if len(p) == 0 || p[0] == nil {
return sph
}

in := p[0].(map[string]interface{})

if h, ok := in["deploy"].([]interface{}); ok && len(h) > 0 {
sph.Deploy = expandSystemDeployHooks(h)
}

if h, ok := in["destroy"].([]interface{}); ok && len(h) > 0 {
sph.Destroy = expandSystemDestroyHooks(h)
}

return sph
}

func expandTerraformDeployHooks(p []interface{}) *eaaspb.TerraformDeployHooks {
tdh := &eaaspb.TerraformDeployHooks{}
Expand Down Expand Up @@ -862,6 +888,36 @@ func expandHcpTerraformDestroyHooks(p []interface{}) *eaaspb.HCPTerraformDestroy
return tdh
}

func expandSystemDeployHooks(p []interface{}) *eaaspb.SystemDeployHooks {
sdh := &eaaspb.SystemDeployHooks{}
if len(p) == 0 || p[0] == nil {
return sdh
}

in := p[0].(map[string]interface{})

if h, ok := in["apply"].([]interface{}); ok && len(h) > 0 {
sdh.Apply = expandLifecycleEventHooks(h)
}

return sdh
}

func expandSystemDestroyHooks(p []interface{}) *eaaspb.SystemDestroyHooks {
sdh := &eaaspb.SystemDestroyHooks{}
if len(p) == 0 || p[0] == nil {
return sdh
}

in := p[0].(map[string]interface{})

if h, ok := in["destroy"].([]interface{}); ok && len(h) > 0 {
sdh.Destroy = expandLifecycleEventHooks(h)
}

return sdh
}

func expandPulumiDeployHooks(p []interface{}) *eaaspb.PulumiDeployHooks {
pdh := &eaaspb.PulumiDeployHooks{}
if len(p) == 0 || p[0] == nil {
Expand Down Expand Up @@ -1139,6 +1195,7 @@ func flattenSystemProviderOptions(in *eaaspb.SystemProviderOptions) []interface{
}

obj := make(map[string]interface{})
obj["kind"] = in.Kind
return []interface{}{obj}
}

Expand Down Expand Up @@ -1314,6 +1371,14 @@ func flattenProviderHooks(input *eaaspb.ResourceTemplateProviderHooks, p []inter
obj["hcp_terraform"] = flattenHcpTerraformProviderHooks(input.HcpTerraform, v)
}

if input.System != nil {
v, ok := obj["system"].([]interface{})
if !ok {
v = []interface{}{}
}

obj["system"] = flattenSystemProviderHooks(input.System, v)
}
return []interface{}{obj}
}

Expand Down Expand Up @@ -1413,6 +1478,38 @@ func flattenHcpTerraformProviderHooks(input *eaaspb.HCPTerraformProviderHooks, p
return []interface{}{obj}
}

func flattenSystemProviderHooks(input *eaaspb.SystemProviderHooks, p []interface{}) []interface{} {
log.Println("flatten system provider hooks start")
if input == nil {
return nil
}

obj := make(map[string]interface{})
if len(p) != 0 && p[0] != nil {
obj = p[0].(map[string]interface{})
}

if input.Deploy != nil {
v, ok := obj["deploy"].([]interface{})
if !ok {
v = []interface{}{}
}

obj["deploy"] = flattenSystemDeployHooks(input.Deploy, v)
}

if input.Destroy != nil {
v, ok := obj["destroy"].([]interface{})
if !ok {
v = []interface{}{}
}

obj["destroy"] = flattenSystemDestroyHooks(input.Destroy, v)
}

return []interface{}{obj}
}

func flattenPulumiProviderHooks(input *eaaspb.PulumiProviderHooks, p []interface{}) []interface{} {
log.Println("flatten pulumi provider hooks start")
if input == nil {
Expand Down Expand Up @@ -1718,6 +1815,52 @@ func flattenHcpTerraformDestroyHooks(input *eaaspb.HCPTerraformDestroyHooks, p [
return []interface{}{obj}
}

func flattenSystemDeployHooks(input *eaaspb.SystemDeployHooks, p []interface{}) []interface{} {
log.Println("flatten system deploy hooks start")
if input == nil {
return nil
}

obj := make(map[string]interface{})
if len(p) != 0 && p[0] != nil {
obj = p[0].(map[string]interface{})
}

if input.Apply != nil {
v, ok := obj["apply"].([]interface{})
if !ok {
v = []interface{}{}
}

obj["apply"] = flattenLifecycleEventHooks(input.Apply, v)
}

return []interface{}{obj}
}

func flattenSystemDestroyHooks(input *eaaspb.SystemDestroyHooks, p []interface{}) []interface{} {
log.Println("flatten system destroy hooks start")
if input == nil {
return nil
}

obj := make(map[string]interface{})
if len(p) != 0 && p[0] != nil {
obj = p[0].(map[string]interface{})
}

if input.Destroy != nil {
v, ok := obj["destroy"].([]interface{})
if !ok {
v = []interface{}{}
}

obj["destroy"] = flattenLifecycleEventHooks(input.Destroy, v)
}

return []interface{}{obj}
}

func flattenPulumiDeployHooks(input *eaaspb.PulumiDeployHooks, p []interface{}) []interface{} {
log.Println("flatten pulumi deploy hooks start")
if input == nil {
Expand Down

0 comments on commit 35c7123

Please sign in to comment.