func getInstanceConfiguration()

in ec/ecresource/deploymentresource/topology_dedicated_masters.go [279:318]


func getInstanceConfiguration(
	ctx context.Context,
	rawTopology types.Object,
	deploymentInstanceConfigs []models.InstanceConfigurationInfo,
) *models.InstanceConfigurationInfo {
	if rawTopology.IsUnknown() || rawTopology.IsNull() {
		return nil
	}

	var topology es.ElasticsearchTopologyTF
	diags := rawTopology.As(ctx, &topology, objectAsOptions)
	if diags.HasError() {
		tflog.Debug(ctx, "getInstanceConfigurationId: Failed to read topology.", withDiags(diags))
		return nil
	}

	if topology.InstanceConfigurationId.IsUnknown() || topology.InstanceConfigurationId.IsNull() {
		return nil
	}

	icId := topology.InstanceConfigurationId.ValueStringPointer()
	icConfigVersion := int32(topology.InstanceConfigurationVersion.ValueInt64())
	if icId == nil || *icId == "" {
		return nil
	}

	var deploymentIc *models.InstanceConfigurationInfo
	for _, ic := range deploymentInstanceConfigs {
		if ic.ID == *icId && ic.ConfigVersion == icConfigVersion {
			deploymentIc = &ic
			break
		}
	}
	if deploymentIc == nil {
		tflog.Debug(ctx, fmt.Sprintf("UpdateDedicatedMasterTier: Instance-config not found: %s", *icId))
		return nil
	}

	return deploymentIc
}