Skip to content

Commit

Permalink
refactoring: drop setup name (#32)
Browse files Browse the repository at this point in the history
  • Loading branch information
MatousJobanek authored Apr 22, 2024
1 parent 11f8a31 commit cfee5c4
Show file tree
Hide file tree
Showing 14 changed files with 100 additions and 104 deletions.
6 changes: 1 addition & 5 deletions pkg/assets/assets.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,7 @@ func GetKubeSawAdminsConfig(kubeSawAdminsFile string) (*KubeSawAdmins, error) {
}

func GetRoles(f fs.ReadFileFS, clusterType configuration.ClusterType) ([]runtimeclient.Object, error) {
return GetSetupTemplateObjects(f, fmt.Sprintf("roles/%s.yaml", clusterType))
}

func GetSetupTemplateObjects(f fs.ReadFileFS, filePath string) ([]runtimeclient.Object, error) {
return ParseTemplate(f, fmt.Sprintf("setup/%s", filePath))
return ParseTemplate(f, fmt.Sprintf("roles/%s.yaml", clusterType))
}

func ParseTemplate(f fs.ReadFileFS, fileName string) ([]runtimeclient.Object, error) {
Expand Down
4 changes: 2 additions & 2 deletions pkg/assets/assets_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ func TestGetRoles(t *testing.T) {
// given
require.NoError(t, client.AddToScheme())
files := NewFakeFiles(t,
FakeFile("setup/roles/host.yaml", []byte(hostRoles)),
FakeFile("setup/roles/member.yaml", []byte(memberRoles)),
FakeFile("roles/host.yaml", []byte(hostRoles)),
FakeFile("roles/member.yaml", []byte(memberRoles)),
)

for _, clusterType := range configuration.ClusterTypes {
Expand Down
28 changes: 14 additions & 14 deletions pkg/cmd/generate/admin-manifests.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ import (
"github.com/spf13/cobra"
)

type setupFlags struct {
type adminManifestsFlags struct {
kubeSawAdminsFile, outDir, hostRootDir, memberRootDir string
singleCluster bool
}

func NewAdminManifestsCmd() *cobra.Command {
f := setupFlags{}
f := adminManifestsFlags{}
command := &cobra.Command{
Use: "admin-manifests --kubesaw-admins=<path-to-kubesaw-admins-file> --out-dir <path-to-out-dir>",
Example: `ksctl generate admin-manifests ./path/to/kubesaw.openshiftapps.com/kubesaw-admins.yaml --out-dir ./components/auth/kubesaw-production
Expand All @@ -30,7 +30,7 @@ ksctl generate admin-manifests ./path/to/kubesaw-stage.openshiftapps.com/kubesaw
Args: cobra.ExactArgs(0),
RunE: func(cmd *cobra.Command, _ []string) error {
term := ioutils.NewTerminal(cmd.InOrStdin, cmd.OutOrStdout)
return Setup(term, resources.Resources, f)
return adminManifests(term, resources.Resources, f)
},
}
command.Flags().StringVarP(&f.kubeSawAdminsFile, "kubesaw-admins", "c", "", "Use the given kubesaw-admin file")
Expand All @@ -45,7 +45,7 @@ ksctl generate admin-manifests ./path/to/kubesaw-stage.openshiftapps.com/kubesaw
return command
}

func Setup(term ioutils.Terminal, files assets.FS, flags setupFlags) error {
func adminManifests(term ioutils.Terminal, files assets.FS, flags adminManifestsFlags) error {
if err := client.AddToScheme(); err != nil {
return err
}
Expand All @@ -64,11 +64,11 @@ func Setup(term ioutils.Terminal, files assets.FS, flags setupFlags) error {
if err != nil {
return err
}
ctx := &setupContext{
Terminal: term,
kubeSawAdmins: kubeSawAdmins,
setupFlags: flags,
files: files,
ctx := &adminManifestsContext{
Terminal: term,
kubeSawAdmins: kubeSawAdmins,
adminManifestsFlags: flags,
files: files,
}
objsCache := objectsCache{}
if err := ensureCluster(ctx, configuration.Host, objsCache); err != nil {
Expand All @@ -80,19 +80,19 @@ func Setup(term ioutils.Terminal, files assets.FS, flags setupFlags) error {
return objsCache.writeManifests(ctx)
}

type setupContext struct {
type adminManifestsContext struct {
ioutils.Terminal
setupFlags
adminManifestsFlags
kubeSawAdmins *assets.KubeSawAdmins
files assets.FS
}

func ensureCluster(ctx *setupContext, clusterType configuration.ClusterType, cache objectsCache) error {
func ensureCluster(ctx *adminManifestsContext, clusterType configuration.ClusterType, cache objectsCache) error {
ctx.PrintContextSeparatorf("Generating manifests for %s cluster type", clusterType)

clusterCtx := &clusterContext{
setupContext: ctx,
clusterType: clusterType,
adminManifestsContext: ctx,
clusterType: clusterType,
}

if err := ensureServiceAccounts(clusterCtx, cache); err != nil {
Expand Down
76 changes: 38 additions & 38 deletions pkg/cmd/generate/admin-manifests_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func TestSetup(t *testing.T) {
func TestAdminManifests(t *testing.T) {
// given
require.NoError(t, client.AddToScheme())
kubeSawAdmins := NewKubeSawAdmins(
Expand Down Expand Up @@ -50,14 +50,14 @@ func TestSetup(t *testing.T) {

t.Run("all created", func(t *testing.T) {
// given
outTempDir, err := os.MkdirTemp("", "setup-cli-test-")
outTempDir, err := os.MkdirTemp("", "admin-manifests-cli-test-")
require.NoError(t, err)
term := NewFakeTerminalWithResponse("Y")
term.Tee(os.Stdout)
flags := newSetupFlags(outDir(outTempDir), kubeSawAdminsFile(configFile))
flags := newAdminManifestsFlags(outDir(outTempDir), kubeSawAdminsFile(configFile))

// when
err = Setup(term, files, flags)
err = adminManifests(term, files, flags)

// then
require.NoError(t, err)
Expand All @@ -66,14 +66,14 @@ func TestSetup(t *testing.T) {

t.Run("in single-cluster mode", func(t *testing.T) {
// given
outTempDir, err := os.MkdirTemp("", "setup-cli-test-")
outTempDir, err := os.MkdirTemp("", "admin-manifests-cli-test-")
require.NoError(t, err)
term := NewFakeTerminalWithResponse("Y")
term.Tee(os.Stdout)
flags := newSetupFlags(outDir(outTempDir), kubeSawAdminsFile(configFile), singleCluster())
flags := newAdminManifestsFlags(outDir(outTempDir), kubeSawAdminsFile(configFile), singleCluster())

// when
err = Setup(term, files, flags)
err = adminManifests(term, files, flags)

// then
require.NoError(t, err)
Expand All @@ -82,14 +82,14 @@ func TestSetup(t *testing.T) {

t.Run("in custom host root directory", func(t *testing.T) {
// given
outTempDir, err := os.MkdirTemp("", "setup-cli-test-")
outTempDir, err := os.MkdirTemp("", "admin-manifests-cli-test-")
require.NoError(t, err)
term := NewFakeTerminalWithResponse("Y")
term.Tee(os.Stdout)
flags := newSetupFlags(outDir(outTempDir), kubeSawAdminsFile(configFile), hostRootDir("host-cluster"))
flags := newAdminManifestsFlags(outDir(outTempDir), kubeSawAdminsFile(configFile), hostRootDir("host-cluster"))

// when
err = Setup(term, files, flags)
err = adminManifests(term, files, flags)

// then
require.NoError(t, err)
Expand All @@ -98,14 +98,14 @@ func TestSetup(t *testing.T) {

t.Run("in custom member root directory", func(t *testing.T) {
// given
outTempDir, err := os.MkdirTemp("", "setup-cli-test-")
outTempDir, err := os.MkdirTemp("", "admin-manifests-cli-test-")
require.NoError(t, err)
term := NewFakeTerminalWithResponse("Y")
term.Tee(os.Stdout)
flags := newSetupFlags(outDir(outTempDir), kubeSawAdminsFile(configFile), memberRootDir("member-clusters"))
flags := newAdminManifestsFlags(outDir(outTempDir), kubeSawAdminsFile(configFile), memberRootDir("member-clusters"))

// when
err = Setup(term, files, flags)
err = adminManifests(term, files, flags)

// then
require.NoError(t, err)
Expand All @@ -114,15 +114,15 @@ func TestSetup(t *testing.T) {

t.Run("previous deleted", func(t *testing.T) {
// given
outTempDir, err := os.MkdirTemp("", "setup-cli-test-")
outTempDir, err := os.MkdirTemp("", "admin-manifests-cli-test-")
require.NoError(t, err)
storeDummySA(t, outTempDir)
term := NewFakeTerminalWithResponse("Y")
term.Tee(os.Stdout)
flags := newSetupFlags(outDir(outTempDir), kubeSawAdminsFile(configFile))
flags := newAdminManifestsFlags(outDir(outTempDir), kubeSawAdminsFile(configFile))

// when
err = Setup(term, files, flags)
err = adminManifests(term, files, flags)

// then
require.NoError(t, err)
Expand All @@ -131,13 +131,13 @@ func TestSetup(t *testing.T) {

t.Run("if out dir doesn't exist then it creates", func(t *testing.T) {
// given
outTempDir := filepath.Join(os.TempDir(), fmt.Sprintf("setup-cli-test-%s", uuid.NewV4().String()))
outTempDir := filepath.Join(os.TempDir(), fmt.Sprintf("admin-manifests-cli-test-%s", uuid.NewV4().String()))
term := NewFakeTerminalWithResponse("Y")
term.Tee(os.Stdout)
flags := newSetupFlags(outDir(outTempDir), kubeSawAdminsFile(configFile))
flags := newAdminManifestsFlags(outDir(outTempDir), kubeSawAdminsFile(configFile))

// when
err = Setup(term, files, flags)
err = adminManifests(term, files, flags)

// then
require.NoError(t, err)
Expand All @@ -146,22 +146,22 @@ func TestSetup(t *testing.T) {

t.Run("fails for non-existing kubesaw-admins.yaml file", func(t *testing.T) {
// given
outTempDir, err := os.MkdirTemp("", "setup-cli-test-")
outTempDir, err := os.MkdirTemp("", "admin-manifests-cli-test-")
require.NoError(t, err)
term := NewFakeTerminalWithResponse("Y")
term.Tee(os.Stdout)
flags := newSetupFlags(outDir(outTempDir), kubeSawAdminsFile("does/not/exist"))
flags := newAdminManifestsFlags(outDir(outTempDir), kubeSawAdminsFile("does/not/exist"))

// when
err = Setup(term, files, flags)
err = adminManifests(term, files, flags)

// then
require.Error(t, err)
})
}

func storeDummySA(t *testing.T, outDir string) {
ctx := newSetupContextWithDefaultFiles(t, nil)
ctx := newAdminManifestsContextWithDefaultFiles(t, nil)
ctx.outDir = outDir
sa := &corev1.ServiceAccount{
TypeMeta: metav1.TypeMeta{
Expand All @@ -177,7 +177,7 @@ func storeDummySA(t *testing.T, outDir string) {
require.NoError(t, err)
}

func verifyFiles(t *testing.T, flags setupFlags) {
func verifyFiles(t *testing.T, flags adminManifestsFlags) {
dirEntries, err := os.ReadDir(flags.outDir)
require.NoError(t, err)
var dirNames []string
Expand Down Expand Up @@ -307,45 +307,45 @@ users:
token: my-cool-token
`

type setupFlagsOption func(*setupFlags)
type adminManifestsFlagsOption func(*adminManifestsFlags)

func newSetupFlags(setupFlagsOptions ...setupFlagsOption) setupFlags {
flags := setupFlags{
func newAdminManifestsFlags(adminManifestsFlagsOptions ...adminManifestsFlagsOption) adminManifestsFlags {
flags := adminManifestsFlags{
hostRootDir: "host",
memberRootDir: "member",
}
for _, applyOption := range setupFlagsOptions {
for _, applyOption := range adminManifestsFlagsOptions {
applyOption(&flags)
}
return flags
}

func kubeSawAdminsFile(configName string) setupFlagsOption {
return func(flags *setupFlags) {
func kubeSawAdminsFile(configName string) adminManifestsFlagsOption {
return func(flags *adminManifestsFlags) {
flags.kubeSawAdminsFile = configName
}
}

func outDir(outDir string) setupFlagsOption {
return func(flags *setupFlags) {
func outDir(outDir string) adminManifestsFlagsOption {
return func(flags *adminManifestsFlags) {
flags.outDir = outDir
}
}

func hostRootDir(hostRootDir string) setupFlagsOption {
return func(flags *setupFlags) {
func hostRootDir(hostRootDir string) adminManifestsFlagsOption {
return func(flags *adminManifestsFlags) {
flags.hostRootDir = hostRootDir
}
}

func memberRootDir(memberRootDir string) setupFlagsOption {
return func(flags *setupFlags) {
func memberRootDir(memberRootDir string) adminManifestsFlagsOption {
return func(flags *adminManifestsFlags) {
flags.memberRootDir = memberRootDir
}
}

func singleCluster() setupFlagsOption {
return func(flags *setupFlags) {
func singleCluster() adminManifestsFlagsOption {
return func(flags *adminManifestsFlags) {
flags.singleCluster = true
}
}
2 changes: 1 addition & 1 deletion pkg/cmd/generate/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
)

type clusterContext struct {
*setupContext
*adminManifestsContext
clusterType configuration.ClusterType
}

Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/generate/cluster_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func TestEnsureServiceAccounts(t *testing.T) {
HostRoleBindings("toolchain-host-operator", Role("restart-deployment"), ClusterRole("view")),
MemberRoleBindings("toolchain-member-operator", Role("restart-deployment"), ClusterRole("view")))),
[]assets.User{})
ctx := newSetupContextWithDefaultFiles(t, kubeSawAdmins)
ctx := newAdminManifestsContextWithDefaultFiles(t, kubeSawAdmins)
cache := objectsCache{}

for _, clusterType := range configuration.ClusterTypes {
Expand Down Expand Up @@ -73,7 +73,7 @@ func TestEnsureServiceAccounts(t *testing.T) {
Sa("john", "openshift-customer-monitoring",
HostRoleBindings("toolchain-host-operator", Role("install-operator"), ClusterRole("view")),
HostClusterRoleBindings("cluster-monitoring-view"))), Users())
ctx := newSetupContextWithDefaultFiles(t, kubeSawAdmins)
ctx := newAdminManifestsContextWithDefaultFiles(t, kubeSawAdmins)
clusterCtx := newFakeClusterContext(ctx, configuration.Host)
t.Cleanup(gock.OffAll)
cache := objectsCache{}
Expand Down Expand Up @@ -106,7 +106,7 @@ func TestUsers(t *testing.T) {
MemberRoleBindings("toolchain-member-operator", Role("restart-deployment"), ClusterRole("view")),
MemberClusterRoleBindings("cluster-monitoring-view"))))

ctx := newSetupContextWithDefaultFiles(t, kubeSawAdmins)
ctx := newAdminManifestsContextWithDefaultFiles(t, kubeSawAdmins)
cache := objectsCache{}

for _, clusterType := range configuration.ClusterTypes {
Expand Down
12 changes: 6 additions & 6 deletions pkg/cmd/generate/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ import (
)

func NewGenerateCmd() *cobra.Command {
admCommand := &cobra.Command{
generateCommand := &cobra.Command{
Use: "generate",
Short: "Generate commands",
Long: `Commands to generate manifests and CLI config files`,
}
registerCommands(admCommand)
return admCommand
registerCommands(generateCommand)
return generateCommand
}

func registerCommands(admCommand *cobra.Command) {
admCommand.AddCommand(NewAdminManifestsCmd())
admCommand.AddCommand(NewCliConfigsCmd())
func registerCommands(generateCommand *cobra.Command) {
generateCommand.AddCommand(NewAdminManifestsCmd())
generateCommand.AddCommand(NewCliConfigsCmd())
}
Loading

0 comments on commit cfee5c4

Please sign in to comment.