Skip to content

Commit d834dda

Browse files
committed
feat: add method SetEmployerStatuses/SetEmployeeStatuses into interface IEmployer/IEmployee
1 parent 3710ef1 commit d834dda

File tree

5 files changed

+66
-52
lines changed

5 files changed

+66
-52
lines changed

pkg/adapters/alibabacloudslb/alibabacloudslb_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ func (r *SlbControllerAdapter) GetExpectedEmployee(ctx context.Context, employer
122122

123123
expected := make([]controllerframe.IEmployee, len(podList.Items))
124124
for idx, pod := range podList.Items {
125-
status := AlibabaSlbPodStatus{
125+
status := &AlibabaSlbPodStatus{
126126
EmployeeID: pod.Status.PodIP,
127127
EmployeeName: pod.Name,
128128
}
@@ -170,7 +170,7 @@ func (r *SlbControllerAdapter) GetCurrentEmployee(ctx context.Context, employer
170170

171171
current := make([]controllerframe.IEmployee, len(podList.Items))
172172
for idx, pod := range podList.Items {
173-
status := AlibabaSlbPodStatus{
173+
status := &AlibabaSlbPodStatus{
174174
EmployeeID: pod.Status.PodIP,
175175
EmployeeName: pod.Name,
176176
}

pkg/adapters/alibabacloudslb/types.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
"kusionstack.io/resourceconsist/pkg/frame/controller"
2424
)
2525

26-
var _ controller.IEmployee = AlibabaSlbPodStatus{}
26+
var _ controller.IEmployee = &AlibabaSlbPodStatus{}
2727

2828
type AlibabaSlbPodStatus struct {
2929
EmployeeID string
@@ -35,19 +35,23 @@ type PodExtraStatus struct {
3535
TrafficOn bool
3636
}
3737

38-
func (a AlibabaSlbPodStatus) GetEmployeeId() string {
38+
func (a *AlibabaSlbPodStatus) GetEmployeeId() string {
3939
return a.EmployeeID
4040
}
4141

42-
func (a AlibabaSlbPodStatus) GetEmployeeName() string {
42+
func (a *AlibabaSlbPodStatus) GetEmployeeName() string {
4343
return a.EmployeeName
4444
}
4545

46-
func (a AlibabaSlbPodStatus) GetEmployeeStatuses() interface{} {
46+
func (a *AlibabaSlbPodStatus) GetEmployeeStatuses() interface{} {
4747
return a.EmployeeStatuses
4848
}
4949

50-
func (a AlibabaSlbPodStatus) EmployeeEqual(employeeStatus controller.IEmployee) (bool, error) {
50+
func (a *AlibabaSlbPodStatus) SetEmployeeStatuses(employeeStatus interface{}) {
51+
a.EmployeeStatuses = employeeStatus.(controller.PodEmployeeStatuses)
52+
}
53+
54+
func (a *AlibabaSlbPodStatus) EmployeeEqual(employeeStatus controller.IEmployee) (bool, error) {
5155
if a.EmployeeName != employeeStatus.GetEmployeeName() {
5256
return false, nil
5357
}

pkg/frame/controller/resourceconsist_controller_suite_test.go

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func (r *DemoControllerAdapter) GetExpectedEmployer(ctx context.Context, employe
107107
return nil, nil
108108
}
109109
var expect []IEmployer
110-
expect = append(expect, DemoServiceStatus{
110+
expect = append(expect, &DemoServiceStatus{
111111
EmployerId: employer.GetName(),
112112
EmployerStatuses: DemoServiceDetails{
113113
RemoteVIP: "demo-remote-VIP",
@@ -140,9 +140,9 @@ func (r *DemoControllerAdapter) CreateEmployer(ctx context.Context, employer cli
140140
return toCreates, nil, nil
141141
}
142142

143-
toCreateDemoServiceStatus := make([]DemoServiceStatus, len(toCreates))
143+
toCreateDemoServiceStatus := make([]*DemoServiceStatus, len(toCreates))
144144
for idx, create := range toCreates {
145-
createDemoServiceStatus, ok := create.(DemoServiceStatus)
145+
createDemoServiceStatus, ok := create.(*DemoServiceStatus)
146146
if !ok {
147147
return nil, toCreates, fmt.Errorf("toCreates employer is not DemoServiceStatus")
148148
}
@@ -163,9 +163,9 @@ func (r *DemoControllerAdapter) UpdateEmployer(ctx context.Context, employer cli
163163
return toUpdates, nil, nil
164164
}
165165

166-
toUpdateDemoServiceStatus := make([]DemoServiceStatus, len(toUpdates))
166+
toUpdateDemoServiceStatus := make([]*DemoServiceStatus, len(toUpdates))
167167
for idx, update := range toUpdates {
168-
updateDemoServiceStatus, ok := update.(DemoServiceStatus)
168+
updateDemoServiceStatus, ok := update.(*DemoServiceStatus)
169169
if !ok {
170170
return nil, toUpdates, fmt.Errorf("toUpdates employer is not DemoServiceStatus")
171171
}
@@ -186,9 +186,9 @@ func (r *DemoControllerAdapter) DeleteEmployer(ctx context.Context, employer cli
186186
return toDeletes, nil, nil
187187
}
188188

189-
toDeleteDemoServiceStatus := make([]DemoServiceStatus, len(toDeletes))
189+
toDeleteDemoServiceStatus := make([]*DemoServiceStatus, len(toDeletes))
190190
for idx, update := range toDeletes {
191-
deleteDemoServiceStatus, ok := update.(DemoServiceStatus)
191+
deleteDemoServiceStatus, ok := update.(*DemoServiceStatus)
192192
if !ok {
193193
return nil, toDeletes, fmt.Errorf("toDeletes employer is not DemoServiceStatus")
194194
}
@@ -228,7 +228,7 @@ func (r *DemoControllerAdapter) GetExpectedEmployee(ctx context.Context, employe
228228
if !pod.DeletionTimestamp.IsZero() {
229229
continue
230230
}
231-
status := DemoPodStatus{
231+
status := &DemoPodStatus{
232232
EmployeeId: pod.Name,
233233
EmployeeName: pod.Name,
234234
}
@@ -274,10 +274,10 @@ func (r *DemoControllerAdapter) CreateEmployees(ctx context.Context, employer cl
274274
if len(toCreates) == 0 {
275275
return toCreates, nil, nil
276276
}
277-
toCreateDemoPodStatuses := make([]DemoPodStatus, len(toCreates))
277+
toCreateDemoPodStatuses := make([]*DemoPodStatus, len(toCreates))
278278

279279
for idx, toCreate := range toCreates {
280-
podStatus, ok := toCreate.(DemoPodStatus)
280+
podStatus, ok := toCreate.(*DemoPodStatus)
281281
if !ok {
282282
return nil, toCreates, fmt.Errorf("toCreate is not DemoPodStatus")
283283
}
@@ -299,10 +299,10 @@ func (r *DemoControllerAdapter) UpdateEmployees(ctx context.Context, employer cl
299299
return toUpdates, nil, nil
300300
}
301301

302-
toUpdateDemoPodStatuses := make([]DemoPodStatus, len(toUpdates))
302+
toUpdateDemoPodStatuses := make([]*DemoPodStatus, len(toUpdates))
303303

304304
for idx, toUpdate := range toUpdates {
305-
podStatus, ok := toUpdate.(DemoPodStatus)
305+
podStatus, ok := toUpdate.(*DemoPodStatus)
306306
if !ok {
307307
return nil, toUpdates, fmt.Errorf("toUpdate is not DemoPodStatus")
308308
}
@@ -324,10 +324,10 @@ func (r *DemoControllerAdapter) DeleteEmployees(ctx context.Context, employer cl
324324
return toDeletes, nil, nil
325325
}
326326

327-
toDeleteDemoPodStatuses := make([]DemoPodStatus, len(toDeletes))
327+
toDeleteDemoPodStatuses := make([]*DemoPodStatus, len(toDeletes))
328328

329329
for idx, toDelete := range toDeletes {
330-
podStatus, ok := toDelete.(DemoPodStatus)
330+
podStatus, ok := toDelete.(*DemoPodStatus)
331331
if !ok {
332332
return nil, toDeletes, fmt.Errorf("toDelete is not DemoPodStatus")
333333
}
@@ -344,8 +344,8 @@ func (r *DemoControllerAdapter) DeleteEmployees(ctx context.Context, employer cl
344344
return toDeletes, nil, nil
345345
}
346346

347-
var _ IEmployer = DemoServiceStatus{}
348-
var _ IEmployee = DemoPodStatus{}
347+
var _ IEmployer = &DemoServiceStatus{}
348+
var _ IEmployee = &DemoPodStatus{}
349349

350350
type DemoServiceStatus struct {
351351
EmployerId string
@@ -357,15 +357,19 @@ type DemoServiceDetails struct {
357357
RemoteVIPQPS int
358358
}
359359

360-
func (d DemoServiceStatus) GetEmployerId() string {
360+
func (d *DemoServiceStatus) GetEmployerId() string {
361361
return d.EmployerId
362362
}
363363

364-
func (d DemoServiceStatus) GetEmployerStatuses() interface{} {
364+
func (d *DemoServiceStatus) GetEmployerStatuses() interface{} {
365365
return d.EmployerStatuses
366366
}
367367

368-
func (d DemoServiceStatus) EmployerEqual(employer IEmployer) (bool, error) {
368+
func (d *DemoServiceStatus) SetEmployerStatuses(employerStatus interface{}) {
369+
d.EmployerStatuses = employerStatus.(DemoServiceDetails)
370+
}
371+
372+
func (d *DemoServiceStatus) EmployerEqual(employer IEmployer) (bool, error) {
369373
if d.EmployerId != employer.GetEmployerId() {
370374
return false, nil
371375
}
@@ -382,19 +386,23 @@ type DemoPodStatus struct {
382386
EmployeeStatuses PodEmployeeStatuses
383387
}
384388

385-
func (d DemoPodStatus) GetEmployeeId() string {
389+
func (d *DemoPodStatus) GetEmployeeId() string {
386390
return d.EmployeeId
387391
}
388392

389-
func (d DemoPodStatus) GetEmployeeName() string {
393+
func (d *DemoPodStatus) GetEmployeeName() string {
390394
return d.EmployeeName
391395
}
392396

393-
func (d DemoPodStatus) GetEmployeeStatuses() interface{} {
397+
func (d *DemoPodStatus) GetEmployeeStatuses() interface{} {
394398
return d.EmployeeStatuses
395399
}
396400

397-
func (d DemoPodStatus) EmployeeEqual(employeeStatus IEmployee) (bool, error) {
401+
func (d *DemoPodStatus) SetEmployeeStatuses(employeeStatus interface{}) {
402+
d.EmployeeStatuses = employeeStatus.(PodEmployeeStatuses)
403+
}
404+
405+
func (d *DemoPodStatus) EmployeeEqual(employeeStatus IEmployee) (bool, error) {
398406
if d.EmployeeName != employeeStatus.GetEmployeeName() {
399407
return false, nil
400408
}
@@ -425,12 +433,12 @@ type DemoResourceProviderClient struct {
425433
}
426434

427435
type DemoResourceVipOps struct {
428-
VipStatuses []DemoServiceStatus
436+
VipStatuses []*DemoServiceStatus
429437
MockData bool
430438
}
431439

432440
type DemoResourceRsOps struct {
433-
RsStatuses []DemoPodStatus
441+
RsStatuses []*DemoPodStatus
434442
MockData bool
435443
}
436444

@@ -467,9 +475,9 @@ func (d *DemoResourceProviderClient) DeleteVip(req *DemoResourceVipOps) (*DemoRe
467475
func (d *DemoResourceProviderClient) QueryVip(req *DemoResourceVipOps) (*DemoResourceVipOps, error) {
468476
args := d.Called(req)
469477
if !args.Get(0).(*DemoResourceVipOps).MockData {
470-
vipStatuses := make([]DemoServiceStatus, 0)
478+
vipStatuses := make([]*DemoServiceStatus, 0)
471479
demoResourceVipStatusInProvider.Range(func(key, value any) bool {
472-
vipStatuses = append(vipStatuses, DemoServiceStatus{
480+
vipStatuses = append(vipStatuses, &DemoServiceStatus{
473481
EmployerId: key.(string),
474482
EmployerStatuses: value.(DemoServiceDetails),
475483
})
@@ -515,9 +523,9 @@ func (d *DemoResourceProviderClient) DeleteRealServer(req *DemoResourceRsOps) (*
515523
func (d *DemoResourceProviderClient) QueryRealServer(req *DemoResourceRsOps) (*DemoResourceRsOps, error) {
516524
args := d.Called(req)
517525
if !args.Get(0).(*DemoResourceRsOps).MockData {
518-
rsStatuses := make([]DemoPodStatus, 0)
526+
rsStatuses := make([]*DemoPodStatus, 0)
519527
demoResourceRsStatusInProvider.Range(func(key, value any) bool {
520-
rsStatuses = append(rsStatuses, value.(DemoPodStatus))
528+
rsStatuses = append(rsStatuses, value.(*DemoPodStatus))
521529
return true
522530
})
523531
return &DemoResourceRsOps{

pkg/frame/controller/resourceconsit_controller_test.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -285,9 +285,9 @@ var _ = Describe("resource-consist-controller", func() {
285285

286286
Eventually(func() bool {
287287
details, exist := demoResourceRsStatusInProvider.Load(pod.Name)
288-
return exist && details.(DemoPodStatus).GetEmployeeName() == pod.Name &&
289-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 100 &&
290-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == true
288+
return exist && details.(*DemoPodStatus).GetEmployeeName() == pod.Name &&
289+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 100 &&
290+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == true
291291
}, 3*time.Second, 100*time.Millisecond).Should(BeTrue())
292292

293293
Eventually(func() bool {
@@ -344,9 +344,9 @@ var _ = Describe("resource-consist-controller", func() {
344344

345345
Eventually(func() bool {
346346
details, exist := demoResourceRsStatusInProvider.Load(pod.Name)
347-
return exist && details.(DemoPodStatus).GetEmployeeName() == pod.Name &&
348-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 0 &&
349-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == false
347+
return exist && details.(*DemoPodStatus).GetEmployeeName() == pod.Name &&
348+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 0 &&
349+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == false
350350
}, 3*time.Second, 100*time.Millisecond).Should(BeTrue())
351351

352352
Eventually(func() bool {
@@ -373,9 +373,9 @@ var _ = Describe("resource-consist-controller", func() {
373373

374374
Eventually(func() bool {
375375
details, exist := demoResourceRsStatusInProvider.Load(pod.Name)
376-
return exist && details.(DemoPodStatus).GetEmployeeName() == pod.Name &&
377-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 100 &&
378-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == true
376+
return exist && details.(*DemoPodStatus).GetEmployeeName() == pod.Name &&
377+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 100 &&
378+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == true
379379
}, 3*time.Second, 100*time.Millisecond).Should(BeTrue())
380380
})
381381

@@ -551,7 +551,7 @@ var _ = Describe("resource-consist-controller", func() {
551551
return false
552552
}, 3*time.Second, 100*time.Millisecond).Should(BeTrue())
553553

554-
demoResourceRsStatusInProvider.Store(pod2.Name, DemoPodStatus{
554+
demoResourceRsStatusInProvider.Store(pod2.Name, &DemoPodStatus{
555555
EmployeeId: pod2.Name,
556556
EmployeeName: pod2.Name,
557557
EmployeeStatuses: PodEmployeeStatuses{
@@ -567,9 +567,9 @@ var _ = Describe("resource-consist-controller", func() {
567567

568568
Eventually(func() bool {
569569
details, exist := demoResourceRsStatusInProvider.Load(pod2.Name)
570-
return exist && details.(DemoPodStatus).GetEmployeeName() == pod2.Name &&
571-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 0 &&
572-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == false
570+
return exist && details.(*DemoPodStatus).GetEmployeeName() == pod2.Name &&
571+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 0 &&
572+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == false
573573
}, 3*time.Second, 100*time.Millisecond).Should(BeTrue())
574574
})
575575

@@ -708,9 +708,9 @@ var _ = Describe("resource-consist-controller", func() {
708708

709709
Eventually(func() bool {
710710
details, exist := demoResourceRsStatusInProvider.Load(pod3.Name)
711-
return exist && details.(DemoPodStatus).GetEmployeeName() == pod3.Name &&
712-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 100 &&
713-
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == true
711+
return exist && details.(*DemoPodStatus).GetEmployeeName() == pod3.Name &&
712+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 100 &&
713+
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == true
714714
}, 3*time.Second, 100*time.Millisecond).Should(BeTrue())
715715

716716
Eventually(func() bool {

pkg/frame/controller/types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ type ReconcileAdapter interface {
126126
type IEmployer interface {
127127
GetEmployerId() string
128128
GetEmployerStatuses() interface{}
129+
SetEmployerStatuses(employerStatuses interface{})
129130
EmployerEqual(employer IEmployer) (bool, error)
130131
}
131132

@@ -137,6 +138,7 @@ type IEmployee interface {
137138
// GetEmployeeName need to be implemented if follow Lifecycle
138139
GetEmployeeName() string
139140
GetEmployeeStatuses() interface{}
141+
SetEmployeeStatuses(employeeStatuses interface{})
140142
EmployeeEqual(employee IEmployee) (bool, error)
141143
}
142144

0 commit comments

Comments
 (0)