@@ -200,27 +200,33 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,
200200 }
201201
202202 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 )
206207 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" )
208223 return nil , err
209224 }
210225 // 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 ]
223228 }
229+
224230 metadata := m .OCIMachine .Spec .Metadata
225231 if metadata == nil {
226232 metadata = make (map [string ]string )
@@ -231,8 +237,6 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,
231237
232238 definedTags := ConvertMachineDefinedTags (m .OCIMachine .Spec .DefinedTags )
233239
234- availabilityDomain := m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [AvailabilityDomain ]
235- faultDomain := m .OCIClusterAccessor .GetFailureDomains ()[* failureDomain ].Attributes [FaultDomain ]
236240 launchDetails := core.LaunchInstanceDetails {DisplayName : common .String (m .OCIMachine .Name ),
237241 SourceDetails : sourceDetails ,
238242 CreateVnicDetails : & core.CreateVnicDetails {
0 commit comments