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 = [ deps = [
"//pkg/apis/kops:go_default_library", "//pkg/apis/kops:go_default_library",
"//pkg/apis/nodeup:go_default_library", "//pkg/apis/nodeup:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/testutils/golden:go_default_library", "//pkg/testutils/golden:go_default_library",
"//upup/pkg/fi:go_default_library", "//upup/pkg/fi:go_default_library",
"//util/pkg/architectures:go_default_library", "//util/pkg/architectures:go_default_library",

View File

@ -31,6 +31,7 @@ go_test(
deps = [ deps = [
"//pkg/apis/kops:go_default_library", "//pkg/apis/kops:go_default_library",
"//pkg/model:go_default_library", "//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//upup/pkg/fi:go_default_library", "//upup/pkg/fi:go_default_library",
"//upup/pkg/fi/cloudup/awstasks: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/apis/kops"
"k8s.io/kops/pkg/model" "k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/awstasks" "k8s.io/kops/upup/pkg/fi/cloudup/awstasks"
) )
@ -78,8 +79,8 @@ func TestRootVolumeOptimizationFlag(t *testing.T) {
b := AutoscalingGroupModelBuilder{ b := AutoscalingGroupModelBuilder{
AWSModelContext: &AWSModelContext{ AWSModelContext: &AWSModelContext{
KopsModelContext: &model.KopsModelContext{ KopsModelContext: &model.KopsModelContext{
IAMModelContext: iam.IAMModelContext{Cluster: cluster},
SSHPublicKeys: k, SSHPublicKeys: k,
Cluster: cluster,
InstanceGroups: igs, InstanceGroups: igs,
}, },
}, },

View File

@ -44,6 +44,7 @@ go_test(
deps = [ deps = [
"//pkg/assets:go_default_library", "//pkg/assets:go_default_library",
"//pkg/model:go_default_library", "//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/testutils:go_default_library", "//pkg/testutils:go_default_library",
"//upup/pkg/fi: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/assets"
"k8s.io/kops/pkg/model" "k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/pkg/testutils" "k8s.io/kops/pkg/testutils"
"k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi"
) )
@ -77,7 +78,7 @@ func LoadKopsModelContext(basedir string) (*model.KopsModelContext, error) {
} }
kopsContext := &model.KopsModelContext{ kopsContext := &model.KopsModelContext{
Cluster: spec.Cluster, IAMModelContext: iam.IAMModelContext{Cluster: spec.Cluster},
InstanceGroups: spec.InstanceGroups, InstanceGroups: spec.InstanceGroups,
} }

View File

@ -25,6 +25,7 @@ go_test(
deps = [ deps = [
"//pkg/assets:go_default_library", "//pkg/assets:go_default_library",
"//pkg/model:go_default_library", "//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/testutils:go_default_library", "//pkg/testutils:go_default_library",
"//upup/pkg/fi: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/assets"
"k8s.io/kops/pkg/model" "k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/pkg/testutils" "k8s.io/kops/pkg/testutils"
"k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi"
) )
@ -70,7 +71,7 @@ func LoadKopsModelContext(basedir string) (*model.KopsModelContext, error) {
} }
kopsContext := &model.KopsModelContext{ kopsContext := &model.KopsModelContext{
Cluster: spec.Cluster, IAMModelContext: iam.IAMModelContext{Cluster: spec.Cluster},
InstanceGroups: spec.InstanceGroups, InstanceGroups: spec.InstanceGroups,
} }

View File

@ -28,6 +28,7 @@ import (
"k8s.io/kops/pkg/apis/kops/util" "k8s.io/kops/pkg/apis/kops/util"
"k8s.io/kops/pkg/featureflag" "k8s.io/kops/pkg/featureflag"
"k8s.io/kops/pkg/model/components" "k8s.io/kops/pkg/model/components"
"k8s.io/kops/pkg/model/iam"
nodeidentityaws "k8s.io/kops/pkg/nodeidentity/aws" nodeidentityaws "k8s.io/kops/pkg/nodeidentity/aws"
"k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/awstasks" "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 // KopsModelContext is the kops model
type KopsModelContext struct { type KopsModelContext struct {
Cluster *kops.Cluster iam.IAMModelContext
InstanceGroups []*kops.InstanceGroup InstanceGroups []*kops.InstanceGroup
Region string Region string
SSHPublicKeys [][]byte SSHPublicKeys [][]byte
@ -97,11 +98,6 @@ func (m *KopsModelContext) GetELBName32(prefix string) string {
return s 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) // 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) { func (m *KopsModelContext) GatherSubnets(ig *kops.InstanceGroup) ([]*kops.ClusterSubnetSpec, error) {
var subnets []*kops.ClusterSubnetSpec var subnets []*kops.ClusterSubnetSpec

View File

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

View File

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

View File

@ -19,6 +19,8 @@ package iam
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"k8s.io/kops/pkg/apis/kops"
) )
// ParseStatements parses JSON into a list of Statements // ParseStatements parses JSON into a list of Statements
@ -29,3 +31,12 @@ func ParseStatements(policy string) ([]*Statement, error) {
} }
return statements, nil 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/kops:go_default_library",
"//pkg/apis/nodeup:go_default_library", "//pkg/apis/nodeup:go_default_library",
"//pkg/model:go_default_library", "//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//upup/pkg/fi:go_default_library", "//upup/pkg/fi:go_default_library",
"//upup/pkg/fi/cloudup/openstacktasks:go_default_library", "//upup/pkg/fi/cloudup/openstacktasks:go_default_library",
"//util/pkg/architectures: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/kops"
"k8s.io/kops/pkg/apis/nodeup" "k8s.io/kops/pkg/apis/nodeup"
"k8s.io/kops/pkg/model" "k8s.io/kops/pkg/model"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/openstacktasks" "k8s.io/kops/upup/pkg/fi/cloudup/openstacktasks"
"k8s.io/kops/util/pkg/architectures" "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") sshPublicKey := []byte("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDF2sghZsClUBXJB4mBMIw8rb0hJWjg1Vz4eUeXwYmTdi92Gf1zNc5xISSip9Y+PWX/jJokPB7tgPnMD/2JOAKhG1bi4ZqB15pYRmbbBekVpM4o4E0dx+czbqjiAm6wlccTrINK5LYenbucAAQt19eH+D0gJwzYUK9SYz1hWnlGS+qurt2bz7rrsG73lN8E2eiNvGtIXqv3GabW/Hea3acOBgCUJQWUDTRu0OmmwxzKbFN/UpNKeRaHlCqwZWjVAsmqA8TX8LIocq7Np7MmIBwt7EpEeZJxThcmC8DEJs9ClAjD+jlLIvMPXKC3JWCPgwCLGxHjy7ckSGFCSzbyPduh")
modelContext := &model.KopsModelContext{ modelContext := &model.KopsModelContext{
Cluster: cluster, IAMModelContext: iam.IAMModelContext{Cluster: cluster},
InstanceGroups: instanceGroups, InstanceGroups: instanceGroups,
SSHPublicKeys: [][]byte{sshPublicKey}, SSHPublicKeys: [][]byte{sshPublicKey},
} }

View File

@ -51,6 +51,7 @@ go_library(
"//pkg/model/components/node-authorizer:go_default_library", "//pkg/model/components/node-authorizer:go_default_library",
"//pkg/model/domodel:go_default_library", "//pkg/model/domodel:go_default_library",
"//pkg/model/gcemodel:go_default_library", "//pkg/model/gcemodel:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/model/openstackmodel:go_default_library", "//pkg/model/openstackmodel:go_default_library",
"//pkg/model/spotinstmodel:go_default_library", "//pkg/model/spotinstmodel:go_default_library",
"//pkg/resources/digitalocean:go_default_library", "//pkg/resources/digitalocean:go_default_library",
@ -117,6 +118,7 @@ go_test(
"//pkg/diff:go_default_library", "//pkg/diff:go_default_library",
"//pkg/kopscodecs:go_default_library", "//pkg/kopscodecs:go_default_library",
"//pkg/model:go_default_library", "//pkg/model:go_default_library",
"//pkg/model/iam:go_default_library",
"//pkg/templates:go_default_library", "//pkg/templates:go_default_library",
"//pkg/testutils:go_default_library", "//pkg/testutils:go_default_library",
"//pkg/testutils/golden: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/components/kubeapiserver"
"k8s.io/kops/pkg/model/domodel" "k8s.io/kops/pkg/model/domodel"
"k8s.io/kops/pkg/model/gcemodel" "k8s.io/kops/pkg/model/gcemodel"
"k8s.io/kops/pkg/model/iam"
"k8s.io/kops/pkg/model/openstackmodel" "k8s.io/kops/pkg/model/openstackmodel"
"k8s.io/kops/pkg/model/spotinstmodel" "k8s.io/kops/pkg/model/spotinstmodel"
"k8s.io/kops/pkg/resources/digitalocean" "k8s.io/kops/pkg/resources/digitalocean"
@ -359,7 +360,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
} }
modelContext := &model.KopsModelContext{ modelContext := &model.KopsModelContext{
Cluster: cluster, IAMModelContext: iam.IAMModelContext{Cluster: cluster},
InstanceGroups: c.InstanceGroups, InstanceGroups: c.InstanceGroups,
} }

View File

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

View File

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