1/**
2 * Copyright 2016 IBM Corp.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *    http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/**
18 * AUTOMATICALLY GENERATED CODE - DO NOT MODIFY
19 */
20
21package services
22
23import (
24	"fmt"
25	"strings"
26
27	"github.com/softlayer/softlayer-go/datatypes"
28	"github.com/softlayer/softlayer-go/session"
29	"github.com/softlayer/softlayer-go/sl"
30)
31
32// no documentation yet
33type Security_Certificate struct {
34	Session *session.Session
35	Options sl.Options
36}
37
38// GetSecurityCertificateService returns an instance of the Security_Certificate SoftLayer service
39func GetSecurityCertificateService(sess *session.Session) Security_Certificate {
40	return Security_Certificate{Session: sess}
41}
42
43func (r Security_Certificate) Id(id int) Security_Certificate {
44	r.Options.Id = &id
45	return r
46}
47
48func (r Security_Certificate) Mask(mask string) Security_Certificate {
49	if !strings.HasPrefix(mask, "mask[") && (strings.Contains(mask, "[") || strings.Contains(mask, ",")) {
50		mask = fmt.Sprintf("mask[%s]", mask)
51	}
52
53	r.Options.Mask = mask
54	return r
55}
56
57func (r Security_Certificate) Filter(filter string) Security_Certificate {
58	r.Options.Filter = filter
59	return r
60}
61
62func (r Security_Certificate) Limit(limit int) Security_Certificate {
63	r.Options.Limit = &limit
64	return r
65}
66
67func (r Security_Certificate) Offset(offset int) Security_Certificate {
68	r.Options.Offset = &offset
69	return r
70}
71
72// Add a certificate to your account for your records, or for use with various services. Only the certificate and private key are usually required. If your issuer provided an intermediate certificate, you must also provide that certificate. Details will be extracted from the certificate. Validation will be performed between the certificate and the private key as well as the certificate and the intermediate certificate, if provided.
73//
74// The certificate signing request is not required, but can be provided for your records.
75func (r Security_Certificate) CreateObject(templateObject *datatypes.Security_Certificate) (resp datatypes.Security_Certificate, err error) {
76	params := []interface{}{
77		templateObject,
78	}
79	err = r.Session.DoRequest("SoftLayer_Security_Certificate", "createObject", params, &r.Options, &resp)
80	return
81}
82
83// Remove a certificate from your account. You may not remove a certificate with associated services.
84func (r Security_Certificate) DeleteObject() (resp bool, err error) {
85	err = r.Session.DoRequest("SoftLayer_Security_Certificate", "deleteObject", nil, &r.Options, &resp)
86	return
87}
88
89// Update a certificate. Modifications are restricted to the note and CSR if the are any services associated with the certificate. There are no modification restrictions for a certificate with no associated services.
90func (r Security_Certificate) EditObject(templateObject *datatypes.Security_Certificate) (resp bool, err error) {
91	params := []interface{}{
92		templateObject,
93	}
94	err = r.Session.DoRequest("SoftLayer_Security_Certificate", "editObject", params, &r.Options, &resp)
95	return
96}
97
98// Locate certificates by their common name, traditionally a domain name.
99func (r Security_Certificate) FindByCommonName(commonName *string) (resp []datatypes.Security_Certificate, err error) {
100	params := []interface{}{
101		commonName,
102	}
103	err = r.Session.DoRequest("SoftLayer_Security_Certificate", "findByCommonName", params, &r.Options, &resp)
104	return
105}
106
107// Retrieve The number of services currently associated with the certificate.
108func (r Security_Certificate) GetAssociatedServiceCount() (resp int, err error) {
109	err = r.Session.DoRequest("SoftLayer_Security_Certificate", "getAssociatedServiceCount", nil, &r.Options, &resp)
110	return
111}
112
113// Retrieve The load balancers virtual IP addresses currently associated with the certificate.
114func (r Security_Certificate) GetLoadBalancerVirtualIpAddresses() (resp []datatypes.Network_Application_Delivery_Controller_LoadBalancer_VirtualIpAddress, err error) {
115	err = r.Session.DoRequest("SoftLayer_Security_Certificate", "getLoadBalancerVirtualIpAddresses", nil, &r.Options, &resp)
116	return
117}
118
119// no documentation yet
120func (r Security_Certificate) GetObject() (resp datatypes.Security_Certificate, err error) {
121	err = r.Session.DoRequest("SoftLayer_Security_Certificate", "getObject", nil, &r.Options, &resp)
122	return
123}
124
125// Retrieve the certificate in PEM (Privacy Enhanced Mail) format, which is a string containing all base64 encoded (DER) certificates delimited by -----BEGIN/END *----- clauses.
126func (r Security_Certificate) GetPemFormat() (resp string, err error) {
127	err = r.Session.DoRequest("SoftLayer_Security_Certificate", "getPemFormat", nil, &r.Options, &resp)
128	return
129}
130
131// SoftLayer_Security_Certificate_Request data type is used to harness your SSL certificate order to a Certificate Authority. This contains data that is required by a Certificate Authority to place an SSL certificate order.
132type Security_Certificate_Request struct {
133	Session *session.Session
134	Options sl.Options
135}
136
137// GetSecurityCertificateRequestService returns an instance of the Security_Certificate_Request SoftLayer service
138func GetSecurityCertificateRequestService(sess *session.Session) Security_Certificate_Request {
139	return Security_Certificate_Request{Session: sess}
140}
141
142func (r Security_Certificate_Request) Id(id int) Security_Certificate_Request {
143	r.Options.Id = &id
144	return r
145}
146
147func (r Security_Certificate_Request) Mask(mask string) Security_Certificate_Request {
148	if !strings.HasPrefix(mask, "mask[") && (strings.Contains(mask, "[") || strings.Contains(mask, ",")) {
149		mask = fmt.Sprintf("mask[%s]", mask)
150	}
151
152	r.Options.Mask = mask
153	return r
154}
155
156func (r Security_Certificate_Request) Filter(filter string) Security_Certificate_Request {
157	r.Options.Filter = filter
158	return r
159}
160
161func (r Security_Certificate_Request) Limit(limit int) Security_Certificate_Request {
162	r.Options.Limit = &limit
163	return r
164}
165
166func (r Security_Certificate_Request) Offset(offset int) Security_Certificate_Request {
167	r.Options.Offset = &offset
168	return r
169}
170
171// Cancels a pending SSL certificate order at the Certificate Authority
172func (r Security_Certificate_Request) CancelSslOrder() (resp bool, err error) {
173	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "cancelSslOrder", nil, &r.Options, &resp)
174	return
175}
176
177// Retrieve The account to which a SSL certificate request belongs.
178func (r Security_Certificate_Request) GetAccount() (resp datatypes.Account, err error) {
179	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getAccount", nil, &r.Options, &resp)
180	return
181}
182
183// Gets the email domains that can be used to validate a certificate to a domain.
184func (r Security_Certificate_Request) GetAdministratorEmailDomains(commonName *string) (resp []string, err error) {
185	params := []interface{}{
186		commonName,
187	}
188	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getAdministratorEmailDomains", params, &r.Options, &resp)
189	return
190}
191
192// Gets the email accounts that can be used to validate a certificate to a domain.
193func (r Security_Certificate_Request) GetAdministratorEmailPrefixes() (resp []string, err error) {
194	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getAdministratorEmailPrefixes", nil, &r.Options, &resp)
195	return
196}
197
198// Retrieve The Certificate Authority name
199func (r Security_Certificate_Request) GetCertificateAuthorityName() (resp string, err error) {
200	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getCertificateAuthorityName", nil, &r.Options, &resp)
201	return
202}
203
204// no documentation yet
205func (r Security_Certificate_Request) GetObject() (resp datatypes.Security_Certificate_Request, err error) {
206	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getObject", nil, &r.Options, &resp)
207	return
208}
209
210// Retrieve The order contains the information related to a SSL certificate request.
211func (r Security_Certificate_Request) GetOrder() (resp datatypes.Billing_Order, err error) {
212	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getOrder", nil, &r.Options, &resp)
213	return
214}
215
216// Retrieve The associated order item for this SSL certificate request.
217func (r Security_Certificate_Request) GetOrderItem() (resp datatypes.Billing_Order_Item, err error) {
218	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getOrderItem", nil, &r.Options, &resp)
219	return
220}
221
222// Returns previous SSL certificate order data. You can use this data for to place a renewal order for a completed SSL certificate.
223func (r Security_Certificate_Request) GetPreviousOrderData() (resp datatypes.Container_Product_Order_Security_Certificate, err error) {
224	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getPreviousOrderData", nil, &r.Options, &resp)
225	return
226}
227
228// Returns all the SSL certificate requests.
229func (r Security_Certificate_Request) GetSslCertificateRequests(accountId *int) (resp []datatypes.Security_Certificate_Request, err error) {
230	params := []interface{}{
231		accountId,
232	}
233	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getSslCertificateRequests", params, &r.Options, &resp)
234	return
235}
236
237// Retrieve The status of a SSL certificate request.
238func (r Security_Certificate_Request) GetStatus() (resp datatypes.Security_Certificate_Request_Status, err error) {
239	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "getStatus", nil, &r.Options, &resp)
240	return
241}
242
243// A Certificate Authority sends out various emails to your domain administrator or your technical contact. Use this service to have these emails re-sent.
244func (r Security_Certificate_Request) ResendEmail(emailType *string) (resp bool, err error) {
245	params := []interface{}{
246		emailType,
247	}
248	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "resendEmail", params, &r.Options, &resp)
249	return
250}
251
252// Allows you to validate a Certificate Signing Request (CSR) required for an SSL certificate with the certificate authority (CA).  This method sends the CSR, the length of the subscription in months, the certificate type, and the server type for validation against requirements of the CA.  Returns true if valid.
253//
254// More information on CSR generation can be found at: [http://en.wikipedia.org/wiki/Certificate_signing_request Wikipedia] [https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AR235&actp=LIST&viewlocale=en_US VeriSign]
255func (r Security_Certificate_Request) ValidateCsr(csr *string, validityMonths *int, itemId *int, serverType *string) (resp bool, err error) {
256	params := []interface{}{
257		csr,
258		validityMonths,
259		itemId,
260		serverType,
261	}
262	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request", "validateCsr", params, &r.Options, &resp)
263	return
264}
265
266// Represents a server type that can be specified when ordering an SSL certificate.
267type Security_Certificate_Request_ServerType struct {
268	Session *session.Session
269	Options sl.Options
270}
271
272// GetSecurityCertificateRequestServerTypeService returns an instance of the Security_Certificate_Request_ServerType SoftLayer service
273func GetSecurityCertificateRequestServerTypeService(sess *session.Session) Security_Certificate_Request_ServerType {
274	return Security_Certificate_Request_ServerType{Session: sess}
275}
276
277func (r Security_Certificate_Request_ServerType) Id(id int) Security_Certificate_Request_ServerType {
278	r.Options.Id = &id
279	return r
280}
281
282func (r Security_Certificate_Request_ServerType) Mask(mask string) Security_Certificate_Request_ServerType {
283	if !strings.HasPrefix(mask, "mask[") && (strings.Contains(mask, "[") || strings.Contains(mask, ",")) {
284		mask = fmt.Sprintf("mask[%s]", mask)
285	}
286
287	r.Options.Mask = mask
288	return r
289}
290
291func (r Security_Certificate_Request_ServerType) Filter(filter string) Security_Certificate_Request_ServerType {
292	r.Options.Filter = filter
293	return r
294}
295
296func (r Security_Certificate_Request_ServerType) Limit(limit int) Security_Certificate_Request_ServerType {
297	r.Options.Limit = &limit
298	return r
299}
300
301func (r Security_Certificate_Request_ServerType) Offset(offset int) Security_Certificate_Request_ServerType {
302	r.Options.Offset = &offset
303	return r
304}
305
306// Returns all SSL certificate server types, which are passed in on a [[SoftLayer_Container_Product_Order_Security_Certificate|certificate order]].
307func (r Security_Certificate_Request_ServerType) GetAllObjects() (resp []datatypes.Security_Certificate_Request_ServerType, err error) {
308	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request_ServerType", "getAllObjects", nil, &r.Options, &resp)
309	return
310}
311
312// no documentation yet
313func (r Security_Certificate_Request_ServerType) GetObject() (resp datatypes.Security_Certificate_Request_ServerType, err error) {
314	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request_ServerType", "getObject", nil, &r.Options, &resp)
315	return
316}
317
318// Represents the status of an SSL certificate request.
319type Security_Certificate_Request_Status struct {
320	Session *session.Session
321	Options sl.Options
322}
323
324// GetSecurityCertificateRequestStatusService returns an instance of the Security_Certificate_Request_Status SoftLayer service
325func GetSecurityCertificateRequestStatusService(sess *session.Session) Security_Certificate_Request_Status {
326	return Security_Certificate_Request_Status{Session: sess}
327}
328
329func (r Security_Certificate_Request_Status) Id(id int) Security_Certificate_Request_Status {
330	r.Options.Id = &id
331	return r
332}
333
334func (r Security_Certificate_Request_Status) Mask(mask string) Security_Certificate_Request_Status {
335	if !strings.HasPrefix(mask, "mask[") && (strings.Contains(mask, "[") || strings.Contains(mask, ",")) {
336		mask = fmt.Sprintf("mask[%s]", mask)
337	}
338
339	r.Options.Mask = mask
340	return r
341}
342
343func (r Security_Certificate_Request_Status) Filter(filter string) Security_Certificate_Request_Status {
344	r.Options.Filter = filter
345	return r
346}
347
348func (r Security_Certificate_Request_Status) Limit(limit int) Security_Certificate_Request_Status {
349	r.Options.Limit = &limit
350	return r
351}
352
353func (r Security_Certificate_Request_Status) Offset(offset int) Security_Certificate_Request_Status {
354	r.Options.Offset = &offset
355	return r
356}
357
358// no documentation yet
359func (r Security_Certificate_Request_Status) GetObject() (resp datatypes.Security_Certificate_Request_Status, err error) {
360	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request_Status", "getObject", nil, &r.Options, &resp)
361	return
362}
363
364// Returns all SSL certificate request status objects
365func (r Security_Certificate_Request_Status) GetSslRequestStatuses() (resp []datatypes.Security_Certificate_Request_Status, err error) {
366	err = r.Session.DoRequest("SoftLayer_Security_Certificate_Request_Status", "getSslRequestStatuses", nil, &r.Options, &resp)
367	return
368}
369
370// no documentation yet
371type Security_Ssh_Key struct {
372	Session *session.Session
373	Options sl.Options
374}
375
376// GetSecuritySshKeyService returns an instance of the Security_Ssh_Key SoftLayer service
377func GetSecuritySshKeyService(sess *session.Session) Security_Ssh_Key {
378	return Security_Ssh_Key{Session: sess}
379}
380
381func (r Security_Ssh_Key) Id(id int) Security_Ssh_Key {
382	r.Options.Id = &id
383	return r
384}
385
386func (r Security_Ssh_Key) Mask(mask string) Security_Ssh_Key {
387	if !strings.HasPrefix(mask, "mask[") && (strings.Contains(mask, "[") || strings.Contains(mask, ",")) {
388		mask = fmt.Sprintf("mask[%s]", mask)
389	}
390
391	r.Options.Mask = mask
392	return r
393}
394
395func (r Security_Ssh_Key) Filter(filter string) Security_Ssh_Key {
396	r.Options.Filter = filter
397	return r
398}
399
400func (r Security_Ssh_Key) Limit(limit int) Security_Ssh_Key {
401	r.Options.Limit = &limit
402	return r
403}
404
405func (r Security_Ssh_Key) Offset(offset int) Security_Ssh_Key {
406	r.Options.Offset = &offset
407	return r
408}
409
410// Add a ssh key to your account for use during server provisioning and os reloads.
411func (r Security_Ssh_Key) CreateObject(templateObject *datatypes.Security_Ssh_Key) (resp datatypes.Security_Ssh_Key, err error) {
412	params := []interface{}{
413		templateObject,
414	}
415	err = r.Session.DoRequest("SoftLayer_Security_Ssh_Key", "createObject", params, &r.Options, &resp)
416	return
417}
418
419// Remove a ssh key from your account.
420func (r Security_Ssh_Key) DeleteObject() (resp bool, err error) {
421	err = r.Session.DoRequest("SoftLayer_Security_Ssh_Key", "deleteObject", nil, &r.Options, &resp)
422	return
423}
424
425// Update a ssh key.
426func (r Security_Ssh_Key) EditObject(templateObject *datatypes.Security_Ssh_Key) (resp bool, err error) {
427	params := []interface{}{
428		templateObject,
429	}
430	err = r.Session.DoRequest("SoftLayer_Security_Ssh_Key", "editObject", params, &r.Options, &resp)
431	return
432}
433
434// Retrieve
435func (r Security_Ssh_Key) GetAccount() (resp datatypes.Account, err error) {
436	err = r.Session.DoRequest("SoftLayer_Security_Ssh_Key", "getAccount", nil, &r.Options, &resp)
437	return
438}
439
440// Retrieve The image template groups that are linked to an SSH key.
441func (r Security_Ssh_Key) GetBlockDeviceTemplateGroups() (resp []datatypes.Virtual_Guest_Block_Device_Template_Group, err error) {
442	err = r.Session.DoRequest("SoftLayer_Security_Ssh_Key", "getBlockDeviceTemplateGroups", nil, &r.Options, &resp)
443	return
444}
445
446// no documentation yet
447func (r Security_Ssh_Key) GetObject() (resp datatypes.Security_Ssh_Key, err error) {
448	err = r.Session.DoRequest("SoftLayer_Security_Ssh_Key", "getObject", nil, &r.Options, &resp)
449	return
450}
451
452// Retrieve The OS root users that are linked to an SSH key.
453func (r Security_Ssh_Key) GetSoftwarePasswords() (resp []datatypes.Software_Component_Password, err error) {
454	err = r.Session.DoRequest("SoftLayer_Security_Ssh_Key", "getSoftwarePasswords", nil, &r.Options, &resp)
455	return
456}
457