Skip to content

Commit 214eb17

Browse files
Make use of put_class for new JSONObjects
1 parent d6abfb5 commit 214eb17

File tree

1 file changed

+103
-1
lines changed

1 file changed

+103
-1
lines changed

linode_api4/objects/linode_interfaces.py

Lines changed: 103 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class LinodeInterfacesSettingsDefaultRouteOptions(JSONObject):
1515

1616
@dataclass
1717
class LinodeInterfacesSettingsDefaultRoute(JSONObject):
18-
put_body = LinodeInterfacesSettingsDefaultRouteOptions
18+
put_class = LinodeInterfacesSettingsDefaultRouteOptions
1919

2020
ipv4_interface_id: Optional[int] = None
2121
ipv4_eligible_interface_ids: List[int] = field(default_factory=list)
@@ -35,6 +35,9 @@ class LinodeInterfacesSettings(Base):
3535
}
3636

3737

38+
# Interface POST Options
39+
40+
3841
@dataclass
3942
class LinodeInterfaceDefaultRouteOptions(JSONObject):
4043
ipv4: bool = False
@@ -98,32 +101,113 @@ class LinodeInterfaceVLANOptions(JSONObject):
98101
ipam_address: Optional[str] = None
99102

100103

104+
# Interface PUT Options
105+
106+
107+
@dataclass
108+
class LinodeInterfaceDefaultRouteUpdateOptions(JSONObject):
109+
ipv4: bool = False
110+
ipv6: bool = False
111+
112+
113+
@dataclass
114+
class LinodeInterfaceVPCIPv4AddressUpdateOptions(JSONObject):
115+
address: str = ""
116+
primary: Optional[bool] = None
117+
nat_1_1_address: Optional[str] = None
118+
119+
120+
@dataclass
121+
class LinodeInterfaceVPCIPv4RangeUpdateOptions(JSONObject):
122+
range: str = ""
123+
124+
125+
@dataclass
126+
class LinodeInterfaceVPCIPv4UpdateOptions(JSONObject):
127+
addresses: Optional[List[LinodeInterfaceVPCIPv4AddressUpdateOptions]] = None
128+
ranges: Optional[List[LinodeInterfaceVPCIPv4RangeUpdateOptions]] = None
129+
130+
131+
@dataclass
132+
class LinodeInterfaceVPCUpdateOptions(JSONObject):
133+
subnet_id: int = 0
134+
ipv4: Optional[LinodeInterfaceVPCIPv4UpdateOptions] = None
135+
136+
137+
@dataclass
138+
class LinodeInterfacePublicIPv4AddressUpdateOptions(JSONObject):
139+
address: str = ""
140+
primary: Optional[bool] = None
141+
142+
143+
@dataclass
144+
class LinodeInterfacePublicIPv4UpdateOptions(JSONObject):
145+
addresses: Optional[List[LinodeInterfacePublicIPv4AddressUpdateOptions]] = (
146+
None
147+
)
148+
149+
150+
@dataclass
151+
class LinodeInterfacePublicIPv6RangeUpdateOptions(JSONObject):
152+
range: str = ""
153+
154+
155+
@dataclass
156+
class LinodeInterfacePublicIPv6UpdateOptions(JSONObject):
157+
ranges: Optional[List[LinodeInterfacePublicIPv6RangeUpdateOptions]] = None
158+
159+
160+
@dataclass
161+
class LinodeInterfacePublicUpdateOptions(JSONObject):
162+
ipv4: Optional[LinodeInterfacePublicIPv4UpdateOptions] = None
163+
ipv6: Optional[LinodeInterfacePublicIPv6UpdateOptions] = None
164+
165+
166+
@dataclass
167+
class LinodeInterfaceVLANUpdateOptions(JSONObject):
168+
vlan_label: str = ""
169+
ipam_address: Optional[str] = None
170+
171+
172+
# Interface GET Response
173+
174+
101175
@dataclass
102176
class LinodeInterfaceDefaultRoute(JSONObject):
177+
put_class = LinodeInterfaceDefaultRouteOptions
178+
103179
ipv4: bool = False
104180
ipv6: bool = False
105181

