...

Source file src/github.com/LINBIT/golinstor/client/keyvaluestore.go

Documentation: github.com/LINBIT/golinstor/client

     1  package client
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  )
     7  
     8  type KV struct {
     9  	Name  string            `json:"name"`
    10  	Props map[string]string `json:"props"`
    11  }
    12  
    13  type KeyValueStoreProvider interface {
    14  	List(ctx context.Context) ([]KV, error)
    15  	Get(ctx context.Context, kv string) (*KV, error)
    16  	CreateOrModify(ctx context.Context, kv string, modify GenericPropsModify) error
    17  	Delete(ctx context.Context, kv string) error
    18  }
    19  
    20  var _ KeyValueStoreProvider = &KeyValueStoreService{}
    21  
    22  type KeyValueStoreService struct {
    23  	client *Client
    24  }
    25  
    26  // List returns the name of key-value stores and their values
    27  func (k *KeyValueStoreService) List(ctx context.Context) ([]KV, error) {
    28  	var ret []KV
    29  
    30  	_, err := k.client.doGET(ctx, "/v1/key-value-store", &ret)
    31  	if err != nil {
    32  		return nil, err
    33  	}
    34  
    35  	return ret, nil
    36  }
    37  
    38  func (k *KeyValueStoreService) Get(ctx context.Context, kv string) (*KV, error) {
    39  	var ret []KV
    40  
    41  	_, err := k.client.doGET(ctx, "/v1/key-value-store/"+kv, &ret)
    42  	if err != nil {
    43  		return nil, err
    44  	}
    45  
    46  	if len(ret) != 1 {
    47  		return nil, fmt.Errorf("expected exactly one KV, got %d", len(ret))
    48  	}
    49  
    50  	return &ret[0], nil
    51  }
    52  
    53  func (k *KeyValueStoreService) CreateOrModify(ctx context.Context, kv string, modify GenericPropsModify) error {
    54  	_, err := k.client.doPUT(ctx, "/v1/key-value-store/"+kv, modify)
    55  	return err
    56  }
    57  
    58  func (k *KeyValueStoreService) Delete(ctx context.Context, kv string) error {
    59  	_, err := k.client.doDELETE(ctx, "/v1/key-value-store/"+kv, nil)
    60  	return err
    61  }
    62  

View as plain text