Skip to content
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 exec subcommand to CLI #17797

Merged
merged 42 commits into from
Aug 1, 2023
Merged

Conversation

twalluxio
Copy link
Contributor

Add exec commands to golang CLI as part of #17522

bin/alluxio runClass -> bin/cli exec class
bin/alluxio runTests -> bin/cli exec testRun
bin/alluxio runUfsTests -> bin/cli exec testUfs
bin/alluxio runUfsIOTest -> bin/cli exec testUfsIO
bin/alluxio runHdfsMountTests -> bin/cli exec testHdfsMount
bin/alluxio runHmsTests -> bin/cli exec testHms
bin/alluxio runJournalCrashTest -> bin/cli exec testJournalCrash

For command exec test, using different --name flags can lead to huge difference in other flags and options.
To manage flags and options, currently using different commands for different test types.

@alluxio-bot
Copy link
Contributor

Thank you for your pull request.
In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement (CLA).
It's all electronic and will take just a few minutes. Please download CLA form here, sign, and e-mail back to cla@alluxio.org

@Kai-Zhang Kai-Zhang requested a review from Xenorith July 18, 2023 08:39
cli/src/alluxio.org/cli/cmd/exec/class.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/class.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/class.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/class.go Show resolved Hide resolved
@Xenorith
Copy link
Contributor

For command exec test, using different --name flags can lead to huge difference in other flags and options.
To manage flags and options, currently using different commands for different test types.

agree with this

cli/src/alluxio.org/cli/cmd/exec/class.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/class.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hdfs_mount.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
Co-authored-by: Rico Chiu <Xenorith@users.noreply.github.com>
cli/src/alluxio.org/cli/cmd/exec/test_run.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/class.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/class.go Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_journal_crash.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_ufs.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_ufsio.go Outdated Show resolved Hide resolved
@Kai-Zhang Kai-Zhang added the type-devops Build, deploy, and maintain devops questions label Jul 25, 2023
Copy link
Contributor

@Xenorith Xenorith left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay, left suggestions for the command names to be more like xxxTest

but note that the file names should remain the same. if you change the file name to xxx_test.go, go will treat it as a test file

cli/src/alluxio.org/cli/cmd/exec/test_hdfs_mount.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_journal_crash.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_ufs.go Outdated Show resolved Hide resolved
Co-authored-by: Kai <cs.zhangkai@outlook.com>
cli/src/alluxio.org/cli/cmd/exec/class.go Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hdfs_mount.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_journal_crash.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_journal_crash.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_ufs.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_ufs.go Outdated Show resolved Hide resolved
Copy link
Contributor

@Xenorith Xenorith left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

more cleanups, can assume i approve after making these changes

also add reminder about checking user inputs. i want to share @jenoudet 's comment about using the validator library as a convenient way to define valid input values: #17570 (comment)
this is also another area to help improve this code

cli/src/alluxio.org/cli/cmd/exec/test_hdfs_mount.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hdfs_mount.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_hms.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_ufs.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_journal_crash.go Outdated Show resolved Hide resolved
cli/src/alluxio.org/cli/cmd/exec/test_journal_crash.go Outdated Show resolved Hide resolved
if c.testDir != "" {
javaArgs = append(javaArgs, "-testDir", c.testDir)
}
javaArgs = append(javaArgs, "-totalTime", strconv.Itoa(c.totalTime))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

set with group of other flags above since the order of flags doesn't matter

twalluxio and others added 10 commits July 27, 2023 16:56
Co-authored-by: Rico Chiu <Xenorith@users.noreply.github.com>
Co-authored-by: Rico Chiu <Xenorith@users.noreply.github.com>
Co-authored-by: Rico Chiu <Xenorith@users.noreply.github.com>
Co-authored-by: Rico Chiu <Xenorith@users.noreply.github.com>
Co-authored-by: Rico Chiu <Xenorith@users.noreply.github.com>
@Kai-Zhang
Copy link
Contributor

alluxio-bot, merge this please

@alluxio-bot alluxio-bot merged commit 48dd042 into Alluxio:golangCli Aug 1, 2023
17 checks passed
@twalluxio twalluxio deleted the golangCli-exec branch August 1, 2023 08:59
Xenorith pushed a commit that referenced this pull request Aug 3, 2023
Add exec commands to golang CLI as part of #17522 

