device_status.html 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. {% extends '_base.html' %}
  2. {% load staticfiles %}
  3. {% block title %}{{ device }} - Status{% endblock %}
  4. {% block content %}
  5. {% include 'inc/ajax_loader.html' %}
  6. {% include 'dcim/inc/device_header.html' with active_tab='status' %}
  7. <div class="row">
  8. <div class="col-md-6">
  9. <div class="panel panel-default">
  10. <div class="panel-heading"><strong>Device Facts</strong></div>
  11. <table class="table panel-body">
  12. <tr>
  13. <th>Hostname</th>
  14. <td id="hostname"></td>
  15. </tr>
  16. <tr>
  17. <th>FQDN</th>
  18. <td id="fqdn"></td>
  19. </tr>
  20. <tr>
  21. <th>Vendor</th>
  22. <td id="vendor"></td>
  23. </tr>
  24. <tr>
  25. <th>Model</th>
  26. <td id="model"></td>
  27. </tr>
  28. <tr>
  29. <th>Serial Number</th>
  30. <td id="serial_number"></td>
  31. </tr>
  32. <tr>
  33. <th>OS Version</th>
  34. <td id="os_version"></td>
  35. </tr>
  36. <tr>
  37. <th>Uptime</th>
  38. <td id="uptime"></td>
  39. </tr>
  40. </table>
  41. </div>
  42. </div>
  43. <div class="col-md-6">
  44. <div class="panel panel-default">
  45. <div class="panel-heading"><strong>Environment</strong></div>
  46. <table class="table panel-body">
  47. <tr id="cpu">
  48. <th colspan="2"><i class="fa fa-tachometer"></i> CPU</th>
  49. </tr>
  50. <tr id="memory">
  51. <th colspan="2"><i class="fa fa-microchip"></i> Memory</th>
  52. </tr>
  53. <tr id="temperature">
  54. <th colspan="2"><i class="fa fa-thermometer"></i> Temperature</th>
  55. </tr>
  56. <tr id="fans">
  57. <th colspan="2"><i class="fa fa-superpowers"></i> Fans</th>
  58. </tr>
  59. <tr id="power">
  60. <th colspan="2"><i class="fa fa-bolt"></i> Power</th>
  61. </tr>
  62. </table>
  63. </div>
  64. </div>
  65. </div>
  66. {% endblock %}
  67. {% block javascript %}
  68. <script type="text/javascript">
  69. $(document).ready(function() {
  70. $.ajax({
  71. url: "{% url 'dcim-api:device-napalm' pk=device.pk %}?method=get_facts&method=get_environment",
  72. dataType: 'json',
  73. success: function(json) {
  74. $('#hostname').html(json['get_facts']['hostname']);
  75. $('#fqdn').html(json['get_facts']['fqdn']);
  76. $('#vendor').html(json['get_facts']['vendor']);
  77. $('#model').html(json['get_facts']['model']);
  78. $('#serial_number').html(json['get_facts']['serial_number']);
  79. $('#os_version').html(json['get_facts']['os_version']);
  80. $('#uptime').html(json['get_facts']['uptime']);
  81. $.each(json['get_environment']['cpu'], function(name, obj) {
  82. var row="<tr><td>" + name + "</td><td>" + obj['%usage'] + "%</td></tr>";
  83. $("#cpu").after(row)
  84. });
  85. $('#memory').after("<tr><td>Used</td><td>" + json['get_environment']['memory']['used_ram'] + "MB</td></tr>");
  86. $('#memory').after("<tr><td>Available</td><td>" + json['get_environment']['memory']['available_ram'] + "MB</td></tr>");
  87. $.each(json['get_environment']['temperature'], function(name, obj) {
  88. var style = "success";
  89. if (obj['is_alert']) {
  90. style = "warning";
  91. } else if (obj['is_critical']) {
  92. style = "danger";
  93. }
  94. var row="<tr class=\"" + style +"\"><td>" + name + "</td><td>" + obj['temperature'] + "°C</td></tr>";
  95. $("#temperature").after(row)
  96. });
  97. $.each(json['get_environment']['fans'], function(name, obj) {
  98. var row;
  99. if (obj['status']) {
  100. row="<tr class=\"success\"><td>" + name + "</td><td><i class=\"fa fa-check text-success\"></i></td></tr>";
  101. } else {
  102. row="<tr class=\"error\"><td>" + name + "</td><td><i class=\"fa fa-close text-error\"></i></td></tr>";
  103. }
  104. $("#fans").after(row)
  105. });
  106. $.each(json['get_environment']['power'], function(name, obj) {
  107. var row;
  108. if (obj['status']) {
  109. row="<tr class=\"success\"><td>" + name + "</td><td><i class=\"fa fa-check text-success\"></i></td></tr>";
  110. } else {
  111. row="<tr class=\"danger\"><td>" + name + "</td><td><i class=\"fa fa-close text-danger\"></i></td></tr>";
  112. }
  113. $("#power").after(row)
  114. });
  115. },
  116. error: function(xhr) {
  117. alert(xhr.responseText);
  118. }
  119. });
  120. });
  121. </script>
  122. {% endblock %}