PipelineOptionsFactory.fromSystemProperties did exist in Dataflow 1.x and was dropped for the reason that Ken mentioned.
On Tue, Feb 13, 2018 at 9:46 AM, Kenneth Knowles <k...@google.com> wrote: > Pipeline options are not global - they are a property of a single job. The > TestPipeline reads them from a very particular system property because it > is a special testing rule. > > If you want a generic way to build pipeline options from a set of system > properties, it should be from an explicit prefix, not global defaults. So > if a user wants to put a bunch of options into properties, they choose a > namespace like "my.random.namespace" and everything under it can be > interpreted as a pipelineoption: > > my.random.namespace.SomeOption=bizzle > my.random.namespace.SomeOtherOption=whatever > > And you could do PipelineOptionsFactory.fromSystemProperties("my. > random.namespace") > > We should use the full name of the option not split it with dots - dots > represent hierarchy not words separation. > > interface FooOptions extends PipelineOptions { > getSomeOption() > getSomeOtherOption() > } > > I think I can be +0.5 on this. We might also reserve a namespace like > "beam.TestPipeline.options" and use it for specification of test config. > Could be easier than embedding JSON in a property, in some cases. Easier to > override little pieces for sure. > > Kenn > > On Tue, Feb 13, 2018 at 9:29 AM, Romain Manni-Bucau <rmannibu...@gmail.com > > wrote: > >> makes sense, do we want beam.foo.bar -> --foo-bar conversion too? >> >> >> Romain Manni-Bucau >> @rmannibucau <https://twitter.com/rmannibucau> | Blog >> <https://rmannibucau.metawerx.net/> | Old Blog >> <http://rmannibucau.wordpress.com> | Github >> <https://github.com/rmannibucau> | LinkedIn >> <https://www.linkedin.com/in/rmannibucau> | Book >> <https://www.packtpub.com/application-development/java-ee-8-high-performance> >> >> 2018-02-13 18:19 GMT+01:00 Eugene Kirpichov <kirpic...@google.com>: >> >>> Neutral about this one: haven't seen a case where this was needed, but >>> don't see anything wrong with it either. One thing I'd recommend if you go >>> through with it, extract from system properties under "beam." rather than >>> all of them, to avoid clashes. >>> >>> On Tue, Feb 13, 2018, 7:53 AM Jean-Baptiste Onofré <j...@nanthrax.net> >>> wrote: >>> >>>> Hi Romain, >>>> >>>> it sounds interesting to me, and doesn't break anything, so +1 from my >>>> side. >>>> >>>> Regards >>>> JB >>>> >>>> On 02/13/2018 03:42 PM, Romain Manni-Bucau wrote: >>>> > Hi guys, >>>> > >>>> > there are hacks in beam testing code to read the args from a system >>>> property but >>>> > I wonder if we shouldnt add a PipelineOptionsFactory.fromSys >>>> temProperties(). >>>> > >>>> > It would iterate over the system properties and take all --xxx=foo as >>>> potential >>>> > argument it tries to bind. >>>> > >>>> > Rational behind that is to enable users to wrap the pipeline API but >>>> still >>>> > expose the pipeline options to end users for advanced cases. >>>> > >>>> > Any discussion on this kind of usages already? What do you think of >>>> this proposal? >>>> > >>>> > Side note: we can think about a fromEnv() too. >>>> > >>>> > Romain Manni-Bucau >>>> > @rmannibucau <https://twitter.com/rmannibucau> | Blog >>>> > <https://rmannibucau.metawerx.net/> | Old Blog >>>> > <http://rmannibucau.wordpress.com> | Github < >>>> https://github.com/rmannibucau> | >>>> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book >>>> > <https://www.packtpub.com/application-development/java-ee-8- >>>> high-performance> >>>> >>>> -- >>>> Jean-Baptiste Onofré >>>> jbono...@apache.org >>>> http://blog.nanthrax.net >>>> Talend - http://www.talend.com >>>> >>> >> >