github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/evs/extensions/volumeactions/initialize_connection.go (about)

     1  package volumeactions
     2  
     3  import (
     4  	"github.com/opentelekomcloud/gophertelekomcloud"
     5  	"github.com/opentelekomcloud/gophertelekomcloud/internal/extract"
     6  )
     7  
     8  type InitializeConnectionOpts struct {
     9  	IP        string   `json:"ip,omitempty"`
    10  	Host      string   `json:"host,omitempty"`
    11  	Initiator string   `json:"initiator,omitempty"`
    12  	Wwpns     []string `json:"wwpns,omitempty"`
    13  	Wwnns     string   `json:"wwnns,omitempty"`
    14  	Multipath *bool    `json:"multipath,omitempty"`
    15  	Platform  string   `json:"platform,omitempty"`
    16  	OSType    string   `json:"os_type,omitempty"`
    17  }
    18  
    19  func InitializeConnection(client *golangsdk.ServiceClient, id string, opts InitializeConnectionOpts) (map[string]interface{}, error) {
    20  	b, err := golangsdk.BuildRequestBody(opts, "connector")
    21  	b = map[string]interface{}{"os-initialize_connection": b}
    22  	if err != nil {
    23  		return nil, err
    24  	}
    25  
    26  	raw, err := client.Post(client.ServiceURL("volumes", id, "action"), b, nil, &golangsdk.RequestOpts{
    27  		OkCodes: []int{200, 201, 202},
    28  	})
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  
    33  	var res struct {
    34  		ConnectionInfo map[string]interface{} `json:"connection_info"`
    35  	}
    36  	err = extract.Into(raw.Body, &res)
    37  	return res.ConnectionInfo, err
    38  }