cvproxy 1.0.8__tar.gz → 1.6.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cvproxy-1.0.8 → cvproxy-1.6.2}/PKG-INFO +2 -2
- {cvproxy-1.0.8 → cvproxy-1.6.2}/cvproxy/__init__.py +12 -9
- {cvproxy-1.0.8 → cvproxy-1.6.2}/cvproxy/cvproxy.py +12 -9
- {cvproxy-1.0.8 → cvproxy-1.6.2}/cvproxy.egg-info/PKG-INFO +2 -2
- cvproxy-1.6.2/cvproxy.egg-info/requires.txt +2 -0
- {cvproxy-1.0.8 → cvproxy-1.6.2}/pyproject.toml +1 -1
- cvproxy-1.0.8/cvproxy.egg-info/requires.txt +0 -2
- {cvproxy-1.0.8 → cvproxy-1.6.2}/LICENSE +0 -0
- {cvproxy-1.0.8 → cvproxy-1.6.2}/README.md +0 -0
- {cvproxy-1.0.8 → cvproxy-1.6.2}/cvproxy/__main__.py +0 -0
- {cvproxy-1.0.8 → cvproxy-1.6.2}/cvproxy.egg-info/SOURCES.txt +0 -0
- {cvproxy-1.0.8 → cvproxy-1.6.2}/cvproxy.egg-info/dependency_links.txt +0 -0
- {cvproxy-1.0.8 → cvproxy-1.6.2}/cvproxy.egg-info/entry_points.txt +0 -0
- {cvproxy-1.0.8 → cvproxy-1.6.2}/cvproxy.egg-info/top_level.txt +0 -0
- {cvproxy-1.0.8 → cvproxy-1.6.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cvproxy
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.2
|
|
4
4
|
Summary: CVProxy - CloudVision Proxy
|
|
5
5
|
Author-email: Chris Mason <chris@netnix.org>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: >=3.10
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: pyavd~=6.
|
|
15
|
+
Requires-Dist: pyavd~=6.2.0
|
|
16
16
|
Requires-Dist: jsonschema
|
|
17
17
|
Dynamic: license-file
|
|
18
18
|
|
|
@@ -21,12 +21,12 @@ from http.server import HTTPServer, BaseHTTPRequestHandler, HTTPStatus
|
|
|
21
21
|
|
|
22
22
|
from pyavd._cv.client import CVClient
|
|
23
23
|
from pyavd._cv.workflows.deploy_to_cv import deploy_to_cv
|
|
24
|
-
from pyavd._cv.workflows.models import CloudVision, CVDevice, CVEosConfig, CVDeviceTag, CVChangeControl
|
|
24
|
+
from pyavd._cv.workflows.models import CloudVision, CVDevice, CVEosConfig, CVDeviceTag, CVChangeControl, CVDeviceDeployment
|
|
25
25
|
|
|
26
26
|
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
|
27
27
|
logging.getLogger().setLevel(logging.ERROR)
|
|
28
28
|
|
|
29
|
-
__version__ = '1.
|
|
29
|
+
__version__ = '1.6.2'
|
|
30
30
|
|
|
31
31
|
schema = {
|
|
32
32
|
'unevaluatedProperties': False,
|
|
@@ -60,8 +60,8 @@ schema = {
|
|
|
60
60
|
|
|
61
61
|
llock = threading.RLock()
|
|
62
62
|
|
|
63
|
-
async def deploy(cv,
|
|
64
|
-
r = await deploy_to_cv(change_control=change_control, cloudvision=cv,
|
|
63
|
+
async def deploy(cv, device_deployments, change_control=False, strict_tags=False, delete_workspace=False):
|
|
64
|
+
r = await deploy_to_cv(change_control=change_control, cloudvision=cv, device_deployments=device_deployments, strict_tags=strict_tags)
|
|
65
65
|
|
|
66
66
|
if delete_workspace and r.workspace.id and r.workspace.state == 'submitted':
|
|
67
67
|
async with CVClient(servers=cv.servers, token=cv.token, username=cv.username, password=cv.password, verify_certs=cv.verify_certs) as cv_client:
|
|
@@ -101,7 +101,8 @@ class CVProxyRequest(BaseHTTPRequestHandler):
|
|
|
101
101
|
self.status = None
|
|
102
102
|
|
|
103
103
|
try:
|
|
104
|
-
|
|
104
|
+
device_deployments = []
|
|
105
|
+
tmp_files = []
|
|
105
106
|
|
|
106
107
|
if 'Content-Length' in self.headers:
|
|
107
108
|
postdata = self.rfile.read(int(self.headers['Content-Length']))
|
|
@@ -137,9 +138,11 @@ class CVProxyRequest(BaseHTTPRequestHandler):
|
|
|
137
138
|
|
|
138
139
|
with tempfile.NamedTemporaryFile(delete=False) as tmp:
|
|
139
140
|
tmp.write(base64.b64decode(data['devices'][device]['configlet'], validate=True))
|
|
140
|
-
|
|
141
|
+
eos_config = CVEosConfig(file=tmp.name, device=device_object, configlet_name=f'AVD-{device}')
|
|
142
|
+
device_deployments.append(CVDeviceDeployment(device=device_object, eos_config=eos_config, device_tags=device_tags, interface_tags=[]))
|
|
143
|
+
tmp_files.append(tmp.name)
|
|
141
144
|
|
|
142
|
-
r = asyncio.run(deploy(cloudvision,
|
|
145
|
+
r = asyncio.run(deploy(cloudvision, device_deployments, change_control, strict_tags=data.get('cv_strict_tags'), delete_workspace=data.get('cv_delete_workspace')))
|
|
143
146
|
|
|
144
147
|
if r.failed:
|
|
145
148
|
r.errors = [str(error) for error in r.errors]
|
|
@@ -168,8 +171,8 @@ class CVProxyRequest(BaseHTTPRequestHandler):
|
|
|
168
171
|
r = ['application/json', 200, json.dumps(response, indent=2)]
|
|
169
172
|
|
|
170
173
|
finally:
|
|
171
|
-
for
|
|
172
|
-
os.remove(
|
|
174
|
+
for f in tmp_files:
|
|
175
|
+
os.remove(f)
|
|
173
176
|
|
|
174
177
|
if r[0] == 'application/json':
|
|
175
178
|
self.status = response['status']
|
|
@@ -21,12 +21,12 @@ from http.server import HTTPServer, BaseHTTPRequestHandler, HTTPStatus
|
|
|
21
21
|
|
|
22
22
|
from pyavd._cv.client import CVClient
|
|
23
23
|
from pyavd._cv.workflows.deploy_to_cv import deploy_to_cv
|
|
24
|
-
from pyavd._cv.workflows.models import CloudVision, CVDevice, CVEosConfig, CVDeviceTag, CVChangeControl
|
|
24
|
+
from pyavd._cv.workflows.models import CloudVision, CVDevice, CVEosConfig, CVDeviceTag, CVChangeControl, CVDeviceDeployment
|
|
25
25
|
|
|
26
26
|
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
|
27
27
|
logging.getLogger().setLevel(logging.ERROR)
|
|
28
28
|
|
|
29
|
-
__version__ = '1.
|
|
29
|
+
__version__ = '1.6.2'
|
|
30
30
|
|
|
31
31
|
schema = {
|
|
32
32
|
'unevaluatedProperties': False,
|
|
@@ -60,8 +60,8 @@ schema = {
|
|
|
60
60
|
|
|
61
61
|
llock = threading.RLock()
|
|
62
62
|
|
|
63
|
-
async def deploy(cv,
|
|
64
|
-
r = await deploy_to_cv(change_control=change_control, cloudvision=cv,
|
|
63
|
+
async def deploy(cv, device_deployments, change_control=False, strict_tags=False, delete_workspace=False):
|
|
64
|
+
r = await deploy_to_cv(change_control=change_control, cloudvision=cv, device_deployments=device_deployments, strict_tags=strict_tags)
|
|
65
65
|
|
|
66
66
|
if delete_workspace and r.workspace.id and r.workspace.state == 'submitted':
|
|
67
67
|
async with CVClient(servers=cv.servers, token=cv.token, username=cv.username, password=cv.password, verify_certs=cv.verify_certs) as cv_client:
|
|
@@ -101,7 +101,8 @@ class CVProxyRequest(BaseHTTPRequestHandler):
|
|
|
101
101
|
self.status = None
|
|
102
102
|
|
|
103
103
|
try:
|
|
104
|
-
|
|
104
|
+
device_deployments = []
|
|
105
|
+
tmp_files = []
|
|
105
106
|
|
|
106
107
|
if 'Content-Length' in self.headers:
|
|
107
108
|
postdata = self.rfile.read(int(self.headers['Content-Length']))
|
|
@@ -137,9 +138,11 @@ class CVProxyRequest(BaseHTTPRequestHandler):
|
|
|
137
138
|
|
|
138
139
|
with tempfile.NamedTemporaryFile(delete=False) as tmp:
|
|
139
140
|
tmp.write(base64.b64decode(data['devices'][device]['configlet'], validate=True))
|
|
140
|
-
|
|
141
|
+
eos_config = CVEosConfig(file=tmp.name, device=device_object, configlet_name=f'AVD-{device}')
|
|
142
|
+
device_deployments.append(CVDeviceDeployment(device=device_object, eos_config=eos_config, device_tags=device_tags, interface_tags=[]))
|
|
143
|
+
tmp_files.append(tmp.name)
|
|
141
144
|
|
|
142
|
-
r = asyncio.run(deploy(cloudvision,
|
|
145
|
+
r = asyncio.run(deploy(cloudvision, device_deployments, change_control, strict_tags=data.get('cv_strict_tags'), delete_workspace=data.get('cv_delete_workspace')))
|
|
143
146
|
|
|
144
147
|
if r.failed:
|
|
145
148
|
r.errors = [str(error) for error in r.errors]
|
|
@@ -168,8 +171,8 @@ class CVProxyRequest(BaseHTTPRequestHandler):
|
|
|
168
171
|
r = ['application/json', 200, json.dumps(response, indent=2)]
|
|
169
172
|
|
|
170
173
|
finally:
|
|
171
|
-
for
|
|
172
|
-
os.remove(
|
|
174
|
+
for f in tmp_files:
|
|
175
|
+
os.remove(f)
|
|
173
176
|
|
|
174
177
|
if r[0] == 'application/json':
|
|
175
178
|
self.status = response['status']
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cvproxy
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.2
|
|
4
4
|
Summary: CVProxy - CloudVision Proxy
|
|
5
5
|
Author-email: Chris Mason <chris@netnix.org>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Requires-Python: >=3.10
|
|
13
13
|
Description-Content-Type: text/markdown
|
|
14
14
|
License-File: LICENSE
|
|
15
|
-
Requires-Dist: pyavd~=6.
|
|
15
|
+
Requires-Dist: pyavd~=6.2.0
|
|
16
16
|
Requires-Dist: jsonschema
|
|
17
17
|
Dynamic: license-file
|
|
18
18
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name = "cvproxy"
|
|
3
3
|
dynamic = ["version"]
|
|
4
4
|
requires-python = ">= 3.10"
|
|
5
|
-
dependencies = ["pyavd~=6.
|
|
5
|
+
dependencies = ["pyavd~=6.2.0", "jsonschema"]
|
|
6
6
|
authors = [{ name = "Chris Mason", email = "chris@netnix.org" }]
|
|
7
7
|
description = "CVProxy - CloudVision Proxy"
|
|
8
8
|
readme = "README.md"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|