Skip to content

Commit

Permalink
restore properties to KubernetesConfig
Browse files Browse the repository at this point in the history
  • Loading branch information
jackfrancis committed Jan 19, 2018
1 parent 93589b4 commit 9ed1610
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 57 deletions.
70 changes: 42 additions & 28 deletions pkg/api/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ func (a *KubernetesAddon) IsEnabled(ifNil bool) bool {
return *a.Enabled
}

// TODO use this when strict JSON accommodates struct embedding
// CloudProviderConfig contains the KubernetesConfig properties specific to the Cloud Provider
type CloudProviderConfig struct {
CloudProviderBackoff bool `json:"cloudProviderBackoff,omitempty"`
Expand All @@ -207,6 +208,7 @@ type CloudProviderConfig struct {
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty"`
}

// TODO use this when strict JSON accommodates struct embedding
// KubernetesConfigDeprecated are properties that are no longer operable and will be ignored
type KubernetesConfigDeprecated struct {
NonMasqueradeCidr string `json:"nonMasqueradeCidr,omitempty"`
Expand All @@ -220,34 +222,46 @@ type KubernetesConfigDeprecated struct {
// KubernetesConfig contains the Kubernetes config structure, containing
// Kubernetes specific configuration
type KubernetesConfig struct {
KubernetesImageBase string `json:"kubernetesImageBase,omitempty"`
ClusterSubnet string `json:"clusterSubnet,omitempty"`
NetworkPolicy string `json:"networkPolicy,omitempty"`
MaxPods int `json:"maxPods,omitempty"`
DockerBridgeSubnet string `json:"dockerBridgeSubnet,omitempty"`
DNSServiceIP string `json:"dnsServiceIP,omitempty"`
ServiceCIDR string `json:"serviceCidr,omitempty"`
CloudProviderConfig
UseManagedIdentity bool `json:"useManagedIdentity,omitempty"`
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
DockerEngineVersion string `json:"dockerEngineVersion,omitempty"`
CustomCcmImage string `json:"customCcmImage,omitempty"` // Image for cloud-controller-manager
UseCloudControllerManager *bool `json:"useCloudControllerManager,omitempty"`
UseInstanceMetadata *bool `json:"useInstanceMetadata,omitempty"`
EnableRbac *bool `json:"enableRbac,omitempty"`
EnableSecureKubelet *bool `json:"enableSecureKubelet,omitempty"`
EnableAggregatedAPIs bool `json:"enableAggregatedAPIs,omitempty"`
GCHighThreshold int `json:"gchighthreshold,omitempty"`
GCLowThreshold int `json:"gclowthreshold,omitempty"`
EtcdVersion string `json:"etcdVersion,omitempty"`
EtcdDiskSizeGB string `json:"etcdDiskSizeGB,omitempty"`
EnableDataEncryptionAtRest *bool `json:"enableDataEncryptionAtRest,omitempty"`
Addons []KubernetesAddon `json:"addons,omitempty"`
KubeletConfig map[string]string `json:"kubeletConfig,omitempty"`
ControllerManagerConfig map[string]string `json:"controllerManagerConfig,omitempty"`
CloudControllerManagerConfig map[string]string `json:"cloudControllerManagerConfig,omitempty"`
APIServerConfig map[string]string `json:"apiServerConfig,omitempty"`
KubernetesConfigDeprecated
KubernetesImageBase string `json:"kubernetesImageBase,omitempty"`
ClusterSubnet string `json:"clusterSubnet,omitempty"`
NetworkPolicy string `json:"networkPolicy,omitempty"`
MaxPods int `json:"maxPods,omitempty"`
DockerBridgeSubnet string `json:"dockerBridgeSubnet,omitempty"`
DNSServiceIP string `json:"dnsServiceIP,omitempty"`
ServiceCIDR string `json:"serviceCidr,omitempty"`
UseManagedIdentity bool `json:"useManagedIdentity,omitempty"`
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
DockerEngineVersion string `json:"dockerEngineVersion,omitempty"`
CustomCcmImage string `json:"customCcmImage,omitempty"` // Image for cloud-controller-manager
UseCloudControllerManager *bool `json:"useCloudControllerManager,omitempty"`
UseInstanceMetadata *bool `json:"useInstanceMetadata,omitempty"`
EnableRbac *bool `json:"enableRbac,omitempty"`
EnableSecureKubelet *bool `json:"enableSecureKubelet,omitempty"`
EnableAggregatedAPIs bool `json:"enableAggregatedAPIs,omitempty"`
GCHighThreshold int `json:"gchighthreshold,omitempty"`
GCLowThreshold int `json:"gclowthreshold,omitempty"`
EtcdVersion string `json:"etcdVersion,omitempty"`
EtcdDiskSizeGB string `json:"etcdDiskSizeGB,omitempty"`
EnableDataEncryptionAtRest *bool `json:"enableDataEncryptionAtRest,omitempty"`
Addons []KubernetesAddon `json:"addons,omitempty"`
KubeletConfig map[string]string `json:"kubeletConfig,omitempty"`
ControllerManagerConfig map[string]string `json:"controllerManagerConfig,omitempty"`
CloudControllerManagerConfig map[string]string `json:"cloudControllerManagerConfig,omitempty"`
APIServerConfig map[string]string `json:"apiServerConfig,omitempty"`
CloudProviderBackoff bool `json:"cloudProviderBackoff,omitempty"`
CloudProviderBackoffRetries int `json:"cloudProviderBackoffRetries,omitempty"`
CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter,omitempty"`
CloudProviderBackoffDuration int `json:"cloudProviderBackoffDuration,omitempty"`
CloudProviderBackoffExponent float64 `json:"cloudProviderBackoffExponent,omitempty"`
CloudProviderRateLimit bool `json:"cloudProviderRateLimit,omitempty"`
CloudProviderRateLimitQPS float64 `json:"cloudProviderRateLimitQPS,omitempty"`
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty"`
NonMasqueradeCidr string `json:"nonMasqueradeCidr,omitempty"`
NodeStatusUpdateFrequency string `json:"nodeStatusUpdateFrequency,omitempty"`
HardEvictionThreshold string `json:"hardEvictionThreshold,omitempty"`
CtrlMgrNodeMonitorGracePeriod string `json:"ctrlMgrNodeMonitorGracePeriod,omitempty"`
CtrlMgrPodEvictionTimeout string `json:"ctrlMgrPodEvictionTimeout,omitempty"`
CtrlMgrRouteReconciliationPeriod string `json:"ctrlMgrRouteReconciliationPeriod,omitempty"`
}

// DcosConfig Configuration for DC/OS
Expand Down
24 changes: 16 additions & 8 deletions pkg/api/vlabs/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ func (a *KubernetesAddon) IsEnabled(ifNil bool) bool {
return *a.Enabled
}

// TODO use this when strict JSON checking accommodates struct embedding
// CloudProviderConfig contains the KubernetesConfig parameters specific to the Cloud Provider
type CloudProviderConfig struct {
CloudProviderBackoff bool `json:"cloudProviderBackoff,omitempty"`
Expand All @@ -228,14 +229,13 @@ type CloudProviderConfig struct {
// KubernetesConfig contains the Kubernetes config structure, containing
// Kubernetes specific configuration
type KubernetesConfig struct {
KubernetesImageBase string `json:"kubernetesImageBase,omitempty"`
ClusterSubnet string `json:"clusterSubnet,omitempty"`
DNSServiceIP string `json:"dnsServiceIP,omitempty"`
ServiceCidr string `json:"serviceCidr,omitempty"`
NetworkPolicy string `json:"networkPolicy,omitempty"`
MaxPods int `json:"maxPods,omitempty"`
DockerBridgeSubnet string `json:"dockerBridgeSubnet,omitempty"`
CloudProviderConfig
KubernetesImageBase string `json:"kubernetesImageBase,omitempty"`
ClusterSubnet string `json:"clusterSubnet,omitempty"`
DNSServiceIP string `json:"dnsServiceIP,omitempty"`
ServiceCidr string `json:"serviceCidr,omitempty"`
NetworkPolicy string `json:"networkPolicy,omitempty"`
MaxPods int `json:"maxPods,omitempty"`
DockerBridgeSubnet string `json:"dockerBridgeSubnet,omitempty"`
UseManagedIdentity bool `json:"useManagedIdentity,omitempty"`
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
DockerEngineVersion string `json:"dockerEngineVersion,omitempty"`
Expand All @@ -255,6 +255,14 @@ type KubernetesConfig struct {
ControllerManagerConfig map[string]string `json:"controllerManagerConfig,omitempty"`
CloudControllerManagerConfig map[string]string `json:"cloudControllerManagerConfig,omitempty"`
APIServerConfig map[string]string `json:"apiServerConfig,omitempty"`
CloudProviderBackoff bool `json:"cloudProviderBackoff,omitempty"`
CloudProviderBackoffRetries int `json:"cloudProviderBackoffRetries,omitempty"`
CloudProviderBackoffJitter float64 `json:"cloudProviderBackoffJitter,omitempty"`
CloudProviderBackoffDuration int `json:"cloudProviderBackoffDuration,omitempty"`
CloudProviderBackoffExponent float64 `json:"cloudProviderBackoffExponent,omitempty"`
CloudProviderRateLimit bool `json:"cloudProviderRateLimit,omitempty"`
CloudProviderRateLimitQPS float64 `json:"cloudProviderRateLimitQPS,omitempty"`
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty"`
}

// DcosConfig Configuration for DC/OS
Expand Down
36 changes: 15 additions & 21 deletions pkg/api/vlabs/validate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,19 +74,17 @@ func Test_KubernetesConfig_Validate(t *testing.T) {
}

c = KubernetesConfig{
ClusterSubnet: "10.120.0.0/16",
DockerBridgeSubnet: "10.120.1.0/16",
MaxPods: 42,
CloudProviderConfig: CloudProviderConfig{
CloudProviderBackoff: ValidKubernetesCloudProviderBackoff,
CloudProviderBackoffRetries: ValidKubernetesCloudProviderBackoffRetries,
CloudProviderBackoffJitter: ValidKubernetesCloudProviderBackoffJitter,
CloudProviderBackoffDuration: ValidKubernetesCloudProviderBackoffDuration,
CloudProviderBackoffExponent: ValidKubernetesCloudProviderBackoffExponent,
CloudProviderRateLimit: ValidKubernetesCloudProviderRateLimit,
CloudProviderRateLimitQPS: ValidKubernetesCloudProviderRateLimitQPS,
CloudProviderRateLimitBucket: ValidKubernetesCloudProviderRateLimitBucket,
},
ClusterSubnet: "10.120.0.0/16",
DockerBridgeSubnet: "10.120.1.0/16",
MaxPods: 42,
CloudProviderBackoff: ValidKubernetesCloudProviderBackoff,
CloudProviderBackoffRetries: ValidKubernetesCloudProviderBackoffRetries,
CloudProviderBackoffJitter: ValidKubernetesCloudProviderBackoffJitter,
CloudProviderBackoffDuration: ValidKubernetesCloudProviderBackoffDuration,
CloudProviderBackoffExponent: ValidKubernetesCloudProviderBackoffExponent,
CloudProviderRateLimit: ValidKubernetesCloudProviderRateLimit,
CloudProviderRateLimitQPS: ValidKubernetesCloudProviderRateLimitQPS,
CloudProviderRateLimitBucket: ValidKubernetesCloudProviderRateLimitBucket,
KubeletConfig: map[string]string{
"--node-status-update-frequency": ValidKubernetesNodeStatusUpdateFrequency,
},
Expand Down Expand Up @@ -253,10 +251,8 @@ func Test_KubernetesConfig_Validate(t *testing.T) {
// Tests that apply to pre-1.6 releases
for _, k8sVersion := range []string{common.KubernetesVersion1Dot5Dot8} {
c := KubernetesConfig{
CloudProviderConfig: CloudProviderConfig{
CloudProviderBackoff: true,
CloudProviderRateLimit: true,
},
CloudProviderBackoff: true,
CloudProviderRateLimit: true,
}
if err := c.Validate(k8sVersion); err == nil {
t.Error("should error because backoff and rate limiting are not available before v1.6.6")
Expand All @@ -269,10 +265,8 @@ func Test_KubernetesConfig_Validate(t *testing.T) {
common.KubernetesVersion1Dot8Dot1, common.KubernetesVersion1Dot8Dot2, common.KubernetesVersion1Dot8Dot4, common.KubernetesVersion1Dot8Dot6,
common.KubernetesVersion1Dot9Dot0, common.KubernetesVersion1Dot9Dot1} {
c := KubernetesConfig{
CloudProviderConfig: CloudProviderConfig{
CloudProviderBackoff: true,
CloudProviderRateLimit: true,
},
CloudProviderBackoff: true,
CloudProviderRateLimit: true,
}
if err := c.Validate(k8sVersion); err != nil {
t.Error("should not error when basic backoff and rate limiting are set to true with no options")
Expand Down

0 comments on commit 9ed1610

Please sign in to comment.