github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/elb/v3/security_policy/Create.go (about) 1 package security_policy 2 3 import ( 4 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/build" 6 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 7 ) 8 9 type CreateOpts struct { 10 Name string `json:"name,omitempty"` 11 Description string `json:"description,omitempty"` 12 Protocols []string `json:"protocols" required:"true"` 13 Ciphers []string `json:"ciphers" required:"true"` 14 } 15 16 func Create(client *golangsdk.ServiceClient, opts CreateOpts) (*SecurityPolicy, error) { 17 b, err := build.RequestBody(opts, "security_policy") 18 if err != nil { 19 return nil, err 20 } 21 22 raw, err := client.Post(client.ServiceURL("security-policies"), b, nil, &golangsdk.RequestOpts{OkCodes: []int{201}}) 23 if err != nil { 24 return nil, err 25 } 26 27 var res SecurityPolicy 28 err = extract.Into(raw.Body, &res) 29 return &res, err 30 } 31 32 type SecurityPolicy struct { 33 SecurityPolicy PolicyRef `json:"security_policy"` 34 RequestId string `json:"request_id"` 35 } 36 37 type PolicyRef struct { 38 ID string `json:"id"` 39 ProjectId string `json:"project_id"` 40 Name string `json:"name"` 41 Description string `json:"description"` 42 Listeners []ListenerRef `json:"listeners"` 43 Protocols []string `json:"protocols"` 44 Ciphers []string `json:"ciphers"` 45 CreatedAt string `json:"created_at"` 46 UpdatedAt string `json:"updated_at"` 47 } 48 49 type ListenerRef struct { 50 ID string `json:"id"` 51 }