/
results.go
115 lines (100 loc) · 3.34 KB
/
results.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package securityservices
import (
"encoding/json"
"time"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/pagination"
)
// SecurityService contains all the information associated with an OpenStack
// SecurityService.
type SecurityService struct {
// The security service ID
ID string `json:"id"`
// The UUID of the project where the security service was created
ProjectID string `json:"project_id"`
// The security service domain
Domain string `json:"domain"`
// The security service status
Status string `json:"status"`
// The security service type. A valid value is ldap, kerberos, or active_directory
Type string `json:"type"`
// The security service name
Name string `json:"name"`
// The security service description
Description string `json:"description"`
// The DNS IP address that is used inside the tenant network
DNSIP string `json:"dns_ip"`
// The security service organizational unit (OU)
OU string `json:"ou"`
// The security service user or group name that is used by the tenant
User string `json:"user"`
// The user password, if you specify a user
Password string `json:"password"`
// The security service host name or IP address
Server string `json:"server"`
// The date and time stamp when the security service was created
CreatedAt time.Time `json:"-"`
// The date and time stamp when the security service was updated
UpdatedAt time.Time `json:"-"`
}
func (r *SecurityService) UnmarshalJSON(b []byte) error {
type tmp SecurityService
var s struct {
tmp
CreatedAt gophercloud.JSONRFC3339MilliNoZ `json:"created_at"`
UpdatedAt gophercloud.JSONRFC3339MilliNoZ `json:"updated_at"`
}
err := json.Unmarshal(b, &s)
if err != nil {
return err
}
*r = SecurityService(s.tmp)
r.CreatedAt = time.Time(s.CreatedAt)
r.UpdatedAt = time.Time(s.UpdatedAt)
return nil
}
type commonResult struct {
gophercloud.Result
}
// SecurityServicePage is a pagination.pager that is returned from a call to the List function.
type SecurityServicePage struct {
pagination.SinglePageBase
}
// IsEmpty returns true if a ListResult contains no SecurityServices.
func (r SecurityServicePage) IsEmpty() (bool, error) {
securityServices, err := ExtractSecurityServices(r)
return len(securityServices) == 0, err
}
// ExtractSecurityServices extracts and returns SecurityServices. It is used while
// iterating over a securityservices.List call.
func ExtractSecurityServices(r pagination.Page) ([]SecurityService, error) {
var s struct {
SecurityServices []SecurityService `json:"security_services"`
}
err := (r.(SecurityServicePage)).ExtractInto(&s)
return s.SecurityServices, err
}
// Extract will get the SecurityService object out of the commonResult object.
func (r commonResult) Extract() (*SecurityService, error) {
var s struct {
SecurityService *SecurityService `json:"security_service"`
}
err := r.ExtractInto(&s)
return s.SecurityService, err
}
// CreateResult contains the response body and error from a Create request.
type CreateResult struct {
commonResult
}
// DeleteResult contains the response body and error from a Delete request.
type DeleteResult struct {
gophercloud.ErrResult
}
// GetResult contains the response body and error from a Get request.
type GetResult struct {
commonResult
}
// UpdateResult contains the response body and error from an Update request.
type UpdateResult struct {
commonResult
}