diff options
author | Roberto Berto <roberto.berto@gmail.com> | 2023-12-13 01:41:24 -0300 |
---|---|---|
committer | Roberto Berto <roberto.berto@gmail.com> | 2023-12-13 01:41:24 -0300 |
commit | 1cd622e219ceed9ba669bb373a4e4407a9542215 (patch) | |
tree | c4cfb941eac177482b21cdce630f984d11958e2c | |
parent | 8c4de65e48817d3b178ac66ebd5ca5016df4c503 (diff) | |
download | pyvyos-1cd622e219ceed9ba669bb373a4e4407a9542215.tar.gz pyvyos-1cd622e219ceed9ba669bb373a4e4407a9542215.zip |
feature:
- configure_set
- configure_delete
- config_file_save
- config_file_load
-rw-r--r-- | requirements.txt | 4 | ||||
-rw-r--r-- | tests/test_vy_device.py | 54 | ||||
-rw-r--r-- | vyapi/device.py | 47 |
3 files changed, 81 insertions, 24 deletions
diff --git a/requirements.txt b/requirements.txt index 282562e..4bde791 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -requests -dotenv +requests>=2.31.0<3.0.0 +dotenv>=1.0.0<2.0.0 diff --git a/tests/test_vy_device.py b/tests/test_vy_device.py index 5b7070a..b101c1d 100644 --- a/tests/test_vy_device.py +++ b/tests/test_vy_device.py @@ -10,7 +10,7 @@ import pprint load_dotenv() hostname = os.getenv('VYDEVICE_HOSTNAME') -key = os.getenv('VYDEVICE_KEY') +apikey = os.getenv('VYDEVICE_APIKEY') port = os.getenv('VYDEVICE_PORT') protocol = os.getenv('VYDEVICE_PROTOCOL') verify = os.getenv('VYDEVICE_VERIFY_SSL') @@ -20,18 +20,64 @@ else: verify = True - class TestVyDevice(unittest.TestCase): def setUp(self): - self.device = VyDevice(hostname=hostname, key=key, port=port, protocol=protocol, verify=verify) + self.device = VyDevice(hostname=hostname, apikey=apikey, port=port, protocol=protocol, verify=verify) - def test_show_configuration_content(self): + def test_001_retrieve_show_config(self): response = self.device.retrieve_show_config(['system']) + pprint.pprint(response) + + self.assertEqual(response.status, 200) + self.assertIsNotNone(response.result) + self.assertFalse(response.error) + + def test_010_configure_set_interface(self): + response = self.device.configure_set(path=["interfaces", "dummy", "dum1", "address", "192.168.140.1/24"]) + #pprint.pprint(response) + + self.assertEqual(response.status, 200) + self.assertIsNone(response.result) + self.assertFalse(response.error) + + + def test_011_configure_delete_interface(self): + response = self.device.configure_delete(path=["interfaces", "dummy", "dum1"]) + pprint.pprint(response) + + self.assertEqual(response.status, 200) + self.assertIsNone(response.result) + self.assertFalse(response.error) + + + def test_300_config_file_save(self): + response = self.device.config_file_save(file="/config/test300.config") + pprint.pprint(response) self.assertEqual(response.status, 200) self.assertIsNotNone(response.result) self.assertFalse(response.error) + def test_301_config_file_save(self): + response = self.device.config_file_save() + pprint.pprint(response) + + self.assertEqual(response.status, 200) + self.assertIsNotNone(response.result) + self.assertFalse(response.error) + + + def test_302_config_file_load(self): + response = self.device.config_file_load(file="/config/test300.config") + pprint.pprint(response) + + self.assertEqual(response.status, 200) + self.assertIsNone(response.result) + self.assertFalse(response.error) + + + + def tearDown(self): pass diff --git a/vyapi/device.py b/vyapi/device.py index fc974d1..f601f36 100644 --- a/vyapi/device.py +++ b/vyapi/device.py @@ -14,9 +14,9 @@ class ApiResponse: error: str class VyDevice: - def __init__(self, hostname, key, protocol='https', port=443, verify=True, timeout=10): + def __init__(self, hostname, apikey, protocol='https', port=443, verify=True, timeout=10): self.hostname = hostname - self.key = key + self.apikey = apikey self.protocol = protocol self.port = port self.verify = verify @@ -26,16 +26,25 @@ class VyDevice: def _get_url(self, command): return f"{self.protocol}://{self.hostname}:{self.port}/{command}" - def _get_payload(self, op, path): - return { - 'data': json.dumps({'op': op, 'path': path}), - 'key': self.key - } - - def _api_request(self, command, op, path=[], method='POST'): + def _get_payload(self, op, path, file=None): + if file is not None: + return { + 'data': json.dumps({ + 'op': op, + 'file': file, + }), + 'key': self.apikey + } + else: + return { + 'data': json.dumps({'op': op, 'path': path}), + 'key': self.apikey + } + + def _api_request(self, command, op, path=[], method='POST', file=None): url = self._get_url(command) - payload = self._get_payload(op, path) - + payload = self._get_payload(op, path, file) + pprint.pprint(payload) headers = {} error = False @@ -43,10 +52,11 @@ class VyDevice: try: resp = requests.post(url, verify=self.verify, data=payload, timeout=self.timeout, headers=headers) - + pprint.pprint(resp.text) if resp.status_code == 200: try: resp_decoded = resp.json() + if resp_decoded['success'] == True: result = resp_decoded['data'] error = False @@ -68,7 +78,7 @@ class VyDevice: def retrieve_show_config(self, path=[]): - return self._api_request(command="retrieve", op='showConfig', path=[], method="POST") + return self._api_request(command="retrieve", op='showConfig', path=path, method="POST") def retrieve_return_values(self, path=[]): pass @@ -88,16 +98,17 @@ class VyDevice: def generate(self, path=[]): pass - def configure_sef(self, path=[]): - pass + def configure_set(self, path=[]): + return self._api_request(command="configure", op='set', path=path, method="POST") def configure_delete(self, path=[]): - pass + return self._api_request(command="configure", op='delete', path=path, method="POST") def config_file_save(self, file=None): - pass + return self._api_request(command="config-file", op='save', file=file, method="POST") def config_file_load(self, file=None): - pass + return self._api_request(command="config-file", op='load', file=file, method="POST") +
\ No newline at end of file |