package config

import (
	// nolint: staticcheck
	ctrlcfg "github.com/tidbcloud/infra-api/third_party/controller-runtime/pkg/config/v1alpha1"

	cloudv1 "github.com/tidbcloud/infra-api/api/v1"
)

// InfraAPIConfig aim to avoid expose ctrlcfg.ControllerManagerConfigurationSpec in cloudv1 to make guys can
// import this while still using some old version controller-runtime(without ctrlcfg.ControllerManagerConfigurationSpec).
type InfraAPIConfig struct {
	cloudv1.InfraAPIConfig
	// ControllerManagerConfigurationSpec returns the contfigurations for controllers
	ctrlcfg.ControllerManagerConfigurationSpec
}

func (c *InfraAPIConfig) DeepCopy() *InfraAPIConfig {
	cc := c.InfraAPIConfig.DeepCopy()
	spec := c.ControllerManagerConfigurationSpec.DeepCopy()

	return &InfraAPIConfig{
		InfraAPIConfig:                     *cc,
		ControllerManagerConfigurationSpec: *spec,
	}
}
