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