`bin/alluxio runClass` -> `bin/cli exec class`
`bin/alluxio runTests` -> `bin/cli exec testRun`
`bin/alluxio runUfsTests` -> `bin/cli exec testUfs`
`bin/alluxio runUfsIOTest` -> `bin/cli exec testUfsIO`
`bin/alluxio runHdfsMountTests` -> `bin/cli exec testHdfsMount`
`bin/alluxio runHmsTests` -> `bin/cli exec testHms`
`bin/alluxio runJournalCrashTest` -> `bin/cli exec testJournalCrash`

For command `exec test`, using different `--name` flags can lead to huge difference in other flags and options.
To manage flags and options, currently using different commands for different test types.
			pr-link: #17797
			change-id: cid-eccbfaa37239ec8d567bcd89393df93ea60288f2
Xenorith pushed a commit that referenced this pull request Aug 11, 2023
Add exec commands to golang CLI as part of #17522 

`bin/alluxio runClass` -> `bin/cli exec class`
`bin/alluxio runTests` -> `bin/cli exec testRun`
`bin/alluxio runUfsTests` -> `bin/cli exec testUfs`
`bin/alluxio runUfsIOTest` -> `bin/cli exec testUfsIO`
`bin/alluxio runHdfsMountTests` -> `bin/cli exec testHdfsMount`
`bin/alluxio runHmsTests` -> `bin/cli exec testHms`
`bin/alluxio runJournalCrashTest` -> `bin/cli exec testJournalCrash`

For command `exec test`, using different `--name` flags can lead to huge difference in other flags and options.
To manage flags and options, currently using different commands for different test types.
			pr-link: #17797
			change-id: cid-eccbfaa37239ec8d567bcd89393df93ea60288f2
twalluxio added a commit to twalluxio/alluxio that referenced this pull request Aug 14, 2023
Add exec commands to golang CLI as part of Alluxio#17522 

`bin/alluxio runClass` -> `bin/cli exec class`
`bin/alluxio runTests` -> `bin/cli exec testRun`
`bin/alluxio runUfsTests` -> `bin/cli exec testUfs`
`bin/alluxio runUfsIOTest` -> `bin/cli exec testUfsIO`
`bin/alluxio runHdfsMountTests` -> `bin/cli exec testHdfsMount`
`bin/alluxio runHmsTests` -> `bin/cli exec testHms`
`bin/alluxio runJournalCrashTest` -> `bin/cli exec testJournalCrash`

For command `exec test`, using different `--name` flags can lead to huge difference in other flags and options.
To manage flags and options, currently using different commands for different test types.
			pr-link: Alluxio#17797
			change-id: cid-eccbfaa37239ec8d567bcd89393df93ea60288f2
Xenorith added a commit that referenced this pull request Aug 15, 2023
- Add cli/ folder containing golang code
- Add script to compile code to executable in build/cli/build-cli.sh
- Add entrypoint script for development in bin/cli.sh
- Add build profile to build the CLI as part of tha maven build via `-PgoCli`
- Add `conf` service, consisting of
  - `bin/cli.sh conf get` as an example command, equivalent to `bin/alluxio getConf`
  - `bin/cli.sh conf log --name fully.qualified.class.path`, equivalent to `bin/alluxio fsadmin logLevel --logName fully.qualified.class.path`

See #17522 for more background info

			pr-link: #17532

dev docs for defining conventions for the new alluxio cli in golang

			pr-link: #17530

- Add commands to start/stop individual processes, ex. `bin/cli.sh process start master`
- Define process interface and registry
  - process specific java opts are defined with the process and are dynamically added to env
- Add journal format command as part of starting master process
- Mount options for worker are not ported because they will be deprecated in the near future

			pr-link: #17561

Adds `info` subcommand, which contains:
- `cache`: worker capacity information, calls the existing `bin/alluxio fsadmin report capacity` command
- `collect`: collects cluster information into a single tarball, calls the existing `bin/alluxio collectInfo` command
- `master`: master quorum information, calls the existing `bin/alluxio fs masterInfo` command
- `report`: cluster information, calls the existing `bin/alluxio fsadmin report` command, excluding the `capacity` category

			pr-link: #17566

Add journal commands to CLI as part of #17522
			pr-link: #17569

Add quorum/HA related commands as part of #17522
			pr-link: #17570

Add fs commands to golang CLI as part of #17522

unlike other CLI commands, utilize arguments to maintain the existing structure of filesystem commands (ex. cp, du, ls, mv, rm, etc)

			pr-link: #17580

Add generate commands to golang CLI as part of #17522

bin/alluxio docGen -> bin/cli generate docs
bin/alluxio bootstrapConf -> bin/cli generate template

