blob: fe90e722cbd8e9b3d776b3475f5c5bab39dfab8a [file] [log] [blame]
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
}