Adding session persistence
diff --git a/rackspace/lb/v1/sessions/results.go b/rackspace/lb/v1/sessions/results.go
new file mode 100644
index 0000000..181e0d9
--- /dev/null
+++ b/rackspace/lb/v1/sessions/results.go
@@ -0,0 +1,58 @@
+package sessions
+
+import (
+ "github.com/mitchellh/mapstructure"
+
+ "github.com/rackspace/gophercloud"
+)
+
+// Type represents the type of session persistence being used.
+type Type string
+
+const (
+ // HTTPCOOKIE is a session persistence mechanism that inserts an HTTP cookie
+ // and is used to determine the destination back-end node. This is supported
+ // for HTTP load balancing only.
+ HTTPCOOKIE Type = "HTTP_COOKIE"
+
+ // SOURCEIP is a session persistence mechanism that keeps track of the source
+ // IP address that is mapped and is able to determine the destination
+ // back-end node. This is supported for HTTPS pass-through and non-HTTP load
+ // balancing only.
+ SOURCEIP Type = "SOURCE_IP"
+)
+
+// SessionPersistence indicates how a load balancer is using session persistence
+type SessionPersistence struct {
+ Type Type `mapstructure:"persistenceType"`
+}
+
+// EnableResult represents the result of an enable operation.
+type EnableResult struct {
+ gophercloud.ErrResult
+}
+
+// DisableResult represents the result of a disable operation.
+type DisableResult struct {
+ gophercloud.ErrResult
+}
+
+// GetResult represents the result of a get operation.
+type GetResult struct {
+ gophercloud.Result
+}
+
+// Extract interprets a GetResult as a SP, if possible.
+func (r GetResult) Extract() (*SessionPersistence, error) {
+ if r.Err != nil {
+ return nil, r.Err
+ }
+
+ var response struct {
+ SP SessionPersistence `mapstructure:"sessionPersistence"`
+ }
+
+ err := mapstructure.Decode(r.Body, &response)
+
+ return &response.SP, err
+}