File: requests.go

package info (click to toggle)
golang-github-gophercloud-gophercloud 0.12.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, bullseye-backports
  • size: 10,224 kB
  • sloc: sh: 125; makefile: 21
file content (186 lines) | stat: -rw-r--r-- 7,106 bytes parent folder | download | duplicates (2)
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
package securityservices

import (
	"github.com/gophercloud/gophercloud"
	"github.com/gophercloud/gophercloud/pagination"
)

type SecurityServiceType string

// Valid security service types
const (
	LDAP            SecurityServiceType = "ldap"
	Kerberos        SecurityServiceType = "kerberos"
	ActiveDirectory SecurityServiceType = "active_directory"
)

// CreateOptsBuilder allows extensions to add additional parameters to the
// Create request.
type CreateOptsBuilder interface {
	ToSecurityServiceCreateMap() (map[string]interface{}, error)
}

// CreateOpts contains options for creating a SecurityService. This object is
// passed to the securityservices.Create function. For more information about
// these parameters, see the SecurityService object.
type CreateOpts struct {
	// The security service type. A valid value is ldap, kerberos, or active_directory
	Type SecurityServiceType `json:"type" required:"true"`
	// The security service name
	Name string `json:"name,omitempty"`
	// The security service description
	Description string `json:"description,omitempty"`
	// The DNS IP address that is used inside the tenant network
	DNSIP string `json:"dns_ip,omitempty"`
	// The security service organizational unit (OU). Minimum supported microversion for OU is 2.44.
	OU string `json:"ou,omitempty"`
	// The security service user or group name that is used by the tenant
	User string `json:"user,omitempty"`
	// The user password, if you specify a user
	Password string `json:"password,omitempty"`
	// The security service domain
	Domain string `json:"domain,omitempty"`
	// The security service host name or IP address
	Server string `json:"server,omitempty"`
}

// ToSecurityServicesCreateMap assembles a request body based on the contents of a
// CreateOpts.
func (opts CreateOpts) ToSecurityServiceCreateMap() (map[string]interface{}, error) {
	return gophercloud.BuildRequestBody(opts, "security_service")
}

// Create will create a new SecurityService based on the values in CreateOpts. To
// extract the SecurityService object from the response, call the Extract method
// on the CreateResult.
func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult) {
	b, err := opts.ToSecurityServiceCreateMap()
	if err != nil {
		r.Err = err
		return
	}
	resp, err := client.Post(createURL(client), b, &r.Body, &gophercloud.RequestOpts{
		OkCodes: []int{200},
	})
	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
	return
}

// Delete will delete the existing SecurityService with the provided ID.
func Delete(client *gophercloud.ServiceClient, id string) (r DeleteResult) {
	resp, err := client.Delete(deleteURL(client, id), nil)
	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
	return
}

// ListOptsBuilder allows extensions to add additional parameters to the List
// request.
type ListOptsBuilder interface {
	ToSecurityServiceListQuery() (string, error)
}

// ListOpts holds options for listing SecurityServices. It is passed to the
// securityservices.List function.
type ListOpts struct {
	// admin-only option. Set it to true to see all tenant security services.
	AllTenants bool `q:"all_tenants"`
	// The security service ID
	ID string `q:"id"`
	// The security service domain
	Domain string `q:"domain"`
	// The security service type. A valid value is ldap, kerberos, or active_directory
	Type SecurityServiceType `q:"type"`
	// The security service name
	Name string `q:"name"`
	// The DNS IP address that is used inside the tenant network
	DNSIP string `q:"dns_ip"`
	// The security service organizational unit (OU). Minimum supported microversion for OU is 2.44.
	OU string `q:"ou"`
	// The security service user or group name that is used by the tenant
	User string `q:"user"`
	// The security service host name or IP address
	Server string `q:"server"`
	// The ID of the share network using security services
	ShareNetworkID string `q:"share_network_id"`
}

// ToSecurityServiceListQuery formats a ListOpts into a query string.
func (opts ListOpts) ToSecurityServiceListQuery() (string, error) {
	q, err := gophercloud.BuildQueryString(opts)
	return q.String(), err
}

// List returns SecurityServices optionally limited by the conditions provided in ListOpts.
func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager {
	url := listURL(client)
	if opts != nil {
		query, err := opts.ToSecurityServiceListQuery()
		if err != nil {
			return pagination.Pager{Err: err}
		}
		url += query
	}

	return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
		return SecurityServicePage{pagination.SinglePageBase(r)}
	})
}

// Get retrieves the SecurityService with the provided ID. To extract the SecurityService
// object from the response, call the Extract method on the GetResult.
func Get(client *gophercloud.ServiceClient, id string) (r GetResult) {
	resp, err := client.Get(getURL(client, id), &r.Body, nil)
	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
	return
}

// UpdateOptsBuilder allows extensions to add additional parameters to the
// Update request.
type UpdateOptsBuilder interface {
	ToSecurityServiceUpdateMap() (map[string]interface{}, error)
}

// UpdateOpts contain options for updating an existing SecurityService. This object is passed
// to the securityservices.Update function. For more information about the parameters, see
// the SecurityService object.
type UpdateOpts struct {
	// The security service name
	Name *string `json:"name"`
	// The security service description
	Description *string `json:"description,omitempty"`
	// The security service type. A valid value is ldap, kerberos, or active_directory
	Type string `json:"type,omitempty"`
	// The DNS IP address that is used inside the tenant network
	DNSIP *string `json:"dns_ip,omitempty"`
	// The security service organizational unit (OU). Minimum supported microversion for OU is 2.44.
	OU *string `json:"ou,omitempty"`
	// The security service user or group name that is used by the tenant
	User *string `json:"user,omitempty"`
	// The user password, if you specify a user
	Password *string `json:"password,omitempty"`
	// The security service domain
	Domain *string `json:"domain,omitempty"`
	// The security service host name or IP address
	Server *string `json:"server,omitempty"`
}

// ToSecurityServiceUpdateMap assembles a request body based on the contents of an
// UpdateOpts.
func (opts UpdateOpts) ToSecurityServiceUpdateMap() (map[string]interface{}, error) {
	return gophercloud.BuildRequestBody(opts, "security_service")
}

// Update will update the SecurityService with provided information. To extract the updated
// SecurityService from the response, call the Extract method on the UpdateResult.
func Update(client *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult) {
	b, err := opts.ToSecurityServiceUpdateMap()
	if err != nil {
		r.Err = err
		return
	}
	resp, err := client.Put(updateURL(client, id), b, &r.Body, &gophercloud.RequestOpts{
		OkCodes: []int{200},
	})
	_, r.Header, r.Err = gophercloud.ParseResponse(resp, err)
	return
}