in controllers/controllers/resource/reconciler.go [51:121]
func (cor *clusterReconciler) Reconcile(ctx context.Context, objectKey types.NamespacedName, dryRun bool) error {
var resources []*unstructured.Unstructured
cs, err := cor.FetchCluster(ctx, objectKey)
if err != nil {
return err
}
spec, err := cor.FetchAppliedSpec(ctx, cs)
if err != nil {
return err
}
err = cor.fetchIdentityProviderRefs(ctx, spec, objectKey.Namespace)
if err != nil {
return err
}
switch cs.Spec.DatacenterRef.Kind {
case anywherev1.VSphereDatacenterKind:
vdc := &anywherev1.VSphereDatacenterConfig{}
cpVmc := &anywherev1.VSphereMachineConfig{}
etcdVmc := &anywherev1.VSphereMachineConfig{}
workerVmc := &anywherev1.VSphereMachineConfig{}
workerVmcs := make(map[string]anywherev1.VSphereMachineConfig, len(cs.Spec.WorkerNodeGroupConfigurations))
err := cor.FetchObject(ctx, types.NamespacedName{Namespace: objectKey.Namespace, Name: cs.Spec.DatacenterRef.Name}, vdc)
if err != nil {
return err
}
err = cor.FetchObject(ctx, types.NamespacedName{Namespace: objectKey.Namespace, Name: cs.Spec.ControlPlaneConfiguration.MachineGroupRef.Name}, cpVmc)
if err != nil {
return err
}
for _, workerNodeGroupConfiguration := range cs.Spec.WorkerNodeGroupConfigurations {
err = cor.FetchObject(ctx, types.NamespacedName{Namespace: objectKey.Namespace, Name: workerNodeGroupConfiguration.MachineGroupRef.Name}, workerVmc)
if err != nil {
return err
}
workerVmcs[workerNodeGroupConfiguration.MachineGroupRef.Name] = *workerVmc
}
if cs.Spec.ExternalEtcdConfiguration != nil {
err = cor.FetchObject(ctx, types.NamespacedName{Namespace: objectKey.Namespace, Name: cs.Spec.ExternalEtcdConfiguration.MachineGroupRef.Name}, etcdVmc)
if err != nil {
return err
}
}
r, err := cor.vsphereTemplate.TemplateResources(ctx, cs, spec, *vdc, *cpVmc, *etcdVmc, workerVmcs)
if err != nil {
return err
}
resources = append(resources, r...)
case anywherev1.DockerDatacenterKind:
r, err := cor.dockerTemplate.TemplateResources(ctx, cs, spec)
if err != nil {
return err
}
resources = append(resources, r...)
default:
return fmt.Errorf("unsupport Provider %s", cs.Spec.DatacenterRef.Kind)
}
// Reconcling IdentityProviders
for _, identityProvider := range cs.Spec.IdentityProviderRefs {
switch identityProvider.Kind {
case anywherev1.AWSIamConfigKind:
r, err := cor.awsIamConfigTemplate.TemplateResources(ctx, spec)
if err != nil {
return err
}
resources = append(resources, r...)
}
}
return cor.applyTemplates(ctx, resources, dryRun)
}