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