-
Notifications
You must be signed in to change notification settings - Fork 19
Add SKE login command #157
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add SKE login command #157
Conversation
5a80eee
to
bf1a738
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently there are two use cases related to kubeconfig
. One is the login for kubectl
and the other one is creating a kubeconfig
(which we will introduce soon)
When we had the discussion offline to have the command under the credentials
command group, I thought we could name the commands something like kubectl-login
and then get-kubeconfig
. This would be so that we don't introduce another command sub-group.
For reference, the guideline for CLI commands is:
stackit <GROUP> <SUB-GROUP> <COMMAND> <ARGUMENT> <PARAMETER FLAGS> [OPTION FLAGS]
So we should to go with this approach:
stackit ske kubeconfig login
and stackit ske kubeconfig create
bf1a738
to
3c45bc0
Compare
@vicentepinto98 thanks for the initial review. I've implemented the requested changes. 🙂 I'm not 100% happy with the tests, as they create files which won't be cleaned up. The same problem exists also for other tests (e.g., succeeding only locally because the config file already exists). |
af8309d
to
5abb912
Compare
5abb912
to
851c802
Compare
Co-authored-by: Maximilian Geberl <[email protected]>
ed0b1e3
to
8df5e65
Compare
Run |
…and should not be used directly
796807b
to
db10e3e
Compare
* Add --used and --unused flags to `load-balancer list` (#308) * initial implementation * add testing, finish functionality * generate docs, minor improvements * more testing * refactor implementation, simplify RunE * remove unused func * address PR comments * generate-docs * change filtercredentials to use enum for operation type * address PR comments * Onboard `load-balancer observability-credentials cleanup` (#311) * command implementation, add testing * rename var, generate docs * address PR comments * fix no credentials listing (#313) * Integrate WinGet distribution in release pipeline (#305) * Integrate WinGet distribution in release pipeline * Add comment regarding skipping prereleases * Fix link * Configure table titles (#314) * Update tables * Configure colors in the less pager * Fix title wrapping, add titles to lb * Re-add -w argument and add titles to mongodb and pgflex options * fix(deps): update stackit sdk modules to v0.14.0 (#317) Co-authored-by: Renovate Bot <[email protected]> * MongoDB backup list, describe, restore-jobs (#307) * Draft implementation mongodb backup list, describe, restore-jobs * Fix descriptions * Add expire date§ g * Add docs * Fix examples * Add restore status * Refactor getRestoreStatus * Sort restore jobs array * Add another date format to unit test§ * Implement YAML output format (#298) * initial implementation yamlOutputFormal * sort imports * change yaml library * add yaml output format * tidy up imports * tidy up imports * update docs * add yaml output for project and organization role lists * extend contribution.md * change yaml library * Mongodb backup schedule, update-schedule, restore (#316) * initial update schedule implementation * implement update and list schedule commands, add testing * restore command and testing * add waiters * generate docs * merge changes * address PR comments * add custom error, fix restore examples * Add yaml output format to mongodbflex backup commands (#319) * add yaml output to mongodbflex commands * update docs * Update internal/cmd/mongodbflex/backup/describe/describe.go Co-authored-by: João Palet <[email protected]> * change error log --------- Co-authored-by: João Palet <[email protected]> * Add yaml output to lb commands (#321) * update docs * add yaml output * fix(deps): update stackit sdk modules (#318) Co-authored-by: Renovate Bot <[email protected]> * Add SKE login command (#157) * Add SKE login command Co-authored-by: Maximilian Geberl <[email protected]> * Different improvement from code review * remove unused function * rearrange functions and improve error messages * Add tests for cache pkg * Extend kubeconfig create command with flag to retrieve login kubeconfig * small extension to the kubeconfig login description * improve descriptions and examples * fix yaml output * codereview: use os.UserCacheDir instead of external lib * codereview: drop parseInput and use parseClusterConfig directly; move cacheKey into clusterConfig * codereview: add one nil check * codereview: print user facing error that explains that the login command should not be used directly * fixup! codereview: use os.UserCacheDir instead of external lib * codereview: first try at improving the description * generate-docs * Add tests for login (buildRequest & parseKubeConfigToExecCredential * cache: call Init func directly and return err * use p.Outputf instead of cmd.Print --------- Co-authored-by: Maximilian Geberl <[email protected]> * Fix outputF call (#322) * Add custom pager handling (#299) * add custom pager handling * ignore linter temporarily * change condition * add debug line * add debug log * add pager infos to README * Update README.md Co-authored-by: João Palet <[email protected]> * edit README.md * edit README.md * Update README.md Co-authored-by: Vicente Pinto <[email protected]> * Update README.md Co-authored-by: Vicente Pinto <[email protected]> --------- Co-authored-by: João Palet <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> * change marshal function to add indentation (#323) * upgrade dependency to fix high vulnerability (#324) * Replace createFolderIfNotExists with MkdirAll --------- Co-authored-by: Diogo Ferrão <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> Co-authored-by: stackit-pipeline <[email protected]> Co-authored-by: Renovate Bot <[email protected]> Co-authored-by: GokceGK <[email protected]> Co-authored-by: Kumm-Kai <[email protected]> Co-authored-by: Maximilian Geberl <[email protected]>
* Implement `GetProfile` (#309) * Extract file utils and implement readFileIfExists * Write unit tests for file utils * Implement GetProfile * Fix test * Fix typo * Remove unnecesary condition * Fix lint * Adjustments after review * Choose config folder based on profile in InitConfig (#310) * Implement `stackit config profile` commands (#312) * Implement config profile set * Implement config profile unset * Extend config list to show active profile * Adjustments after review * Improvements to profiles functionality (#315) * Add --used and --unused flags to `load-balancer list` (#308) * initial implementation * add testing, finish functionality * generate docs, minor improvements * more testing * refactor implementation, simplify RunE * remove unused func * address PR comments * generate-docs * change filtercredentials to use enum for operation type * address PR comments * Onboard `load-balancer observability-credentials cleanup` (#311) * command implementation, add testing * rename var, generate docs * address PR comments * fix no credentials listing (#313) * Integrate WinGet distribution in release pipeline (#305) * Integrate WinGet distribution in release pipeline * Add comment regarding skipping prereleases * Fix link * Configure table titles (#314) * Update tables * Configure colors in the less pager * Fix title wrapping, add titles to lb * Re-add -w argument and add titles to mongodb and pgflex options * Add table title to config list * Fixes and improvements to profiles functionality --------- Co-authored-by: Diogo Ferrão <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> * Implement profiles for auth settings (#326) * add profiles for auth settings * adapt unit tests * Use filepath.Join for keyring path too --------- Co-authored-by: João Palet <[email protected]> * Add warnings when set/unset profile with no auth (#327) * initial implementation for auth warning on new profiles * add debug logs * simplify code, improve messages * address acceptance comments (#328) * Rework active profile handling in auth (#329) * move reading profile to caller functions * adapt unit tests * adapt unit tests * adapt unit tests * Merge latest updates from `main` into `feature/multi-config` (#330) * Add --used and --unused flags to `load-balancer list` (#308) * initial implementation * add testing, finish functionality * generate docs, minor improvements * more testing * refactor implementation, simplify RunE * remove unused func * address PR comments * generate-docs * change filtercredentials to use enum for operation type * address PR comments * Onboard `load-balancer observability-credentials cleanup` (#311) * command implementation, add testing * rename var, generate docs * address PR comments * fix no credentials listing (#313) * Integrate WinGet distribution in release pipeline (#305) * Integrate WinGet distribution in release pipeline * Add comment regarding skipping prereleases * Fix link * Configure table titles (#314) * Update tables * Configure colors in the less pager * Fix title wrapping, add titles to lb * Re-add -w argument and add titles to mongodb and pgflex options * fix(deps): update stackit sdk modules to v0.14.0 (#317) Co-authored-by: Renovate Bot <[email protected]> * MongoDB backup list, describe, restore-jobs (#307) * Draft implementation mongodb backup list, describe, restore-jobs * Fix descriptions * Add expire date§ g * Add docs * Fix examples * Add restore status * Refactor getRestoreStatus * Sort restore jobs array * Add another date format to unit test§ * Implement YAML output format (#298) * initial implementation yamlOutputFormal * sort imports * change yaml library * add yaml output format * tidy up imports * tidy up imports * update docs * add yaml output for project and organization role lists * extend contribution.md * change yaml library * Mongodb backup schedule, update-schedule, restore (#316) * initial update schedule implementation * implement update and list schedule commands, add testing * restore command and testing * add waiters * generate docs * merge changes * address PR comments * add custom error, fix restore examples * Add yaml output format to mongodbflex backup commands (#319) * add yaml output to mongodbflex commands * update docs * Update internal/cmd/mongodbflex/backup/describe/describe.go Co-authored-by: João Palet <[email protected]> * change error log --------- Co-authored-by: João Palet <[email protected]> * Add yaml output to lb commands (#321) * update docs * add yaml output * fix(deps): update stackit sdk modules (#318) Co-authored-by: Renovate Bot <[email protected]> * Add SKE login command (#157) * Add SKE login command Co-authored-by: Maximilian Geberl <[email protected]> * Different improvement from code review * remove unused function * rearrange functions and improve error messages * Add tests for cache pkg * Extend kubeconfig create command with flag to retrieve login kubeconfig * small extension to the kubeconfig login description * improve descriptions and examples * fix yaml output * codereview: use os.UserCacheDir instead of external lib * codereview: drop parseInput and use parseClusterConfig directly; move cacheKey into clusterConfig * codereview: add one nil check * codereview: print user facing error that explains that the login command should not be used directly * fixup! codereview: use os.UserCacheDir instead of external lib * codereview: first try at improving the description * generate-docs * Add tests for login (buildRequest & parseKubeConfigToExecCredential * cache: call Init func directly and return err * use p.Outputf instead of cmd.Print --------- Co-authored-by: Maximilian Geberl <[email protected]> * Fix outputF call (#322) * Add custom pager handling (#299) * add custom pager handling * ignore linter temporarily * change condition * add debug line * add debug log * add pager infos to README * Update README.md Co-authored-by: João Palet <[email protected]> * edit README.md * edit README.md * Update README.md Co-authored-by: Vicente Pinto <[email protected]> * Update README.md Co-authored-by: Vicente Pinto <[email protected]> --------- Co-authored-by: João Palet <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> * change marshal function to add indentation (#323) * upgrade dependency to fix high vulnerability (#324) * Replace createFolderIfNotExists with MkdirAll --------- Co-authored-by: Diogo Ferrão <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> Co-authored-by: stackit-pipeline <[email protected]> Co-authored-by: Renovate Bot <[email protected]> Co-authored-by: GokceGK <[email protected]> Co-authored-by: Kumm-Kai <[email protected]> Co-authored-by: Maximilian Geberl <[email protected]> * Fix encoded file path for profiles (#333) * Fix file path for the encoded text file * fix unit test --------- Co-authored-by: Diogo Ferrão <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> Co-authored-by: GokceGK <[email protected]> Co-authored-by: stackit-pipeline <[email protected]> Co-authored-by: Renovate Bot <[email protected]> Co-authored-by: Kumm-Kai <[email protected]> Co-authored-by: Maximilian Geberl <[email protected]>
…ofile` (#366) * Implement `GetProfile` (#309) * Extract file utils and implement readFileIfExists * Write unit tests for file utils * Implement GetProfile * Fix test * Fix typo * Remove unnecesary condition * Fix lint * Adjustments after review * Choose config folder based on profile in InitConfig (#310) * Implement `stackit config profile` commands (#312) * Implement config profile set * Implement config profile unset * Extend config list to show active profile * Adjustments after review * Improvements to profiles functionality (#315) * Add --used and --unused flags to `load-balancer list` (#308) * initial implementation * add testing, finish functionality * generate docs, minor improvements * more testing * refactor implementation, simplify RunE * remove unused func * address PR comments * generate-docs * change filtercredentials to use enum for operation type * address PR comments * Onboard `load-balancer observability-credentials cleanup` (#311) * command implementation, add testing * rename var, generate docs * address PR comments * fix no credentials listing (#313) * Integrate WinGet distribution in release pipeline (#305) * Integrate WinGet distribution in release pipeline * Add comment regarding skipping prereleases * Fix link * Configure table titles (#314) * Update tables * Configure colors in the less pager * Fix title wrapping, add titles to lb * Re-add -w argument and add titles to mongodb and pgflex options * Add table title to config list * Fixes and improvements to profiles functionality --------- Co-authored-by: Diogo Ferrão <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> * Implement profiles for auth settings (#326) * add profiles for auth settings * adapt unit tests * Use filepath.Join for keyring path too --------- Co-authored-by: João Palet <[email protected]> * Add warnings when set/unset profile with no auth (#327) * initial implementation for auth warning on new profiles * add debug logs * simplify code, improve messages * address acceptance comments (#328) * Rework active profile handling in auth (#329) * move reading profile to caller functions * adapt unit tests * adapt unit tests * adapt unit tests * Merge latest updates from `main` into `feature/multi-config` (#330) * Add --used and --unused flags to `load-balancer list` (#308) * initial implementation * add testing, finish functionality * generate docs, minor improvements * more testing * refactor implementation, simplify RunE * remove unused func * address PR comments * generate-docs * change filtercredentials to use enum for operation type * address PR comments * Onboard `load-balancer observability-credentials cleanup` (#311) * command implementation, add testing * rename var, generate docs * address PR comments * fix no credentials listing (#313) * Integrate WinGet distribution in release pipeline (#305) * Integrate WinGet distribution in release pipeline * Add comment regarding skipping prereleases * Fix link * Configure table titles (#314) * Update tables * Configure colors in the less pager * Fix title wrapping, add titles to lb * Re-add -w argument and add titles to mongodb and pgflex options * fix(deps): update stackit sdk modules to v0.14.0 (#317) Co-authored-by: Renovate Bot <[email protected]> * MongoDB backup list, describe, restore-jobs (#307) * Draft implementation mongodb backup list, describe, restore-jobs * Fix descriptions * Add expire date§ g * Add docs * Fix examples * Add restore status * Refactor getRestoreStatus * Sort restore jobs array * Add another date format to unit test§ * Implement YAML output format (#298) * initial implementation yamlOutputFormal * sort imports * change yaml library * add yaml output format * tidy up imports * tidy up imports * update docs * add yaml output for project and organization role lists * extend contribution.md * change yaml library * Mongodb backup schedule, update-schedule, restore (#316) * initial update schedule implementation * implement update and list schedule commands, add testing * restore command and testing * add waiters * generate docs * merge changes * address PR comments * add custom error, fix restore examples * Add yaml output format to mongodbflex backup commands (#319) * add yaml output to mongodbflex commands * update docs * Update internal/cmd/mongodbflex/backup/describe/describe.go Co-authored-by: João Palet <[email protected]> * change error log --------- Co-authored-by: João Palet <[email protected]> * Add yaml output to lb commands (#321) * update docs * add yaml output * fix(deps): update stackit sdk modules (#318) Co-authored-by: Renovate Bot <[email protected]> * Add SKE login command (#157) * Add SKE login command Co-authored-by: Maximilian Geberl <[email protected]> * Different improvement from code review * remove unused function * rearrange functions and improve error messages * Add tests for cache pkg * Extend kubeconfig create command with flag to retrieve login kubeconfig * small extension to the kubeconfig login description * improve descriptions and examples * fix yaml output * codereview: use os.UserCacheDir instead of external lib * codereview: drop parseInput and use parseClusterConfig directly; move cacheKey into clusterConfig * codereview: add one nil check * codereview: print user facing error that explains that the login command should not be used directly * fixup! codereview: use os.UserCacheDir instead of external lib * codereview: first try at improving the description * generate-docs * Add tests for login (buildRequest & parseKubeConfigToExecCredential * cache: call Init func directly and return err * use p.Outputf instead of cmd.Print --------- Co-authored-by: Maximilian Geberl <[email protected]> * Fix outputF call (#322) * Add custom pager handling (#299) * add custom pager handling * ignore linter temporarily * change condition * add debug line * add debug log * add pager infos to README * Update README.md Co-authored-by: João Palet <[email protected]> * edit README.md * edit README.md * Update README.md Co-authored-by: Vicente Pinto <[email protected]> * Update README.md Co-authored-by: Vicente Pinto <[email protected]> --------- Co-authored-by: João Palet <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> * change marshal function to add indentation (#323) * upgrade dependency to fix high vulnerability (#324) * Replace createFolderIfNotExists with MkdirAll --------- Co-authored-by: Diogo Ferrão <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> Co-authored-by: stackit-pipeline <[email protected]> Co-authored-by: Renovate Bot <[email protected]> Co-authored-by: GokceGK <[email protected]> Co-authored-by: Kumm-Kai <[email protected]> Co-authored-by: Maximilian Geberl <[email protected]> * Fix encoded file path for profiles (#333) * Fix file path for the encoded text file * fix unit test * move config/fileutils to new package * Add `stackit profile create` command and refactor `set` command (#351) * new create command, refactor set command * change flag name, improve create behaviour * better error handling, make argument option in set * address PR comments, improve testing for file utils copy file * check for command existance in set and get profile * always check if profile exists in get profile * remove debug print * fix formatting in error * fix profile existence check (#356) * fix issues in acceptance (#357) * fix issues in acceptance * fix storage auth file * add debug logs * support duplication of empty profile * fix auth storage tests * add debug logs, improve documentation * fix GetConfiguredProfile * improve debug logs * improve set profile error message (#362) * Add `stackit config profile list/delete` commands (#359) * better error handling, make argument option in set * address PR comments, improve testing for file utils copy file * check for command existance in set and get profile * initial implementation * get email * list command done * finish list, add delete * force profile names to be lowercase * adapt testing for lowercase profile names * generate docs * add testing to delete * update regex to not allow starting with hyphen * generate docs * add testing for new storage methods * address PR comments * address PR comments * remove unused test logic * delete profile removes keyring entries * address PR comments * add test for keyring failure * Don't allow deleting the default configuration profile (#363) * dont allow deleting default profile * adapt testing * address acceptance issues (#365) --------- Co-authored-by: João Palet <[email protected]> Co-authored-by: Vicente Pinto <[email protected]> Co-authored-by: GokceGK <[email protected]> Co-authored-by: João Palet <[email protected]> Co-authored-by: stackit-pipeline <[email protected]> Co-authored-by: Renovate Bot <[email protected]> Co-authored-by: Kumm-Kai <[email protected]> Co-authored-by: Maximilian Geberl <[email protected]>
This PR adds a new command (
login
) below theske
credentials
command group.This command can only be used together with
kubectl
and a "special" kubeconfig.To test this PR against prod you can adjust an existing kubeconfig so that it looks like this:
Additionally, we will soon add a new endpoint that generates a kubeconfig for use with the login command.
CC: @dergeberl