Pipeline options defines a no_auth flag that is type=bool. This type is known to be ambiguous because it will expect a value, but anything passed to it will be considered True. For example, passing in "--no_auth=False" would still evaluate to True. We should instead use action="store_true" which only detects whether the flag is passed or not.
Furthermore, PipelineOptions.from_dictionary will assume that boolean flags are passed in without values (e.g. passing --no_auth, instead of --no_auth=True). This, combined with type=bool failing without a value, will ensure that it always fails.
sdk_worker_main is the only place that uses from_dictionary (aside from tests), and it will crash if no_auth flag is passed. Looking at pipeline_options_test, tests that call from_dictionary will feed in get_all_options, which means it have intended to only be used for serializing/deserializing flag options.
So from here, to support the no_auth flag:
- we change no_auth so that it is action="store_true", or
- we change sdk_worker_main so that it does not use from_dictionary