summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/automation/index.rst2
-rw-r--r--docs/automation/vyos-pyvyos.rst134
2 files changed, 136 insertions, 0 deletions
diff --git a/docs/automation/index.rst b/docs/automation/index.rst
index dd7b596a..22414cca 100644
--- a/docs/automation/index.rst
+++ b/docs/automation/index.rst
@@ -13,7 +13,9 @@ VyOS Automation
vyos-api
vyos-ansible
vyos-napalm
+ vyos-pyvyos
vyos-netmiko
vyos-salt
command-scripting
cloud-init
+
diff --git a/docs/automation/vyos-pyvyos.rst b/docs/automation/vyos-pyvyos.rst
new file mode 100644
index 00000000..fba1e0c1
--- /dev/null
+++ b/docs/automation/vyos-pyvyos.rst
@@ -0,0 +1,134 @@
+:lastproofread: 2023-12-15
+
+.. _vyos-pyvyos:
+
+PyVyOS
+======
+
+PyVyOS is a Python library for interacting with VyOS devices via their API.
+This documentation guides you on using PyVyOS to manage your VyOS devices programmatically.
+The complete PyVyOS documentation is available on [Read the Docs](https://pyvyos.readthedocs.io/en/latest/),
+and the library can be found on [GitHub](https://github.com/robertoberto/pyvyos)
+and [PyPI](https://pypi.org/project/pyvyos/).
+
+Installation
+------------
+
+You can install PyVyOS using pip:
+
+.. code-block:: bash
+
+ pip install pyvyos
+
+Getting Started
+---------------
+
+### Importing and Disabling Warnings for verify=False
+
+.. code-block:: none
+
+ import urllib3
+ urllib3.disable_warnings()
+
+### Using API Response Class
+
+.. code-block:: none
+
+ @dataclass
+ class ApiResponse:
+ status: int
+ request: dict
+ result: dict
+ error: str
+
+### Initializing a VyDevice Object
+
+.. code-block:: none
+
+ from dotenv import load_dotenv
+ load_dotenv()
+
+ hostname = os.getenv('VYDEVICE_HOSTNAME')
+ apikey = os.getenv('VYDEVICE_APIKEY')
+ port = os.getenv('VYDEVICE_PORT')
+ protocol = os.getenv('VYDEVICE_PROTOCOL')
+ verify_ssl = os.getenv('VYDEVICE_VERIFY_SSL')
+
+ verify = verify_ssl.lower() == "true" if verify_ssl else True
+
+ device = VyDevice(hostname=hostname, apikey=apikey, port=port, protocol=protocol, verify=verify)
+
+Using PyVyOS
+------------
+
+### Configure, then Set
+
+.. code-block:: none
+
+ response = device.configure_set(path=["interfaces", "ethernet", "eth0", "address", "192.168.1.1/24"])
+ if not response.error:
+ print(response.result)
+
+### Configure, then Show a Single Object Value
+
+.. code-block:: none
+
+ response = device.retrieve_return_values(path=["interfaces", "dummy", "dum1", "address"])
+ print(response.result)
+
+### Configure, then Show Object
+
+.. code-block:: none
+
+ response = device.retrieve_show_config(path=[])
+ if not response.error:
+ print(response.result)
+
+### Configure, then Delete Object
+
+.. code-block:: none
+
+ response = device.configure_delete(path=["interfaces", "dummy", "dum1"])
+
+### Configure, then Save
+
+.. code-block:: none
+
+ response = device.config_file_save()
+
+### Configure, then Save File
+
+.. code-block:: none
+
+ response = device.config_file_save(file="/config/test300.config")
+
+### Show Object
+
+.. code-block:: none
+
+ response = device.show(path=["system", "image"])
+ print(response.result)
+
+### Generate Object
+
+.. code-block:: none
+
+ randstring = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(20))
+ keyrand = f'/tmp/key_{randstring}'
+ response = device.generate(path=["ssh", "client-key", keyrand])
+
+### Reset Object
+
+.. code-block:: none
+
+ response = device.reset(path=["conntrack-sync", "internal-cache"])
+ if not response.error:
+ print(response.result)
+
+### Configure, then Load File
+
+.. code-block:: none
+
+ response = device.config_file_load(file="/config/test300.config")
+
+. _pyvyos: https://github.com/robertoberto/pyvyos \ No newline at end of file