mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-28 11:18:11 +00:00
Merge branch 'master' into 3.0
# Conflicts: # .github/workflows/testing.yml # Dockerfile # gns3server/version.py
This commit is contained in:
commit
0b200def88
3
.github/workflows/testing.yml
vendored
3
.github/workflows/testing.yml
vendored
@ -13,11 +13,10 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest]
|
|
||||||
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
|
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 2.2.26 08/10/2021
|
||||||
|
|
||||||
|
* Release web UI 2.2.26
|
||||||
|
* Sort symbols by theme. Fixes https://github.com/GNS3/gns3-gui/issues/3230
|
||||||
|
* Fix memory percentage left warning. Fixes #1966
|
||||||
|
* Update affinity symbols. Fixes https://github.com/GNS3/gns3-gui/issues/3232
|
||||||
|
|
||||||
## 2.2.25 14/09/2021
|
## 2.2.25 14/09/2021
|
||||||
|
|
||||||
* Release web UI 2.2.25
|
* Release web UI 2.2.25
|
||||||
|
@ -14,9 +14,8 @@ RUN set -eux \
|
|||||||
&& apk add --no-cache --virtual .build-deps build-base \
|
&& apk add --no-cache --virtual .build-deps build-base \
|
||||||
gcc libc-dev musl-dev linux-headers python3-dev \
|
gcc libc-dev musl-dev linux-headers python3-dev \
|
||||||
vpcs qemu libvirt ubridge \
|
vpcs qemu libvirt ubridge \
|
||||||
&& pip install --upgrade pip setuptools wheel \
|
&& pip install --no-cache-dir --upgrade pip setuptools wheel \
|
||||||
&& pip install -r /gns3server/requirements.txt \
|
&& pip install --no-cache-dir -r /gns3server/requirements.txt
|
||||||
&& rm -rf /root/.cache/pip
|
|
||||||
|
|
||||||
COPY . /gns3server
|
COPY . /gns3server
|
||||||
RUN python3 setup.py install
|
RUN python3 setup.py install
|
||||||
|
@ -26,6 +26,13 @@
|
|||||||
"kvm": "require"
|
"kvm": "require"
|
||||||
},
|
},
|
||||||
"images": [
|
"images": [
|
||||||
|
{
|
||||||
|
"filename": "vEOS-lab-4.26.2F.vmdk",
|
||||||
|
"version": "4.26.2F",
|
||||||
|
"md5sum": "de8ce9750fddb63bd3f71bccfcd7651e",
|
||||||
|
"filesize": 475332608,
|
||||||
|
"download_url": "https://www.arista.com/en/support/software-download"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"filename": "vEOS-lab-4.25.3M.vmdk",
|
"filename": "vEOS-lab-4.25.3M.vmdk",
|
||||||
"version": "4.25.3M",
|
"version": "4.25.3M",
|
||||||
@ -210,6 +217,13 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"versions": [
|
"versions": [
|
||||||
|
{
|
||||||
|
"name": "4.26.2F",
|
||||||
|
"images": {
|
||||||
|
"hda_disk_image": "Aboot-veos-serial-8.0.0.iso",
|
||||||
|
"hdb_disk_image": "vEOS-lab-4.26.2F.vmdk"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "4.25.3M",
|
"name": "4.25.3M",
|
||||||
"images": {
|
"images": {
|
||||||
|
@ -26,12 +26,12 @@
|
|||||||
},
|
},
|
||||||
"images": [
|
"images": [
|
||||||
{
|
{
|
||||||
"filename": "vyos-1.3.0-rc6-amd64.iso",
|
"filename": "vyos-1.3.0-epa1-amd64.iso",
|
||||||
"version": "1.3.0-rc6",
|
"version": "1.3.0-epa1",
|
||||||
"md5sum": "b3939f82a35b23d428ee0ad4ac8be087",
|
"md5sum": "a2aaa5bd3bc5827909d07a18a9de80a7",
|
||||||
"filesize": 331350016,
|
"filesize": 331350016,
|
||||||
"download_url": "https://vyos.net/get/snapshots/",
|
"download_url": "https://vyos.net/get/snapshots/",
|
||||||
"direct_download_url": "https://s3.amazonaws.com/s3-us.vyos.io/snapshot/vyos-1.3.0-rc6/vyos-1.3.0-rc6-amd64.iso"
|
"direct_download_url": "https://s3.amazonaws.com/s3-us.vyos.io/snapshot/vyos-1.3.0-epa1/generic-iso/vyos-1.3.0-epa1-amd64.iso"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename": "vyos-1.2.8-amd64.iso",
|
"filename": "vyos-1.2.8-amd64.iso",
|
||||||
@ -66,10 +66,10 @@
|
|||||||
],
|
],
|
||||||
"versions": [
|
"versions": [
|
||||||
{
|
{
|
||||||
"name": "1.3.0-rc6",
|
"name": "1.3.0-epa1",
|
||||||
"images": {
|
"images": {
|
||||||
"hda_disk_image": "empty8G.qcow2",
|
"hda_disk_image": "empty8G.qcow2",
|
||||||
"cdrom_image": "vyos-1.3.0-rc6-amd64.iso"
|
"cdrom_image": "vyos-1.3.0-epa1-amd64.iso"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -974,7 +974,7 @@ class BaseNode:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
available_ram = int(psutil.virtual_memory().available / (1024 * 1024))
|
available_ram = int(psutil.virtual_memory().available / (1024 * 1024))
|
||||||
percentage_left = psutil.virtual_memory().percent
|
percentage_left = 100 - psutil.virtual_memory().percent
|
||||||
if requested_ram > available_ram:
|
if requested_ram > available_ram:
|
||||||
message = '"{}" requires {}MB of RAM to run but there is only {}MB - {}% of RAM left on "{}"'.format(
|
message = '"{}" requires {}MB of RAM to run but there is only {}MB - {}% of RAM left on "{}"'.format(
|
||||||
self.name, requested_ram, available_ram, percentage_left, platform.node()
|
self.name, requested_ram, available_ram, percentage_left, platform.node()
|
||||||
|
@ -106,8 +106,7 @@ class Symbols:
|
|||||||
theme = "Custom symbols"
|
theme = "Custom symbols"
|
||||||
symbols.append({"symbol_id": symbol_file, "filename": filename, "builtin": False, "theme": theme})
|
symbols.append({"symbol_id": symbol_file, "filename": filename, "builtin": False, "theme": theme})
|
||||||
self._symbols_path[symbol_file] = os.path.join(root, filename)
|
self._symbols_path[symbol_file] = os.path.join(root, filename)
|
||||||
|
symbols.sort(key=lambda x: x["theme"])
|
||||||
symbols.sort(key=lambda x: x["filename"])
|
|
||||||
return symbols
|
return symbols
|
||||||
|
|
||||||
def symbols_path(self):
|
def symbols_path(self):
|
||||||
|
@ -59,7 +59,7 @@ class CrashReport:
|
|||||||
Report crash to a third party service
|
Report crash to a third party service
|
||||||
"""
|
"""
|
||||||
|
|
||||||
DSN = "https://54d3363bab36489fb0f7cbbdda6ca7c5:9f1012f8aa1547f683e00c0aac9b99f6@o19455.ingest.sentry.io/38482"
|
DSN = "https://959feb527c7441068b1bf80301b6e2c4:efa6d99da4c64faa8a7d929360765b40@o19455.ingest.sentry.io/38482"
|
||||||
_instance = None
|
_instance = None
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
File diff suppressed because one or more lines are too long
1
gns3server/static/web-ui/main.6d44bf65eea93810ba85.js
Normal file
1
gns3server/static/web-ui/main.6d44bf65eea93810ba85.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
!function(){"use strict";var e,v={},g={};function n(e){var u=g[e];if(void 0!==u)return u.exports;var t=g[e]={id:e,loaded:!1,exports:{}};return v[e](t,t.exports,n),t.loaded=!0,t.exports}n.m=v,e=[],n.O=function(u,t,a,o){if(!t){var r=1/0;for(i=0;i<e.length;i++){t=e[i][0],a=e[i][1],o=e[i][2];for(var l=!0,f=0;f<t.length;f++)(!1&o||r>=o)&&Object.keys(n.O).every(function(b){return n.O[b](t[f])})?t.splice(f--,1):(l=!1,o<r&&(r=o));if(l){e.splice(i--,1);var s=a();void 0!==s&&(u=s)}}return u}o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[t,a,o]},n.n=function(e){var u=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(u,{a:u}),u},n.d=function(e,u){for(var t in u)n.o(u,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:u[t]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce(function(u,t){return n.f[t](e,u),u},[]))},n.u=function(e){return e+".30249f0e3aeb3f791226.js"},n.miniCssF=function(e){return"styles.bc7659e2cee2695de64b.css"},n.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},n.o=function(e,u){return Object.prototype.hasOwnProperty.call(e,u)},function(){var e={},u="gns3-web-ui:";n.l=function(t,a,o,i){if(e[t])e[t].push(a);else{var r,l;if(void 0!==o)for(var f=document.getElementsByTagName("script"),s=0;s<f.length;s++){var c=f[s];if(c.getAttribute("src")==t||c.getAttribute("data-webpack")==u+o){r=c;break}}r||(l=!0,(r=document.createElement("script")).charset="utf-8",r.timeout=120,n.nc&&r.setAttribute("nonce",n.nc),r.setAttribute("data-webpack",u+o),r.src=n.tu(t)),e[t]=[a];var d=function(h,b){r.onerror=r.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],r.parentNode&&r.parentNode.removeChild(r),_&&_.forEach(function(m){return m(b)}),h)return h(b)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=d.bind(null,r.onerror),r.onload=d.bind(null,r.onload),l&&document.head.appendChild(r)}}}(),n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e;n.tu=function(u){return void 0===e&&(e={createScriptURL:function(t){return t}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e.createScriptURL(u)}}(),n.p="",function(){var e={666:0};n.f.j=function(a,o){var i=n.o(e,a)?e[a]:void 0;if(0!==i)if(i)o.push(i[2]);else if(666!=a){var r=new Promise(function(c,d){i=e[a]=[c,d]});o.push(i[2]=r);var l=n.p+n.u(a),f=new Error;n.l(l,function(c){if(n.o(e,a)&&(0!==(i=e[a])&&(e[a]=void 0),i)){var d=c&&("load"===c.type?"missing":c.type),p=c&&c.target&&c.target.src;f.message="Loading chunk "+a+" failed.\n("+d+": "+p+")",f.name="ChunkLoadError",f.type=d,f.request=p,i[1](f)}},"chunk-"+a,a)}else e[a]=0},n.O.j=function(a){return 0===e[a]};var u=function(a,o){var f,s,i=o[0],r=o[1],l=o[2],c=0;for(f in r)n.o(r,f)&&(n.m[f]=r[f]);if(l)var d=l(n);for(a&&a(o);c<i.length;c++)n.o(e,s=i[c])&&e[s]&&e[s][0](),e[i[c]]=0;return n.O(d)},t=self.webpackChunkgns3_web_ui=self.webpackChunkgns3_web_ui||[];t.forEach(u.bind(null,0)),t.push=u.bind(null,t.push.bind(t))}()}();
|
!function(){"use strict";var e,v={},g={};function n(e){var u=g[e];if(void 0!==u)return u.exports;var t=g[e]={id:e,loaded:!1,exports:{}};return v[e](t,t.exports,n),t.loaded=!0,t.exports}n.m=v,e=[],n.O=function(u,t,a,o){if(!t){var r=1/0;for(i=0;i<e.length;i++){t=e[i][0],a=e[i][1],o=e[i][2];for(var l=!0,f=0;f<t.length;f++)(!1&o||r>=o)&&Object.keys(n.O).every(function(b){return n.O[b](t[f])})?t.splice(f--,1):(l=!1,o<r&&(r=o));if(l){e.splice(i--,1);var s=a();void 0!==s&&(u=s)}}return u}o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[t,a,o]},n.n=function(e){var u=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(u,{a:u}),u},n.d=function(e,u){for(var t in u)n.o(u,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:u[t]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce(function(u,t){return n.f[t](e,u),u},[]))},n.u=function(e){return e+".eace20bb0639f4909f27.js"},n.miniCssF=function(e){return"styles.bf28628fcb2844ad74bd.css"},n.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},n.o=function(e,u){return Object.prototype.hasOwnProperty.call(e,u)},function(){var e={},u="gns3-web-ui:";n.l=function(t,a,o,i){if(e[t])e[t].push(a);else{var r,l;if(void 0!==o)for(var f=document.getElementsByTagName("script"),s=0;s<f.length;s++){var c=f[s];if(c.getAttribute("src")==t||c.getAttribute("data-webpack")==u+o){r=c;break}}r||(l=!0,(r=document.createElement("script")).charset="utf-8",r.timeout=120,n.nc&&r.setAttribute("nonce",n.nc),r.setAttribute("data-webpack",u+o),r.src=n.tu(t)),e[t]=[a];var d=function(h,b){r.onerror=r.onload=null,clearTimeout(p);var _=e[t];if(delete e[t],r.parentNode&&r.parentNode.removeChild(r),_&&_.forEach(function(m){return m(b)}),h)return h(b)},p=setTimeout(d.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=d.bind(null,r.onerror),r.onload=d.bind(null,r.onload),l&&document.head.appendChild(r)}}}(),n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e;n.tu=function(u){return void 0===e&&(e={createScriptURL:function(t){return t}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e.createScriptURL(u)}}(),n.p="",function(){var e={666:0};n.f.j=function(a,o){var i=n.o(e,a)?e[a]:void 0;if(0!==i)if(i)o.push(i[2]);else if(666!=a){var r=new Promise(function(c,d){i=e[a]=[c,d]});o.push(i[2]=r);var l=n.p+n.u(a),f=new Error;n.l(l,function(c){if(n.o(e,a)&&(0!==(i=e[a])&&(e[a]=void 0),i)){var d=c&&("load"===c.type?"missing":c.type),p=c&&c.target&&c.target.src;f.message="Loading chunk "+a+" failed.\n("+d+": "+p+")",f.name="ChunkLoadError",f.type=d,f.request=p,i[1](f)}},"chunk-"+a,a)}else e[a]=0},n.O.j=function(a){return 0===e[a]};var u=function(a,o){var f,s,i=o[0],r=o[1],l=o[2],c=0;for(f in r)n.o(r,f)&&(n.m[f]=r[f]);if(l)var d=l(n);for(a&&a(o);c<i.length;c++)n.o(e,s=i[c])&&e[s]&&e[s][0](),e[i[c]]=0;return n.O(d)},t=self.webpackChunkgns3_web_ui=self.webpackChunkgns3_web_ui||[];t.forEach(u.bind(null,0)),t.push=u.bind(null,t.push.bind(t))}()}();
|
File diff suppressed because one or more lines are too long
11
gns3server/static/web-ui/styles.bf28628fcb2844ad74bd.css
Normal file
11
gns3server/static/web-ui/styles.bf28628fcb2844ad74bd.css
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 77 KiB |
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 77 KiB |
Loading…
Reference in New Issue
Block a user