Skip to content

Commit

Permalink
refactor: merge field's yaml tag into json tag
Browse files Browse the repository at this point in the history
Signed-off-by: Sunghoon Kang <hoon@akuity.io>
  • Loading branch information
devholic committed Jul 1, 2022
1 parent 48221ce commit b11130a
Show file tree
Hide file tree
Showing 12 changed files with 321 additions and 320 deletions.
18 changes: 9 additions & 9 deletions cmd/cluster/clusterList.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ import (
"os"
"strings"

"github.com/liggitt/tabwriter"
"github.com/spf13/cobra"
"sigs.k8s.io/yaml"

"github.com/k3d-io/k3d/v5/cmd/util"
k3cluster "github.com/k3d-io/k3d/v5/pkg/client"
l "github.com/k3d-io/k3d/v5/pkg/logger"
"github.com/k3d-io/k3d/v5/pkg/runtimes"
k3d "github.com/k3d-io/k3d/v5/pkg/types"
"github.com/spf13/cobra"
"sigs.k8s.io/yaml"

"github.com/liggitt/tabwriter"
)

// TODO : deal with --all flag to manage differentiate started cluster and stopped cluster like `docker ps` and `docker ps -a`
Expand Down Expand Up @@ -103,11 +103,11 @@ func PrintClusters(clusters []*k3d.Cluster, flags clusterFlags) {
// the output details printed when we dump JSON/YAML
type jsonOutput struct {
k3d.Cluster
ServersRunning int `yaml:"servers_running" json:"serversRunning"`
ServersCount int `yaml:"servers_count" json:"serversCount"`
AgentsRunning int `yaml:"agents_running" json:"agentsRunning"`
AgentsCount int `yaml:"agents_count" json:"agentsCount"`
LoadBalancer bool `yaml:"has_lb,omitempty" json:"hasLoadbalancer,omitempty"`
ServersRunning int `json:"serversRunning"`
ServersCount int `json:"serversCount"`
AgentsRunning int `json:"agentsRunning"`
AgentsCount int `json:"agentsCount"`
LoadBalancer bool `json:"hasLoadbalancer,omitempty"`
}

jsonOutputEntries := []jsonOutput{}
Expand Down
14 changes: 7 additions & 7 deletions pkg/client/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -276,19 +276,19 @@ func RegistryFromNode(node *k3d.Node) (*k3d.Registry, error) {
func RegistryGenerateLocalRegistryHostingConfigMapYAML(ctx context.Context, runtime runtimes.Runtime, registries []*k3d.Registry) ([]byte, error) {

type cmMetadata struct {
Name string `yaml:"name"`
Namespace string `yaml:"namespace"`
Name string `json:"name"`
Namespace string `json:"namespace"`
}

type cmData struct {
RegHostV1 string `yaml:"localRegistryHosting.v1"`
RegHostV1 string `json:"localRegistryHosting.v1"`
}

type configmap struct {
APIVersion string `yaml:"apiVersion"`
Kind string `yaml:"kind"`
Metadata cmMetadata `yaml:"metadata"`
Data cmData `yaml:"data"`
APIVersion string `json:"apiVersion"`
Kind string `json:"kind"`
Metadata cmMetadata `json:"metadata"`
Data cmData `json:"data"`
}

if len(registries) > 1 {
Expand Down
6 changes: 3 additions & 3 deletions pkg/config/types/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ package types

// TypeMeta is basically copied from https://github.com/kubernetes/apimachinery/blob/a3b564b22db316a41e94fdcffcf9995424fe924c/pkg/apis/meta/v1/types.go#L36-L56
type TypeMeta struct {
Kind string `mapstructure:"kind,omitempty" yaml:"kind,omitempty" json:"kind,omitempty"`
APIVersion string `mapstructure:"apiVersion,omitempty" yaml:"apiVersion,omitempty" json:"apiVersion,omitempty"`
Kind string `mapstructure:"kind,omitempty" json:"kind,omitempty"`
APIVersion string `mapstructure:"apiVersion,omitempty" json:"apiVersion,omitempty"`
}

// ObjectMeta got its name from the Kubernetes counterpart.
type ObjectMeta struct {
Name string `mapstructure:"name,omitempty" yaml:"name,omitempty" json:"name,omitempty"`
Name string `mapstructure:"name,omitempty" json:"name,omitempty"`
}

// Config interface.
Expand Down
104 changes: 52 additions & 52 deletions pkg/config/v1alpha2/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,87 +57,87 @@ var DefaultConfig = fmt.Sprintf(
)

type VolumeWithNodeFilters struct {
Volume string `mapstructure:"volume" yaml:"volume,omitempty" json:"volume,omitempty"`
NodeFilters []string `mapstructure:"nodeFilters" yaml:"nodeFilters,omitempty" json:"nodeFilters,omitempty"`
Volume string `mapstructure:"volume" json:"volume,omitempty"`
NodeFilters []string `mapstructure:"nodeFilters" json:"nodeFilters,omitempty"`
}

type PortWithNodeFilters struct {
Port string `mapstructure:"port" yaml:"port,omitempty" json:"port,omitempty"`
NodeFilters []string `mapstructure:"nodeFilters" yaml:"nodeFilters,omitempty" json:"nodeFilters,omitempty"`
Port string `mapstructure:"port" json:"port,omitempty"`
NodeFilters []string `mapstructure:"nodeFilters" json:"nodeFilters,omitempty"`
}

type LabelWithNodeFilters struct {
Label string `mapstructure:"label" yaml:"label,omitempty" json:"label,omitempty"`
NodeFilters []string `mapstructure:"nodeFilters" yaml:"nodeFilters,omitempty" json:"nodeFilters,omitempty"`
Label string `mapstructure:"label" json:"label,omitempty"`
NodeFilters []string `mapstructure:"nodeFilters" json:"nodeFilters,omitempty"`
}

type EnvVarWithNodeFilters struct {
EnvVar string `mapstructure:"envVar" yaml:"envVar,omitempty" json:"envVar,omitempty"`
NodeFilters []string `mapstructure:"nodeFilters" yaml:"nodeFilters,omitempty" json:"nodeFilters,omitempty"`
EnvVar string `mapstructure:"envVar" json:"envVar,omitempty"`
NodeFilters []string `mapstructure:"nodeFilters" json:"nodeFilters,omitempty"`
}

// SimpleConfigOptionsKubeconfig describes the set of options referring to the kubeconfig during cluster creation.
type SimpleConfigOptionsKubeconfig struct {
UpdateDefaultKubeconfig bool `mapstructure:"updateDefaultKubeconfig" yaml:"updateDefaultKubeconfig" json:"updateDefaultKubeconfig,omitempty"` // default: true
SwitchCurrentContext bool `mapstructure:"switchCurrentContext" yaml:"switchCurrentContext" json:"switchCurrentContext,omitempty"` //nolint:lll // default: true
UpdateDefaultKubeconfig bool `mapstructure:"updateDefaultKubeconfig" json:"updateDefaultKubeconfig,omitempty"` // default: true
SwitchCurrentContext bool `mapstructure:"switchCurrentContext" json:"switchCurrentContext,omitempty"` //nolint:lll // default: true
}

type SimpleConfigOptions struct {
K3dOptions SimpleConfigOptionsK3d `mapstructure:"k3d" yaml:"k3d" json:"k3d"`
K3sOptions SimpleConfigOptionsK3s `mapstructure:"k3s" yaml:"k3s" json:"k3s"`
KubeconfigOptions SimpleConfigOptionsKubeconfig `mapstructure:"kubeconfig" yaml:"kubeconfig" json:"kubeconfig"`
Runtime SimpleConfigOptionsRuntime `mapstructure:"runtime" yaml:"runtime" json:"runtime"`
K3dOptions SimpleConfigOptionsK3d `mapstructure:"k3d" json:"k3d"`
K3sOptions SimpleConfigOptionsK3s `mapstructure:"k3s" json:"k3s"`
KubeconfigOptions SimpleConfigOptionsKubeconfig `mapstructure:"kubeconfig" json:"kubeconfig"`
Runtime SimpleConfigOptionsRuntime `mapstructure:"runtime" json:"runtime"`
}

type SimpleConfigOptionsRuntime struct {
GPURequest string `mapstructure:"gpuRequest,omitempty" yaml:"gpuRequest,omitempty" json:"gpuRequest,omitempty"`
ServersMemory string `mapstructure:"serversMemory,omitempty" yaml:"serversMemory,omitempty" json:"serversMemory,omitempty"`
AgentsMemory string `mapstructure:"agentsMemory,omitempty" yaml:"agentsMemory,omitempty" json:"agentsMemory,omitempty"`
GPURequest string `mapstructure:"gpuRequest,omitempty" json:"gpuRequest,omitempty"`
ServersMemory string `mapstructure:"serversMemory,omitempty" json:"serversMemory,omitempty"`
AgentsMemory string `mapstructure:"agentsMemory,omitempty" json:"agentsMemory,omitempty"`
}

type SimpleConfigOptionsK3d struct {
Wait bool `mapstructure:"wait" yaml:"wait" json:"wait"`
Timeout time.Duration `mapstructure:"timeout" yaml:"timeout,omitempty" json:"timeout,omitempty"`
DisableLoadbalancer bool `mapstructure:"disableLoadbalancer" yaml:"disableLoadbalancer" json:"disableLoadbalancer"`
DisableImageVolume bool `mapstructure:"disableImageVolume" yaml:"disableImageVolume" json:"disableImageVolume"`
NoRollback bool `mapstructure:"disableRollback" yaml:"disableRollback" json:"disableRollback"`
Wait bool `mapstructure:"wait" json:"wait"`
Timeout time.Duration `mapstructure:"timeout" json:"timeout,omitempty"`
DisableLoadbalancer bool `mapstructure:"disableLoadbalancer" json:"disableLoadbalancer"`
DisableImageVolume bool `mapstructure:"disableImageVolume" json:"disableImageVolume"`
NoRollback bool `mapstructure:"disableRollback" json:"disableRollback"`
PrepDisableHostIPInjection bool `mapstructure:"disableHostIPInjection" json:"disableHostIPInjection"`
NodeHookActions []k3d.NodeHookAction `mapstructure:"nodeHookActions" yaml:"nodeHookActions,omitempty" json:"nodeHookActions,omitempty"`
NodeHookActions []k3d.NodeHookAction `mapstructure:"nodeHookActions" json:"nodeHookActions,omitempty"`
}

type SimpleConfigOptionsK3s struct {
ExtraServerArgs []string `mapstructure:"extraServerArgs,omitempty" yaml:"extraServerArgs,omitempty" json:"extraServerArgs,omitempty"`
ExtraAgentArgs []string `mapstructure:"extraAgentArgs,omitempty" yaml:"extraAgentArgs,omitempty" json:"extraAgentArgs,omitempty"`
ExtraServerArgs []string `mapstructure:"extraServerArgs,omitempty" json:"extraServerArgs,omitempty"`
ExtraAgentArgs []string `mapstructure:"extraAgentArgs,omitempty" json:"extraAgentArgs,omitempty"`
}

// SimpleConfig describes the toplevel k3d configuration file.
type SimpleConfig struct {
configtypes.TypeMeta `mapstructure:",squash" yaml:",inline"`
Name string `mapstructure:"name" yaml:"name,omitempty" json:"name,omitempty"`
Servers int `mapstructure:"servers" yaml:"servers,omitempty" json:"servers,omitempty"` //nolint:lll // default 1
Agents int `mapstructure:"agents" yaml:"agents,omitempty" json:"agents,omitempty"` //nolint:lll // default 0
ExposeAPI SimpleExposureOpts `mapstructure:"kubeAPI" yaml:"kubeAPI,omitempty" json:"kubeAPI,omitempty"`
Image string `mapstructure:"image" yaml:"image,omitempty" json:"image,omitempty"`
Network string `mapstructure:"network" yaml:"network,omitempty" json:"network,omitempty"`
Subnet string `mapstructure:"subnet" yaml:"subnet,omitempty" json:"subnet,omitempty"`
ClusterToken string `mapstructure:"token" yaml:"clusterToken,omitempty" json:"clusterToken,omitempty"` // default: auto-generated
Volumes []VolumeWithNodeFilters `mapstructure:"volumes" yaml:"volumes,omitempty" json:"volumes,omitempty"`
Ports []PortWithNodeFilters `mapstructure:"ports" yaml:"ports,omitempty" json:"ports,omitempty"`
Labels []LabelWithNodeFilters `mapstructure:"labels" yaml:"labels,omitempty" json:"labels,omitempty"`
Options SimpleConfigOptions `mapstructure:"options" yaml:"options,omitempty" json:"options,omitempty"`
Env []EnvVarWithNodeFilters `mapstructure:"env" yaml:"env,omitempty" json:"env,omitempty"`
configtypes.TypeMeta `mapstructure:",squash"`
Name string `mapstructure:"name" json:"name,omitempty"`
Servers int `mapstructure:"servers" json:"servers,omitempty"` //nolint:lll // default 1
Agents int `mapstructure:"agents" json:"agents,omitempty"` //nolint:lll // default 0
ExposeAPI SimpleExposureOpts `mapstructure:"kubeAPI" json:"kubeAPI,omitempty"`
Image string `mapstructure:"image" json:"image,omitempty"`
Network string `mapstructure:"network" json:"network,omitempty"`
Subnet string `mapstructure:"subnet" json:"subnet,omitempty"`
ClusterToken string `mapstructure:"token" json:"clusterToken,omitempty"` // default: auto-generated
Volumes []VolumeWithNodeFilters `mapstructure:"volumes" json:"volumes,omitempty"`
Ports []PortWithNodeFilters `mapstructure:"ports" json:"ports,omitempty"`
Labels []LabelWithNodeFilters `mapstructure:"labels" json:"labels,omitempty"`
Options SimpleConfigOptions `mapstructure:"options" json:"options,omitempty"`
Env []EnvVarWithNodeFilters `mapstructure:"env" json:"env,omitempty"`
Registries struct {
Use []string `mapstructure:"use" yaml:"use,omitempty" json:"use,omitempty"`
Create bool `mapstructure:"create" yaml:"create,omitempty" json:"create,omitempty"`
Config string `mapstructure:"config" yaml:"config,omitempty" json:"config,omitempty"` // registries.yaml (k3s config for containerd registry override)
} `mapstructure:"registries" yaml:"registries,omitempty" json:"registries,omitempty"`
Use []string `mapstructure:"use" json:"use,omitempty"`
Create bool `mapstructure:"create" json:"create,omitempty"`
Config string `mapstructure:"config" json:"config,omitempty"` // registries.yaml (k3s config for containerd registry override)
} `mapstructure:"registries" json:"registries,omitempty"`
}

// SimpleExposureOpts provides a simplified syntax compared to the original k3d.ExposureOpts
type SimpleExposureOpts struct {
Host string `mapstructure:"host" yaml:"host,omitempty" json:"host,omitempty"`
HostIP string `mapstructure:"hostIP" yaml:"hostIP,omitempty" json:"hostIP,omitempty"`
HostPort string `mapstructure:"hostPort" yaml:"hostPort,omitempty" json:"hostPort,omitempty"`
Host string `mapstructure:"host" json:"host,omitempty"`
HostIP string `mapstructure:"hostIP" json:"hostIP,omitempty"`
HostPort string `mapstructure:"hostPort" json:"hostPort,omitempty"`
}

// Kind implements Config.Kind
Expand All @@ -151,10 +151,10 @@ func (c SimpleConfig) GetAPIVersion() string {

// ClusterConfig describes a single cluster config
type ClusterConfig struct {
configtypes.TypeMeta `mapstructure:",squash" yaml:",inline"`
Cluster k3d.Cluster `mapstructure:",squash" yaml:",inline"`
ClusterCreateOpts k3d.ClusterCreateOpts `mapstructure:"options" yaml:"options"`
KubeconfigOpts SimpleConfigOptionsKubeconfig `mapstructure:"kubeconfig" yaml:"kubeconfig"`
configtypes.TypeMeta `mapstructure:",squash"`
k3d.Cluster `mapstructure:",squash"`
ClusterCreateOpts k3d.ClusterCreateOpts `mapstructure:"options" json:"options"`
KubeconfigOpts SimpleConfigOptionsKubeconfig `mapstructure:"kubeconfig" json:"kubeconfig"`
}

// Kind implements Config.Kind
Expand All @@ -168,8 +168,8 @@ func (c ClusterConfig) GetAPIVersion() string {

// ClusterListConfig describes a list of clusters
type ClusterListConfig struct {
configtypes.TypeMeta `mapstructure:",squash" yaml:",inline"`
Clusters []k3d.Cluster `mapstructure:"clusters" yaml:"clusters"`
configtypes.TypeMeta `mapstructure:",squash"`
Clusters []k3d.Cluster `mapstructure:"clusters" json:"clusters"`
}

func (c ClusterListConfig) GetKind() string {
Expand Down
Loading

0 comments on commit b11130a

Please sign in to comment.