Merge pull request #104 from rackspace/expose-v2-service-catalog
Expose service catalog to interested parties.
diff --git a/authenticate.go b/authenticate.go
index 886a6fa..076c731 100644
--- a/authenticate.go
+++ b/authenticate.go
@@ -195,3 +195,12 @@
})
return err
}
+
+// See ServiceCatalogerForIdentityV2 interface definition for details.
+// Note that the raw slice is returend; be careful not to alter the fields of any members,
+// for other components of Gophercloud may depend upon them.
+// If this becomes a problem in the future,
+// a future revision may return a deep-copy of the service catalog instead.
+func (a *Access) V2ServiceCatalog() []CatalogEntry {
+ return a.ServiceCatalog
+}
diff --git a/interfaces.go b/interfaces.go
index 4982937..e94f496 100644
--- a/interfaces.go
+++ b/interfaces.go
@@ -21,6 +21,13 @@
Reauthenticate() error
}
+// ServiceCatalogerIdentityV2 interface provides direct access to the service catalog as offered by the Identity V2 API.
+// We regret we need to fracture the namespace of what should otherwise be a simple concept; however,
+// the OpenStack community saw fit to render V3's service catalog completely incompatible with V2.
+type ServiceCatalogerForIdentityV2 interface {
+ V2ServiceCatalog() []CatalogEntry
+}
+
// CloudServersProvider instances encapsulate a Cloud Servers API, should one exist in the service catalog
// for your provider.
type CloudServersProvider interface {