@@ -221,8 +221,14 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,
221221 m .Logger .Error (err , "Failure domain should be a value between 1 and 3" )
222222 return nil , err
223223 }
224- faultDomain = m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [FaultDomain ]
225- availabilityDomain = m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [AvailabilityDomain ]
224+ fd , exists := m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ]
225+ if ! exists {
226+ err = errors .New ("failure domain not found in cluster failure domains" )
227+ m .Logger .Error (err , "Failure domain not found" , "failure-domain" , * failureDomain )
228+ return nil , err
229+ }
230+ faultDomain = fd .Attributes [FaultDomain ]
231+ availabilityDomain = fd .Attributes [AvailabilityDomain ]
226232 } else {
227233 randomFailureDomain , err := rand .Int (rand .Reader , big .NewInt (3 ))
228234 if err != nil {
@@ -231,7 +237,13 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,
231237 }
232238 // the random number generated is between zero and two, whereas we need a number between one and three
233239 failureDomain = common .String (strconv .Itoa (int (randomFailureDomain .Int64 ()) + 1 ))
234- availabilityDomain = m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [AvailabilityDomain ]
240+ fd , exists := m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ]
241+ if ! exists {
242+ err = errors .New ("failure domain not found in cluster failure domains" )
243+ m .Logger .Error (err , "Failure domain not found" , "failure-domain" , * failureDomain )
244+ return nil , err
245+ }
246+ availabilityDomain = fd .Attributes [AvailabilityDomain ]
235247 }
236248
237249 metadata := m .OCIMachine .Spec .Metadata
0 commit comments