Commit Graph

85 Commits

Author SHA1 Message Date
Shashank Sharma 66ddaf63ae
Assigning nodes to knative services (#1924)
* node selector changes

* adding nodeselector and node affinity (only required)

* changing type for toleration and affinity

* handling panic

* handling panic

* handling panic

* handling panic

* handling panic

* adding preferred node affinity support

* adding preferred node affinity support

* adding test cases, accepting multiple whitespace separated values for nodeaffinity

* adding test cases, accepting multiple whitespace separated values for nodeaffinity

* updating docs

* updating docs

Signed-off-by: Shashankft9 <shanky.337marchss@gmail.com>

* adding experimental flags section

* basic setup with experimental features working, removing general subsection in favour of original code

* Revert "basic setup with experimental features working, removing general subsection in favour of original code"

This reverts commit 793718e51065d6c05f044c5d172c52caf79aac0a.

* Revert "adding experimental flags section"

This reverts commit 4f844f23b77f842579e7d3a1a0057b6c95f9e4bb.

* doc nits

* tests added, docs sanitised

Signed-off-by: Shashankft9 <shanky.337marchss@gmail.com>

* adding feature flag message for pvc

Signed-off-by: Shashankft9 <shanky.337marchss@gmail.com>

* fixing lint and code analyzer issues

Signed-off-by: Shashankft9 <shanky.337marchss@gmail.com>

* whitespace fixes and feature flag doc change

* whitespace fixes and feature flag doc change

* whitespace fixes and feature flag doc change

* whitespace fixes and feature flag doc change

---------

Signed-off-by: Shashankft9 <shanky.337marchss@gmail.com>
2024-05-03 12:53:31 +00:00
Anshul Sharma 70805a67db
Add support for Profiles (#1903)
* Added test case for Profiles

* changed config profiles to be a map, added an accessor method for getting a certain configuration profile

* Added test cases for profile check

* added profile feature

* Fix generated files

* Fix go.mod deps

* Added support for labels and added test cases

---------

Co-authored-by: Roland Huß <rhuss@redhat.com>
Co-authored-by: David Simansky <dsimansk@redhat.com>
2023-12-20 13:17:37 +00:00
David Simansky 4621b10ed6
Change default SecurityContext to none (#1832)
* Change default SecurityContext to none

* Fix unit test
2023-07-26 15:16:41 +00:00
David Simansky 75d62a3618
Add default SecurityContext to every new ksvc (#1821)
* Add default SecurityContext to every new ksvc

* Add basic seccon config flag

* Fix export e2e tests

* Fix unit test
2023-07-13 08:01:14 +00:00
Amir Alavi 0382c171d7
cli options to enable user, uid, and group impersonation (#1745)
* cli options to enable kubernetes user and group impersonation

Signed-off-by: Amir Alavi <amiralavi7@gmail.com>

* cli option to enable uid impersonation

Signed-off-by: Amir Alavi <amiralavi7@gmail.com>
2022-10-13 13:11:53 +00:00
Gunjan Vyas 84cba981c1
Added config support to specify read only volumes (#1732)
* Added config support to specify read only volumes

* modified unit tests for read only customization

* fix e2e test
2022-10-05 12:01:29 +00:00
Gunjan Vyas 6376f9a607
Add --scale-activation flag to match new Serving option (#1729)
* Add --scale-activation flag to match new Serving option

* Add scale activation tests

* Docs gen

* moved the scale activation test to service_options_test.go
2022-09-05 09:00:22 +00:00
David Simansky 9abb876c76
Add --probe-liveness and --probe-readiness flags (#1697)
* Add --probe-liveness and --probe-readiness flags

* Add more unit test

* Add even more unit tests

* Fix spelling

* Add error coverage

* Update pkg/kn/flags/podspec.go

Co-authored-by: Gunjan Vyas <vyasgun20@gmail.com>

* Regen docs

* Fix error message

* Split probe opts into standalone flag

* Fix docs

Co-authored-by: Gunjan Vyas <vyasgun20@gmail.com>
2022-07-12 17:27:13 +00:00
Gunjan Vyas c23a1f7dbe
Added PVC support to volume mounts (#1693)
* Added  PVC support to volume mounts

* Added unit tests for pvc volume type

* Added e2e tests
2022-07-01 09:54:42 +00:00
Gunjan Vyas b6965469fe
Added support for mounting EmptyDir volume type (#1679)
* Added emptyDir support for volume mount

* Moved detailed emptyDir configuration spec to --volume

* Added unit tests

* Added readonly false for emptyDir volume
2022-06-24 12:22:25 +00:00
Gunjan Vyas b858dab2b4
Added subpath functionality to --mount flag (#1655)
* Added subpath functionality to --mount flag

* Added mount subpath test

* Added e2e tests for volume subpath mount

* Updated changelog
2022-04-18 14:12:13 +00:00
Gunjan Vyas bb055ee1a4
Added scale-metric flag to configure metric name (#1653)
* Added scale-metric flag to configure metric name

* Updated flag description

* code gen fix

* Added test for coverage

* Updated Changelog
2022-04-18 09:15:12 +00:00
Gunjan Vyas 2929f381a9
Added flag to configure wait-window between intermediate errors durin… (#1645)
* Added flag to configure wait-window between intermediate errors during service create

* Added waitconfig struct

* Moved --wait-window flag to shared flags
2022-04-13 17:17:09 +00:00
Gunjan Vyas 0ac405d4b5
Add timeout option to service create (#1643)
* Add timeout option to service create

* Changed unit tests to reflect the default timeout value

* Fixed timeout help message

* Added unit test for --timeout flag

* Moved --timeout flag to shared flags
2022-04-13 16:14:09 +00:00
Gunjan Vyas bb7fd73821
Added pull-policy flag to service (#1644)
* Added pull-policy flag to service

* Added unit tests

* Added test to increase coverage

* Added unit test and made --pull-policy case insensitive

* Added config_changes test cases to increase coverage

* Improve help message for pull-policy flag

* Move image pull policy processing to podspec.go

* Add negative test case for pull policy
2022-04-13 08:15:08 +00:00
Gunjan Vyas 8fd19e6bea
Add --tag flag to service create and allow traffic split <100 when @latest is specified (#1514)
* Add --tag flag to service create

* added comments

* Added tests

* handled @latest tag in traffic split

* added unit tests

* added e2e tests

* added comments

* simplified code

* add e2e tests for error cases

* Add handling for non latest revisions with mutation bool
2021-11-29 05:31:04 -08:00
Boaz Shuster 0e89cfccbe
Fix env, annotation and labels flags in service create/update/apply (#1516)
Signed-off-by: Boaz Shuster <boaz.shuster.github@gmail.com>
2021-11-25 00:32:16 -08:00
Murugappan Chetty 8e3a09cf7f
update status of commands (#1508)
* update status of commands

* update status of commands

* update status of commands

* update status of commands

* update status of commands

* update status of commands

* update status of commands
2021-11-09 01:51:43 -08:00
Roland Huß e7e5372594
Mark deprecated options as 'hidden' (#1500)
so that they do not appear in the help messages
2021-11-01 08:00:23 -07:00
Roland Huß db3bcbc6b0
Rename `--extra-containers` to `--containers` (#1499)
and make `--extra-containers deprecated`
2021-11-01 04:39:22 -07:00
Roland Huß 33666193cf
Rename --concurrency-target and --concurrency-utilization (#1490)
* Rename --concurrency-target and --concurrency-utilization

The new option names are --scale-target and --scale-limit, respectively

Both options are still available but deprecated. Reasoning is that both
options really belong to the 'scale' option group as they influencen
the scaling behaviour.

* rebased and added changelog
2021-10-27 02:40:01 -07:00
Roland Huß 03045c8195
Move `--autoscale-window` to `--scale-window` (#1489)
* Move `--autoscale-window` to `--scale-window`

and deprecate `--autoscale-window`

* regenerate docs

* fix issue that --scale-window was not picked up

* add some test

* add some additional test
2021-10-26 02:12:20 -07:00
Boaz Shuster 539a5a97a6
Add option to allow enviornment variables using file (#1433)
* Add `GetEnvsFromFile` to `util`
* Add to `podspec` flags `--env-file` and `EnvFile` to `PodSpec`.
* If `env-file` is specified load env vars from file to memory,
  convert them into ordered map and pass them to UpdateEnvVars function
  by setting custom args for each one of them instead of using command line args.

Signed-off-by: Boaz <boaz.shuster.github@gmail.com>
2021-09-21 11:41:38 -07:00
David Simansky fc7e87667f
Add support for multi-containers (#1382)
* Add support for multi-containers

* Update examples

* Fix UpdateContainers to match by name

* Add experimental note & tests

* Rename flag to --extra-containers

* Fix formatting

* Fix flag renaming leftovers

* Update pkg/kn/flags/podspec_test.go

Co-authored-by: Roland Huß <rhuss@redhat.com>

Co-authored-by: Roland Huß <rhuss@redhat.com>
2021-08-09 12:25:12 -07:00
Murugappan Chetty 0c3e236006
make command as array instead of string (#1380)
* make command as array instead of string

* make command as array instead of string

* make command as array instead of string

* make command as array instead of string

* make command as array instead of string

* make command as array instead of string
2021-07-13 13:32:31 -07:00
Zbynek Roubalik a086cc9707
Add `env-value-from` flag & keep order of env vars in created/updated services (#1328)
* Add --env-value-from & preserve env var order

Signed-off-by: Zbynek Roubalik <zroubali@redhat.com>

* add e2e test for checking Service Env Vars

Signed-off-by: Zbynek Roubalik <zroubali@redhat.com>

* update changelog

Signed-off-by: Zbynek Roubalik <zroubali@redhat.com>

* refactor UpdateEnvVars()

Signed-off-by: Zbynek Roubalik <zroubali@redhat.com>

* apply review suggestions

Signed-off-by: Zbynek Roubalik <zroubali@redhat.com>

* fix typo

Signed-off-by: Zbynek Roubalik <zroubali@redhat.com>

* improve test cases names

Signed-off-by: Zbynek Roubalik <zroubali@redhat.com>
2021-06-29 01:48:13 -07:00
Roland Huß 5f68d61295
update: Change default to server-side generated revision names (extended) (#1240)
* update: Change default to server-side generated revision names

Fixes #1144

* update: Fix wait loop for synthetic events for which the generations are already in sync

* fix assertion as a service label change does not create a new revision

* fix: --cluster-local does not create a new revision but just changes a service's label

* chore: Fixed formatting

* update: Check generation in update already before doing a watch

* fixed lint issue

* fix test assertions
2021-02-23 23:16:46 -08:00
David Simansky 671ee229f3
feat: Add `--context` flag to choose specific context from kubeconfig (#1234)
* feat: Add  flag to choose specific context from kubeconfig

* chore: Generate docs

* chore: Add changelog entry

* fix: Review feedback

Co-authored-by: Roland Huß <rhuss@redhat.com>

* chore: Add --cluster flag to specify cluster from kubeconfig

* chore: Generate docs

* chore: Update changelog

Co-authored-by: Roland Huß <rhuss@redhat.com>
2021-02-23 00:54:46 -08:00
Markus Thömmes d647e44938
Upgrade a few assorted dependencies (#1220)
* Update spf13 deps

* Upgrade gotest.tools and correctly use versioned module

* Regenerate docs
2021-02-12 05:55:50 -08:00
David Simansky 7eb7ac3acd
chore: Add gitops feature to changelog (#1190) 2021-01-14 06:31:19 -08:00
Murugappan Chetty f5ac4413d0
add git ops options (#1122)
* add git ops options

* add git ops options

* add unit tests

* add unit tests

* add unit tests

* add unit test

* add unit test

* add unit test

* review comments

* review comments

* add single file mode

* add single file mode

* add single file mode

* add single file mode

* review comments
2021-01-14 04:46:31 -08:00
Mike Petersen ed4fa06e2e
adds --scale range option (#1114)
* adds --scale range option

* added scale range tests with negative values
2020-11-24 11:51:43 -08:00
David Simansky 8d3580a4b3
chore: Remove deprecated requests/limits flags (#1110)
* chore: Remove deprecated requests/limits flags

* chore: Add changelog entry
2020-11-11 05:52:59 -08:00
Navid Shaikh 45ffadecec
Drop deprecated --async flag support (#1094)
in the favor of --no-wait flag
2020-11-09 01:49:17 -08:00
Josh Soref 4939c5ede3
Fix various misspellings and linter items (#1057)
* spelling: additional

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: bindings

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: blocked

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: bootstrap

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: channel

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: channel

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: commands

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: comparison

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: configuration

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: controller

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: convert

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: desired

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: dynamic

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: entry

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: execute

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: explicit

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: hardcoded

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: information

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: inject

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: item

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: kubectl

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: latest

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: message

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: namespace

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: namespaces

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: output

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: overriding

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: parameters

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: revision

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: separated

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: separator

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: service

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: specified

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: specifies

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: splitting

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: subscription

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: trigger

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unknown

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: unstructured

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* spelling: workflow

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* chore: Address golinter complaint for (c *MockKnServingClient) GetBaseRevision

Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>

* chore: update changelog for spelling fixes (#1057)
2020-10-12 21:24:30 -07:00
Daniel Helfand 9931c2d07a
add aliases to help command and remove aliases in short (#1055) 2020-10-09 00:09:21 -07:00
Arghya Sadhu 5025137f5a
add alias to commands (#1041) 2020-10-06 03:57:21 -07:00
Arghya Sadhu e8ae0e1537
adding annotation-service and annotation-revision to kn create/update (#1029) 2020-09-30 07:48:29 -07:00
Himanshu Ranjan 6c7fc7ca70
Add changes for --scale-init support (#990)
* Add changes for --scale-init support

* Added test cases

* Add test case in e2e tests

* minor fix

* Test case failure fix

* Incorporated review comments

* Add service update test cases

* Incorporate review comments
2020-09-15 02:51:41 -07:00
Mike Petersen 4a3cf24550
Deprecates --max-scale/--min-scale for more consistent naming (#958)
* Depreciates --max-scale/--min-scale for more consistent naming

* Added back old flags and marked hidden
2020-08-03 16:58:27 -07:00
David Simansky 879e5bd356
feat: Add support to combine service create --filename with other options (#937)
* feat: Add support to combine service create --filename with other options

* fix: Fix spelling in usage message

* fix: Fix usage message

* fix: Add test to cover errors

* fix: Usage message wording

Co-authored-by: Roland Huß <rhuss@redhat.com>

* fix: Update codegen

* chore: Add changelog entry

* fix: Fix changelog formatting

Co-authored-by: Roland Huß <rhuss@redhat.com>
2020-07-21 06:05:35 -07:00
Mike Petersen e1c48e6f7a
Added the option to use --scale for setting MinScale and MaxScale to the same value (#914)
* Added the option to use --scale for setting MinScale and MaxScale to the
same value

* Updated service create/update to resolve test issues

* Removed scale from the annotation section - there isn't a scale
annotation

* Renamed test service name so that it doesn't match a previous test

* Addressed most issues/changes

* Added tests for multiple flags being used at the same time

* Cleaned up the update tests

* Added negative value tests and cleaned up tests in create_test.go
2020-07-11 02:33:37 -07:00
David Simansky 41e49b98c5
feat: Add --filename flag to service create command (#913)
* feat: Add --file flag to service create cmd

* fix: Fix linter warnings

* fix: Remove unecessary changes

* fix: Reflect review feedback

* fix: Change flag --file to -f,--filename

* fix: Reflect review feedback

* fix: Move test cleanup to correct place

* fix: Refactor name param restrictions

* fix: Fix flag name string in func
2020-07-11 02:03:37 -07:00
Murugappan Chetty b04d115db9
add port name (#915)
* add port name

* add port name

* review comments

* review comments

* add unit tests for port changes

* review comments for port spec changes
2020-07-10 07:53:18 -07:00
Roland Huß b916a5b3ed
Add grouping for help message + streamlined help messages (#887)
* Add grouping for help message + streamlined help messages

The top-level looks like

kn is the command line interface for managing Knative Serving and Eventing objects

 Find more information about Knative at: https://knative.dev

Serving Commands:
  service     Manage Knative services
  revision    Manage service revisions
  route       List and show service routes

Eventing Commands:
  source      Manage event sources
  trigger     Manage event triggers

Other Commands:
  plugin      Manage kn plugins
  completion  Output shell completion code
  version     Show the version of this client

Use "kn <command> --help" for more information about a given command.
Use "kn options" for a list of global command-line options (applies to all commands).

The following changes have been applied:

* Add CommandGroups for grouping commands together
* Add flexible templating for the help messages
* Moved global options to an own command ('kn options', much like 'kubectl options')
* Aligned wording and typography of help messages

These features has been highly inspired by kubectl grouping & help templating but has been considerably been stripped down to the needs of kn.

Signed-off-by: Roland Huß <roland@ro14nd.de>

* chore: Add missing file

* Update pkg/templates/command_groups.go

Co-authored-by: Matt Moore <mattmoor@vmware.com>

* chore: Add some test for error messages

* fix formatting

* chore: Add test

* moar tests

* Update pkg/kn/commands/completion/completion.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update pkg/kn/commands/source/apiserver/delete.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update pkg/kn/commands/service/list.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update pkg/kn/commands/route/route.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update pkg/kn/commands/revision/delete.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update pkg/kn/commands/plugin/plugin.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update pkg/kn/commands/service/delete.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update pkg/kn/commands/revision/delete.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update pkg/kn/commands/service/delete.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* regen docs

* chore: Update conventions doc

* Move some direct configuration of rootcmd to NewRootCommand()

* Moved CaptureOutput to "test" package for reuse

Co-authored-by: Matt Moore <mattmoor@vmware.com>
Co-authored-by: Navid Shaikh <nshaikh@redhat.com>
2020-06-18 00:06:25 -07:00
Roland Huß c7426459be
Refactor main flow and introduce explicit plugin and config handling (#877)
* Refactor main flow, plugin and configuration handling

* The plugin handling has been moved out of the `KnDefaultCommand` constructor where it was executed as a side-effect. The original code from `kubectl` suffers from the same issue that plugin handling is not a top-level concern but was very likely introduced as an after-thought. Instead, the plugin handling is done now by a `PluginManager` which is explicitly called in `main()`.
* Configuration and bootstrap option handling is centralized in the package `option`. After the bootstrap happened, the content of the configuration file, as well as any other global configuration, can be obtained from methods on  `config.GlobalConfig`. Also, all flag handling is delegated to cobra so that no own parsing is needed.
* Many of the logic in `pkg/kn/commands/plugin` for plugin management has been moved up to `pkg/kn/plugin` as this code is not only relevant for `plugin list` but also for the bootstrap process.

* fix: invalid subcommands will lead to a proper error message

* Update pkg/kn/config/types.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update pkg/kn/plugin/manager.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update hack/generate-docs.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* Update hack/generate-docs.go

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>

* chore: Add missing links

* chore: recert to shas in links in developer guide for now.

Co-authored-by: Navid Shaikh <nshaikh@redhat.com>
2020-06-15 09:15:24 -07:00
Navid Shaikh c1ab4ae863
Update flag names to --request and --limit (#872)
* Update flag names to --request and --limit

 - Use singular flag names and support comma separated or repeated flag values
 - Update tests and docs

* Update CHANGELOG

* Update the flag description and examples

* Remove release 0.15.0 header from CHANGELOG
2020-06-03 04:04:18 -07:00
Navid Shaikh cdf6f29880
Add --requests and --limits resource flags (#859)
* Add --requests and --limits resource flags

  Fixes #490

  - Add deprecation message for --requests-cpu, --requests-memory,
  --limits-cpu and --limits-memory flag usage.

  - Add error message if new and deprecated, requests and limits flags
    are used together.

* Add resources requests and limits example for service create

* Add mock style unit tests

* Update existing unit tests for deprecated flags

* Add integration tests

* Add CHANGELOG entry

* Fix lint warnings

* Add unit tests for resource flags

* Fix typo for service name in e2e tests

* Refactor resource validation utility into test lib

* Remove commented out code

* Add references about managing resources and GPU in example

* Update image references in examples
2020-05-28 01:45:59 -07:00
Navid Shaikh 8c4a28e466
docs: Update kn service create examples with real image (#862)
Fixes #673
 - uses image: `knativesamples/helloworld`
2020-05-27 17:21:59 -07:00
Navid Shaikh 46ecdcc32f
Make wait, no-wait and async flags per bool var CLI convention (#802)
* Make wait, no-wait and async flags per bool var CLI convention

 Fixes #800

 - Deprecated bool vars can be supported for CLI convention
 - Bind --async flag value to --no-wait
 - Only one flag among [wait, no-wait, async] can be provided, else raise an error

* Simplify conditionals

* Add unit tests for deprecated flag async

* Fix a typo
2020-04-14 12:36:16 -07:00