@@ -74,27 +74,32 @@ def __eq__(self, other):
7474 def populate (self , object_data : dict ):
7575 super ().populate (object_data )
7676
77- self .policyid = object_data ["policyid" ]
78- self .action = FortigatePolicyAction [object_data ["action" ].upper ()]
79- self .nat = object_data ["nat" ]
80- self .ippool = object_data ["ippool" ]
77+ self .policyid = object_data .get ("policyid" , self .policyid )
78+ self .action = FortigatePolicyAction [
79+ object_data .get (
80+ "action" , FortigatePolicyAction .ACCEPT .value
81+ ).upper ()
82+ ]
83+ self .nat = object_data .get ("nat" , self .nat )
84+ self .ippool = object_data .get ("ippool" , self .ippool )
8185
82- self .schedule = object_data [ "schedule" ]
86+ self .schedule = object_data . get ( "schedule" , self . schedule )
8387
84- if "logtraffic" in object_data :
85- self .logtraffic = FortigatePolicyLogTraffic [
86- object_data ["logtraffic" ].upper ()
87- ]
88+ self .logtraffic = FortigatePolicyLogTraffic [
89+ object_data .get (
90+ "logtraffic" , FortigatePolicyLogTraffic .ALL .value
91+ ).upper ()
92+ ]
8893
89- self .comment = object_data [ "comments" ]
94+ self .comment = object_data . get ( "comments" , self . comment )
9095
9196 def find_interfaces (self , interfaces : List [FortigateInterface ]):
9297 self .srcintf = self .find_interface_for (
93- self .object_data [ "srcintf" ] ,
98+ self .object_data . get ( "srcintf" ) ,
9499 interfaces ,
95100 )
96101 self .dstintf = self .find_interface_for (
97- self .object_data [ "dstintf" ] ,
102+ self .object_data . get ( "dstintf" ) ,
98103 interfaces ,
99104 )
100105
@@ -117,11 +122,11 @@ def find_interface_for(
117122
118123 def find_addresses (self , addresses : List [List [FortigateAddress ]]):
119124 self .srcaddr = self .find_addresses_for (
120- self .object_data [ "srcaddr" ] ,
125+ self .object_data . get ( "srcaddr" ) ,
121126 addresses ,
122127 )
123128 self .dstaddr = self .find_addresses_for (
124- self .object_data [ "dstaddr" ] ,
129+ self .object_data . get ( "dstaddr" ) ,
125130 addresses ,
126131 )
127132
@@ -153,7 +158,7 @@ def find_services(
153158 Union [List [FortigateService ], List [FortigateServiceGroup ]]
154159 ],
155160 ):
156- for service_dict in self .object_data [ "service" ] :
161+ for service_dict in self .object_data . get ( "service" , []) :
157162 service = None
158163 for search_list in all_services :
159164 service = get_by ("name" , service_dict ["name" ], search_list )
@@ -167,7 +172,7 @@ def find_services(
167172 self .service .append (service )
168173
169174 def find_ippools (self , all_ippools : List [FortigateIPPool ]):
170- for ippool_dict in self .object_data [ "poolname" ] :
175+ for ippool_dict in self .object_data . get ( "poolname" , []) :
171176 ippool = get_by ("name" , ippool_dict ["name" ], all_ippools )
172177 if ippool is None :
173178 raise Exception (
0 commit comments