@@ -203,27 +203,33 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,
203
203
}
204
204
205
205
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 )
209
210
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" )
211
226
return nil , err
212
227
}
213
228
// 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 ]
226
231
}
232
+
227
233
metadata := m .OCIMachine .Spec .Metadata
228
234
if metadata == nil {
229
235
metadata = make (map [string ]string )
@@ -234,8 +240,6 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,
234
240
235
241
definedTags := ConvertMachineDefinedTags (m .OCIMachine .Spec .DefinedTags )
236
242
237
- availabilityDomain := m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [AvailabilityDomain ]
238
- faultDomain := m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [FaultDomain ]
239
243
launchDetails := core.LaunchInstanceDetails {DisplayName : common .String (m .OCIMachine .Name ),
240
244
SourceDetails : sourceDetails ,
241
245
CreateVnicDetails : & core.CreateVnicDetails {
0 commit comments