|  | 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 an 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 | 
|  | } |