106182

107183
@dataclass
108184
class LinodeInterfaceVPCIPv4Address(JSONObject):
185+
put_class = LinodeInterfaceVPCIPv4AddressOptions
186+
109187
address: str = ""
110188
primary: bool = False
111189
nat_1_1_address: Optional[str] = None
112190

113191

114192
@dataclass
115193
class LinodeInterfaceVPCIPv4Range(JSONObject):
194+
put_class = LinodeInterfaceVPCIPv4RangeOptions
195+
116196
range: str = ""
117197

118198

119199
@dataclass
120200
class LinodeInterfaceVPCIPv4(JSONObject):
201+
put_class = LinodeInterfaceVPCIPv4Options
202+
121203
addresses: List[LinodeInterfaceVPCIPv4Address] = field(default_factory=list)
122204
ranges: List[LinodeInterfaceVPCIPv4Range] = field(default_factory=list)
123205

124206

125207
@dataclass
126208
class LinodeInterfaceVPC(JSONObject):
209+
put_class = LinodeInterfaceVPCIPv4Options
210+
127211
vpc_id: int = 0
128212
subnet_id: int = 0
129213

@@ -132,18 +216,24 @@ class LinodeInterfaceVPC(JSONObject):
132216

133217
@dataclass
134218
class LinodeInterfacePublicIPv4Address(JSONObject):
219+
put_class = LinodeInterfacePublicIPv4AddressOptions
220+
135221
address: str = ""
136222
primary: bool = False
137223

138224

139225
@dataclass
140226
class LinodeInterfacePublicIPv4Shared(JSONObject):
227+
put_class = LinodeInterfacePublicIPv4Options
228+
141229
address: str = ""
142230
linode_id: int = 0
143231

144232

145233
@dataclass
146234
class LinodeInterfacePublicIPv4(JSONObject):
235+
put_class = LinodeInterfacePublicIPv4Options
236+
147237
addresses: List[LinodeInterfacePublicIPv4Address] = field(
148238
default_factory=list
149239
)
@@ -152,37 +242,49 @@ class LinodeInterfacePublicIPv4(JSONObject):
152242

153243
@dataclass
154244
class LinodeInterfacePublicIPv6SLAAC(JSONObject):
245+
put_class = LinodeInterfacePublicIPv6Options
246+
155247
address: str = ""
156248
prefix: int = 0
157249

158250

159251
@dataclass
160252
class LinodeInterfacePublicIPv6Shared(JSONObject):
253+
put_class = LinodeInterfacePublicIPv6Options
254+
161255
range: str = ""
162256
route_target: Optional[str] = None
163257

164258

165259
@dataclass
166260
class LinodeInterfacePublicIPv6Range(JSONObject):
261+
put_class = LinodeInterfacePublicIPv6Options
262+
167263
range: str = ""
168264
route_target: Optional[str] = None
169265

170266

171267
@dataclass
172268
class LinodeInterfacePublicIPv6(JSONObject):
269+
put_class = LinodeInterfacePublicIPv6Options
270+
173271
slaac: List[LinodeInterfacePublicIPv6SLAAC] = field(default_factory=list)
174272
shared: List[LinodeInterfacePublicIPv6Shared] = field(default_factory=list)
175273
ranges: List[LinodeInterfacePublicIPv6Range] = field(default_factory=list)
176274

177275

178276
@dataclass
179277
class LinodeInterfacePublic(JSONObject):
278+
put_class = LinodeInterfacePublicOptions
279+
180280
ipv4: Optional[LinodeInterfacePublicIPv4] = None
181281
ipv6: Optional[LinodeInterfacePublicIPv6] = None
182282

183283

184284
@dataclass
185285
class LinodeInterfaceVLAN(JSONObject):
286+
put_class = LinodeInterfaceVLANOptions
287+
186288
vlan_label: str = ""
187289
ipam_address: Optional[str] = None
188290

0 commit comments

Comments
 (0)