Tim,

Whichever works best in terms of code-base clarity and stability - it's
hard to debug spaghetti code with lots of overrides so fully agreed on --to.

"existing" sounds good to me. I only have to do it once and it's easy to
remember. Extra 3 characters to type are irrelevant when you type 300
characters per minute.

It's situations like the following that I am trying to avoid:

  rabbitmq-server:
    charm: cs:xenial/rabbitmq-server
    bindings:
      "": *oam-space
      amqp: *internal-space
      cluster: *internal-space
    options:
      source: *openstack-origin
      min-cluster-size: 3
      cluster-partition-handling: pause_minority
    num_units: 3
    to:
    - lxd:0
    - lxd:1
    - lxd:2

serialized by hand to: juju deploy rabbitmq-server --config
../rabbitmq.yaml -n 3 --to lxd:0,lxd:1,lxd:12 --bind "space-oam
amqp=space-oam cluster=space-oam"

cat ../rabbitmq.yaml
rabbitmq-server:
  source: cloud:xenial-ocata
  min-cluster-size: 3
  cluster-partition-handling: pause_minority

Which includes brain-parsing the definition, serializing it to
<appname>.yaml + -n <n> --to <placement> --bind <spaces>

Machine to unit mapping: not that important in my view.

Best Regards,
Dmitrii Shcherbakov

Field Software Engineer
IRC (freenode): Dmitrii-Sh

On Fri, Nov 10, 2017 at 1:49 AM, Tim Penhey <tim.pen...@canonical.com>
wrote:

