Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pkg/adapters/alibabacloudslb/alibabacloudslb_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ func (r *SlbControllerAdapter) GetExpectedEmployee(ctx context.Context, employer

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

current := make([]controllerframe.IEmployee, len(podList.Items))
for idx, pod := range podList.Items {
status := AlibabaSlbPodStatus{
status := &AlibabaSlbPodStatus{
EmployeeID: pod.Status.PodIP,
EmployeeName: pod.Name,
}
Expand Down
14 changes: 9 additions & 5 deletions pkg/adapters/alibabacloudslb/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"kusionstack.io/resourceconsist/pkg/frame/controller"
)

var _ controller.IEmployee = AlibabaSlbPodStatus{}
var _ controller.IEmployee = &AlibabaSlbPodStatus{}

type AlibabaSlbPodStatus struct {
EmployeeID string
Expand All @@ -35,19 +35,23 @@ type PodExtraStatus struct {
TrafficOn bool
}

func (a AlibabaSlbPodStatus) GetEmployeeId() string {
func (a *AlibabaSlbPodStatus) GetEmployeeId() string {
return a.EmployeeID
}

func (a AlibabaSlbPodStatus) GetEmployeeName() string {
func (a *AlibabaSlbPodStatus) GetEmployeeName() string {
return a.EmployeeName
}

func (a AlibabaSlbPodStatus) GetEmployeeStatuses() interface{} {
func (a *AlibabaSlbPodStatus) GetEmployeeStatuses() interface{} {
return a.EmployeeStatuses
}

func (a AlibabaSlbPodStatus) EmployeeEqual(employeeStatus controller.IEmployee) (bool, error) {
func (a *AlibabaSlbPodStatus) SetEmployeeStatuses(employeeStatus interface{}) {
a.EmployeeStatuses = employeeStatus.(controller.PodEmployeeStatuses)
}

func (a *AlibabaSlbPodStatus) EmployeeEqual(employeeStatus controller.IEmployee) (bool, error) {
if a.EmployeeName != employeeStatus.GetEmployeeName() {
return false, nil
}
Expand Down
66 changes: 37 additions & 29 deletions pkg/frame/controller/resourceconsist_controller_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ func (r *DemoControllerAdapter) GetExpectedEmployer(ctx context.Context, employe
return nil, nil
}
var expect []IEmployer
expect = append(expect, DemoServiceStatus{
expect = append(expect, &DemoServiceStatus{
EmployerId: employer.GetName(),
EmployerStatuses: DemoServiceDetails{
RemoteVIP: "demo-remote-VIP",
Expand Down Expand Up @@ -140,9 +140,9 @@ func (r *DemoControllerAdapter) CreateEmployer(ctx context.Context, employer cli
return toCreates, nil, nil
}

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

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

toDeleteDemoServiceStatus := make([]DemoServiceStatus, len(toDeletes))
toDeleteDemoServiceStatus := make([]*DemoServiceStatus, len(toDeletes))
for idx, update := range toDeletes {
deleteDemoServiceStatus, ok := update.(DemoServiceStatus)
deleteDemoServiceStatus, ok := update.(*DemoServiceStatus)
if !ok {
return nil, toDeletes, fmt.Errorf("toDeletes employer is not DemoServiceStatus")
}
Expand Down Expand Up @@ -228,7 +228,7 @@ func (r *DemoControllerAdapter) GetExpectedEmployee(ctx context.Context, employe
if !pod.DeletionTimestamp.IsZero() {
continue
}
status := DemoPodStatus{
status := &DemoPodStatus{
EmployeeId: pod.Name,
EmployeeName: pod.Name,
}
Expand Down Expand Up @@ -274,10 +274,10 @@ func (r *DemoControllerAdapter) CreateEmployees(ctx context.Context, employer cl
if len(toCreates) == 0 {
return toCreates, nil, nil
}
toCreateDemoPodStatuses := make([]DemoPodStatus, len(toCreates))
toCreateDemoPodStatuses := make([]*DemoPodStatus, len(toCreates))

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

toUpdateDemoPodStatuses := make([]DemoPodStatus, len(toUpdates))
toUpdateDemoPodStatuses := make([]*DemoPodStatus, len(toUpdates))

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

toDeleteDemoPodStatuses := make([]DemoPodStatus, len(toDeletes))
toDeleteDemoPodStatuses := make([]*DemoPodStatus, len(toDeletes))

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

var _ IEmployer = DemoServiceStatus{}
var _ IEmployee = DemoPodStatus{}
var _ IEmployer = &DemoServiceStatus{}
var _ IEmployee = &DemoPodStatus{}

type DemoServiceStatus struct {
EmployerId string
Expand All @@ -357,15 +357,19 @@ type DemoServiceDetails struct {
RemoteVIPQPS int
}

func (d DemoServiceStatus) GetEmployerId() string {
func (d *DemoServiceStatus) GetEmployerId() string {
return d.EmployerId
}

func (d DemoServiceStatus) GetEmployerStatuses() interface{} {
func (d *DemoServiceStatus) GetEmployerStatuses() interface{} {
return d.EmployerStatuses
}

func (d DemoServiceStatus) EmployerEqual(employer IEmployer) (bool, error) {
func (d *DemoServiceStatus) SetEmployerStatuses(employerStatus interface{}) {
d.EmployerStatuses = employerStatus.(DemoServiceDetails)
}

func (d *DemoServiceStatus) EmployerEqual(employer IEmployer) (bool, error) {
if d.EmployerId != employer.GetEmployerId() {
return false, nil
}
Expand All @@ -382,19 +386,23 @@ type DemoPodStatus struct {
EmployeeStatuses PodEmployeeStatuses
}

func (d DemoPodStatus) GetEmployeeId() string {
func (d *DemoPodStatus) GetEmployeeId() string {
return d.EmployeeId
}

func (d DemoPodStatus) GetEmployeeName() string {
func (d *DemoPodStatus) GetEmployeeName() string {
return d.EmployeeName
}

func (d DemoPodStatus) GetEmployeeStatuses() interface{} {
func (d *DemoPodStatus) GetEmployeeStatuses() interface{} {
return d.EmployeeStatuses
}

func (d DemoPodStatus) EmployeeEqual(employeeStatus IEmployee) (bool, error) {
func (d *DemoPodStatus) SetEmployeeStatuses(employeeStatus interface{}) {
d.EmployeeStatuses = employeeStatus.(PodEmployeeStatuses)
}

func (d *DemoPodStatus) EmployeeEqual(employeeStatus IEmployee) (bool, error) {
if d.EmployeeName != employeeStatus.GetEmployeeName() {
return false, nil
}
Expand Down Expand Up @@ -425,12 +433,12 @@ type DemoResourceProviderClient struct {
}

type DemoResourceVipOps struct {
VipStatuses []DemoServiceStatus
VipStatuses []*DemoServiceStatus
MockData bool
}

type DemoResourceRsOps struct {
RsStatuses []DemoPodStatus
RsStatuses []*DemoPodStatus
MockData bool
}

Expand Down Expand Up @@ -467,9 +475,9 @@ func (d *DemoResourceProviderClient) DeleteVip(req *DemoResourceVipOps) (*DemoRe
func (d *DemoResourceProviderClient) QueryVip(req *DemoResourceVipOps) (*DemoResourceVipOps, error) {
args := d.Called(req)
if !args.Get(0).(*DemoResourceVipOps).MockData {
vipStatuses := make([]DemoServiceStatus, 0)
vipStatuses := make([]*DemoServiceStatus, 0)
demoResourceVipStatusInProvider.Range(func(key, value any) bool {
vipStatuses = append(vipStatuses, DemoServiceStatus{
vipStatuses = append(vipStatuses, &DemoServiceStatus{
EmployerId: key.(string),
EmployerStatuses: value.(DemoServiceDetails),
})
Expand Down Expand Up @@ -515,9 +523,9 @@ func (d *DemoResourceProviderClient) DeleteRealServer(req *DemoResourceRsOps) (*
func (d *DemoResourceProviderClient) QueryRealServer(req *DemoResourceRsOps) (*DemoResourceRsOps, error) {
args := d.Called(req)
if !args.Get(0).(*DemoResourceRsOps).MockData {
rsStatuses := make([]DemoPodStatus, 0)
rsStatuses := make([]*DemoPodStatus, 0)
demoResourceRsStatusInProvider.Range(func(key, value any) bool {
rsStatuses = append(rsStatuses, value.(DemoPodStatus))
rsStatuses = append(rsStatuses, value.(*DemoPodStatus))
return true
})
return &DemoResourceRsOps{
Expand Down
32 changes: 16 additions & 16 deletions pkg/frame/controller/resourceconsit_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -285,9 +285,9 @@ var _ = Describe("resource-consist-controller", func() {

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

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

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

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

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

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

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

Eventually(func() bool {
details, exist := demoResourceRsStatusInProvider.Load(pod2.Name)
return exist && details.(DemoPodStatus).GetEmployeeName() == pod2.Name &&
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 0 &&
details.(DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == false
return exist && details.(*DemoPodStatus).GetEmployeeName() == pod2.Name &&
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficWeight == 0 &&
details.(*DemoPodStatus).GetEmployeeStatuses().(PodEmployeeStatuses).ExtraStatus.(PodExtraStatus).TrafficOn == false
}, 3*time.Second, 100*time.Millisecond).Should(BeTrue())
})

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

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

Eventually(func() bool {
Expand Down
2 changes: 2 additions & 0 deletions pkg/frame/controller/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ type ReconcileAdapter interface {
type IEmployer interface {
GetEmployerId() string
GetEmployerStatuses() interface{}
SetEmployerStatuses(employerStatuses interface{})
EmployerEqual(employer IEmployer) (bool, error)
}

Expand All @@ -137,6 +138,7 @@ type IEmployee interface {
// GetEmployeeName need to be implemented if follow Lifecycle
GetEmployeeName() string
GetEmployeeStatuses() interface{}
SetEmployeeStatuses(employeeStatuses interface{})
EmployeeEqual(employee IEmployee) (bool, error)
}

Expand Down
Loading