From 70b6576c8e194651107b28a37700b0a76d3a86c2 Mon Sep 17 00:00:00 2001 From: Gaurav Rastogi Date: Fri, 6 Apr 2018 10:21:32 -0700 Subject: [PATCH] =?UTF-8?q?Changed=20the=20code=20to=20make=20the=20provid?= =?UTF-8?q?er=20parameters=20optional=20and=20provide=E2=80=A6=20(#34)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Changed the code to make the provider parameters optional and provide defaults for username, tenant and version * updated travis file * fixed travis errors * updated vendor.json * Fixed travis errors * changed path of the provider * changed path of the provider with fmt * updated readme with travis --- .travis.yml | 28 ++++++++++++++++++++++++++++ README.md | 1 + avi/provider.go | 31 +++++++++++++++++++++++-------- avi/provider_test.go | 24 ++++++++++++++++-------- main.go | 2 +- vendor/github.com/avinetworks/sdk | 1 - vendor/vendor.json | 17 ++++++++++++----- 7 files changed, 81 insertions(+), 23 deletions(-) create mode 100644 .travis.yml delete mode 160000 vendor/github.com/avinetworks/sdk diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..f6b881e0 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,28 @@ +dist: trusty +sudo: false +language: go +go: +- 1.9.1 + +install: +# This script is used by the Travis build to install a cookie for +# go.googlesource.com so rate limits are higher when using `go get` to fetch +# packages that live there. +# See: https://github.com/golang/go/issues/12933 +- bash scripts/gogetcookie.sh +- go get github.com/kardianos/govendor +- go get github.com/avinetworks/sdk/go/clients +- go get github.com/avinetworks/sdk/go/session + +script: +- make +- make test + +branches: + only: + - master +matrix: + fast_finish: true + allow_failures: + - go: tip + diff --git a/README.md b/README.md index 1589d5c2..d8e079a2 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ Terraform Provider ================== +[![Build Status](https://travis-ci.org/avinetworks/terraform-provider-avi.svg?branch=master)](https://travis-ci.org/avinetworks/terraform-provider-avi) - Website: https://www.terraform.io - [![Gitter chat](https://badges.gitter.im/hashicorp-terraform/Lobby.png)](https://gitter.im/hashicorp-terraform/Lobby) diff --git a/avi/provider.go b/avi/provider.go index 4b988a12..7bfebe4b 100644 --- a/avi/provider.go +++ b/avi/provider.go @@ -20,28 +20,34 @@ func Provider() terraform.ResourceProvider { Schema: map[string]*schema.Schema{ "avi_username": &schema.Schema{ Type: schema.TypeString, - Required: true, + Optional: true, DefaultFunc: schema.EnvDefaultFunc("AVI_USERNAME", nil), Description: "Username for Avi Controller.", }, "avi_controller": &schema.Schema{ Type: schema.TypeString, - Required: true, + Optional: true, DefaultFunc: schema.EnvDefaultFunc("AVI_CONTROLLER", nil), Description: "Avi Controller hostname or IP address.", }, "avi_password": &schema.Schema{ Type: schema.TypeString, - Required: true, + Optional: true, DefaultFunc: schema.EnvDefaultFunc("AVI_PASSWORD", nil), Description: "Password for Avi Controller.", }, "avi_tenant": &schema.Schema{ Type: schema.TypeString, - Required: true, + Optional: true, DefaultFunc: schema.EnvDefaultFunc("AVI_TENANT", nil), Description: "Avi tenant for Avi Controller.", }, + "avi_version": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + DefaultFunc: schema.EnvDefaultFunc("AVI_VERSION", nil), + Description: "Avi tenant for Avi Controller.", + }, }, DataSourcesMap: map[string]*schema.Resource{ "avi_useraccountprofile": dataSourceAviUserAccountProfile(), @@ -178,10 +184,17 @@ func Provider() terraform.ResourceProvider { func providerConfigure(d *schema.ResourceData) (interface{}, error) { config := Credentials{ - Username: d.Get("avi_username").(string), + Username: "admin", Password: d.Get("avi_password").(string), Controller: d.Get("avi_controller").(string), - Tenant: d.Get("avi_tenant").(string), + Tenant: "admin", + Version: "17.2.7", + } + if username, ok := d.GetOk("avi_username"); ok { + config.Username = username.(string) + } + if version, ok := d.GetOk("avi_version"); ok { + config.Version = version.(string) } if err := config.validate(); err != nil { @@ -192,10 +205,11 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) { config.Controller, config.Username, session.SetPassword(config.Password), session.SetTenant(config.Tenant), - session.SetVersion("17.2.8"), + session.SetVersion(config.Version), session.SetInsecure) - log.Println("Avi Client created ") + log.Println("Avi Client created for user %v tenant %v version %v", + config.Username, config.Tenant, config.Version) return aviClient, err } @@ -206,6 +220,7 @@ type Credentials struct { Controller string Port string Tenant string + Version string } func (c *Credentials) validate() error { diff --git a/avi/provider_test.go b/avi/provider_test.go index bcffeb98..9f8e3ed2 100644 --- a/avi/provider_test.go +++ b/avi/provider_test.go @@ -78,20 +78,28 @@ func TestProvider(t *testing.T) { } func testAccPreCheck(t *testing.T) { - required := []string{"AVI_USERNAME", "AVI_PASSWORD", "AVI_CONTROLLER", - "AVI_TENANT"} - for _, property := range required { - if os.Getenv(property) == "" { - t.Fatalf("%s must be set for acceptance test", property) - } - } config := Credentials{ Username: os.Getenv("AVI_USERNAME"), Password: os.Getenv("AVI_PASSWORD"), Controller: os.Getenv("AVI_CONTROLLER"), Tenant: os.Getenv("AVI_TENANT"), + Version: os.Getenv("AVI_VERSION"), + } + required := []string{"AVI_PASSWORD", "AVI_CONTROLLER"} + for _, property := range required { + if os.Getenv(property) == "" { + t.Fatalf("%s must be set for acceptance test", property) + } + } + if config.Username == "" { + config.Username = "admin" + } + if config.Tenant == "" { + config.Tenant = "admin" + } + if config.Version == "" { + config.Version = "17.2.7" } - _, err := clients.NewAviClient( config.Controller, config.Username, session.SetPassword(config.Password), diff --git a/main.go b/main.go index 41dc7490..7e087672 100644 --- a/main.go +++ b/main.go @@ -1,8 +1,8 @@ package main import ( + "github.com/avinetworks/terraform-provider-avi/avi" "github.com/hashicorp/terraform/plugin" - "github.com/terraform-providers/terraform-provider-avi/avi" ) func main() { diff --git a/vendor/github.com/avinetworks/sdk b/vendor/github.com/avinetworks/sdk deleted file mode 160000 index 796ddccc..00000000 --- a/vendor/github.com/avinetworks/sdk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 796ddcccdc37a5a9771bfbb716b159ae5c9b4b11 diff --git a/vendor/vendor.json b/vendor/vendor.json index b28f4cd8..4857803b 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -638,12 +638,19 @@ "versionExact": "v1.6.1" }, { - "path": "github.com/avinetworks/sdk", + "path": "github.com/avinetworks/sdk/go/clients", "revision": "796ddcccdc37a5a9771bfbb716b159ae5c9b4b11", - "revisionTime": "2018-01-10T12:15:28-08:00", - "version": "17.2.5", - "versionExact": "17.2.5" + "revisionTime": "2018-04-06T16:51:27.185773", + "version": "17.2.8", + "versionExact": "17.2.8" + }, + { + "path": "github.com/avinetworks/sdk/go/session", + "revision": "796ddcccdc37a5a9771bfbb716b159ae5c9b4b11", + "revisionTime": "2018-04-06T16:51:27.185773", + "version": "17.2.8", + "versionExact": "17.2.8" } ], - "rootPath": "github.com/terraform-providers/terraform-provider-avi" + "rootPath": "github.com/avinetworks/terraform-provider-avi" }