HAOJX

reconcile的时候如何判断一个资源是否已经存在

字数统计: 154阅读时长: 1 min
2021/09/10 Share

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
func (d *DelpoyBuilder) Build(ctx context.Context) error  {
if d.deploy.CreationTimestamp.IsZero(){
d.setOwner().apply()

err:=d.cm.Build(ctx)
if err != nil {
fmt.Println("before create cm error:",err)
return err
}

err=d.Create(ctx,d.deploy)
if err != nil {
fmt.Println("when run delpoybuilder.builder ,create deploy error",err)
return err
}
}else {
patch:=client.MergeFrom(d.deploy.DeepCopy())
d.apply()
err:=d.Patch(ctx,d.deploy,patch)
if err != nil {
fmt.Println("merge deploy error:",err)
return err
}

replicas:=d.deploy.Status.Replicas
d.config.Status.Ready=fmt.Sprintf("%d/%d",replicas,d.deploy.Spec.Replicas)
d.config.Status.Replicas=replicas

err=d.Client.Status().Update(ctx,d.config)
if err != nil {
fmt.Println("status update error:",err)
return err
}
}
return nil
}

就用他来判断 if d.deploy.CreationTimestamp.IsZero()即可

CATALOG