summaryrefslogtreecommitdiffstats
path: root/app/server-control/controllers/kvm-controller.js
blob: a43f169ddf19123c25f50747f5734f9fc0d39c49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/**
 * Controller for KVM (Kernel-based Virtual Machine)
 *
 * @module app/serverControl
 * @exports kvmController
 * @name kvmController
 */

import RFB from '@novnc/novnc/core/rfb.js';

window.angular && (function(angular) {
  'use strict';

  angular.module('app.serverControl').controller('kvmController', [
    '$scope', '$location', '$log',
    function($scope, $location, $log) {
      var rfb;

      $scope.$on('$destroy', function() {
        if (rfb) {
          rfb.disconnect();
        }
      });

      function sendCtrlAltDel() {
        rfb.sendCtrlAltDel();
        return false;
      };

      function connected(e) {
        $log.debug('RFB Connected');
      }
      function disconnected(e) {
        $log.debug('RFB disconnected');
      }

      var host = $location.host();
      var port = $location.port();
      var target =
          angular.element(document.querySelector('#noVNC_container'))[0];

      try {
        rfb = new RFB(target, 'wss://' + host + ':' + port + '/kvm/0', {});

        rfb.addEventListener('connect', connected);
        rfb.addEventListener('disconnect', disconnected);
      } catch (exc) {
        $log.error(exc);
        updateState(
            null, 'fatal', null, 'Unable to create RFB client -- ' + exc);
        return;  // don't continue trying to connect
      };
    }
  ]);
})(angular);
OpenPOWER on IntegriCloud