Advertisement
mamanegoryu1

Untitled

Feb 6th, 2019
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.77 KB | None | 0 0
  1. func (r *ReconcilePerconaXtraDBCluster) deploy(cr *api.PerconaXtraDBCluster) error {
  2.     serverVersion := r.serverVersion
  3.     if cr.Spec.Platform != nil {
  4.         serverVersion.Platform = *cr.Spec.Platform
  5.     }
  6.  
  7.     sfs := statefulset.NewNode(cr)
  8.     nodeSet, err := pxc.StatefulSet(sfs, cr.Spec.PXC, cr, serverVersion)
  9.     if err != nil {
  10.         return err
  11.     }
  12.  
  13.     err = setControllerReference(cr, nodeSet, r.scheme)
  14.     if err != nil {
  15.         return err
  16.     }
  17.  
  18.     err = r.client.Create(context.TODO(), nodeSet)
  19.     if err != nil && !errors.IsAlreadyExists(err) {
  20.         return fmt.Errorf("create newStatefulSetNode: %v", err)
  21.     }
  22.  
  23.     nodesService := pxc.NewServiceNodes(cr)
  24.     err = setControllerReference(cr, nodesService, r.scheme)
  25.     if err != nil {
  26.         return err
  27.     }
  28.  
  29.     err = r.client.Create(context.TODO(), nodesService)
  30.     if err != nil && !errors.IsAlreadyExists(err) {
  31.         return fmt.Errorf("create PXC Service: %v", err)
  32.     }
  33.  
  34.     // PodDistributedBudget object for nodes
  35.     if cr.Spec.PXC.PodDisruptionBudget != nil {
  36.         pdbPXC := pxc.NewPodDistributedBudget(cr, cr.Spec.PXC.PodDisruptionBudget, "-nodes")
  37.  
  38.         err = r.client.Create(context.TODO(), pdbPXC)
  39.         if err != nil && !errors.IsAlreadyExists(err) {
  40.             return fmt.Errorf("create PodDisruptionBudget-PXC: %v", err)
  41.         }
  42.        
  43.         // TODO! set reference to NodeSet
  44.         err = setControllerReference2(nodeSet, pdbPXC, r.scheme)
  45.         // err = setControllerReference2(sfs, pdbPXC, r.scheme)
  46.         if err != nil {
  47.             return err
  48.         }
  49.  
  50.  
  51.     }
  52.  
  53.     if cr.Spec.ProxySQL != nil && cr.Spec.ProxySQL.Enabled {
  54.         proxySet, err := pxc.StatefulSet(statefulset.NewProxy(cr), cr.Spec.ProxySQL, cr, serverVersion)
  55.         if err != nil {
  56.             return fmt.Errorf("create ProxySQL Service: %v", err)
  57.         }
  58.         err = setControllerReference(cr, proxySet, r.scheme)
  59.         if err != nil {
  60.             return err
  61.         }
  62.  
  63.         err = r.client.Create(context.TODO(), proxySet)
  64.         if err != nil && !errors.IsAlreadyExists(err) {
  65.             return fmt.Errorf("create newStatefulSetProxySQL: %v", err)
  66.         }
  67.  
  68.         proxys := pxc.NewServiceProxySQL(cr)
  69.         err = setControllerReference(cr, proxys, r.scheme)
  70.         if err != nil {
  71.             return err
  72.         }
  73.  
  74.         err = r.client.Create(context.TODO(), proxys)
  75.         if err != nil && !errors.IsAlreadyExists(err) {
  76.             return fmt.Errorf("create PXC Service: %v", err)
  77.         }
  78.     }
  79.  
  80.     return nil
  81. }
  82.  
  83. func setControllerReference(cr *api.PerconaXtraDBCluster, obj metav1.Object, scheme *runtime.Scheme) error {
  84.     ownerRef, err := cr.OwnerRef(scheme)
  85.     if err != nil {
  86.         return err
  87.     }
  88.     obj.SetOwnerReferences(append(obj.GetOwnerReferences(), ownerRef))
  89.     return nil
  90. }
  91.  
  92. func setControllerReference2(sfs *appsv1.StatefulSet, obj metav1.Object, scheme *runtime.Scheme) error {
  93.     ownerRef, err := pxc.StatefulSetOwnerRef(sfs, scheme)
  94.     if err != nil {
  95.         return err
  96.     }
  97.     obj.SetOwnerReferences(append(obj.GetOwnerReferences(), ownerRef))
  98.     return nil
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement