Refactor: KopsModelContext embeds IAMModelContext

go syntax makes this an annoying change, unfortunately.
This commit is contained in:
Justin SB 2020-08-25 11:14:47 -04:00
parent dfe40f85d9
commit b158ffab04
17 changed files with 55 additions and 28 deletions

View File

@ -74,6 +74,7 @@ go_test(
deps = [
"//pkg/apis/kops:go_default_library",
"//pkg/apis/nodeup:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/testutils/golden:go_default_library",
"//upup/pkg/fi:go_default_library",
"//util/pkg/architectures:go_default_library",

View File

@ -31,6 +31,7 @@ go_test(
deps = [
"//pkg/apis/kops:go_default_library",
"//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//upup/pkg/fi:go_default_library",
"//upup/pkg/fi/cloudup/awstasks:go_default_library",
],

View File

@ -21,6 +21,7 @@ import (
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/awstasks"
)
@ -78,8 +79,8 @@ func TestRootVolumeOptimizationFlag(t *testing.T) {
b := AutoscalingGroupModelBuilder{
AWSModelContext: &AWSModelContext{
KopsModelContext: &model.KopsModelContext{
IAMModelContext: iam.IAMModelContext{Cluster: cluster},
SSHPublicKeys: k,
Cluster: cluster,
InstanceGroups: igs,
},
},

View File

@ -44,6 +44,7 @@ go_test(
deps = [
"//pkg/assets:go_default_library",
"//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/testutils:go_default_library",
"//upup/pkg/fi:go_default_library",
],

View File

@ -23,6 +23,7 @@ import (
"k8s.io/kops/pkg/assets"
"k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/pkg/testutils"
"k8s.io/kops/upup/pkg/fi"
)
@ -77,7 +78,7 @@ func LoadKopsModelContext(basedir string) (*model.KopsModelContext, error) {
}
kopsContext := &model.KopsModelContext{
Cluster: spec.Cluster,
IAMModelContext: iam.IAMModelContext{Cluster: spec.Cluster},
InstanceGroups: spec.InstanceGroups,
}

View File

@ -25,6 +25,7 @@ go_test(
deps = [
"//pkg/assets:go_default_library",
"//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/testutils:go_default_library",
"//upup/pkg/fi:go_default_library",
],

View File

@ -23,6 +23,7 @@ import (
"k8s.io/kops/pkg/assets"
"k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/pkg/testutils"
"k8s.io/kops/upup/pkg/fi"
)
@ -70,7 +71,7 @@ func LoadKopsModelContext(basedir string) (*model.KopsModelContext, error) {
}
kopsContext := &model.KopsModelContext{
Cluster: spec.Cluster,
IAMModelContext: iam.IAMModelContext{Cluster: spec.Cluster},
InstanceGroups: spec.InstanceGroups,
}

View File

@ -28,6 +28,7 @@ import (
"k8s.io/kops/pkg/apis/kops/util"
"k8s.io/kops/pkg/featureflag"
"k8s.io/kops/pkg/model/components"
"k8s.io/kops/pkg/model/iam"
nodeidentityaws "k8s.io/kops/pkg/nodeidentity/aws"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/awstasks"
@ -47,7 +48,7 @@ var UseLegacyELBName = featureflag.New("UseLegacyELBName", featureflag.Bool(fals
// KopsModelContext is the kops model
type KopsModelContext struct {
Cluster *kops.Cluster
iam.IAMModelContext
InstanceGroups []*kops.InstanceGroup
Region string
SSHPublicKeys [][]byte
@ -97,11 +98,6 @@ func (m *KopsModelContext) GetELBName32(prefix string) string {
return s
}
// ClusterName returns the cluster name
func (m *KopsModelContext) ClusterName() string {
return m.Cluster.ObjectMeta.Name
}
// GatherSubnets maps the subnet names in an InstanceGroup to the ClusterSubnetSpec objects (which are stored on the Cluster)
func (m *KopsModelContext) GatherSubnets(ig *kops.InstanceGroup) ([]*kops.ClusterSubnetSpec, error) {
var subnets []*kops.ClusterSubnetSpec

View File

@ -21,6 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/model/iam"
)
func Test_GetELBName32(t *testing.T) {
@ -48,11 +49,13 @@ func Test_GetELBName32(t *testing.T) {
}
for _, g := range grid {
c := &KopsModelContext{
IAMModelContext: iam.IAMModelContext{
Cluster: &kops.Cluster{
ObjectMeta: metav1.ObjectMeta{
Name: g.ClusterName,
},
},
},
}
actual := c.GetELBName32(g.Prefix)
if actual != g.Expected {

View File

@ -21,6 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/model/iam"
)
func Test_SharedGroups(t *testing.T) {
@ -48,11 +49,13 @@ func Test_SharedGroups(t *testing.T) {
}
for _, g := range grid {
c := &KopsModelContext{
IAMModelContext: iam.IAMModelContext{
Cluster: &kops.Cluster{
ObjectMeta: metav1.ObjectMeta{
Name: g.ClusterName,
},
},
},
}
actual := c.GetELBName32(g.Prefix)
if actual != g.Expected {

View File

@ -19,6 +19,8 @@ package iam
import (
"encoding/json"
"fmt"
"k8s.io/kops/pkg/apis/kops"
)
// ParseStatements parses JSON into a list of Statements
@ -29,3 +31,12 @@ func ParseStatements(policy string) ([]*Statement, error) {
}
return statements, nil
}
type IAMModelContext struct {
Cluster *kops.Cluster
}
// ClusterName returns the cluster name
func (b *IAMModelContext) ClusterName() string {
return b.Cluster.ObjectMeta.Name
}

View File

@ -34,6 +34,7 @@ go_test(
"//pkg/apis/kops:go_default_library",
"//pkg/apis/nodeup:go_default_library",
"//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//upup/pkg/fi:go_default_library",
"//upup/pkg/fi/cloudup/openstacktasks:go_default_library",
"//util/pkg/architectures:go_default_library",

View File

@ -27,6 +27,7 @@ import (
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/apis/nodeup"
"k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/openstacktasks"
"k8s.io/kops/util/pkg/architectures"
@ -3059,7 +3060,7 @@ func createBuilderForCluster(cluster *kops.Cluster, instanceGroups []*kops.Insta
sshPublicKey := []byte("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDF2sghZsClUBXJB4mBMIw8rb0hJWjg1Vz4eUeXwYmTdi92Gf1zNc5xISSip9Y+PWX/jJokPB7tgPnMD/2JOAKhG1bi4ZqB15pYRmbbBekVpM4o4E0dx+czbqjiAm6wlccTrINK5LYenbucAAQt19eH+D0gJwzYUK9SYz1hWnlGS+qurt2bz7rrsG73lN8E2eiNvGtIXqv3GabW/Hea3acOBgCUJQWUDTRu0OmmwxzKbFN/UpNKeRaHlCqwZWjVAsmqA8TX8LIocq7Np7MmIBwt7EpEeZJxThcmC8DEJs9ClAjD+jlLIvMPXKC3JWCPgwCLGxHjy7ckSGFCSzbyPduh")
modelContext := &model.KopsModelContext{
Cluster: cluster,
IAMModelContext: iam.IAMModelContext{Cluster: cluster},
InstanceGroups: instanceGroups,
SSHPublicKeys: [][]byte{sshPublicKey},
}

View File

@ -51,6 +51,7 @@ go_library(
"//pkg/model/components/node-authorizer:go_default_library",
"//pkg/model/domodel:go_default_library",
"//pkg/model/gcemodel:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/model/openstackmodel:go_default_library",
"//pkg/model/spotinstmodel:go_default_library",
"//pkg/resources/digitalocean:go_default_library",
@ -117,6 +118,7 @@ go_test(
"//pkg/diff:go_default_library",
"//pkg/kopscodecs:go_default_library",
"//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/templates:go_default_library",
"//pkg/testutils:go_default_library",
"//pkg/testutils/golden:go_default_library",

View File

@ -48,6 +48,7 @@ import (
"k8s.io/kops/pkg/model/components/kubeapiserver"
"k8s.io/kops/pkg/model/domodel"
"k8s.io/kops/pkg/model/gcemodel"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/pkg/model/openstackmodel"
"k8s.io/kops/pkg/model/spotinstmodel"
"k8s.io/kops/pkg/resources/digitalocean"
@ -359,7 +360,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
}
modelContext := &model.KopsModelContext{
Cluster: cluster,
IAMModelContext: iam.IAMModelContext{Cluster: cluster},
InstanceGroups: c.InstanceGroups,
}

View File

@ -26,6 +26,7 @@ import (
"k8s.io/kops/pkg/client/simple/vfsclientset"
"k8s.io/kops/pkg/kopscodecs"
"k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/pkg/templates"
"k8s.io/kops/pkg/testutils"
"k8s.io/kops/pkg/testutils/golden"
@ -93,7 +94,7 @@ func runChannelBuilderTest(t *testing.T, key string, addonManifests []string) {
tf := &TemplateFunctions{
KopsModelContext: model.KopsModelContext{
Cluster: cluster,
IAMModelContext: iam.IAMModelContext{Cluster: cluster},
Region: "us-east-1",
},
}
@ -101,7 +102,7 @@ func runChannelBuilderTest(t *testing.T, key string, addonManifests []string) {
bcb := BootstrapChannelBuilder{
KopsModelContext: &model.KopsModelContext{
Cluster: cluster,
IAMModelContext: iam.IAMModelContext{Cluster: cluster},
},
templates: templates,
assetBuilder: assets.NewAssetBuilder(cluster, ""),

View File

@ -31,6 +31,7 @@ import (
kopsdns "k8s.io/kops/pkg/dns"
"k8s.io/kops/pkg/featureflag"
"k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/upup/pkg/fi"
)
@ -87,7 +88,7 @@ func findZone(cluster *kops.Cluster, cloud fi.Cloud) (dnsprovider.Zone, error) {
func validateDNS(cluster *kops.Cluster, cloud fi.Cloud) error {
kopsModelContext := &model.KopsModelContext{
Cluster: cluster,
IAMModelContext: iam.IAMModelContext{Cluster: cluster},
// We are not initializing a lot of the fields here; revisit once UsePrivateDNS is "real"
}