Quoting Robie Basak (<email address hidden>):
> Public bug reported:
>
> A script cannot call lxc-start-ephemeral and get a named container in a
> reliable, race-free way.
>
> Having the caller specify a name directly is racy, since the name could
> have been taken in between checking that it doesn't exist already and
> calling lxc-start-ephemeral.
Practically speaking, have you actually created the container name with
mktemp (i.e. mktemp -u -t lxc-XXXXXX | sed 's@/tmp/@@') and gotten name
clashes?
> Allowing lxc-start-ephemeral allows it to take care of the mkdir (and
> retries) to generate an LXC container name in a race free manner, but
> this needs -d to return the name in a machine-readable way, so that we
> can create ephemeral LXC containers from scripts.
>
> Please add a machine-readable mechanism to "lxc-start-ephemeral -d" and
> then we can modify adt-virt-lxc to use it.
That does sound like a good idea - we could add a '--terse' suboption to
-d to only print '$name $ip'
Quoting Robie Basak (<email address hidden>): ephemeral.
> Public bug reported:
>
> A script cannot call lxc-start-ephemeral and get a named container in a
> reliable, race-free way.
>
> Having the caller specify a name directly is racy, since the name could
> have been taken in between checking that it doesn't exist already and
> calling lxc-start-
Practically speaking, have you actually created the container name with
mktemp (i.e. mktemp -u -t lxc-XXXXXX | sed 's@/tmp/@@') and gotten name
clashes?
> Allowing lxc-start-ephemeral allows it to take care of the mkdir (and ephemeral -d" and
> retries) to generate an LXC container name in a race free manner, but
> this needs -d to return the name in a machine-readable way, so that we
> can create ephemeral LXC containers from scripts.
>
> Please add a machine-readable mechanism to "lxc-start-
> then we can modify adt-virt-lxc to use it.
That does sound like a good idea - we could add a '--terse' suboption to
-d to only print '$name $ip'