Re: [systemd-devel] [PATCH 1/3] zsh-completion: add missing completions for machinectl

2015-04-27 Thread Lukas Rusak
I feel like this is already accomplished. The completion function
_sd_machines already lists the running containers.

Otherwise currently _available_machines is only used for machinectl
start.
see,
  list*|cancel-transfer|pull-tar|pull-raw|pull-dkr)
msg=no options ;;
  start)
_available_machines ;;
  *)
_sd_machines

All other functions (other than list-images, list-transfers, list,
cancel-transfer, pull-tar, pull-raw, and pull-dkr) use the already
implemented _sd_machines function to list currently running machines.

So, if you would like I can change _available_machines to _available_images
and __get_available_machines to __get_available_images if this makes
more sense.

On Thu, Apr 23, 2015 at 7:53 AM, Lennart Poettering lenn...@poettering.net
wrote:

 On Wed, 22.04.15 15:52, Lukas Rusak (loru...@gmail.com) wrote:

  Appologies, I'm still getting used to this mailing list thing and using
 git send-email
 
  ---
   shell-completion/zsh/_machinectl | 84
 +---
   1 file changed, 70 insertions(+), 14 deletions(-)
 
  diff --git a/shell-completion/zsh/_machinectl
 b/shell-completion/zsh/_machinectl
  index c666b7e..a81c5c7 100644
  --- a/shell-completion/zsh/_machinectl
  +++ b/shell-completion/zsh/_machinectl
  @@ -1,5 +1,20 @@
   #compdef machinectl
 
  +__get_available_machines () {
  +machinectl --no-legend list-images | awk '{print $1}' |  {while
 read -r a b; do echo $a; done;}
  +}
  +
  +_available_machines() {
  +local -a _machines
  +_machines=(${(fo)$(__get_available_machines)})
  +typeset -U _machines
  +if [[ -n $_machines ]]; then
  +_describe 'machines' _machines
  +else
  + _message 'no machines'
  +fi
  +}

 For this to be fully correct, you need to distuingish images and
 machines.

 Basically, machines are runtime objects, instances of containers
 currently running. images are files or directories on disk. You can
 run multiple machines off the same image (by use --read-only or
 --ephemeral).

 Other container/VM managers like libvirt-lxc also register their
 running containers with machined as machines, even though the backing
 images of those machines might not be visible to machined.

 Usually you run a machine from an image that carries the same name as
 the image, but that's not a requirement really.

 Some of machinectl's commands operate on images, others on running
 containers...

 Lennart

 --
 Lennart Poettering, Red Hat

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


[systemd-devel] [PATCH 1/3] zsh-completion: add missing completions for machinectl

2015-04-22 Thread Lukas Rusak
---
 shell-completion/zsh/_machinectl | 84 +---
 1 file changed, 70 insertions(+), 14 deletions(-)

diff --git a/shell-completion/zsh/_machinectl b/shell-completion/zsh/_machinectl
index c666b7e..2b1b7ed 100644
--- a/shell-completion/zsh/_machinectl
+++ b/shell-completion/zsh/_machinectl
@@ -1,5 +1,20 @@
 #compdef machinectl
 
+__get_available_machines () {
+ls -1 /var/lib/container |  {while read -r a b; do echo $a; done;}
+}
+
+_available_machines() {
+local -a _machines
+_machines=(${(fo)$(__get_available_machines)})
+typeset -U _machines
+if [[ -n $_machines ]]; then
+_describe 'machines' _machines
+else
+   _message 'no machines'
+fi
+}
+
 (( $+functions[_machinectl_command] )) || _machinectl_command()
 {
   local -a _machinectl_cmds
@@ -7,23 +22,55 @@
 list:List currently running VMs/containers
 status:Show VM/container status
 show:Show properties of one or more VMs/containers
+start:Start container as a service
 login:Get a login prompt on a VM/container
+enable:Enable automatic container start at boot
+disable:Disable automatic container start at boot
 poweroff:Power off one or more VMs/containers
 reboot:Reboot one or more VMs/containers
 terminate:Terminate one or more VMs/containers
 kill:Send signal to process or a VM/container
+copy-to:Copy files from the host to a container
+copy-from:Copy files from a container to the host
+bind:Bind mount a path from the host into a container
+
+list-images:Show available container and VM images
+image-status:Show image details
+show-image:Show properties of image
+clone:Clone an image
+rename:Rename an image
+read-only:Mark or unmark image read-only
+remove:Remove an image
+
+pull-tar:Download a TAR container image
+pull-raw:Download a RAW container or VM image
+pull-dkr:Download a DKR container image
+list-transfers:Show list of downloads in progress
+cancel-transfer:Cancel a download
   )
