Skip to content

Commit f16f6a2

Browse files
Do not sent fault domain if failure domain is set as empty (#352)
1 parent 891069c commit f16f6a2

File tree

2 files changed

+25
-18
lines changed

2 files changed

+25
-18
lines changed

cloud/scope/machine.go

+22-18
Original file line numberDiff line numberDiff line change
@@ -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{

metadata.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,7 @@ releaseSeries:
4646
contract: v1beta1
4747
- major: 0
4848
minor: 14
49+
contract: v1beta1
50+
- major: 0
51+
minor: 15
4952
contract: v1beta1

0 commit comments

Comments
 (0)