Files
orchard/pkg/client/option.go
T
Nikolay Edigaryev 688238837a Implement server-side filtering for VMs by worker (#392)
* Implement server-side filtering for VMs by worker

* Parse more than one filter but error out when more than one is provided

* Fix off-by-one

* No need to use "\n" in Debugf()
2026-01-29 17:52:24 +01:00

60 lines
1.2 KiB
Go

package client
import (
"crypto/x509"
"fmt"
"strings"
"github.com/cirruslabs/orchard/internal/dialer"
v1 "github.com/cirruslabs/orchard/pkg/resource/v1"
)
type Option func(*Client)
func WithAddress(address string) Option {
return func(client *Client) {
client.address = address
}
}
func WithTrustedCertificate(trustedCertificate *x509.Certificate) Option {
return func(client *Client) {
client.trustedCertificate = trustedCertificate
}
}
func WithCredentials(serviceAccountName string, serviceAccountToken string) Option {
return func(client *Client) {
client.serviceAccountName = serviceAccountName
client.serviceAccountToken = serviceAccountToken
}
}
func WithDialer(dialer dialer.Dialer) Option {
return func(client *Client) {
client.dialer = dialer
}
}
type ListInput struct {
Filters []v1.Filter
}
type ListOption func(params map[string]string)
func WithListFilters(filters ...v1.Filter) ListOption {
return func(params map[string]string) {
if len(filters) == 0 {
return
}
var pairs []string
for _, filter := range filters {
pairs = append(pairs, fmt.Sprintf("%s=%s", filter.Path, filter.Value))
}
params["filter"] = strings.Join(pairs, ",")
}
}