+
   if (( CURRENT == 1 )); then
 _describe -t commands 'machinectl command' _machinectl_cmds || compadd $@
   else
 local curcontext=$curcontext
 cmd=${${_machinectl_cmds[(r)$words[1]:*]%%:*}}
 if (( $#cmd )); then
-  case $cmd in
-list) msg=no options ;;
-*)
-  _sd_machines
-  esac
+  if (( CURRENT == 2 )); then
+case $cmd in
+  list*|cancel-transfer|pull-tar|pull-raw|pull-dkr)
+msg=no options ;;
+  start)
+_available_machines ;;
+  *)
+_sd_machines
+esac
+  else
+case $cmd in
+  copy-to|copy-from|bind)
+_files ;;
+  *) msg=no options
+esac
+  fi
 else
   _message no more options
 fi
@@ -33,13 +80,22 @@
 _arguments \
   {-h,--help}'[Prints a short help text and exits.]' \
   '--version[Prints a short version string and exits.]' \
-  \*{-p+,--property=}'[Limit output to specified property.]:property:(Name Id 
Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \
-  {-a,--all}'[Show all proerties]' \
-  (-l,--full)'[Do not ellipsize cgroup members]' \
-  '--no-pager[Do not pipe output into a pager]' \
-  '--no-ask-password[Do not ask for system passwords]' \
-  '--kill-who=[Who to send signal to]:killwho:(leader all)' \
-  {-s+,--signal=}'[Which signal to send]:signal:_signals' \
-  {-H+,--host=}'[Operate on remote host]:userathost:_sd_hosts_or_user_at_host' 
\
-  {-P,--privileged}'[Acquire privileges before execution]' \
+  '--no-pager[Do not pipe output into a pager.]' \
+  '--no-legend[Do not show the headers and footers.]' \
+  '--no-ask-password[Do not ask for system passwords.]' \
+  {-H+,--host=}'[Operate on remote 
host.]:userathost:_sd_hosts_or_user_at_host' \
+  {-M+,--machine=}'[Operate on local container.]:machine:_sd_machines' \
+  {-p+,--property=}'[Limit output to specified property.]:property:(Name Id 
Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \
+  {-a,--all}'[Show all proerties.]' \
+  {-q,--quiet}'[Suppress output.]' \
+  {-l,--full}'[Do not ellipsize cgroup members.]' \
+  '--kill-who=[Who to send signal to.]:killwho:(leader all)' \
+  {-s+,--signal=}'[Which signal to send.]:signal:_signals' \
+  '--read-only[Create read-only bind mount.]' \
+  '--mkdir[Create directory before bind mounting, if missing.]' \
+  {-n+,--lines=}'[Number of journal entries to show.]:integer' \
+  {-o+,--output=}'[Change journal output mode.]:output modes:_sd_outputmodes' \
+  '--verify=[Verification mode for downloaded images.]:verify:(no checksum 
signature)' \
+  '--force[Download image even if already exists.]' \
+  '--dkr-index-url=[Specify the index URL to use for DKR image downloads.]' \
   '*::machinectl command:_machinectl_command'
-- 
2.3.5

___
systemd-devel mailing list

[systemd-devel] [PATCH 3/3] zsh-completion: add missing completions for systemd-nspawn

2015-04-22 Thread Lukas Rusak
---
 shell-completion/zsh/_systemd-nspawn | 23 +--
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/shell-completion/zsh/_systemd-nspawn 
b/shell-completion/zsh/_systemd-nspawn
index ceedb2c..42cdbcd 100644
--- a/shell-completion/zsh/_systemd-nspawn
+++ b/shell-completion/zsh/_systemd-nspawn
@@ -11,34 +11,37 @@ _nspawn-caps(){
 }
 
 _arguments \
-{-h,--help}'[Show this help]' \
+{-h,--help}'[Show this help.]' \
+'--version[Print a short version string and exit.]' \
+{--quiet,-q}'[Turns off any status output by the tool itself.]' \
 {--directory=,-D+}'[Directory to use as file system root for the namespace 
