Initial commit of experimental, new, v0.2.0 API
diff --git a/acceptance/openstack/identity/01-authenticate.go b/acceptance/openstack/identity/01-authenticate.go
new file mode 100644
index 0000000..d41bf01
--- /dev/null
+++ b/acceptance/openstack/identity/01-authenticate.go
@@ -0,0 +1,57 @@
+package main
+
+import (
+ "fmt"
+ "github.com/rackspace/gophercloud/openstack/identity"
+ "github.com/rackspace/gophercloud/openstack/utils"
+)
+
+type extractor func(*identity.TokenDesc) string
+
+func main() {
+ ao, err := utils.AuthOptions()
+ if err != nil {
+ panic(err)
+ }
+
+ ao.AllowReauth = true
+ r, err := identity.Authenticate(ao)
+ if err != nil {
+ panic(err)
+ }
+
+ t, err := identity.Token(r)
+ if err != nil {
+ panic(err)
+ }
+
+ table := map[string]extractor{
+ "ID": func(t *identity.TokenDesc) string { return t.Id() },
+ "Expires": func(t *identity.TokenDesc) string { return t.Expires() },
+ }
+
+ for attr, fn := range table {
+ fmt.Printf("Your token's %s is %s\n", attr, fn(t))
+ }
+
+ sc, err := identity.ServiceCatalog(r)
+ if err != nil {
+ panic(err)
+ }
+ ces, err := sc.CatalogEntries()
+ fmt.Printf("Service Catalog Summary:\n %32s %-16s\n", "Name", "Type")
+ for _, ce := range ces {
+ fmt.Printf(" %32s | %-16s\n", ce.Name, ce.Type)
+ }
+
+ for _, ce := range ces {
+ fmt.Printf("Endpoints for %s/%s\n", ce.Name, ce.Type)
+ for _, ep := range ce.Endpoints {
+ fmt.Printf(" Version: %s\n", ep.VersionId)
+ fmt.Printf(" Region: %s\n", ep.Region)
+ fmt.Printf(" Tenant: %s\n", ep.TenantId)
+ fmt.Printf(" Public URL: %s\n", ep.PublicURL)
+ fmt.Printf(" Internal URL: %s\n", ep.InternalURL)
+ }
+ }
+}