in pkg/controller/sub_controller/cn/controller.go [57:112]
func (cn *Controller) Sync(ctx context.Context, dcr *dorisv1.DorisCluster) error {
if dcr.Spec.CnSpec == nil {
if _, err := cn.ClearResources(ctx, dcr); err != nil {
klog.Errorf("cn controller sync clearResource namespace=%s,srcName=%s, err=%s\n", dcr.Namespace, dcr.Name, err.Error())
return err
}
return nil
}
if !cn.FeAvailable(dcr) {
return nil
}
cnSpec := dcr.Spec.CnSpec
config, err := cn.GetConfig(ctx, &cnSpec.ConfigMapInfo, dcr.Namespace)
if err != nil {
klog.Errorf("cn controller sync resolve cn configMap failed, namespace %s ,err : %s", dcr.Namespace, err.Error())
return err
}
cn.CheckConfigMountPath(dcr, dorisv1.Component_CN)
cn.CheckSecretMountPath(dcr, dorisv1.Component_CN)
cn.CheckSecretExist(ctx, dcr, dorisv1.Component_CN)
svc := resource.BuildExternalService(dcr, dorisv1.Component_CN, config)
internalSVC := resource.BuildInternalService(dcr, dorisv1.Component_CN, config)
if err := k8s.ApplyService(ctx, cn.K8sclient, &internalSVC, resource.ServiceDeepEqual); err != nil {
klog.Errorf("cn controller sync apply internalService name=%s, namespace=%s, clusterName=%s failed.message=%s.",
internalSVC.Name, internalSVC.Namespace, dcr.Name, err.Error())
return err
}
if err := k8s.ApplyService(ctx, cn.K8sclient, &svc, resource.ServiceDeepEqual); err != nil {
klog.Errorf("cn controller sync apply externalService name=%s, namespace=%s, clusterName=%s failed.message=%s.",
svc.Name, svc.Namespace, dcr.Name, err.Error())
return err
}
cnStatefulSet := cn.buildCnStatefulSet(dcr, config)
if !cn.PrepareReconcileResources(ctx, dcr, dorisv1.Component_CN) {
klog.Infof("cn controller sync preparing resource for reconciling namespace %s name %s!", dcr.Namespace, dcr.Name)
return nil
}
if err = cn.applyStatefulSet(ctx, &cnStatefulSet, cnSpec.AutoScalingPolicy != nil); err != nil {
klog.Errorf("cn controller sync statefulset name=%s, namespace=%s,failed. message=%s.",
cnStatefulSet.Name, cnStatefulSet.Namespace, err.Error())
return err
}
//create autoscaler.
if cnSpec.AutoScalingPolicy != nil {
err = cn.deployAutoScaler(ctx, *cnSpec.AutoScalingPolicy, &cnStatefulSet, dcr)
}
return nil
}