container. If omitted the current directory will be 
used.]:directories:_directories' \
+'--template=[Initialize root directory from template directory, if 
missing.]:template:_directories' \
+{--ephemeral,-x}'[Run container with snapshot of root directory, and 
remove it after exit.]' \
 {--image=,-i+}'[Disk image to mount the root directory for the container 
from.]' \
 {--boot=,-b+}'[Automatically search for an init binary and invoke it 
instead of a shell or a user supplied program.]' \
 {--user=,-u+}'[Run the command under specified user, create home directory 
and cd into it.]' \
 {--machine=,-M+}'[Sets the machine name for this container.]' \
 '--uuid=[Set the specified uuid for the container.]' \
-'--slice=[Make the container part of the specified slice, instead of the 
default machine.slice.]' \
-'--private-network[Turn off networking in the container. This makes all 
network interfaces unavailable in the container, with the exception of the 
loopback device.]' \
+{--slice=,-S+}'[Make the container part of the specified slice, instead of 
the default machine.slice.]' \
 '--private-network[Disconnect networking of the container from the host.]' 
\
 '--network-interface=[Assign the specified network interface to the 
container.]' \
 '--network-macvlan=[Create a macvlan interface of the specified Ethernet 
network interface and add it to the container.]' \
-'--network-veth[Create a virtual Ethernet link (veth) between host and 
container.]' \
+'--network-ipvlan=[Create a ipvlan network interface based on an existing 
network interface to the container.]' \
+{--network-veth,-n}'[Create a virtual Ethernet link (veth) between host 
and container.]' \
 '--network-bridge=[Adds the host side of the Ethernet link created with 
--network-veth to the specified bridge.]' \
+{--port=,-p+}'[Expose a container IP port on the host.]' \
 {--selinux-context=,-Z+}'[Sets the SELinux security context to be used to 
label processes in the container.]' \
 {--selinux-apifs-context=,-L+}'[Sets the SELinux security context to be 
used to label files in the virtual API file systems in the container.]' \
 '--capability=[List one or more additional capabilities to grant the 
container.]:capabilities:_nspawn-caps' \
-'--drop-capability=[Specify one or more additional capabilities to drop 
for the container]' \
---link-journal=[Control whether the container's journal shall be made 
visible to the host system.]:options:(no, host, guest, auto) \
+'--drop-capability=[Specify one or more additional capabilities to drop 
for the containerm]:capabilities:_nspawn-caps' \
+--link-journal=[Control whether the container's journal shall be made 
visible to the host system.]:options:(no host guest auto) \
 '-j[Equivalent to --link-journal=guest.]' \
 '--read-only[Mount the root file system read only for the container.]' \
 '--bind=[Bind mount a file or directory from the host into the 
container.]' \
 '--bind-ro=[Bind mount a file or directory from the host into the 
container (read-only).]' \
+'--tmpfs=[Mount an empty tmpfs to the specified directory.]' \
 '--setenv=[Specifies an environment variable assignment to pass to the 
init process in the container, in the format NAME=VALUE.]' \
 '--share-system[Allows the container to share certain system facilities 
with the host.]' \
 '--register=[Controls whether the container is registered with 
systemd-machined(8).]' \
 '--keep-unit[Instead of creating a transient scope unit to run the 
container in, simply register the service or scope unit systemd-nspawn has been 
invoked in with systemd-machined(8).]' \
-'--personality=[Control the architecture (personality) reported by 
uname(2) in the container.]' \
-{--quiet,-q}'[Turns off any status output by the tool itself.]' \
-{--help,-h}'[Print a short help text and exit.]' \
-'--version[Print a short version string and exit.]'
+'--volatile=[Run the system in volatile mode.]:volatile:(no yes state)'
-- 
2.3.5

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


[systemd-devel] [PATCH 2/3] zsh-completion: update -M completion for systemd-analyze

2015-04-22 Thread Lukas Rusak
---
 shell-completion/zsh/_systemd-analyze | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/shell-completion/zsh/_systemd-analyze 
b/shell-completion/zsh/_systemd-analyze
index 2c0e543..efafddc 100644
--- a/shell-completion/zsh/_systemd-analyze
+++ b/shell-completion/zsh/_systemd-analyze
@@ -54,5 +54,5 @@ _arguments \
 '--from-pattern=[When generating a dependency graph, filter only 
