github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/opc/provider.go (about) 1 package opc 2 3 import ( 4 "github.com/hashicorp/terraform/helper/schema" 5 "github.com/hashicorp/terraform/terraform" 6 ) 7 8 func Provider() terraform.ResourceProvider { 9 return &schema.Provider{ 10 Schema: map[string]*schema.Schema{ 11 "user": { 12 Type: schema.TypeString, 13 Required: true, 14 DefaultFunc: schema.EnvDefaultFunc("OPC_USERNAME", nil), 15 Description: "The user name for OPC API operations.", 16 }, 17 18 "password": { 19 Type: schema.TypeString, 20 Required: true, 21 DefaultFunc: schema.EnvDefaultFunc("OPC_PASSWORD", nil), 22 Description: "The user password for OPC API operations.", 23 }, 24 25 "identity_domain": { 26 Type: schema.TypeString, 27 Required: true, 28 DefaultFunc: schema.EnvDefaultFunc("OPC_IDENTITY_DOMAIN", nil), 29 Description: "The OPC identity domain for API operations", 30 }, 31 32 "endpoint": { 33 Type: schema.TypeString, 34 Required: true, 35 DefaultFunc: schema.EnvDefaultFunc("OPC_ENDPOINT", nil), 36 Description: "The HTTP endpoint for OPC API operations.", 37 }, 38 39 // TODO Actually implement this 40 "max_retry_timeout": { 41 Type: schema.TypeInt, 42 Optional: true, 43 DefaultFunc: schema.EnvDefaultFunc("OPC_MAX_RETRY_TIMEOUT", 3000), 44 Description: "Max num seconds to wait for successful response when operating on resources within OPC (defaults to 3000)", 45 }, 46 }, 47 48 DataSourcesMap: map[string]*schema.Resource{ 49 "opc_compute_network_interface": dataSourceNetworkInterface(), 50 "opc_compute_vnic": dataSourceVNIC(), 51 }, 52 53 ResourcesMap: map[string]*schema.Resource{ 54 "opc_compute_ip_network": resourceOPCIPNetwork(), 55 "opc_compute_acl": resourceOPCACL(), 56 "opc_compute_image_list": resourceOPCImageList(), 57 "opc_compute_image_list_entry": resourceOPCImageListEntry(), 58 "opc_compute_instance": resourceInstance(), 59 "opc_compute_ip_address_reservation": resourceOPCIPAddressReservation(), 60 "opc_compute_ip_association": resourceOPCIPAssociation(), 61 "opc_compute_ip_network_exchange": resourceOPCIPNetworkExchange(), 62 "opc_compute_ip_reservation": resourceOPCIPReservation(), 63 "opc_compute_route": resourceOPCRoute(), 64 "opc_compute_security_application": resourceOPCSecurityApplication(), 65 "opc_compute_security_association": resourceOPCSecurityAssociation(), 66 "opc_compute_security_ip_list": resourceOPCSecurityIPList(), 67 "opc_compute_security_list": resourceOPCSecurityList(), 68 "opc_compute_security_rule": resourceOPCSecurityRule(), 69 "opc_compute_sec_rule": resourceOPCSecRule(), 70 "opc_compute_ssh_key": resourceOPCSSHKey(), 71 "opc_compute_storage_volume": resourceOPCStorageVolume(), 72 "opc_compute_storage_volume_snapshot": resourceOPCStorageVolumeSnapshot(), 73 "opc_compute_vnic_set": resourceOPCVNICSet(), 74 "opc_compute_security_protocol": resourceOPCSecurityProtocol(), 75 "opc_compute_ip_address_prefix_set": resourceOPCIPAddressPrefixSet(), 76 "opc_compute_ip_address_association": resourceOPCIPAddressAssociation(), 77 }, 78 79 ConfigureFunc: providerConfigure, 80 } 81 } 82 83 func providerConfigure(d *schema.ResourceData) (interface{}, error) { 84 config := Config{ 85 User: d.Get("user").(string), 86 Password: d.Get("password").(string), 87 IdentityDomain: d.Get("identity_domain").(string), 88 Endpoint: d.Get("endpoint").(string), 89 MaxRetryTimeout: d.Get("max_retry_timeout").(int), 90 } 91 92 return config.Client() 93 }