33 Commits

Author SHA1 Message Date
YueGuobin
e2e2e23cf7 feat(copilot): add VPCS Telnet driver with Netmiko and ANSI code stripping
Implement custom VPCS driver and unified tool architecture:

   - Add VPCSTelnet custom driver (vpcs_telnet.py)
     - No authentication (direct console access like VPCS behavior)
     - Simple prompt pattern matching (PC\d+>)
     - Automatic ANSI escape code stripping for clean output
     - Config mode methods return empty (VPCS has no config modes)

   - Replace vpcs_tools_telnetlib3.py with vpcs_tools_netmiko.py
     - Migrate from telnetlib3 to Netmiko + Nornir architecture
     - Unified tool architecture matching config/display tools
     - Improved code consistency and maintainability

   - Add comprehensive test coverage (test_vpcs_telnet.py)
     - 30 unit tests covering all VPCS driver functionality
     - Tests for ANSI code stripping, telnet_login, send_command
     - Tests for device registration and initialization

   - Update VPCS built-in template (services/templates.py)
     - Add platform:vpcs and device_type:gns3_vpcs_telnet tags
     - Automatic driver selection without manual configuration

   - Update documentation (docs/)
     - multi-vendor-device-support.md: VPCS driver documentation
     - netmiko_devices.md: Add VPCS to supported devices list
     - README.md: Update multi-vendor support description
2026-03-14 14:25:37 +08:00
YueGuobin
c05f667f3d feat(templates): safely access settings dict keys
Use dict.get() method to safely access 'image' and 'path' keys in settings dictionary to avoid KeyError exceptions when these keys are missing. This improves error handling and prevents server crashes when creating templates with incomplete settings.
2026-02-23 01:02:32 +08:00
grossmj
efb84b3063
Add back ValidationError 2024-12-30 15:59:01 +07:00
grossmj
9d6cea665a
Replace python-jose library by joserfc 2024-12-30 15:25:24 +07:00
grossmj
4b1068e02f
Replace deprecated method datetime.utcnow() 2024-05-18 23:33:26 +07:00
grossmj
644e659729
Use NAT symbol for builtin NAT template 2024-04-22 19:11:58 +07:00
grossmj
fa41d9ba75
Use bcrypt directly instead of passlib 2024-03-07 18:17:17 +01:00
grossmj
9c456532d0 Pydantic v2 migration 2023-08-04 18:20:06 +10:00
grossmj
bfbac2e93a Use generic symbol names 2022-07-25 12:33:40 +02:00
grossmj
410f062721 Fix config option to disable built-in templates. 2022-06-21 17:17:44 +02:00
grossmj
10fdd8fcf4 Add connect endpoint for computes
Param to connect to compute after creation
Report compute unauthorized HTTP errors to client
2021-12-24 13:05:39 +10:30
grossmj
16fcf6141e Fix tests 2021-12-08 00:43:54 +10:30
grossmj
05d2579907 Do not automatically install appliance after uploading image 2021-12-08 00:01:25 +10:30
grossmj
38388f7ae5 Secure controller to compute communication using HTTP basic authentication 2021-11-18 18:37:10 +10:30
grossmj
7ce5e19a6e Fix issue when updating a template 2021-10-23 16:23:19 +10:30
grossmj
04934691df Appliance management refactoring:
* Install an appliance based on selected version
* Each template have unique name and version
* Allow to download an appliance file
2021-10-18 18:04:30 +10:30
grossmj
bc36d95060 Finalize image management refactoring and auto install appliance if possible 2021-10-10 17:35:11 +10:30
grossmj
d606553e20 Allow images to be stored in subdirs and used by templates. 2021-08-30 16:53:41 +09:30
grossmj
332fa47b50 Option to prune images when deleting template. 2021-08-23 10:27:10 +09:30
grossmj
bf9a3aee20 Associate images when creating or updating a template. 2021-08-22 15:16:02 +09:30
grossmj
9c850e0f2b Move schemas between compute and controller subpackages 2021-04-15 18:12:08 +09:30
grossmj
c021e21309 Use black with -l 120 param. 2021-04-13 18:46:50 +09:30
grossmj
f928738bd5 Use pyupgrade with --py36-plus param. 2021-04-13 18:37:58 +09:30
grossmj
1b5a5de4bc Generate new config for each test. Fixes tests. 2021-04-12 19:37:59 +09:30
grossmj
30ebae207f Use Pydantic to validate the server config file. 2021-04-12 17:02:23 +09:30
grossmj
170e83e589 Fix tests and update requirements 2021-04-05 17:43:35 +09:30
grossmj
566e326b57 Save computes to database 2021-04-05 14:21:41 +09:30
grossmj
91920e5a5b Fix issue with tests + some cleaning. 2021-03-31 09:58:52 +10:30
grossmj
0fea3f969e Use aiosqlite and add service for templates 2021-03-28 21:17:29 +10:30
grossmj
58c1b01439 Add default JWT secret key and fix tests. 2020-12-18 16:51:54 +10:30
grossmj
bde706d19a Generate JWT secret key if none is configured in the config file.
Change location of the database.
2020-12-16 18:24:21 +10:30
grossmj
d47dcb0d6f User authentication with tests. 2020-12-07 16:52:36 +10:30
grossmj
bf7cf862af Refactor tests and start work on database integration. 2020-12-02 18:39:08 +10:30