@@ -203,27 +203,33 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,
203203 }
204204
205205 failureDomain := m .Machine .Spec .FailureDomain
206- if failureDomain == nil {
207- m .Logger .Info ("Failure Domain is not set in the machine spec, setting it to a random value from 1 to 3" )
208- randomFaultDomain , err := rand .Int (rand .Reader , big .NewInt (3 ))
206+ var faultDomain string
207+ var availabilityDomain string
208+ if failureDomain != nil {
209+ failureDomainIndex , err := strconv .Atoi (* failureDomain )
209210 if err != nil {
210- m .Logger .Error (err , "Failed to generate random fault domain" )
211+ m .Logger .Error (err , "Failure Domain is not a valid integer" )
212+ return nil , errors .Wrap (err , "invalid failure domain parameter, must be a valid integer" )
213+ }
214+ m .Logger .Info ("Failure Domain being used" , "failure-domain" , failureDomainIndex )
215+ if failureDomainIndex < 1 || failureDomainIndex > 3 {
216+ err = errors .New ("failure domain should be a value between 1 and 3" )
217+ m .Logger .Error (err , "Failure domain should be a value between 1 and 3" )
218+ return nil , err
219+ }
220+ faultDomain = m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [FaultDomain ]
221+ availabilityDomain = m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [AvailabilityDomain ]
222+ } else {
223+ randomFailureDomain , err := rand .Int (rand .Reader , big .NewInt (3 ))
224+ if err != nil {
225+ m .Logger .Error (err , "Failed to generate random failure domain" )
211226 return nil , err
212227 }
213228 // the random number generated is between zero and two, whereas we need a number between one and three
214- failureDomain = common .String (strconv .Itoa (int (randomFaultDomain .Int64 ()) + 1 ))
215- }
216- failureDomainIndex , err := strconv .Atoi (* failureDomain )
217- if err != nil {
218- m .Logger .Error (err , "Failure Domain is not a valid integer" )
219- return nil , errors .Wrap (err , "invalid failure domain parameter, must be a valid integer" )
220- }
221- m .Logger .Info ("Failure Domain being used" , "failure-domain" , failureDomainIndex )
222- if failureDomainIndex < 1 || failureDomainIndex > 3 {
223- err = errors .New ("failure domain should be a value between 1 and 3" )
224- m .Logger .Error (err , "Failure domain should be a value between 1 and 3" )
225- return nil , err
229+ failureDomain = common .String (strconv .Itoa (int (randomFailureDomain .Int64 ()) + 1 ))
230+ availabilityDomain = m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [AvailabilityDomain ]
226231 }
232+
227233 metadata := m .OCIMachine .Spec .Metadata
228234 if metadata == nil {
229235 metadata = make (map [string ]string )
@@ -234,8 +240,6 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,
234240
235241 definedTags := ConvertMachineDefinedTags (m .OCIMachine .Spec .DefinedTags )
236242
237- availabilityDomain := m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [AvailabilityDomain ]
238- faultDomain := m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [FaultDomain ]
239243 launchDetails := core.LaunchInstanceDetails {DisplayName : common .String (m .OCIMachine .Name ),
240244 SourceDetails : sourceDetails ,
241245 CreateVnicDetails : & core.CreateVnicDetails {
0 commit comments