Skip to content

Commit

Permalink
Changed the code to make the provider parameters optional and provide… (
Browse files Browse the repository at this point in the history
#34)

* 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
  • Loading branch information
Gaurav Rastogi authored Apr 6, 2018
1 parent f48b1d1 commit 70b6576
Show file tree
Hide file tree
Showing 7 changed files with 81 additions and 23 deletions.
28 changes: 28 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -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

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
31 changes: 23 additions & 8 deletions avi/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down Expand Up @@ -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 {
Expand All @@ -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
}
Expand All @@ -206,6 +220,7 @@ type Credentials struct {
Controller string
Port string
Tenant string
Version string
}

func (c *Credentials) validate() error {
Expand Down
24 changes: 16 additions & 8 deletions avi/provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
@@ -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() {
Expand Down
1 change: 0 additions & 1 deletion vendor/github.com/avinetworks/sdk
Submodule sdk deleted from 796ddc
17 changes: 12 additions & 5 deletions vendor/vendor.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}

0 comments on commit 70b6576

Please sign in to comment.