github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/vsphere/provider.go (about) 1 package vsphere 2 3 import ( 4 "fmt" 5 6 "github.com/hashicorp/terraform/helper/schema" 7 "github.com/hashicorp/terraform/terraform" 8 ) 9 10 // Provider returns a terraform.ResourceProvider. 11 func Provider() terraform.ResourceProvider { 12 return &schema.Provider{ 13 Schema: map[string]*schema.Schema{ 14 "user": &schema.Schema{ 15 Type: schema.TypeString, 16 Required: true, 17 DefaultFunc: schema.EnvDefaultFunc("VSPHERE_USER", nil), 18 Description: "The user name for vSphere API operations.", 19 }, 20 21 "password": &schema.Schema{ 22 Type: schema.TypeString, 23 Required: true, 24 DefaultFunc: schema.EnvDefaultFunc("VSPHERE_PASSWORD", nil), 25 Description: "The user password for vSphere API operations.", 26 }, 27 28 "vsphere_server": &schema.Schema{ 29 Type: schema.TypeString, 30 Optional: true, 31 DefaultFunc: schema.EnvDefaultFunc("VSPHERE_SERVER", nil), 32 Description: "The vSphere Server name for vSphere API operations.", 33 }, 34 "allow_unverified_ssl": &schema.Schema{ 35 Type: schema.TypeBool, 36 Optional: true, 37 DefaultFunc: schema.EnvDefaultFunc("VSPHERE_ALLOW_UNVERIFIED_SSL", false), 38 Description: "If set, VMware vSphere client will permit unverifiable SSL certificates.", 39 }, 40 "vcenter_server": &schema.Schema{ 41 Type: schema.TypeString, 42 Optional: true, 43 DefaultFunc: schema.EnvDefaultFunc("VSPHERE_VCENTER", nil), 44 Deprecated: "This field has been renamed to vsphere_server.", 45 }, 46 "client_debug": &schema.Schema{ 47 Type: schema.TypeBool, 48 Optional: true, 49 DefaultFunc: schema.EnvDefaultFunc("VSPHERE_CLIENT_DEBUG", false), 50 Description: "govomomi debug", 51 }, 52 "client_debug_path_run": &schema.Schema{ 53 Type: schema.TypeString, 54 Optional: true, 55 DefaultFunc: schema.EnvDefaultFunc("VSPHERE_CLIENT_DEBUG_PATH_RUN", ""), 56 Description: "govomomi debug path for a single run", 57 }, 58 "client_debug_path": &schema.Schema{ 59 Type: schema.TypeString, 60 Optional: true, 61 DefaultFunc: schema.EnvDefaultFunc("VSPHERE_CLIENT_DEBUG_PATH", ""), 62 Description: "govomomi debug path for debug", 63 }, 64 }, 65 66 ResourcesMap: map[string]*schema.Resource{ 67 "vsphere_file": resourceVSphereFile(), 68 "vsphere_folder": resourceVSphereFolder(), 69 "vsphere_virtual_disk": resourceVSphereVirtualDisk(), 70 "vsphere_virtual_machine": resourceVSphereVirtualMachine(), 71 }, 72 73 ConfigureFunc: providerConfigure, 74 } 75 } 76 77 func providerConfigure(d *schema.ResourceData) (interface{}, error) { 78 // Handle backcompat support for vcenter_server; once that is removed, 79 // vsphere_server can just become a Required field that is referenced inline 80 // in Config below. 81 server := d.Get("vsphere_server").(string) 82 83 if server == "" { 84 server = d.Get("vcenter_server").(string) 85 } 86 87 if server == "" { 88 return nil, fmt.Errorf( 89 "One of vsphere_server or [deprecated] vcenter_server must be provided.") 90 } 91 92 config := Config{ 93 User: d.Get("user").(string), 94 Password: d.Get("password").(string), 95 InsecureFlag: d.Get("allow_unverified_ssl").(bool), 96 VSphereServer: server, 97 Debug: d.Get("client_debug").(bool), 98 DebugPathRun: d.Get("client_debug_path_run").(string), 99 DebugPath: d.Get("client_debug_path").(string), 100 } 101 102 return config.Client() 103 }