> No we aren't going to reuse --to.
>
> The --to directive is just for placement directives. Trying to use that
> to overload machine mappings for bundles adds complexity for no real value.
>
> We will use --map-machines. I'm a big proponent of explicit is better
> than implicit.
>
> While I'm not 100% fixed on using the term "existing", I don't think
> either '...' nor ':' make a lot of sense. They are not used elsewhere in
> juju anywhere, and aren't really intuitive.
>
> We also aren't looking to map machine placement directives to other
> bundle placement directive types.
>
> Tim
>
> On 10/11/17 10:39, Dmitrii Shcherbakov wrote:
> > I think it's nice to reuse --to because we don't use it with bundles on
> > juju deploy. A unified --map[-machines] would also be fine to me.
> >
> > <token> := (<bundle-machine-spec> |
> > <bundle-unit-spec>)=(<existing-machine-spec> | <existing-unit-spec>)
> > --to (<token>[,<token>]+[,:] ) | :
> >
> > Remap two, otherwise use existing:
> >
> > --to 1=2,3=5,:
> >
> > The same with app names, but have to error out on lxd:1 or kvm:5 in a
> > bundle if exapp/2 or exapp/5 are themselves in lxd or kvm "containers"
> > (surely nested containers or VMs are possible to do by hand but insane
> > in this case):
> >
> > --to 1=exapp/2,3=exapp/5,:
> >
> > This is kind of complex as there *may* be a conflicting placement
> > directive in a bundle for exappplugin/2 or it may be a subordinate (in
> > which case we ignore the mapping altogether)
> >
> > --to exappplugin/2=exapp/2,3=exappother/5,:
> >
> > FWIW it may be a bundle without machine definitions and placement
> > directives, so, still a valid case.
> >
> > Remap two, otherwise allocate new:
> >
> > --to 1=2,3=5
> >
> > Use existing:
> >
> > --to :
> >
> > Allocate new:
> > <nothing here>
> >
> > Another idea, albeit more complex, is to introduce ranges to that:
> >
> > 3:5=41:43
> >
> > 3:5=41:43,:
> >
> > 3:5=neutron-gateway/0:neutron-gateway/2
> >
> > Also have to be careful about the following (I haven't seen the feature
> > code yet):
> >
> > 1. odd charm or app names during machine spec parsing:
> > https://launchpad.net/charm-6wind-virtual-accelerator
> > <https://launchpad.net/charm-6wind-virtual-accelerator>
> >
> > 2. endpoint -> network space bindings and storage bindings for existing
> > apps in a given model that may be present in a newly deployed bundle.
> >
> > Really appreciate the major changes coming to Juju 2.3 - thanks a lot!
> >
> >
> > Best Regards,
> > Dmitrii Shcherbakov
> >
> > Field Software Engineer
> > IRC (freenode): Dmitrii-Sh
> >
> > On Thu, Nov 9, 2017 at 1:20 PM, roger peppe <roger.pe...@canonical.com
> > <mailto:roger.pe...@canonical.com>> wrote:
> >
> >     I still like the idea of overloading the --to flag rather than having
> >     a new --map-machines flag. It's concise and fits well, I think - we
> >     want the machines in this bundle to mapped *to* the machines we're
> >     specifying here.
> >
> >     I like the thrust of Tim's suggestion for "existing" but I'm not
> >     entirely sure about that word - it's quite long and it doesn't quite
> >     express the identity relationship that I see there. How about "same"?
> >
> >     For example:
> >
> >          juju deploy --to 1=2,2=3,same some-bundle
> >
> >     Another possibility: use ellipses to imply the rest of the mapping:
> >
> >         juju deploy --to 1=2,2=3,... some-bundle
> >         juju deploy --to ... some-bundle
> >
> >
> >
> >     On 9 November 2017 at 02:43, Tim Penhey <tim.pen...@canonical.com
> >     <mailto:tim.pen...@canonical.com>> wrote:
> >     >
> >     >
> >     > On 09/11/17 13:06, Mark Shuttleworth wrote:
> >     >> On 11/07/2017 03:11 PM, John Meinel wrote:
> >     >>> ...
> >     >>>
> >     >>>
> >     >>>     > Perhaps just:
> >     >>>     >
> >     >>>     >   juju deploy --map-machines A=B,C=D
> >     >>>     >
> >     >>>     > ... or some variant of that?
> >     >>>     >
> >     >>>     > Let's use the betas to refine and condense and clarify.
> >     >>>
> >     >>>     +1 to that. I'm wondering if use-existing-machines is ever
> >     appropriate
> >     >>>     on its own, as the machine numbers in a model are ephemeral
> but
> >     >>>     machine numbers in a bundle are static.
> >     >>>
> >     >>>
> >     >>> Feedback from Admins that one of their big use case really is for
> >     >>> bundle-a to lay down a definition/base charm across everything,
> and
> >     >>> bundle-b to be meant as an exact overlay, and all of the
> machine-ids
> >     >>> are exact matches. And having to specify 0=0,...50=50 is a lot
> >     of ugly
> >     >>> boilerplate.
> >     >>
> >     >> I would expect that --map-machines means that machine numbers
> >     correspond
> >     >> UNLESS remapped. So your ugly boilerplate is not needed.
> >     >
> >     > Been thinking more... how about this as a proposal:
> >     >
> >     > I think we can combine both the --use-existing-machines and the
> >     > --bundle-machine into the single --map-machines:
> >     >
> >     > So...
> >     >
> >     > To use the existing machines as is:
> >     >   --map-machines existing
> >     >
> >     > To only map two machines,
> >     >   --map-machines 1=2,2=3
> >     >
> >     > To use existing, and map two machines
> >     >   --map-machines existing,1=2,2=3
> >     >
> >     > Thoughts?
> >     >
> >     > Tim
> >
> >     --
> >     Juju-dev mailing list
> >     Juju-dev@lists.ubuntu.com <mailto:Juju-dev@lists.ubuntu.com>
> >     Modify settings or unsubscribe at:
> >     https://lists.ubuntu.com/mailman/listinfo/juju-dev
> >     <https://lists.ubuntu.com/mailman/listinfo/juju-dev>
> >
> >
>
-- 
Juju-dev mailing list
Juju-dev@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/juju-dev

Reply via email to