Skip to content

Commit 97fbd21

Browse files
Do not sent fault domain if failure domain is set as empty (#352)
1 parent 0f8f8f1 commit 97fbd21

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

cloud/scope/machine.go

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)