github.com/gophercloud/gophercloud@v1.11.0/openstack/baremetal/apiversions/results.go (about)

     1  package apiversions
     2  
     3  import (
     4  	"github.com/gophercloud/gophercloud"
     5  )
     6  
     7  // APIVersions represents the result from getting a list of all versions available
     8  type APIVersions struct {
     9  	DefaultVersion APIVersion   `json:"default_version"`
    10  	Versions       []APIVersion `json:"versions"`
    11  }
    12  
    13  // APIVersion represents an API version for Ironic
    14  type APIVersion struct {
    15  	// ID is the unique identifier of the API version.
    16  	ID string `json:"id"`
    17  
    18  	// MinVersion is the minimum microversion supported.
    19  	MinVersion string `json:"min_version"`
    20  
    21  	// Status is the API versions status.
    22  	Status string `json:"status"`
    23  
    24  	// Version is the maximum microversion supported.
    25  	Version string `json:"version"`
    26  }
    27  
    28  // GetResult represents the result of a get operation.
    29  type GetResult struct {
    30  	gophercloud.Result
    31  }
    32  
    33  // ListResult represents the result of a list operation.
    34  type ListResult struct {
    35  	gophercloud.Result
    36  }
    37  
    38  // Extract is a function that accepts a get result and extracts an API version resource.
    39  func (r GetResult) Extract() (*APIVersion, error) {
    40  	var s struct {
    41  		Version APIVersion `json:"version"`
    42  	}
    43  
    44  	err := r.ExtractInto(&s)
    45  	if err != nil {
    46  		return nil, err
    47  	}
    48  
    49  	return &s.Version, nil
    50  }
    51  
    52  // Extract is a function that accepts a list result and extracts an APIVersions resource
    53  func (r ListResult) Extract() (*APIVersions, error) {
    54  	var version APIVersions
    55  
    56  	err := r.ExtractInto(&version)
    57  	if err != nil {
    58  		return nil, err
    59  	}
    60  
    61  	return &version, nil
    62  }