1 {% extends
"base.html" %}
9 <!-- Codemirror core CSS -->
10 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/lib/codemirror.css">
11 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/addon/fold/foldgutter.css" />
12 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/theme/neat.css">
13 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/addon/dialog/dialog.css">
14 <link rel=
"stylesheet" href=
"/static/bower_components/codemirror/addon/display/fullscreen.css">
15 <link rel=
"stylesheet" href=
"/static/bower_components/select2/dist/css/select2.min.css">
16 <link rel=
"stylesheet" href=
"/static/css/lwuitable.css">
17 <link rel=
"stylesheet" href=
"/static/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css">
19 {% block title_header_big %}
22 {% block left_sidebar %}
23 {% include 'osm/osm_project_left_sidebar.html' %}
27 {% block breadcrumb_body %}
29 <li><a href=
"{% url 'instances:list' type=type %}">{{ type|upper }} Instances
</a></li>
32 {% block content_body %}
34 {% include 'modal/instance_create.html' %}
37 <div class=
"col-md-12">
40 {% include 'instance_list_ns.html' %}
41 {% elif type == 'vnf' %}
42 {% include 'instance_list_vnf.html' %}
43 {% elif type == 'pdu' %}
44 {% include 'instance_list_pdu.html' %}
45 {% elif type == 'nsi' %}
46 {% include 'instance_list_nsi.html' %}
52 {% include 'modal/instance_create.html' %}
53 {% include 'modal/instance_create_pdu.html' %}
54 {% include 'modal/instance_create_nsi.html' %}
55 {% include 'modal/instance_show.html' %}
56 {% include 'modal/instance_new_action.html' %}
57 {% include 'modal/instance_new_alarm.html' %}
58 {% include 'modal/instance_export_metric.html' %}
61 {% block resource_block %}
64 <script src=
"/static/bower_components/select2/dist/js/select2.js"></script>
65 <script src=
"/static/bower_components/codemirror/lib/codemirror.js"></script>
66 <script src=
"/static/bower_components/codemirror/addon/fold/foldcode.js"></script>
67 <script src=
"/static/bower_components/codemirror/addon/fold/foldgutter.js"></script>
68 <script src=
"/static/bower_components/codemirror/addon/fold/brace-fold.js"></script>
69 <script src=
"/static/bower_components/codemirror/mode/javascript/javascript.js"></script>
70 <script src=
"/static/bower_components/codemirror/addon/search/searchcursor.js"></script>
71 <script src=
"/static/bower_components/codemirror/addon/search/search.js"></script>
72 <script src=
"/static/bower_components/codemirror/addon/dialog/dialog.js"></script>
73 <script src=
"/static/bower_components/codemirror/addon/display/autorefresh.js"></script>
74 <script src=
"/static/bower_components/codemirror/addon/edit/matchbrackets.js"></script>
75 <script src=
"/static/bower_components/codemirror/addon/edit/closebrackets.js"></script>
76 <script src=
"/static/bower_components/codemirror/addon/display/fullscreen.js"></script>
77 <script src=
"/static/bower_components/codemirror/keymap/sublime.js"></script>
78 <script src=
"/static/src/instancehandler/instance_list.js"></script>
79 <script src=
"/static/src/instancehandler/instance_create.js"></script>
80 <script src=
"/static/bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
81 <script src=
"/static/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
85 var instance_type = '{{ type }}';
89 "render": function (data, type, row) {
90 return row[
"short-name"];
95 "render": function (data, type, row) {
101 "render": function (data, type, row) {
102 return row[
"nsd-name-ref"];
108 "render": function (data, type, row) {
109 if(row[
"operational-status"] === 'failed')
110 return '
<span class=
"label label-danger">'+ row[
"operational-status"] +'
</span>';
111 if(row[
"operational-status"] === 'init')
112 return '
<span class=
"label label-warning">'+ row[
"operational-status"] +'
</span>';
113 if(row[
"operational-status"] === 'running')
114 return '
<span class=
"label label-success">'+ row[
"operational-status"] +'
</span>';
115 return ''+row[
"operational-status"]+'';
121 "render": function (data, type, row) {
122 if(row[
"config-status"] === 'failed')
123 return '
<span class=
"label label-danger">'+ row[
"config-status"] +'
</span>';
124 if(row[
"config-status"] === 'init')
125 return '
<span class=
"label label-warning">'+ row[
"config-status"] +'
</span>';
126 if(row[
"config-status"] === 'running')
127 return '
<span class=
"label label-success">'+ row[
"config-status"] +'
</span>';
128 if(row[
"config-status"] === 'configured')
129 return '
<span class=
"label label-success">'+ row[
"config-status"] +'
</span>';
130 return ''+row[
"operational-status"]+'';
135 //
"className":
"ellipsis",
136 "render": function (data, type, row) {
137 return row[
"detailed-status"];
142 "render": function (data, type, row) {
143 var template = '
<div class=
"btn-group">' +
144 '
<button type=
"button" class=
"btn btn-default"' +
145 '
onclick=
"javascript:showInstanceDetails(\''+instance_type+'\', \''+row["_id
"]+'\')"' +
146 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Show Info">' +
147 '
<i class=
"fa fa-info"></i>';
148 if (row[
"operational-status"] ===
"running") {
149 template += '
<button type=
"button" class=
"btn btn-default"' +
150 '
onclick=
"javascript:showTopology(\'' + instance_type + '\', \'' + row["_id
"] + '\')"' +
151 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Show Graph">' +
152 '
<i class=
"fa fa-sitemap"></i>' +
155 template += '
<button type=
"button" disabled
class=
"btn btn-default"' +
156 '
onclick=
"javascript:showTopology(\'' + instance_type + '\', \'' + row["_id
"] + '\')"' +
157 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Show Graph">' +
158 '
<i class=
"fa fa-sitemap"></i>' +
161 template += '
<button type=
"button" class=
"btn btn-default"' +
162 '
onclick=
"javascript:deleteNs(\''+ row["short-name
"] +'\', \''+row["_id
"]+'\')"' +
163 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Delete"><i' +
164 '
class=
"far fa-trash-alt"></i></button>' +
165 '
<button type=
"button" class=
"btn btn-default dropdown-toggle"' +
166 '
data-toggle=
"dropdown" aria-expanded=
"false">Actions' +
167 '
<span class=
"fa fa-caret-down"></span></button>' +
168 '
<ul class=
"dropdown-menu">' +
170 '
onclick=
"javascript:performAction(\''+ row["short-name
"] +'\', \''+row["_id
"]+'\')">' +
171 '
<i class=
"fa fa-magic"></i> Exec NS Primitive
</a></li>' +
173 '
<a href=
"/instances/ns/' +row["_id
"] +'/operation">' +
174 '
<i class=
"fa fa-list"></i> History of operations
</a></li>' +
175 '
<li class=
"divider"></li>' +
177 '
<a href=
"javascript:deleteNs(\''+ row["short-name
"] +'\', \''+row["_id
"]+'\', true)">' +
178 '
<i class=
"far fa-trash-alt" style=
"color:red" ></i> Force delete
</a></li>' +
190 "render": function (data, type, row) {
196 "render": function (data, type, row) {
197 return '
<a href=
"javascript:openDescriptorView(\'vnfd\', \'' + row["vnfd-id
"]+'\')"> ' + row[
"vnfd-ref"] +'
</a>';
202 "render": function (data, type, row) {
203 return row[
"member-vnf-index-ref"];
208 "render": function (data, type, row) {
209 return row[
"nsr-id-ref"];
214 "render": function (data, type, row) {
215 return moment.unix(row['created-time']).format('YYYY-MM-DD hh:mm:ss a');
220 "render": function (data, type, row) {
221 return '
<div class=
"btn-group">' +
222 '
<button type=
"button" class=
"btn btn-default"' +
223 '
onclick=
"javascript:showInstanceDetails(\''+instance_type+'\', \''+row["_id
"]+'\')"' +
224 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Show Info">' +
225 '
<i class=
"fa fa-info"></i>' +
235 "render": function (data, type, row) {
241 "render": function (data, type, row) {
247 "render": function (data, type, row) {
253 "render": function (data, type, row) {
254 return row['_admin']['usageState'];
259 "render": function (data, type, row) {
260 return moment.unix(row['_admin']['created']).format('YYYY-MM-DD hh:mm:ss a');
265 "render": function (data, type, row) {
266 return '
<div class=
"btn-group">' +
267 '
<button type=
"button" class=
"btn btn-default"' +
268 '
onclick=
"javascript:showInstanceDetails(\''+instance_type+'\', \''+row["_id
"]+'\')"' +
269 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Show Info">' +
270 '
<i class=
"fa fa-info"></i>' +
272 '
<button type=
"button" class=
"btn btn-default"' +
273 '
onclick=
"javascript:deletePDU(\''+ row["name
"] +'\', \''+row["_id
"]+'\')"' +
274 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Delete"><i' +
275 '
class=
"far fa-trash-alt"></i></button>'+
284 "render": function (data, type, row) {
290 "render": function (data, type, row) {
296 "render": function (data, type, row) {
297 return row[
"nst-ref"];
303 "render": function (data, type, row) {
304 if(row[
"operational-status"] === 'failed')
305 return '
<span class=
"label label-danger">'+ row[
"operational-status"] +'
</span>';
306 if(row[
"operational-status"] === 'init')
307 return '
<span class=
"label label-warning">'+ row[
"operational-status"] +'
</span>';
308 if(row[
"operational-status"] === 'running')
309 return '
<span class=
"label label-success">'+ row[
"operational-status"] +'
</span>';
310 return ''+row[
"operational-status"]+'';
316 "render": function (data, type, row) {
317 if(row[
"config-status"] === 'failed')
318 return '
<span class=
"label label-danger">'+ row[
"config-status"] +'
</span>';
319 if(row[
"config-status"] === 'init')
320 return '
<span class=
"label label-warning">'+ row[
"config-status"] +'
</span>';
321 if(row[
"config-status"] === 'running')
322 return '
<span class=
"label label-success">'+ row[
"config-status"] +'
</span>';
323 if(row[
"config-status"] === 'configured')
324 return '
<span class=
"label label-success">'+ row[
"config-status"] +'
</span>';
325 return ''+row[
"operational-status"]+'';
330 //
"className":
"ellipsis",
331 "render": function (data, type, row) {
332 return row[
"detailed-status"];
337 "render": function (data, type, row) {
338 var template = '
<div class=
"btn-group">' +
339 '
<button type=
"button" class=
"btn btn-default"' +
340 '
onclick=
"javascript:showInstanceDetails(\''+instance_type+'\', \''+row["_id
"]+'\')"' +
341 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Show Info">' +
342 '
<i class=
"fa fa-info"></i>';
343 /* if (row[
"operational-status"] ===
"running") {
344 template += '
<button type=
"button" class=
"btn btn-default"' +
345 '
onclick=
"javascript:showTopology(\'' + instance_type + '\', \'' + row["_id
"] + '\')"' +
346 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Show Graph">' +
347 '
<i class=
"fa fa-sitemap"></i>' +
350 template += '
<button type=
"button" disabled
class=
"btn btn-default"' +
351 '
onclick=
"javascript:showTopology(\'' + instance_type + '\', \'' + row["_id
"] + '\')"' +
352 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Show Graph">' +
353 '
<i class=
"fa fa-sitemap"></i>' +
356 template += '
<button type=
"button" class=
"btn btn-default"' +
357 '
onclick=
"javascript:deleteNsi(\''+ row["name
"] +'\', \''+row["_id
"]+'\')"' +
358 '
data-toggle=
"tooltip" data-placement=
"top" data-container=
"body" title=
"Delete"><i' +
359 '
class=
"far fa-trash-alt"></i></button>' +
360 '
<button type=
"button" class=
"btn btn-default dropdown-toggle"' +
361 '
data-toggle=
"dropdown" aria-expanded=
"false">Actions' +
362 '
<span class=
"fa fa-caret-down"></span></button>' +
363 '
<ul class=
"dropdown-menu">' +
365 '
<a href=
"/instances/nsi/' +row["_id
"] +'/operation">' +
366 '
<i class=
"fa fa-list"></i> History of operations
</a></li>' +
367 '
<li class=
"divider"></li>' +
370 '
<a href=
"javascript:deleteNsi(\''+ row["name
"] +'\', \''+row["_id
"]+'\', true)">' +
371 '
<i class=
"far fa-trash-alt" style=
"color:red" ></i> Force delete
</a></li>' +
382 $(document).ready(function () {
383 table = $('#instances_table').DataTable({
386 "url":
"/instances/" + instance_type +
"/list/",
387 "dataSrc": function (json) {
388 return json.instances;
392 console.log(
"no auth");
393 moveToLogin(window.location.pathname);
396 "error": function(hxr, error, thrown){
401 "columns": row_builder[instance_type]
405 setInterval(function () {
417 {% include
"footer.html" %}