"""Execution module for in-guest VM operations (SOAP via VMware Tools)."""
from saltext.vcf.clients import vim_vm_guest as c
__virtualname__ = "vcf_vim_vm_guest"
def __virtual__():
return __virtualname__
# ---------- processes ----------
[docs]
def run_command(
vm,
program_path,
arguments="",
username=None,
password=None,
working_directory=None,
env=None,
profile=None,
):
"""Start a program inside the guest, return its PID.
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.run_command vm-100 /bin/echo "hello" username=root password='<pw>'
"""
return c.run_command(
__opts__,
vm,
program_path,
arguments=arguments,
username=username,
password=password,
working_directory=working_directory,
env=env,
profile=profile,
)
[docs]
def list_processes(vm, username=None, password=None, pids=None, profile=None):
"""List processes in the guest (optionally filtered to *pids*).
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.list_processes vm-100 username=root password='<pw>'
"""
return c.list_processes(
__opts__, vm, username=username, password=password, pids=pids, profile=profile
)
[docs]
def terminate_process(vm, pid, username=None, password=None, profile=None):
"""Kill a process inside the guest.
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.terminate_process vm-100 1234 username=root password='<pw>'
"""
return c.terminate_process(
__opts__, vm, pid, username=username, password=password, profile=profile
)
[docs]
def read_environment(vm, username=None, password=None, names=None, profile=None):
"""Read the guest user's environment variables.
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.read_environment vm-100 username=root password='<pw>' names='["PATH"]'
"""
return c.read_environment(
__opts__,
vm,
username=username,
password=password,
names=names,
profile=profile,
)
# ---------- files ----------
[docs]
def upload_file(
vm,
src_path,
dst_path,
username=None,
password=None,
overwrite=True,
permissions=0o644,
verify_ssl=False,
profile=None,
):
"""Upload a local file to the guest.
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.upload_file vm-100 /tmp/local.sh /root/remote.sh username=root password='<pw>'
"""
return c.upload_file(
__opts__,
vm,
src_path,
dst_path,
username=username,
password=password,
overwrite=overwrite,
permissions=permissions,
verify_ssl=verify_ssl,
profile=profile,
)
[docs]
def download_file(
vm,
src_path,
dst_path,
username=None,
password=None,
verify_ssl=False,
profile=None,
):
"""Download a file from the guest.
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.download_file vm-100 /root/log /tmp/log username=root password='<pw>'
"""
return c.download_file(
__opts__,
vm,
src_path,
dst_path,
username=username,
password=password,
verify_ssl=verify_ssl,
profile=profile,
)
[docs]
def list_files(vm, path, username=None, password=None, pattern=None, profile=None):
"""List files in a guest directory.
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.list_files vm-100 /root username=root password='<pw>'
"""
return c.list_files(
__opts__,
vm,
path,
username=username,
password=password,
pattern=pattern,
profile=profile,
)
[docs]
def delete_file(vm, path, username=None, password=None, profile=None):
"""Delete a file from the guest.
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.delete_file vm-100 /root/old.txt username=root password='<pw>'
"""
return c.delete_file(__opts__, vm, path, username=username, password=password, profile=profile)
[docs]
def make_directory(vm, path, username=None, password=None, create_parents=False, profile=None):
"""Make a directory in the guest (``create_parents=true`` for ``mkdir -p``).
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.make_directory vm-100 /opt/app/etc create_parents=true username=root password='<pw>'
"""
return c.make_directory(
__opts__,
vm,
path,
username=username,
password=password,
create_parents=create_parents,
profile=profile,
)
[docs]
def delete_directory(vm, path, username=None, password=None, recursive=False, profile=None):
"""Delete a directory in the guest.
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.delete_directory vm-100 /tmp/build recursive=true username=root password='<pw>'
"""
return c.delete_directory(
__opts__,
vm,
path,
username=username,
password=password,
recursive=recursive,
profile=profile,
)
[docs]
def move_file(vm, src_path, dst_path, username=None, password=None, overwrite=False, profile=None):
"""Move or rename a file in the guest.
CLI Example:
.. code-block:: bash
salt '*' vcf_vim_vm_guest.move_file vm-100 /root/a.txt /root/b.txt username=root password='<pw>'
"""
return c.move_file(
__opts__,
vm,
src_path,
dst_path,
username=username,
password=password,
overwrite=overwrite,
profile=profile,
)