summaryrefslogtreecommitdiff
path: root/docs/automation
diff options
context:
space:
mode:
authorRoberto Berto <roberto.berto@gmail.com>2023-12-15 17:21:16 -0300
committerRoberto Berto <roberto.berto@gmail.com>2023-12-15 17:21:16 -0300
commitb2c1c8a31b555b0198cb657c0f791208454b5854 (patch)
tree3529cd3a6d8c07f87428128876a418c1c8341bf8 /docs/automation
parente1da50c7176dac66b9f99c7a62df68f7d20a1410 (diff)
downloadvyos-documentation-b2c1c8a31b555b0198cb657c0f791208454b5854.tar.gz
vyos-documentation-b2c1c8a31b555b0198cb657c0f791208454b5854.zip
+ pyvyos python sdk
Diffstat (limited to 'docs/automation')
-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