origins]:GLOB' \
 '--to-pattern=[When generating a dependency graph, filter only 
destinations]:GLOB' \
 {-H+,--host=}'[Operate on remote 
host]:userathost:_sd_hosts_or_user_at_host' \
-{-M+,--machine=}'[Operate on local container]:machine' \
+{-M+,--machine=}'[Operate on local container]:machine:_sd_machines' \
 '*::systemd-analyze commands:_systemd_analyze_command'
-- 
2.3.5

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


[systemd-devel] [PATCH 0/3] update zsh completions for systemd-analyze, systemd-nspawn, and machinectl

2015-04-22 Thread Lukas Rusak
This is my first time submitting on a mailing list, so go easy on me.

Lukas Rusak (3):
  zsh-completion: add missing completions for machinectl
  zsh-completion: update -M completion for systemd-analyze
  zsh-completion: add missing completions for systemd-nspawn

 shell-completion/zsh/_machinectl  | 84 +--
 shell-completion/zsh/_systemd-analyze |  2 +-
 shell-completion/zsh/_systemd-nspawn  | 23 +-
 3 files changed, 84 insertions(+), 25 deletions(-)

-- 
2.3.5

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Re: [systemd-devel] [PATCH 1/3] zsh-completion: add missing completions for machinectl

2015-04-22 Thread Lukas Rusak
Ah, completely missed images. So perhaps something like this would be
better?

machinectl --full --no-legend --no-pager list-images | awk '{print $1}'

as this lists

fedora
fedora-rawhide

instead of

fedora.raw
fedora-rawhide

However this will break if one has spaces in the container name. I would
delimit awk by a tab, but it seems list-images doesn't delimit by tabs. So
I'm not sure what the best solution would be as something like this, ls -1
/var/lib/container | sed 's|\.raw||g' seems kind of silly.

(Apologies for sending twice. I missed the CC)

On Wed, Apr 22, 2015 at 11:20 AM, Lennart Poettering lenn...@poettering.net
 wrote:

 On Wed, 22.04.15 11:07, Lukas Rusak (loru...@gmail.com) wrote:

  ---
   shell-completion/zsh/_machinectl | 84
 +---
   1 file changed, 70 insertions(+), 14 deletions(-)
 
  diff --git a/shell-completion/zsh/_machinectl
 b/shell-completion/zsh/_machinectl
  index c666b7e..2b1b7ed 100644
  --- a/shell-completion/zsh/_machinectl
  +++ b/shell-completion/zsh/_machinectl
  @@ -1,5 +1,20 @@
   #compdef machinectl
 
  +__get_available_machines () {
  +ls -1 /var/lib/container |  {while read -r a b; do echo $a; done;}
  +}

 Hmm, the right way to list running containers is with machinectl
 list. The right way to list container images is with machinectl
 list-images.

 Just listing /var/lib/container is not right, because the we tent to
 prefer /var/lib/machines now, and because we support raw images in
 those dirs, which carry the .raw suffix which should be removed when
 used as machine name.

 Lennart

 --
 Lennart Poettering, Red Hat

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Re: [systemd-devel] [PATCH 1/3] zsh-completion: add missing completions for machinectl

2015-04-22 Thread Lukas Rusak
Appologies, I'm still getting used to this mailing list thing and using git 
send-email

---
 shell-completion/zsh/_machinectl | 84 +---
 1 file changed, 70 insertions(+), 14 deletions(-)

diff --git a/shell-completion/zsh/_machinectl b/shell-completion/zsh/_machinectl
index c666b7e..a81c5c7 100644
--- a/shell-completion/zsh/_machinectl
+++ b/shell-completion/zsh/_machinectl
@@ -1,5 +1,20 @@
 #compdef machinectl
 