to read ALLUXIO_CONF_DIR, also conducted a minor change on env variables.

			pr-link: #17790

Add exec commands to golang CLI as part of #17522

`bin/alluxio runClass` -> `bin/cli exec class`
`bin/alluxio runTests` -> `bin/cli exec testRun`
`bin/alluxio runUfsTests` -> `bin/cli exec testUfs`
`bin/alluxio runUfsIOTest` -> `bin/cli exec testUfsIO`
`bin/alluxio runHdfsMountTests` -> `bin/cli exec testHdfsMount`
`bin/alluxio runHmsTests` -> `bin/cli exec testHms`
`bin/alluxio runJournalCrashTest` -> `bin/cli exec testJournalCrash`

For command `exec test`, using different `--name` flags can lead to huge difference in other flags and options.
To manage flags and options, currently using different commands for different test types.
			pr-link: #17797

Prepare golang cli for tarball build and replace bin/alluxio

allow java 8 or 11

add cli binaries to other tarball profiles

Add `process` commands with multiple nodes to golang CLI as part of #17522

`bin/alluxio-start.sh masters` -> `bin/cli.sh process start masters`
`bin/alluxio-start.sh job_masters` -> `bin/cli.sh process start job_masters`
`bin/alluxio-start.sh workers` -> `bin/cli.sh process start workers`
`bin/alluxio-start.sh job_workers` -> `bin/cli.sh process start job_workers`
`bin/alluxio-start.sh proxies` -> `bin/cli.sh process start proxies`
`bin/alluxio-start.sh all` -> `bin/cli.sh process start all`
`bin/alluxio-start.sh local` -> `bin/cli.sh process start local`

`bin/alluxio-stop.sh masters` -> `bin/cli.sh process stop masters`
`bin/alluxio-stop.sh job_masters` -> `bin/cli.sh process stop job_masters`
`bin/alluxio-stop.sh workers` -> `bin/cli.sh process stop workers`
`bin/alluxio-stop.sh job_workers` -> `bin/cli.sh process stop job_workers`
`bin/alluxio-stop.sh proxies` -> `bin/cli.sh process stop proxies`
`bin/alluxio-stop.sh all` -> `bin/cli.sh process stop all`
`bin/alluxio-stop.sh local` -> `bin/cli.sh process stop local`

For command `process start/stop` on multiple nodes, using crypto's `ssh` package to create an SSH session, connect to masters, workers or all nodes, then send according subcommand on single nodes to these nodes.
			pr-link: #17887

Add job commands to golang CLI as part of #17522

`bin/alluxio-bash job cancel id` -> `bin/alluxio job cancel --id`
`bin/alluxio-bash job leader` -> `bin/alluxio job leader`
`bin/alluxio-bash job ls` -> `bin/alluxio job list`
`bin/alluxio-bash job getCmdStatus jobControlId` -> `bin/alluxio job cmdStatus --id`
`bin/alluxio-bash job stat [-v] id` -> `bin/alluxio job jobStatus [-v] --id`
`bin/alluxio-bash fs distributedCp src dst` -> `bin/alluxio job submit --type cp --src --dst`
`bin/alluxio-bash fs distributedMv src dst` -> `bin/alluxio job submit --type mv --src --dst`
`bin/alluxio-bash fs load path --submit` -> `bin/alluxio job load --path`

			pr-link: #17931

Clean up multiprocess code

- refactor commands launching the same process on multiple hosts into a single struct
- simplify the logic to ssh into different hosts with more straightforward handling of error channel
- move names.go under its own package to avoid import cycles
			pr-link: #17947

Add an `info version` subcommand to golang CLI as part of #17522

`bin/alluxio-bash version` -> `bin/alluxio info version`
			pr-link: #17943

update calls to old bash scripts to refer to alluxio-bash

Add `cache` commands to golang CLI as part of #17522
`bin/alluxio-bash formatWorker` -> `bin/cli cache format`
`bin/alluxio-bash fs freeWorker` -> `bin/cli cache free --worker`
`bin/alluxio-bash fs free` -> `bin/cli cache free [-f] --path`
`bin/alluxio-bash fs persist` -> `bin/cli cache persist --path`
`bin/alluxio-bash fs setTtl` -> `bin/cli cache ttl --set --duration --action`
`bin/alluxio-bash fs unsetTtl` -> `bin/cli cache ttl --unset`
			pr-link: #17937

backcompat support for start/stop scripts

skip mount args in start script backcompat

remove unsupported cmds
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type-devops Build, deploy, and maintain devops questions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants