1
1
mirror of https://github.com/mcuadros/ascode synced 2024-11-22 17:02:03 +01:00

*: project renamed

Signed-off-by: Máximo Cuadros <mcuadros@gmail.com>
This commit is contained in:
Máximo Cuadros 2019-07-05 07:46:15 +02:00
parent a339458eab
commit a6e365eca5
16 changed files with 38 additions and 30 deletions

14
main.go

@ -6,8 +6,10 @@ import (
"log"
"os"
"github.com/ascode-dev/ascode/starlark/types"
"github.com/ascode-dev/ascode/terraform"
"github.com/hashicorp/hcl2/hclwrite"
"github.com/mcuadros/terra/provider"
"go.starlark.net/repl"
"go.starlark.net/resolve"
"go.starlark.net/starlark"
@ -16,19 +18,19 @@ import (
func main() {
log.SetOutput(ioutil.Discard)
pm := &provider.PluginManager{".providers"}
pm := &terraform.PluginManager{".providers"}
resolve.AllowFloat = true
pro := starlark.NewBuiltin("provider", func(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
provider := starlark.NewBuiltin("provider", func(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
name := args.Index(0).(starlark.String)
version := args.Index(1).(starlark.String)
return provider.MakeProvider(pm, string(name), string(version))
return types.MakeProvider(pm, string(name), string(version))
})
thread := &starlark.Thread{Name: "thread", Load: repl.MakeLoad()}
predeclared := starlark.StringDict{
"provider": pro,
"provider": provider,
}
out, err := starlark.ExecFile(thread, os.Args[1], nil, predeclared)
@ -40,7 +42,7 @@ func main() {
}
for _, v := range out {
p, ok := v.(*provider.Provider)
p, ok := v.(*types.Provider)
if !ok {
continue
}

@ -1,4 +1,4 @@
package provider
package types
import (
"fmt"

@ -1,10 +1,9 @@
package provider
package types
import (
"fmt"
"github.com/zclconf/go-cty/cty"
"go.starlark.net/starlark"
)

@ -1,4 +1,4 @@
package provider
package types
import "testing"

@ -1,10 +1,11 @@
package provider
package types
import (
"fmt"
"github.com/hashicorp/hcl2/hcl"
"github.com/hashicorp/hcl2/hclwrite"
"github.com/zclconf/go-cty/cty"
"go.starlark.net/starlark"
)
@ -31,6 +32,9 @@ func BuiltinHCL() starlark.Value {
}
func (s *Provider) ToHCL(b *hclwrite.Body) {
block := b.AppendNewBlock("provider", []string{s.name})
block.Body().SetAttributeValue("version", cty.StringVal(string(s.meta.Version)))
s.dataSources.ToHCL(b)
s.resources.ToHCL(b)
}

@ -1,12 +1,13 @@
package provider
package types
import (
"fmt"
"strings"
"github.com/hashicorp/terraform/plugin/discovery"
"github.com/ascode-dev/ascode/terraform"
"github.com/hashicorp/terraform/plugin"
"github.com/hashicorp/terraform/plugin/discovery"
"github.com/hashicorp/terraform/providers"
"go.starlark.net/starlark"
)
@ -18,9 +19,11 @@ type Provider struct {
dataSources *MapSchema
resources *MapSchema
r *Resource
}
func MakeProvider(pm *PluginManager, name, version string) (*Provider, error) {
func MakeProvider(pm *terraform.PluginManager, name, version string) (*Provider, error) {
cli, meta := pm.Get(name, version)
rpc, err := cli.Client()
if err != nil {
@ -40,6 +43,7 @@ func MakeProvider(pm *PluginManager, name, version string) (*Provider, error) {
name: name,
provider: provider,
meta: meta,
r: MakeResource("", ResourceK, response.Provider.Block, nil),
dataSources: NewMapSchema(name, DataResourceK, response.DataSources),
resources: NewMapSchema(name, ResourceK, response.ResourceTypes),
}, nil
@ -56,7 +60,6 @@ func (p *Provider) Type() string {
func (p *Provider) Freeze() {}
func (p *Provider) Truth() starlark.Bool { return true }
func (p *Provider) Hash() (uint32, error) { return 1, nil }
func (p *Provider) Name() string { return p.name }
func (p *Provider) Attr(name string) (starlark.Value, error) {
switch name {
case "version":

@ -1,4 +1,4 @@
package provider
package types
import (
"fmt"
@ -6,6 +6,7 @@ import (
"log"
"testing"
"github.com/ascode-dev/ascode/terraform"
"go.starlark.net/resolve"
"go.starlark.net/starlark"
"go.starlark.net/starlarktest"
@ -43,7 +44,7 @@ func test(t *testing.T, filename string) {
provider := starlark.NewBuiltin("provider", func(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
name := args.Index(0).(starlark.String)
version := args.Index(1).(starlark.String)
return MakeProvider(&PluginManager{".providers"}, string(name), string(version))
return MakeProvider(&terraform.PluginManager{".providers"}, string(name), string(version))
})
predeclared := starlark.StringDict{

@ -1,4 +1,4 @@
package provider
package types
import (
"fmt"

@ -4,16 +4,15 @@ aws = provider("aws", "2.13.0")
ubuntu = aws.data.ami()
ubuntu.most_recent = True
ubuntu.filter(name="name", values=["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"])
ubuntu.filter(name="virtualization-type", values=["hvm"])
ubuntu.filter(name = "name", values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"])
ubuntu.filter(name = "virtualization-type", values = ["hvm"])
ubuntu.owners = ["099720109477"]
web = aws.resource.instance(instance_type="t2.micro")
web = aws.resource.instance(instance_type = "t2.micro")
#web.instance_type = "t2.micro"
#web.ami = ami.id
template = aws.resource.launch_template()
template.name_prefix = "example"
template.instance_type = "c5.larger"
@ -26,12 +25,12 @@ group.min_size = 1
group.mixed_instances_policy = {
"launch_template": {
"launch_template_specification": {
"launch_template_id": "bar"
}
}
"launch_template_id": "bar",
},
},
}
ami2 = aws.data.ami()
ami2.most_recent = True
#print(hcl(aws))
print(hcl(aws))

@ -12,4 +12,4 @@ assert.eq(type(p.resource.instance), "collection")
p.resource.instance()
p.resource.instance()
assert.eq(len(p.resource.instance), 2)
assert.eq(len(p.resource.instance), 2)

@ -1,4 +1,4 @@
package provider
package types
import (
"fmt"

@ -1,4 +1,4 @@
package provider
package types
import (
"testing"

@ -1,4 +1,4 @@
package provider
package terraform
import (
"os"