+__get_available_machines () {
+machinectl --no-legend list-images | awk '{print $1}' |  {while read -r a 
b; do echo $a; done;}
+}
+
+_available_machines() {
+local -a _machines
+_machines=(${(fo)$(__get_available_machines)})
+typeset -U _machines
+if [[ -n $_machines ]]; then
+_describe 'machines' _machines
+else
+   _message 'no machines'
+fi
+}
+
 (( $+functions[_machinectl_command] )) || _machinectl_command()
 {
   local -a _machinectl_cmds
@@ -7,23 +22,55 @@
 list:List currently running VMs/containers
 status:Show VM/container status
 show:Show properties of one or more VMs/containers
+start:Start container as a service
 login:Get a login prompt on a VM/container
+enable:Enable automatic container start at boot
+disable:Disable automatic container start at boot
 poweroff:Power off one or more VMs/containers
 reboot:Reboot one or more VMs/containers
 terminate:Terminate one or more VMs/containers
 kill:Send signal to process or a VM/container
+copy-to:Copy files from the host to a container
+copy-from:Copy files from a container to the host
+bind:Bind mount a path from the host into a container
+
+list-images:Show available container and VM images
+image-status:Show image details
+show-image:Show properties of image
+clone:Clone an image
+rename:Rename an image
+read-only:Mark or unmark image read-only
+remove:Remove an image
+
+pull-tar:Download a TAR container image
+pull-raw:Download a RAW container or VM image
+pull-dkr:Download a DKR container image
+list-transfers:Show list of downloads in progress
+cancel-transfer:Cancel a download
   )
+
   if (( CURRENT == 1 )); then
 _describe -t commands 'machinectl command' _machinectl_cmds || compadd $@
   else
 local curcontext=$curcontext
 cmd=${${_machinectl_cmds[(r)$words[1]:*]%%:*}}
 if (( $#cmd )); then
-  case $cmd in
-list) msg=no options ;;
-*)
-  _sd_machines
-  esac
+  if (( CURRENT == 2 )); then
+case $cmd in
+  list*|cancel-transfer|pull-tar|pull-raw|pull-dkr)
+msg=no options ;;
+  start)
+_available_machines ;;
+  *)
+_sd_machines
+esac
+  else
+case $cmd in
+  copy-to|copy-from|bind)
+_files ;;
+  *) msg=no options
+esac
+  fi
 else
   _message no more options
 fi
@@ -33,13 +80,22 @@
 _arguments \
   {-h,--help}'[Prints a short help text and exits.]' \
   '--version[Prints a short version string and exits.]' \
-  \*{-p+,--property=}'[Limit output to specified property.]:property:(Name Id 
Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \
-  {-a,--all}'[Show all proerties]' \
-  (-l,--full)'[Do not ellipsize cgroup members]' \
-  '--no-pager[Do not pipe output into a pager]' \
-  '--no-ask-password[Do not ask for system passwords]' \
-  '--kill-who=[Who to send signal to]:killwho:(leader all)' \
-  {-s+,--signal=}'[Which signal to send]:signal:_signals' \
-  {-H+,--host=}'[Operate on remote host]:userathost:_sd_hosts_or_user_at_host' 
\
-  {-P,--privileged}'[Acquire privileges before execution]' \
+  '--no-pager[Do not pipe output into a pager.]' \
+  '--no-legend[Do not show the headers and footers.]' \
+  '--no-ask-password[Do not ask for system passwords.]' \
+  {-H+,--host=}'[Operate on remote 
host.]:userathost:_sd_hosts_or_user_at_host' \
+  {-M+,--machine=}'[Operate on local container.]:machine:_sd_machines' \
+  {-p+,--property=}'[Limit output to specified property.]:property:(Name Id 
Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \
+  {-a,--all}'[Show all proerties.]' \
+  {-q,--quiet}'[Suppress output.]' \
+  {-l,--full}'[Do not ellipsize cgroup members.]' \
+  '--kill-who=[Who to send signal to.]:killwho:(leader all)' \
+  {-s+,--signal=}'[Which signal to send.]:signal:_signals' \
+  '--read-only[Create read-only bind mount.]' \
+  '--mkdir[Create directory before bind mounting, if missing.]' \
+  {-n+,--lines=}'[Number of journal entries to show.]:integer' \
+  {-o+,--output=}'[Change journal output mode.]:output modes:_sd_outputmodes' \
+  '--verify=[Verification mode for downloaded images.]:verify:(no checksum 
signature)' \
+  '--force[Download image even if already exists.]' \
+  '--dkr-index-url=[Specify the index URL to use for DKR image downloads.]' \
   '*::machinectl 

Re: [systemd-devel] [PATCH 1/3] zsh-completion: add missing completions for machinectl

2015-04-22 Thread Lukas Rusak
Here is a rebase of the original patch to include the discussed changes

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel