object_manager_forward_zone.go raw
1 package ibclient
2
3 import (
4 "encoding/json"
5 "fmt"
6 "reflect"
7 )
8
9 // Forwarding Server to be [] list
10 type NullableForwardingServers struct {
11 Servers []*Forwardingmemberserver
12 IsNull bool // Indicates if the entire slice should be null
13 }
14
15 func (nfs NullableForwardingServers) MarshalJSON() ([]byte, error) {
16 if reflect.DeepEqual(nfs.Servers, []*Forwardingmemberserver{}) {
17 return []byte("[]"), nil
18 }
19
20 return json.Marshal(nfs.Servers)
21 }
22
23 func (nfs *NullableForwardingServers) UnmarshalJSON(data []byte) error {
24 if string(data) == "null" {
25 nfs.IsNull = true
26 nfs.Servers = nil
27 return nil
28 }
29 nfs.IsNull = false
30 return json.Unmarshal(data, &nfs.Servers)
31 }
32
33 func (objMgr *ObjectManager) CreateZoneForward(
34 comment string,
35 disable bool,
36 eas EA,
37 forwardTo NullableNameServers,
38 forwardersOnly bool,
39 forwardingServers *NullableForwardingServers,
40 fqdn string,
41 nsGroup string,
42 view string,
43 zoneFormat string,
44 externalNsGroup string) (*ZoneForward, error) {
45 // check if required fields are present
46 // Check for FQDN
47 if fqdn == "" {
48 return nil, fmt.Errorf("FQDN is required to create a forward zone")
49 }
50 if forwardingServers != nil && forwardingServers.Servers != nil {
51 forwardingServers = &NullableForwardingServers{Servers: forwardingServers.Servers}
52 } else {
53 forwardingServers = nil
54 }
55 zoneForward := NewZoneForward(comment, disable, eas, forwardTo, forwardersOnly, forwardingServers, fqdn, nsGroup, view, zoneFormat, "", externalNsGroup)
56 ref, err := objMgr.connector.CreateObject(zoneForward)
57 if err != nil {
58 return nil, err
59 }
60 zoneForward.Ref = ref
61 return zoneForward, nil
62 }
63
64 func (objMgr *ObjectManager) DeleteZoneForward(ref string) (string, error) {
65 return objMgr.connector.DeleteObject(ref)
66
67 }
68
69 func (objMgr *ObjectManager) GetZoneForwardByRef(ref string) (*ZoneForward, error) {
70 zoneForward := NewEmptyZoneForward()
71 err := objMgr.connector.GetObject(zoneForward, ref, NewQueryParams(false, nil), &zoneForward)
72 if err != nil {
73 return nil, err
74 }
75 return zoneForward, nil
76 }
77
78 func (objMgr *ObjectManager) GetZoneForwardFilters(queryParams *QueryParams) ([]ZoneForward, error) {
79
80 var res []ZoneForward
81 zoneForward := NewEmptyZoneForward()
82
83 err := objMgr.connector.GetObject(
84 zoneForward, "", queryParams, &res)
85 if err != nil {
86 return nil, err
87 }
88
89 return res, err
90 }
91
92 func (objMgr *ObjectManager) UpdateZoneForward(
93 ref string,
94 comment string,
95 disable bool,
96 eas EA,
97 forwardTo NullableNameServers,
98 forwardersOnly bool,
99 forwardingServers *NullableForwardingServers,
100 nsGroup string,
101 externlNsGroup string) (*ZoneForward, error) {
102
103 zoneForward := NewEmptyZoneForward()
104
105 zoneForward.Comment = &comment
106 zoneForward.Disable = &disable
107 zoneForward.Ea = eas
108 zoneForward.ForwardTo = forwardTo
109 zoneForward.ForwardersOnly = &forwardersOnly
110 if forwardingServers != nil && forwardingServers.Servers != nil {
111 zoneForward.ForwardingServers = &NullableForwardingServers{Servers: forwardingServers.Servers}
112 } else {
113 zoneForward.ForwardingServers = nil
114 }
115 if nsGroup != "" {
116 zoneForward.NsGroup = &nsGroup
117 } else {
118 zoneForward.NsGroup = nil
119 }
120 if externlNsGroup != "" {
121 zoneForward.ExternalNsGroup = &externlNsGroup
122 } else {
123 zoneForward.ExternalNsGroup = nil
124 }
125
126 new_ref, err := objMgr.connector.UpdateObject(zoneForward, ref)
127 if err != nil {
128 return nil, err
129 }
130 zoneForward.Ref = new_ref
131 return zoneForward, nil
132
133 }
134
135 func NewEmptyZoneForward() *ZoneForward {
136 zoneForward := &ZoneForward{}
137 zoneForward.SetReturnFields(append(zoneForward.ReturnFields(), "zone_format", "ns_group", "external_ns_group", "comment", "disable", "extattrs", "forwarders_only", "forwarding_servers"))
138 return zoneForward
139 }
140
141 func NewZoneForward(comment string,
142 disable bool,
143 eas EA,
144 forwardTo NullableNameServers,
145 forwardersOnly bool,
146 forwardingServers *NullableForwardingServers,
147 fqdn string,
148 nsGroup string,
149 view string,
150 zoneFormat string,
151 ref string,
152 externalNsGroup string) *ZoneForward {
153
154 zoneForward := NewEmptyZoneForward()
155
156 zoneForward.Comment = &comment
157 zoneForward.Disable = &disable
158 zoneForward.Ea = eas
159 zoneForward.ForwardTo = forwardTo
160 zoneForward.ForwardersOnly = &forwardersOnly
161 zoneForward.ForwardingServers = forwardingServers
162
163 zoneForward.Fqdn = fqdn
164 if nsGroup == "" {
165 zoneForward.NsGroup = nil
166 } else {
167 zoneForward.NsGroup = &nsGroup
168 }
169 if externalNsGroup == "" {
170 zoneForward.ExternalNsGroup = nil
171 } else {
172 zoneForward.ExternalNsGroup = &externalNsGroup
173 }
174 if view == "" {
175 view = "default"
176 }
177 zoneForward.View = &view
178 if zoneFormat == "" {
179 zoneFormat = "FORWARD"
180 }
181 zoneForward.ZoneFormat = zoneFormat
182 zoneForward.Ref = ref
183
184 return zoneForward
185 }
186