object_manager_range_template.go raw

   1  package ibclient
   2  
   3  import (
   4  	"encoding/json"
   5  	"fmt"
   6  )
   7  
   8  func (d Rangetemplate) MarshalJSON() ([]byte, error) {
   9  	type Alias Rangetemplate
  10  	aux := &struct {
  11  		Member *Dhcpmember `json:"member"`
  12  		*Alias
  13  	}{
  14  		Member: d.Member,
  15  		Alias:  (*Alias)(&d),
  16  	}
  17  	return json.Marshal(aux)
  18  }
  19  
  20  func (d *Rangetemplate) UnmarshalJSON(data []byte) error {
  21  	type Alias Rangetemplate
  22  	aux := &struct {
  23  		Member *Dhcpmember `json:"member"`
  24  		*Alias
  25  	}{
  26  		Alias: (*Alias)(d),
  27  	}
  28  	if err := json.Unmarshal(data, &aux); err != nil {
  29  		return err
  30  	}
  31  	d.Member = aux.Member
  32  	return nil
  33  }
  34  
  35  func (ms Msdhcpserver) MarshalJSON() ([]byte, error) {
  36  	if ms.Ipv4Addr == "" {
  37  		return []byte("null"), nil
  38  	}
  39  	return json.Marshal(map[string]string{
  40  		"ipv4addr": ms.Ipv4Addr,
  41  	})
  42  }
  43  
  44  func (objMgr *ObjectManager) CreateRangeTemplate(name string, numberOfAdresses uint32, offset uint32, comment string, ea EA,
  45  	options []*Dhcpoption, useOption bool, serverAssociationType string, failOverAssociation string, member *Dhcpmember, cloudApiCompatible bool, msServer string) (*Rangetemplate, error) {
  46  	if name == "" {
  47  		return nil, fmt.Errorf("name field is required to create a Range Template object")
  48  	}
  49  	rangeTemplate := NewRangeTemplate("", name, numberOfAdresses, offset, comment, ea, options,
  50  		useOption, serverAssociationType, failOverAssociation, member, cloudApiCompatible, msServer)
  51  	ref, err := objMgr.connector.CreateObject(rangeTemplate)
  52  	if err != nil {
  53  		return nil, fmt.Errorf("error creating Range Template object %s, err: %s", name, err)
  54  	}
  55  	rangeTemplate.Ref = ref
  56  	return rangeTemplate, nil
  57  }
  58  
  59  func (objMgr *ObjectManager) DeleteRangeTemplate(ref string) (string, error) {
  60  	return objMgr.connector.DeleteObject(ref)
  61  }
  62  
  63  func (objMgr *ObjectManager) GetAllRangeTemplate(queryParams *QueryParams) ([]Rangetemplate, error) {
  64  	var res []Rangetemplate
  65  	rangeTemplate := NewEmptyRangeTemplate()
  66  	err := objMgr.connector.GetObject(rangeTemplate, "", queryParams, &res)
  67  	if err != nil {
  68  		return nil, fmt.Errorf("failed getting Range Template Record: %s", err)
  69  	}
  70  	return res, nil
  71  }
  72  
  73  func (objMgr *ObjectManager) GetRangeTemplateByRef(ref string) (*Rangetemplate, error) {
  74  	rangeTemplate := NewEmptyRangeTemplate()
  75  	err := objMgr.connector.GetObject(rangeTemplate, ref, NewQueryParams(false, nil), &rangeTemplate)
  76  	if err != nil {
  77  		return nil, err
  78  	}
  79  	return rangeTemplate, nil
  80  }
  81  
  82  func (objMgr *ObjectManager) UpdateRangeTemplate(ref string, name string, numberOfAddresses uint32, offset uint32, comment string, ea EA,
  83  	options []*Dhcpoption, useOption bool, serverAssociationType string, failOverAssociation string, member *Dhcpmember, cloudApiCompatible bool, msServer string) (*Rangetemplate, error) {
  84  	if name == "" {
  85  		return nil, fmt.Errorf("name field is required to update a Range Template object")
  86  	}
  87  	rangeTemplate := NewRangeTemplate(ref, name, numberOfAddresses, offset, comment, ea, options, useOption,
  88  		serverAssociationType, failOverAssociation, member, cloudApiCompatible, msServer)
  89  	newRef, err := objMgr.connector.UpdateObject(rangeTemplate, ref)
  90  	if err != nil {
  91  		return nil, fmt.Errorf("error updating Range Template object %s, err: %s", name, err)
  92  	}
  93  	rangeTemplate.Ref = newRef
  94  	rangeTemplate, err = objMgr.GetRangeTemplateByRef(newRef)
  95  	if err != nil {
  96  		return nil, fmt.Errorf("error getting updated Range Template object %s, err: %s", name, err)
  97  	}
  98  	return rangeTemplate, nil
  99  }
 100  
 101  func NewRangeTemplate(ref string, name string, numberOfAddresses uint32, offset uint32, comment string, ea EA,
 102  	options []*Dhcpoption, useOption bool, serverAssociationType string, failOverAssociation string, member *Dhcpmember, cloudApiCompatible bool, msServer string) *Rangetemplate {
 103  	rangeTemplate := NewEmptyRangeTemplate()
 104  	rangeTemplate.Ref = ref
 105  	rangeTemplate.Name = &name
 106  	rangeTemplate.NumberOfAddresses = &numberOfAddresses
 107  	rangeTemplate.Offset = &offset
 108  	rangeTemplate.Comment = &comment
 109  	rangeTemplate.Ea = ea
 110  	rangeTemplate.Options = options
 111  	rangeTemplate.UseOptions = &useOption
 112  	rangeTemplate.ServerAssociationType = serverAssociationType
 113  	rangeTemplate.FailoverAssociation = &failOverAssociation
 114  	rangeTemplate.Member = member
 115  	rangeTemplate.CloudApiCompatible = &cloudApiCompatible
 116  	rangeTemplate.MsServer = &Msdhcpserver{Ipv4Addr: msServer}
 117  	return rangeTemplate
 118  }
 119  
 120  func NewEmptyRangeTemplate() *Rangetemplate {
 121  	rangeTemplate := &Rangetemplate{}
 122  	rangeTemplate.SetReturnFields(append(rangeTemplate.ReturnFields(), "extattrs", "options", "use_options",
 123  		"server_association_type", "failover_association", "member", "cloud_api_compatible", "ms_server"))
 124  	return rangeTemplate
 125  }
 126