Skip to content

Commit

Permalink
Do not sent fault domain if failure domain is set as empty (oracle#352)
Browse files Browse the repository at this point in the history
  • Loading branch information
shyamradhakrishnan committed Mar 22, 2024
1 parent b4f68de commit 91a9824
Showing 1 changed file with 22 additions and 18 deletions.
40 changes: 22 additions & 18 deletions cloud/scope/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,27 +203,33 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,
}

failureDomain := m.Machine.Spec.FailureDomain
if failureDomain == nil {
m.Logger.Info("Failure Domain is not set in the machine spec, setting it to a random value from 1 to 3")
randomFaultDomain, err := rand.Int(rand.Reader, big.NewInt(3))
var faultDomain string
var availabilityDomain string
if failureDomain != nil {
failureDomainIndex, err := strconv.Atoi(*failureDomain)
if err != nil {
m.Logger.Error(err, "Failed to generate random fault domain")
m.Logger.Error(err, "Failure Domain is not a valid integer")
return nil, errors.Wrap(err, "invalid failure domain parameter, must be a valid integer")
}
m.Logger.Info("Failure Domain being used", "failure-domain", failureDomainIndex)
if failureDomainIndex < 1 || failureDomainIndex > 3 {
err = errors.New("failure domain should be a value between 1 and 3")
m.Logger.Error(err, "Failure domain should be a value between 1 and 3")
return nil, err
}
faultDomain = m.OCIClusterAccessor.GetFailureDomains()[*failureDomain].Attributes[FaultDomain]
availabilityDomain = m.OCIClusterAccessor.GetFailureDomains()[*failureDomain].Attributes[AvailabilityDomain]
} else {
randomFailureDomain, err := rand.Int(rand.Reader, big.NewInt(3))
if err != nil {
m.Logger.Error(err, "Failed to generate random failure domain")
return nil, err
}
// the random number generated is between zero and two, whereas we need a number between one and three
failureDomain = common.String(strconv.Itoa(int(randomFaultDomain.Int64()) + 1))
}
failureDomainIndex, err := strconv.Atoi(*failureDomain)
if err != nil {
m.Logger.Error(err, "Failure Domain is not a valid integer")
return nil, errors.Wrap(err, "invalid failure domain parameter, must be a valid integer")
}
m.Logger.Info("Failure Domain being used", "failure-domain", failureDomainIndex)
if failureDomainIndex < 1 || failureDomainIndex > 3 {
err = errors.New("failure domain should be a value between 1 and 3")
m.Logger.Error(err, "Failure domain should be a value between 1 and 3")
return nil, err
failureDomain = common.String(strconv.Itoa(int(randomFailureDomain.Int64()) + 1))
availabilityDomain = m.OCIClusterAccessor.GetFailureDomains()[*failureDomain].Attributes[AvailabilityDomain]
}

metadata := m.OCIMachine.Spec.Metadata
if metadata == nil {
metadata = make(map[string]string)
Expand All @@ -234,8 +240,6 @@ func (m *MachineScope) GetOrCreateMachine(ctx context.Context) (*core.Instance,

definedTags := ConvertMachineDefinedTags(m.OCIMachine.Spec.DefinedTags)

availabilityDomain := m.OCIClusterAccessor.GetFailureDomains()[*failureDomain].Attributes[AvailabilityDomain]
faultDomain := m.OCIClusterAccessor.GetFailureDomains()[*failureDomain].Attributes[FaultDomain]
launchDetails := core.LaunchInstanceDetails{DisplayName: common.String(m.OCIMachine.Name),
SourceDetails: sourceDetails,
CreateVnicDetails: &core.CreateVnicDetails{
Expand Down

0 comments on commit 91a9824

Please sign in to comment.