block_volume_client.go raw

   1  package storage
   2  
   3  import (
   4  	liquidweb "github.com/liquidweb/liquidweb-go"
   5  )
   6  
   7  // BlockVolumeBackend describes the interface for interactions with the API.
   8  type BlockVolumeBackend interface {
   9  	Create(*BlockVolumeParams) (*BlockVolume, error)
  10  	Details(string) (*BlockVolume, error)
  11  	List(*BlockVolumeParams) (*BlockVolumeList, error)
  12  	Update(*BlockVolumeParams) (*BlockVolume, error)
  13  	Delete(string) (*BlockVolumeDeletion, error)
  14  	Resize(*BlockVolumeParams) (*BlockVolumeResize, error)
  15  }
  16  
  17  // BlockVolumeClient is the backend implementation for interacting with block volumes.
  18  type BlockVolumeClient struct {
  19  	Backend liquidweb.Backend
  20  }
  21  
  22  // Create creates a new block volume.
  23  func (c *BlockVolumeClient) Create(params *BlockVolumeParams) (*BlockVolume, error) {
  24  	var result BlockVolume
  25  	err := c.Backend.CallIntoInterface("v1/Storage/Block/Volume/create", params, &result)
  26  	if err != nil {
  27  		return nil, err
  28  	}
  29  
  30  	return &result, nil
  31  }
  32  
  33  // Details returns details about a block volume.
  34  func (c *BlockVolumeClient) Details(id string) (*BlockVolume, error) {
  35  	var result BlockVolume
  36  	params := BlockVolumeParams{UniqID: id}
  37  
  38  	err := c.Backend.CallIntoInterface("v1/Storage/Block/Volume/details", params, &result)
  39  	if err != nil {
  40  		return nil, err
  41  	}
  42  	return &result, nil
  43  }
  44  
  45  // List returns a list of block volumes.
  46  func (c *BlockVolumeClient) List(params *BlockVolumeParams) (*BlockVolumeList, error) {
  47  	list := &BlockVolumeList{}
  48  
  49  	err := c.Backend.CallIntoInterface("v1/Storage/Block/Volume/list", params, list)
  50  	if err != nil {
  51  		return nil, err
  52  	}
  53  	return list, nil
  54  }
  55  
  56  // Update will update a block volume.
  57  func (c *BlockVolumeClient) Update(params *BlockVolumeParams) (*BlockVolume, error) {
  58  	var result BlockVolume
  59  	err := c.Backend.CallIntoInterface("v1/Storage/Block/Volume/update", params, &result)
  60  	if err != nil {
  61  		return nil, err
  62  	}
  63  	return &result, nil
  64  }
  65  
  66  // Delete will delete a block volume.
  67  func (c *BlockVolumeClient) Delete(id string) (*BlockVolumeDeletion, error) {
  68  	var result BlockVolumeDeletion
  69  	params := BlockVolumeParams{UniqID: id}
  70  
  71  	err := c.Backend.CallIntoInterface("v1/Storage/Block/Volume/delete", params, &result)
  72  	if err != nil {
  73  		return nil, err
  74  	}
  75  	return &result, nil
  76  }
  77  
  78  // Resize will resize a block volume.
  79  func (c *BlockVolumeClient) Resize(params *BlockVolumeParams) (*BlockVolumeResize, error) {
  80  	var result BlockVolumeResize
  81  	err := c.Backend.CallIntoInterface("v1/Storage/Block/Volume/resize", params, &result)
  82  	if err != nil {
  83  		return nil, err
  84  	}
  85  	return &result, nil
  86  }
  87