* Copyright (c) 2024 Bocloud Technologies Co., Ltd.
* installer is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain n copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
******************************************************************/
package addon
import (
"reflect"
"gopkg.openfuyao.cn/cluster-api-provider-bke/api/bkecommon/v1beta1"
)
type Addon v1beta1.Product
type Addons []v1beta1.Product
type FilterOptions map[string]string
type AddonsInterface interface {
Filter(options FilterOptions) Addons
Length() int
}
func (a Addons) Filter(options FilterOptions) Addons {
as := Addons{}
for _, ad := range a {
refVal := reflect.ValueOf(ad)
have := true
for key, value := range options {
field := refVal.FieldByName(key)
if !field.IsValid() {
have = false
continue
}
fieldVal := field.Interface()
if fieldVal != value {
have = false
break
} else {
have = true
}
}
if have {
as = append(as, ad)
}
}
return as
}
func (a Addons) Length() int {
return len(a)
}