github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/vm-control/types.go (about)

     1  package main
     2  
     3  import (
     4  	"bytes"
     5  	"strings"
     6  
     7  	hyper_proto "github.com/Cloud-Foundations/Dominator/proto/hypervisor"
     8  )
     9  
    10  type volumeTypeList []hyper_proto.VolumeType
    11  
    12  func (vtl *volumeTypeList) String() string {
    13  	buffer := &bytes.Buffer{}
    14  	buffer.WriteString(`"`)
    15  	for index, vtype := range *vtl {
    16  		buffer.WriteString(vtype.String())
    17  		if index < len(*vtl)-1 {
    18  			buffer.WriteString(",")
    19  		}
    20  	}
    21  	buffer.WriteString(`"`)
    22  	return buffer.String()
    23  }
    24  
    25  func (vtl *volumeTypeList) Set(value string) error {
    26  	newList := make(volumeTypeList, 0)
    27  	if value != "" {
    28  		vtypeStrings := strings.Split(value, ",")
    29  		for _, vtypeString := range vtypeStrings {
    30  			var vtype hyper_proto.VolumeType
    31  			if err := vtype.Set(vtypeString); err != nil {
    32  				return err
    33  			}
    34  			newList = append(newList, vtype)
    35  		}
    36  	}
    37  	*vtl = newList
    38  	return nil
    39  }