mirror of https://github.com/kubernetes/kops.git
Merge pull request #9981 from olemarkus/cleanup-cloud-2
More removals of BuildCloud
This commit is contained in:
commit
d6f60b9ee5
|
@ -510,14 +510,14 @@ func RunCreateCluster(ctx context.Context, f *util.Factory, out io.Writer, c *Cr
|
||||||
}
|
}
|
||||||
|
|
||||||
assetBuilder := assets.NewAssetBuilder(cluster, "")
|
assetBuilder := assets.NewAssetBuilder(cluster, "")
|
||||||
fullCluster, err := cloudup.PopulateClusterSpec(clientset, cluster, assetBuilder)
|
fullCluster, err := cloudup.PopulateClusterSpec(clientset, cluster, cloud, assetBuilder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var fullInstanceGroups []*api.InstanceGroup
|
var fullInstanceGroups []*api.InstanceGroup
|
||||||
for _, group := range instanceGroups {
|
for _, group := range instanceGroups {
|
||||||
fullGroup, err := cloudup.PopulateInstanceGroupSpec(fullCluster, group, clusterResult.Channel)
|
fullGroup, err := cloudup.PopulateInstanceGroupSpec(fullCluster, group, cloud, clusterResult.Channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,12 @@ func RunCreateInstanceGroup(ctx context.Context, f *util.Factory, cmd *cobra.Com
|
||||||
|
|
||||||
ig.Spec.Subnets = options.Subnets
|
ig.Spec.Subnets = options.Subnets
|
||||||
|
|
||||||
ig, err = cloudup.PopulateInstanceGroupSpec(cluster, ig, channel)
|
cloud, err := cloudup.BuildCloud(cluster)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
ig, err = cloudup.PopulateInstanceGroupSpec(cluster, ig, cloud, channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -228,11 +233,6 @@ func RunCreateInstanceGroup(ctx context.Context, f *util.Factory, cmd *cobra.Com
|
||||||
return fmt.Errorf("unexpected object type: %T", obj)
|
return fmt.Errorf("unexpected object type: %T", obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
cloud, err := cloudup.BuildCloud(cluster)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = validation.CrossValidateInstanceGroup(group, cluster, cloud).ToAggregate()
|
err = validation.CrossValidateInstanceGroup(group, cluster, cloud).ToAggregate()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -217,7 +217,7 @@ func RunEditCluster(ctx context.Context, f *util.Factory, cmd *cobra.Command, ar
|
||||||
}
|
}
|
||||||
|
|
||||||
assetBuilder := assets.NewAssetBuilder(newCluster, "")
|
assetBuilder := assets.NewAssetBuilder(newCluster, "")
|
||||||
fullCluster, err := cloudup.PopulateClusterSpec(clientset, newCluster, assetBuilder)
|
fullCluster, err := cloudup.PopulateClusterSpec(clientset, newCluster, cloud, assetBuilder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
results = editResults{
|
results = editResults{
|
||||||
file: file,
|
file: file,
|
||||||
|
|
|
@ -155,12 +155,11 @@ func RunEditInstanceGroup(ctx context.Context, f *util.Factory, cmd *cobra.Comma
|
||||||
return fmt.Errorf("object was not of expected type: %T", newObj)
|
return fmt.Errorf("object was not of expected type: %T", newObj)
|
||||||
}
|
}
|
||||||
|
|
||||||
fullGroup, err := cloudup.PopulateInstanceGroupSpec(cluster, newGroup, channel)
|
cloud, err := cloudup.BuildCloud(cluster)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
fullGroup, err := cloudup.PopulateInstanceGroupSpec(cluster, newGroup, cloud, channel)
|
||||||
cloud, err := cloudup.BuildCloud(cluster)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -173,7 +172,7 @@ func RunEditInstanceGroup(ctx context.Context, f *util.Factory, cmd *cobra.Comma
|
||||||
}
|
}
|
||||||
|
|
||||||
assetBuilder := assets.NewAssetBuilder(cluster, "")
|
assetBuilder := assets.NewAssetBuilder(cluster, "")
|
||||||
fullCluster, err := cloudup.PopulateClusterSpec(clientset, cluster, assetBuilder)
|
fullCluster, err := cloudup.PopulateClusterSpec(clientset, cluster, cloud, assetBuilder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -278,7 +278,7 @@ func RunToolboxInstanceSelector(ctx context.Context, f *util.Factory, args []str
|
||||||
if instanceSelectorOpts.ClusterAutoscaler {
|
if instanceSelectorOpts.ClusterAutoscaler {
|
||||||
ig = decorateWithClusterAutoscalerLabels(ig, clusterName)
|
ig = decorateWithClusterAutoscalerLabels(ig, clusterName)
|
||||||
}
|
}
|
||||||
ig, err = cloudup.PopulateInstanceGroupSpec(cluster, ig, channel)
|
ig, err = cloudup.PopulateInstanceGroupSpec(cluster, ig, cloud, channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -266,7 +266,13 @@ func RunUpdateCluster(ctx context.Context, f *util.Factory, clusterName string,
|
||||||
lifecycleOverrideMap[taskName] = lifecycleOverride
|
lifecycleOverrideMap[taskName] = lifecycleOverride
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cloud, err := cloudup.BuildCloud(cluster)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
applyCmd := &cloudup.ApplyClusterCmd{
|
applyCmd := &cloudup.ApplyClusterCmd{
|
||||||
|
Cloud: cloud,
|
||||||
Clientset: clientset,
|
Clientset: clientset,
|
||||||
Cluster: cluster,
|
Cluster: cluster,
|
||||||
DryRun: isDryrun,
|
DryRun: isDryrun,
|
||||||
|
|
|
@ -226,7 +226,7 @@ func BuildNodeupModelContext(basedir string) (*NodeupModelContext, error) {
|
||||||
return nodeUpModelContext, nil
|
return nodeUpModelContext, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func mockedPopulateClusterSpec(c *kops.Cluster) (*kops.Cluster, error) {
|
func mockedPopulateClusterSpec(c *kops.Cluster, cloud fi.Cloud) (*kops.Cluster, error) {
|
||||||
vfs.Context.ResetMemfsContext(true)
|
vfs.Context.ResetMemfsContext(true)
|
||||||
|
|
||||||
assetBuilder := assets.NewAssetBuilder(c, "")
|
assetBuilder := assets.NewAssetBuilder(c, "")
|
||||||
|
@ -235,7 +235,7 @@ func mockedPopulateClusterSpec(c *kops.Cluster) (*kops.Cluster, error) {
|
||||||
return nil, fmt.Errorf("error building vfspath: %v", err)
|
return nil, fmt.Errorf("error building vfspath: %v", err)
|
||||||
}
|
}
|
||||||
clientset := vfsclientset.NewVFSClientset(basePath)
|
clientset := vfsclientset.NewVFSClientset(basePath)
|
||||||
return cloudup.PopulateClusterSpec(clientset, c, assetBuilder)
|
return cloudup.PopulateClusterSpec(clientset, c, cloud, assetBuilder)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fixed cert and key, borrowed from the create_kubecfg_test.go test
|
// Fixed cert and key, borrowed from the create_kubecfg_test.go test
|
||||||
|
@ -307,7 +307,7 @@ func RunGoldenTest(t *testing.T, basedir string, key string, builder func(*Nodeu
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := mockedPopulateClusterSpec(nodeupModelContext.Cluster)
|
full, err := mockedPopulateClusterSpec(nodeupModelContext.Cluster, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error from mockedPopulateClusterSpec: %v", err)
|
t.Fatalf("unexpected error from mockedPopulateClusterSpec: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ func UpdateCluster(ctx context.Context, clientset simple.Clientset, cluster *kop
|
||||||
}
|
}
|
||||||
|
|
||||||
assetBuilder := assets.NewAssetBuilder(cluster, "")
|
assetBuilder := assets.NewAssetBuilder(cluster, "")
|
||||||
fullCluster, err := cloudup.PopulateClusterSpec(clientset, cluster, assetBuilder)
|
fullCluster, err := cloudup.PopulateClusterSpec(clientset, cluster, cloud, assetBuilder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,7 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
type ApplyClusterCmd struct {
|
type ApplyClusterCmd struct {
|
||||||
|
Cloud fi.Cloud
|
||||||
Cluster *kops.Cluster
|
Cluster *kops.Cluster
|
||||||
|
|
||||||
InstanceGroups []*kops.InstanceGroup
|
InstanceGroups []*kops.InstanceGroup
|
||||||
|
@ -258,10 +259,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cloud, err := BuildCloud(cluster)
|
cloud := c.Cloud
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = validation.DeepValidate(c.Cluster, c.InstanceGroups, true, cloud)
|
err = validation.DeepValidate(c.Cluster, c.InstanceGroups, true, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -840,14 +838,14 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
||||||
|
|
||||||
// upgradeSpecs ensures that fields are fully populated / defaulted
|
// upgradeSpecs ensures that fields are fully populated / defaulted
|
||||||
func (c *ApplyClusterCmd) upgradeSpecs(assetBuilder *assets.AssetBuilder) error {
|
func (c *ApplyClusterCmd) upgradeSpecs(assetBuilder *assets.AssetBuilder) error {
|
||||||
fullCluster, err := PopulateClusterSpec(c.Clientset, c.Cluster, assetBuilder)
|
fullCluster, err := PopulateClusterSpec(c.Clientset, c.Cluster, c.Cloud, assetBuilder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
c.Cluster = fullCluster
|
c.Cluster = fullCluster
|
||||||
|
|
||||||
for i, g := range c.InstanceGroups {
|
for i, g := range c.InstanceGroups {
|
||||||
fullGroup, err := PopulateInstanceGroupSpec(fullCluster, g, c.channel)
|
fullGroup, err := PopulateInstanceGroupSpec(fullCluster, g, c.Cloud, c.channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ func runChannelBuilderTest(t *testing.T, key string, addonManifests []string) {
|
||||||
t.Fatalf("error from PerformAssignments for %q: %v", key, err)
|
t.Fatalf("error from PerformAssignments for %q: %v", key, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fullSpec, err := mockedPopulateClusterSpec(cluster)
|
fullSpec, err := mockedPopulateClusterSpec(cluster, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PopulateClusterSpec for %q: %v", key, err)
|
t.Fatalf("error from PopulateClusterSpec for %q: %v", key, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,10 @@ func PerformAssignments(c *kops.Cluster, cloud fi.Cloud) error {
|
||||||
c.Spec.Topology = &kops.TopologySpec{Masters: kops.TopologyPublic, Nodes: kops.TopologyPublic}
|
c.Spec.Topology = &kops.TopologySpec{Masters: kops.TopologyPublic, Nodes: kops.TopologyPublic}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cloud == nil {
|
||||||
|
return fmt.Errorf("cloud cannot be nil")
|
||||||
|
}
|
||||||
|
|
||||||
if cloud.ProviderID() == kops.CloudProviderGCE {
|
if cloud.ProviderID() == kops.CloudProviderGCE {
|
||||||
if err := gce.PerformNetworkAssignments(c, cloud); err != nil {
|
if err := gce.PerformNetworkAssignments(c, cloud); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -99,7 +103,7 @@ func PerformAssignments(c *kops.Cluster, cloud fi.Cloud) error {
|
||||||
pd := cloud.ProviderID()
|
pd := cloud.ProviderID()
|
||||||
if pd == kops.CloudProviderAWS || pd == kops.CloudProviderOpenstack || pd == kops.CloudProviderALI {
|
if pd == kops.CloudProviderAWS || pd == kops.CloudProviderOpenstack || pd == kops.CloudProviderALI {
|
||||||
// TODO: Use vpcInfo
|
// TODO: Use vpcInfo
|
||||||
err := assignCIDRsToSubnets(c)
|
err := assignCIDRsToSubnets(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPopulateClusterSpec_Proxy(t *testing.T) {
|
func TestPopulateClusterSpec_Proxy(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
_, c := buildMinimalCluster()
|
||||||
|
|
||||||
c.Spec.EgressProxy = &kops.EgressProxySpec{
|
c.Spec.EgressProxy = &kops.EgressProxySpec{
|
||||||
ProxyExcludes: "google.com",
|
ProxyExcludes: "google.com",
|
||||||
|
|
|
@ -43,6 +43,8 @@ import (
|
||||||
var EtcdClusters = []string{"main", "events"}
|
var EtcdClusters = []string{"main", "events"}
|
||||||
|
|
||||||
type populateClusterSpec struct {
|
type populateClusterSpec struct {
|
||||||
|
cloud fi.Cloud
|
||||||
|
|
||||||
// InputCluster is the api object representing the whole cluster, as input by the user
|
// InputCluster is the api object representing the whole cluster, as input by the user
|
||||||
// We build it up into a complete config, but we write the values as input
|
// We build it up into a complete config, but we write the values as input
|
||||||
InputCluster *kopsapi.Cluster
|
InputCluster *kopsapi.Cluster
|
||||||
|
@ -56,8 +58,9 @@ type populateClusterSpec struct {
|
||||||
|
|
||||||
// PopulateClusterSpec takes a user-specified cluster spec, and computes the full specification that should be set on the cluster.
|
// PopulateClusterSpec takes a user-specified cluster spec, and computes the full specification that should be set on the cluster.
|
||||||
// We do this so that we don't need any real "brains" on the node side.
|
// We do this so that we don't need any real "brains" on the node side.
|
||||||
func PopulateClusterSpec(clientset simple.Clientset, cluster *kopsapi.Cluster, assetBuilder *assets.AssetBuilder) (*kopsapi.Cluster, error) {
|
func PopulateClusterSpec(clientset simple.Clientset, cluster *kopsapi.Cluster, cloud fi.Cloud, assetBuilder *assets.AssetBuilder) (*kopsapi.Cluster, error) {
|
||||||
c := &populateClusterSpec{
|
c := &populateClusterSpec{
|
||||||
|
cloud: cloud,
|
||||||
InputCluster: cluster,
|
InputCluster: cluster,
|
||||||
assetBuilder: assetBuilder,
|
assetBuilder: assetBuilder,
|
||||||
}
|
}
|
||||||
|
@ -83,6 +86,8 @@ func (c *populateClusterSpec) run(clientset simple.Clientset) error {
|
||||||
return errs.ToAggregate()
|
return errs.ToAggregate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cloud := c.cloud
|
||||||
|
|
||||||
// Copy cluster & instance groups, so we can modify them freely
|
// Copy cluster & instance groups, so we can modify them freely
|
||||||
cluster := &kopsapi.Cluster{}
|
cluster := &kopsapi.Cluster{}
|
||||||
|
|
||||||
|
@ -98,11 +103,6 @@ func (c *populateClusterSpec) run(clientset simple.Clientset) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
cloud, err := BuildCloud(cluster)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(cluster, cloud)
|
err = PerformAssignments(cluster, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -301,7 +301,7 @@ func (c *populateClusterSpec) run(clientset simple.Clientset) error {
|
||||||
fullCluster.Spec = *completed
|
fullCluster.Spec = *completed
|
||||||
|
|
||||||
if errs := validation.ValidateCluster(fullCluster, true); len(errs) != 0 {
|
if errs := validation.ValidateCluster(fullCluster, true); len(errs) != 0 {
|
||||||
return fmt.Errorf("Completed cluster failed validation: %v", errs.ToAggregate())
|
return fmt.Errorf("completed cluster failed validation: %v", errs.ToAggregate())
|
||||||
}
|
}
|
||||||
|
|
||||||
c.fullCluster = fullCluster
|
c.fullCluster = fullCluster
|
||||||
|
|
|
@ -59,7 +59,7 @@ var awsDedicatedInstanceExceptions = map[string]bool{
|
||||||
|
|
||||||
// PopulateInstanceGroupSpec sets default values in the InstanceGroup
|
// PopulateInstanceGroupSpec sets default values in the InstanceGroup
|
||||||
// The InstanceGroup is simpler than the cluster spec, so we just populate in place (like the rest of k8s)
|
// The InstanceGroup is simpler than the cluster spec, so we just populate in place (like the rest of k8s)
|
||||||
func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup, channel *kops.Channel) (*kops.InstanceGroup, error) {
|
func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup, cloud fi.Cloud, channel *kops.Channel) (*kops.InstanceGroup, error) {
|
||||||
var err error
|
var err error
|
||||||
err = validation.ValidateInstanceGroup(input, nil).ToAggregate()
|
err = validation.ValidateInstanceGroup(input, nil).ToAggregate()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -72,7 +72,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
|
||||||
// TODO: Clean up
|
// TODO: Clean up
|
||||||
if ig.IsMaster() {
|
if ig.IsMaster() {
|
||||||
if ig.Spec.MachineType == "" {
|
if ig.Spec.MachineType == "" {
|
||||||
ig.Spec.MachineType, err = defaultMachineType(cluster, ig)
|
ig.Spec.MachineType, err = defaultMachineType(cloud, cluster, ig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error assigning default machine type for masters: %v", err)
|
return nil, fmt.Errorf("error assigning default machine type for masters: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
|
||||||
}
|
}
|
||||||
} else if ig.Spec.Role == kops.InstanceGroupRoleBastion {
|
} else if ig.Spec.Role == kops.InstanceGroupRoleBastion {
|
||||||
if ig.Spec.MachineType == "" {
|
if ig.Spec.MachineType == "" {
|
||||||
ig.Spec.MachineType, err = defaultMachineType(cluster, ig)
|
ig.Spec.MachineType, err = defaultMachineType(cloud, cluster, ig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error assigning default machine type for bastions: %v", err)
|
return nil, fmt.Errorf("error assigning default machine type for bastions: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ig.Spec.MachineType == "" {
|
if ig.Spec.MachineType == "" {
|
||||||
ig.Spec.MachineType, err = defaultMachineType(cluster, ig)
|
ig.Spec.MachineType, err = defaultMachineType(cloud, cluster, ig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error assigning default machine type for nodes: %v", err)
|
return nil, fmt.Errorf("error assigning default machine type for nodes: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
if _, ok := awsDedicatedInstanceExceptions[ig.Spec.MachineType]; ok {
|
if _, ok := awsDedicatedInstanceExceptions[ig.Spec.MachineType]; ok {
|
||||||
return nil, fmt.Errorf("Invalid dedicated instance type: %s", ig.Spec.MachineType)
|
return nil, fmt.Errorf("invalid dedicated instance type: %s", ig.Spec.MachineType)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
klog.Warning("Trying to set tenancy on non-AWS environment")
|
klog.Warning("Trying to set tenancy on non-AWS environment")
|
||||||
|
@ -132,7 +132,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
|
||||||
|
|
||||||
if ig.IsMaster() {
|
if ig.IsMaster() {
|
||||||
if len(ig.Spec.Subnets) == 0 {
|
if len(ig.Spec.Subnets) == 0 {
|
||||||
return nil, fmt.Errorf("Master InstanceGroup %s did not specify any Subnets", ig.ObjectMeta.Name)
|
return nil, fmt.Errorf("master InstanceGroup %s did not specify any Subnets", ig.ObjectMeta.Name)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if len(ig.Spec.Subnets) == 0 {
|
if len(ig.Spec.Subnets) == 0 {
|
||||||
|
@ -152,13 +152,9 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
|
||||||
}
|
}
|
||||||
|
|
||||||
// defaultMachineType returns the default MachineType for the instance group, based on the cloudprovider
|
// defaultMachineType returns the default MachineType for the instance group, based on the cloudprovider
|
||||||
func defaultMachineType(cluster *kops.Cluster, ig *kops.InstanceGroup) (string, error) {
|
func defaultMachineType(cloud fi.Cloud, cluster *kops.Cluster, ig *kops.InstanceGroup) (string, error) {
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
cloud, err := BuildCloud(cluster)
|
|
||||||
if err != nil {
|
|
||||||
return "", fmt.Errorf("error building cloud for AWS cluster: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
instanceType, err := cloud.(awsup.AWSCloud).DefaultInstanceType(cluster, ig)
|
instanceType, err := cloud.(awsup.AWSCloud).DefaultInstanceType(cluster, ig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -189,11 +185,6 @@ func defaultMachineType(cluster *kops.Cluster, ig *kops.InstanceGroup) (string,
|
||||||
}
|
}
|
||||||
|
|
||||||
case kops.CloudProviderOpenstack:
|
case kops.CloudProviderOpenstack:
|
||||||
cloud, err := BuildCloud(cluster)
|
|
||||||
if err != nil {
|
|
||||||
return "", fmt.Errorf("error building cloud for Openstack cluster: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
instanceType, err := cloud.(openstack.OpenstackCloud).DefaultInstanceType(cluster, ig)
|
instanceType, err := cloud.(openstack.OpenstackCloud).DefaultInstanceType(cluster, ig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("error finding default machine type: %v", err)
|
return "", fmt.Errorf("error finding default machine type: %v", err)
|
||||||
|
|
|
@ -31,32 +31,28 @@ import (
|
||||||
"k8s.io/kops/util/pkg/vfs"
|
"k8s.io/kops/util/pkg/vfs"
|
||||||
)
|
)
|
||||||
|
|
||||||
func buildMinimalCluster() *kopsapi.Cluster {
|
func buildMinimalCluster() (*awsup.MockAWSCloud, *kopsapi.Cluster) {
|
||||||
awsup.InstallMockAWSCloud(MockAWSRegion, "abcd")
|
cloud := awsup.InstallMockAWSCloud(MockAWSRegion, "abcd")
|
||||||
|
|
||||||
c := testutils.BuildMinimalCluster("testcluster.test.com")
|
c := testutils.BuildMinimalCluster("testcluster.test.com")
|
||||||
|
|
||||||
return c
|
return cloud, c
|
||||||
}
|
}
|
||||||
func TestPopulateCluster_Default_NoError(t *testing.T) {
|
func TestPopulateCluster_Default_NoError(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
cloud, err := BuildCloud(c)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error from BuildCloud: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(c, cloud)
|
err := PerformAssignments(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = mockedPopulateClusterSpec(c)
|
_, err = mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func mockedPopulateClusterSpec(c *kopsapi.Cluster) (*kopsapi.Cluster, error) {
|
func mockedPopulateClusterSpec(c *kopsapi.Cluster, cloud fi.Cloud) (*kopsapi.Cluster, error) {
|
||||||
vfs.Context.ResetMemfsContext(true)
|
vfs.Context.ResetMemfsContext(true)
|
||||||
|
|
||||||
assetBuilder := assets.NewAssetBuilder(c, "")
|
assetBuilder := assets.NewAssetBuilder(c, "")
|
||||||
|
@ -65,11 +61,11 @@ func mockedPopulateClusterSpec(c *kopsapi.Cluster) (*kopsapi.Cluster, error) {
|
||||||
return nil, fmt.Errorf("error building vfspath: %v", err)
|
return nil, fmt.Errorf("error building vfspath: %v", err)
|
||||||
}
|
}
|
||||||
clientset := vfsclientset.NewVFSClientset(basePath)
|
clientset := vfsclientset.NewVFSClientset(basePath)
|
||||||
return PopulateClusterSpec(clientset, c, assetBuilder)
|
return PopulateClusterSpec(clientset, c, cloud, assetBuilder)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_Docker_Spec(t *testing.T) {
|
func TestPopulateCluster_Docker_Spec(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.Docker = &kopsapi.DockerConfig{
|
c.Spec.Docker = &kopsapi.DockerConfig{
|
||||||
MTU: fi.Int32(5678),
|
MTU: fi.Int32(5678),
|
||||||
InsecureRegistry: fi.String("myregistry.com:1234"),
|
InsecureRegistry: fi.String("myregistry.com:1234"),
|
||||||
|
@ -77,17 +73,13 @@ func TestPopulateCluster_Docker_Spec(t *testing.T) {
|
||||||
RegistryMirrors: []string{"https://registry.example.com"},
|
RegistryMirrors: []string{"https://registry.example.com"},
|
||||||
LogOpt: []string{"env=FOO"},
|
LogOpt: []string{"env=FOO"},
|
||||||
}
|
}
|
||||||
cloud, err := BuildCloud(c)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error from BuildCloud: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(c, cloud)
|
err := PerformAssignments(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := mockedPopulateClusterSpec(c)
|
full, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -114,18 +106,14 @@ func TestPopulateCluster_Docker_Spec(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_StorageDefault(t *testing.T) {
|
func TestPopulateCluster_StorageDefault(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
cloud, err := BuildCloud(c)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error from BuildCloud: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(c, cloud)
|
err := PerformAssignments(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := mockedPopulateClusterSpec(c)
|
full, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -146,7 +134,7 @@ func build(c *kopsapi.Cluster) (*kopsapi.Cluster, error) {
|
||||||
return nil, fmt.Errorf("error from PerformAssignments: %v", err)
|
return nil, fmt.Errorf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := mockedPopulateClusterSpec(c)
|
full, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Unexpected error from PopulateCluster: %v", err)
|
return nil, fmt.Errorf("Unexpected error from PopulateCluster: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -154,7 +142,7 @@ func build(c *kopsapi.Cluster) (*kopsapi.Cluster, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_Kubenet(t *testing.T) {
|
func TestPopulateCluster_Kubenet(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
_, c := buildMinimalCluster()
|
||||||
|
|
||||||
full, err := build(c)
|
full, err := build(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -171,7 +159,7 @@ func TestPopulateCluster_Kubenet(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_CNI(t *testing.T) {
|
func TestPopulateCluster_CNI(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
_, c := buildMinimalCluster()
|
||||||
|
|
||||||
c.Spec.Kubelet = &kopsapi.KubeletConfigSpec{
|
c.Spec.Kubelet = &kopsapi.KubeletConfigSpec{
|
||||||
ConfigureCBR0: fi.Bool(false),
|
ConfigureCBR0: fi.Bool(false),
|
||||||
|
@ -199,7 +187,7 @@ func TestPopulateCluster_CNI(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_Custom_CIDR(t *testing.T) {
|
func TestPopulateCluster_Custom_CIDR(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.NetworkCIDR = "172.20.2.0/24"
|
c.Spec.NetworkCIDR = "172.20.2.0/24"
|
||||||
c.Spec.Subnets = []kopsapi.ClusterSubnetSpec{
|
c.Spec.Subnets = []kopsapi.ClusterSubnetSpec{
|
||||||
{Name: "subnet-us-mock-1a", Zone: "us-mock-1a", CIDR: "172.20.2.0/27"},
|
{Name: "subnet-us-mock-1a", Zone: "us-mock-1a", CIDR: "172.20.2.0/27"},
|
||||||
|
@ -207,17 +195,12 @@ func TestPopulateCluster_Custom_CIDR(t *testing.T) {
|
||||||
{Name: "subnet-us-mock-1c", Zone: "us-mock-1c", CIDR: "172.20.2.64/27"},
|
{Name: "subnet-us-mock-1c", Zone: "us-mock-1c", CIDR: "172.20.2.64/27"},
|
||||||
}
|
}
|
||||||
|
|
||||||
cloud, err := BuildCloud(c)
|
err := PerformAssignments(c, cloud)
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error from BuildCloud: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(c, cloud)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := mockedPopulateClusterSpec(c)
|
full, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -227,19 +210,15 @@ func TestPopulateCluster_Custom_CIDR(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_IsolateMasters(t *testing.T) {
|
func TestPopulateCluster_IsolateMasters(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.IsolateMasters = fi.Bool(true)
|
c.Spec.IsolateMasters = fi.Bool(true)
|
||||||
cloud, err := BuildCloud(c)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error from BuildCloud: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(c, cloud)
|
err := PerformAssignments(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := mockedPopulateClusterSpec(c)
|
full, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -252,20 +231,15 @@ func TestPopulateCluster_IsolateMasters(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_IsolateMastersFalse(t *testing.T) {
|
func TestPopulateCluster_IsolateMastersFalse(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
// default: c.Spec.IsolateMasters = fi.Bool(false)
|
// default: c.Spec.IsolateMasters = fi.Bool(false)
|
||||||
|
|
||||||
cloud, err := BuildCloud(c)
|
err := PerformAssignments(c, cloud)
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error from BuildCloud: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(c, cloud)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := mockedPopulateClusterSpec(c)
|
full, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -275,52 +249,52 @@ func TestPopulateCluster_IsolateMastersFalse(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_Name_Required(t *testing.T) {
|
func TestPopulateCluster_Name_Required(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.ObjectMeta.Name = ""
|
c.ObjectMeta.Name = ""
|
||||||
|
|
||||||
expectErrorFromPopulateCluster(t, c, "Name")
|
expectErrorFromPopulateCluster(t, c, cloud, "Name")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_Zone_Required(t *testing.T) {
|
func TestPopulateCluster_Zone_Required(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.Subnets = nil
|
c.Spec.Subnets = nil
|
||||||
|
|
||||||
expectErrorFromPopulateCluster(t, c, "subnet")
|
expectErrorFromPopulateCluster(t, c, cloud, "subnet")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_NetworkCIDR_Required(t *testing.T) {
|
func TestPopulateCluster_NetworkCIDR_Required(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.NetworkCIDR = ""
|
c.Spec.NetworkCIDR = ""
|
||||||
|
|
||||||
expectErrorFromPopulateCluster(t, c, "networkCIDR")
|
expectErrorFromPopulateCluster(t, c, cloud, "networkCIDR")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_NonMasqueradeCIDR_Required(t *testing.T) {
|
func TestPopulateCluster_NonMasqueradeCIDR_Required(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.NonMasqueradeCIDR = ""
|
c.Spec.NonMasqueradeCIDR = ""
|
||||||
|
|
||||||
expectErrorFromPopulateCluster(t, c, "nonMasqueradeCIDR")
|
expectErrorFromPopulateCluster(t, c, cloud, "nonMasqueradeCIDR")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_CloudProvider_Required(t *testing.T) {
|
func TestPopulateCluster_CloudProvider_Required(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.CloudProvider = ""
|
c.Spec.CloudProvider = ""
|
||||||
|
|
||||||
expectErrorFromPopulateCluster(t, c, "cloudProvider")
|
expectErrorFromPopulateCluster(t, c, cloud, "cloudProvider")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_TopologyInvalidNil_Required(t *testing.T) {
|
func TestPopulateCluster_TopologyInvalidNil_Required(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.Topology.Masters = ""
|
c.Spec.Topology.Masters = ""
|
||||||
c.Spec.Topology.Nodes = ""
|
c.Spec.Topology.Nodes = ""
|
||||||
expectErrorFromPopulateCluster(t, c, "topology")
|
expectErrorFromPopulateCluster(t, c, cloud, "topology")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_TopologyInvalidValue_Required(t *testing.T) {
|
func TestPopulateCluster_TopologyInvalidValue_Required(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.Topology.Masters = "123"
|
c.Spec.Topology.Masters = "123"
|
||||||
c.Spec.Topology.Nodes = "abc"
|
c.Spec.Topology.Nodes = "abc"
|
||||||
expectErrorFromPopulateCluster(t, c, "topology")
|
expectErrorFromPopulateCluster(t, c, cloud, "topology")
|
||||||
}
|
}
|
||||||
|
|
||||||
//func TestPopulateCluster_TopologyInvalidMatchingValues_Required(t *testing.T) {
|
//func TestPopulateCluster_TopologyInvalidMatchingValues_Required(t *testing.T) {
|
||||||
|
@ -333,25 +307,25 @@ func TestPopulateCluster_TopologyInvalidValue_Required(t *testing.T) {
|
||||||
|
|
||||||
func TestPopulateCluster_BastionInvalidMatchingValues_Required(t *testing.T) {
|
func TestPopulateCluster_BastionInvalidMatchingValues_Required(t *testing.T) {
|
||||||
// We can't have a bastion with public masters / nodes
|
// We can't have a bastion with public masters / nodes
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.Topology.Masters = kopsapi.TopologyPublic
|
c.Spec.Topology.Masters = kopsapi.TopologyPublic
|
||||||
c.Spec.Topology.Nodes = kopsapi.TopologyPublic
|
c.Spec.Topology.Nodes = kopsapi.TopologyPublic
|
||||||
c.Spec.Topology.Bastion = &kopsapi.BastionSpec{}
|
c.Spec.Topology.Bastion = &kopsapi.BastionSpec{}
|
||||||
expectErrorFromPopulateCluster(t, c, "bastion")
|
expectErrorFromPopulateCluster(t, c, cloud, "bastion")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_BastionIdleTimeoutInvalidNegative_Required(t *testing.T) {
|
func TestPopulateCluster_BastionIdleTimeoutInvalidNegative_Required(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
|
|
||||||
c.Spec.Topology.Masters = kopsapi.TopologyPrivate
|
c.Spec.Topology.Masters = kopsapi.TopologyPrivate
|
||||||
c.Spec.Topology.Nodes = kopsapi.TopologyPrivate
|
c.Spec.Topology.Nodes = kopsapi.TopologyPrivate
|
||||||
c.Spec.Topology.Bastion = &kopsapi.BastionSpec{}
|
c.Spec.Topology.Bastion = &kopsapi.BastionSpec{}
|
||||||
c.Spec.Topology.Bastion.IdleTimeoutSeconds = fi.Int64(-1)
|
c.Spec.Topology.Bastion.IdleTimeoutSeconds = fi.Int64(-1)
|
||||||
expectErrorFromPopulateCluster(t, c, "bastion")
|
expectErrorFromPopulateCluster(t, c, cloud, "bastion")
|
||||||
}
|
}
|
||||||
|
|
||||||
func expectErrorFromPopulateCluster(t *testing.T, c *kopsapi.Cluster, message string) {
|
func expectErrorFromPopulateCluster(t *testing.T, c *kopsapi.Cluster, cloud fi.Cloud, message string) {
|
||||||
_, err := mockedPopulateClusterSpec(c)
|
_, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("Expected error from PopulateCluster")
|
t.Fatalf("Expected error from PopulateCluster")
|
||||||
}
|
}
|
||||||
|
@ -362,7 +336,7 @@ func expectErrorFromPopulateCluster(t *testing.T, c *kopsapi.Cluster, message st
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_APIServerCount(t *testing.T) {
|
func TestPopulateCluster_APIServerCount(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
_, c := buildMinimalCluster()
|
||||||
|
|
||||||
full, err := build(c)
|
full, err := build(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -375,20 +349,15 @@ func TestPopulateCluster_APIServerCount(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_AnonymousAuth(t *testing.T) {
|
func TestPopulateCluster_AnonymousAuth(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.KubernetesVersion = "1.15.0"
|
c.Spec.KubernetesVersion = "1.15.0"
|
||||||
|
|
||||||
cloud, err := BuildCloud(c)
|
err := PerformAssignments(c, cloud)
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error from BuildCloud: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(c, cloud)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := mockedPopulateClusterSpec(c)
|
full, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -430,7 +399,7 @@ func TestPopulateCluster_DockerVersion(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range grid {
|
for _, test := range grid {
|
||||||
c := buildMinimalCluster()
|
_, c := buildMinimalCluster()
|
||||||
c.Spec.KubernetesVersion = test.KubernetesVersion
|
c.Spec.KubernetesVersion = test.KubernetesVersion
|
||||||
|
|
||||||
full, err := build(c)
|
full, err := build(c)
|
||||||
|
@ -445,20 +414,15 @@ func TestPopulateCluster_DockerVersion(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateCluster_KubeController_High_Enough_Version(t *testing.T) {
|
func TestPopulateCluster_KubeController_High_Enough_Version(t *testing.T) {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
c.Spec.KubernetesVersion = "v1.9.0"
|
c.Spec.KubernetesVersion = "v1.9.0"
|
||||||
|
|
||||||
cloud, err := BuildCloud(c)
|
err := PerformAssignments(c, cloud)
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error from BuildCloud: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(c, cloud)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := mockedPopulateClusterSpec(c)
|
full, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ func buildMinimalMasterInstanceGroup(subnet string) *kopsapi.InstanceGroup {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateInstanceGroup_Name_Required(t *testing.T) {
|
func TestPopulateInstanceGroup_Name_Required(t *testing.T) {
|
||||||
cluster := buildMinimalCluster()
|
_, cluster := buildMinimalCluster()
|
||||||
g := buildMinimalNodeInstanceGroup()
|
g := buildMinimalNodeInstanceGroup()
|
||||||
g.ObjectMeta.Name = ""
|
g.ObjectMeta.Name = ""
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ func TestPopulateInstanceGroup_Name_Required(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPopulateInstanceGroup_Role_Required(t *testing.T) {
|
func TestPopulateInstanceGroup_Role_Required(t *testing.T) {
|
||||||
cluster := buildMinimalCluster()
|
_, cluster := buildMinimalCluster()
|
||||||
g := buildMinimalNodeInstanceGroup()
|
g := buildMinimalNodeInstanceGroup()
|
||||||
g.Spec.Role = ""
|
g.Spec.Role = ""
|
||||||
|
|
||||||
|
@ -63,7 +63,12 @@ func TestPopulateInstanceGroup_Role_Required(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func expectErrorFromPopulateInstanceGroup(t *testing.T, cluster *kopsapi.Cluster, g *kopsapi.InstanceGroup, channel *kopsapi.Channel, message string) {
|
func expectErrorFromPopulateInstanceGroup(t *testing.T, cluster *kopsapi.Cluster, g *kopsapi.InstanceGroup, channel *kopsapi.Channel, message string) {
|
||||||
_, err := PopulateInstanceGroupSpec(cluster, g, channel)
|
cloud, err := BuildCloud(cluster)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("error from BuildCloud: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = PopulateInstanceGroupSpec(cluster, g, cloud, channel)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("Expected error from PopulateInstanceGroup")
|
t.Fatalf("Expected error from PopulateInstanceGroup")
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ func (a ByZone) Less(i, j int) bool {
|
||||||
return a[i].Zone < a[j].Zone
|
return a[i].Zone < a[j].Zone
|
||||||
}
|
}
|
||||||
|
|
||||||
func assignCIDRsToSubnets(c *kops.Cluster) error {
|
func assignCIDRsToSubnets(c *kops.Cluster, cloud fi.Cloud) error {
|
||||||
// TODO: We probably could query for the existing subnets & allocate appropriately
|
// TODO: We probably could query for the existing subnets & allocate appropriately
|
||||||
// for now we'll require users to set CIDRs themselves
|
// for now we'll require users to set CIDRs themselves
|
||||||
|
|
||||||
|
@ -51,10 +51,6 @@ func assignCIDRsToSubnets(c *kops.Cluster) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Spec.NetworkID != "" {
|
if c.Spec.NetworkID != "" {
|
||||||
cloud, err := BuildCloud(c)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
vpcInfo, err := cloud.FindVPCInfo(c.Spec.NetworkID)
|
vpcInfo, err := cloud.FindVPCInfo(c.Spec.NetworkID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -99,7 +99,7 @@ func Test_AssignSubnets(t *testing.T) {
|
||||||
c.Spec.NetworkCIDR = "10.0.0.0/8"
|
c.Spec.NetworkCIDR = "10.0.0.0/8"
|
||||||
c.Spec.Subnets = test.subnets
|
c.Spec.Subnets = test.subnets
|
||||||
|
|
||||||
err := assignCIDRsToSubnets(c)
|
err := assignCIDRsToSubnets(c, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error on test %d: %v", i+1, err)
|
t.Fatalf("unexpected error on test %d: %v", i+1, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,19 +30,14 @@ import (
|
||||||
const MockAWSRegion = "us-mock-1"
|
const MockAWSRegion = "us-mock-1"
|
||||||
|
|
||||||
func buildDefaultCluster(t *testing.T) *api.Cluster {
|
func buildDefaultCluster(t *testing.T) *api.Cluster {
|
||||||
c := buildMinimalCluster()
|
cloud, c := buildMinimalCluster()
|
||||||
|
|
||||||
cloud, err := BuildCloud(c)
|
err := PerformAssignments(c, cloud)
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("error from BuildCloud: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = PerformAssignments(c, cloud)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PerformAssignments: %v", err)
|
t.Fatalf("error from PerformAssignments: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fullSpec, err := mockedPopulateClusterSpec(c)
|
fullSpec, err := mockedPopulateClusterSpec(c, cloud)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("error from PopulateClusterSpec: %v", err)
|
t.Fatalf("error from PopulateClusterSpec: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,7 +108,7 @@ func (x *ConvertKubeupCluster) Upgrade(ctx context.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
assetBuilder := assets.NewAssetBuilder(cluster, "")
|
assetBuilder := assets.NewAssetBuilder(cluster, "")
|
||||||
fullCluster, err := cloudup.PopulateClusterSpec(x.Clientset, cluster, assetBuilder)
|
fullCluster, err := cloudup.PopulateClusterSpec(x.Clientset, cluster, x.Cloud, assetBuilder)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -481,7 +481,7 @@ func (x *ImportCluster) ImportAWSCluster(ctx context.Context) error {
|
||||||
|
|
||||||
var fullInstanceGroups []*kops.InstanceGroup
|
var fullInstanceGroups []*kops.InstanceGroup
|
||||||
for _, ig := range instanceGroups {
|
for _, ig := range instanceGroups {
|
||||||
full, err := cloudup.PopulateInstanceGroupSpec(cluster, ig, channel)
|
full, err := cloudup.PopulateInstanceGroupSpec(cluster, ig, awsCloud, channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue