Example #1
0
def get_console(request, vm, args):
    # Normal Response Code: 200
    # Error Response Codes: computeFault (400, 500),
    #                       serviceUnavailable (503),
    #                       unauthorized (401),
    #                       badRequest (400),
    #                       badMediaType(415),
    #                       itemNotFound (404),
    #                       buildInProgress (409),
    #                       overLimit (413)

    log.info("Get console  VM %s: %s", vm, args)

    console_type = args.get("type")
    if console_type is None:
        raise faults.BadRequest("No console 'type' specified.")

    supported_types = ['vnc', 'vnc-ws', 'vnc-wss']
    if console_type not in supported_types:
        raise faults.BadRequest('Supported types: %s' %
                                ', '.join(supported_types))

    console_info = servers.console(vm, console_type)

    if request.serialization == 'xml':
        mimetype = 'application/xml'
        data = render_to_string('console.xml', {'console': console_info})
    else:
        mimetype = 'application/json'
        data = json.dumps({'console': console_info})

    return HttpResponse(data, mimetype=mimetype, status=200)
Example #2
0
def get_console(request, vm, args):
    # Normal Response Code: 200
    # Error Response Codes: computeFault (400, 500),
    #                       serviceUnavailable (503),
    #                       unauthorized (401),
    #                       badRequest (400),
    #                       badMediaType(415),
    #                       itemNotFound (404),
    #                       buildInProgress (409),
    #                       overLimit (413)

    log.debug("User: %s, VM: %s, Action: get_console, Request: %s",
              request.user_uniq, vm.id, args)

    console_type = args.get("type")
    if console_type is None:
        raise faults.BadRequest("No console 'type' specified.")

    supported_types = ['vnc', 'vnc-ws', 'vnc-wss']
    if console_type not in supported_types:
        raise faults.BadRequest('Supported types: %s' %
                                ', '.join(supported_types))

    console_info = servers.console(vm, console_type)

    if request.serialization == 'xml':
        mimetype = 'application/xml'
        data = render_to_string('console.xml', {'console': console_info})
    else:
        mimetype = 'application/json'
        data = json.dumps({'console': console_info})

    log.info("User %s got console for VM %s", request.user_uniq, vm.id)

    return HttpResponse(data, mimetype=mimetype, status=200)
Example #3
0
def get_console(request, vm, args):
    # Normal Response Code: 200
    # Error Response Codes: computeFault (400, 500),
    #                       serviceUnavailable (503),
    #                       unauthorized (401),
    #                       badRequest (400),
    #                       badMediaType(415),
    #                       itemNotFound (404),
    #                       buildInProgress (409),
    #                       overLimit (413)

    log.info("Get console  VM %s: %s", vm, args)

    console_type = args.get("type")
    if console_type is None:
        raise faults.BadRequest("No console 'type' specified.")
    elif console_type != "vnc":
        raise faults.BadRequest("Console 'type' can only be 'vnc'.")
    console_info = servers.console(vm, console_type)

    if request.serialization == 'xml':
        mimetype = 'application/xml'
        data = render_to_string('console.xml', {'console': console_info})
    else:
        mimetype = 'application/json'
        data = json.dumps({'console': console_info})

    return HttpResponse(data, mimetype=mimetype, status=200)
Example #4
0
def os_get_vnc_console(request, server_id, args):
    # Normal Response Code: 200
    # Error Response Codes: computeFault (400, 500),
    #                       serviceUnavailable (503),
    #                       unauthorized (401),
    #                       badRequest (400),
    #                       badMediaType(415),
    #                       itemNotFound (404),
    #                       buildInProgress (409),
    #                       overLimit (413)

    credentials = request.credentials
    log.debug("User: %s, VM: %s, Action: get_osVNC console, Request: %s",
              credentials.userid, server_id, args)

    console_type = args.get('type')
    if console_type is None:
        raise faults.BadRequest("No console 'type' specified.")

    supported_types = {'novnc': 'vnc-wss', 'xvpvnc': 'vnc'}
    if console_type not in supported_types:
        raise faults.BadRequest('Supported types: %s' %
                                ', '.join(supported_types.keys()))

    console_info = servers.console(server_id,
                                   supported_types[console_type],
                                   credentials=credentials)

    global machines_console_url
    if machines_console_url is None:
        machines_console_url = reverse('synnefo.ui.views.machines_console')

    if console_type == 'novnc':
        # Return the URL of the WebSocket noVNC client
        url = settings.CYCLADES_BASE_URL + machines_console_url
        url += '?host=%(host)s&port=%(port)s&password=%(password)s'
    else:
        # Return a URL to paste into a Java VNC client
        # FIXME: VNC clients (and the TigerVNC Java applet) can't handle the
        # password.
        url = '%(host)s:%(port)s?password=%(password)s'

    resp = {'type': console_type, 'url': url % console_info}

    if request.serialization == 'xml':
        mimetype = 'application/xml'
        data = render_to_string('os-console.xml', {'console': resp})
    else:
        mimetype = 'application/json'
        data = json.dumps({'console': resp})

    log.info("User %s got VNC console for VM %s", credentials.userid,
             server_id)

    return HttpResponse(data, content_type=mimetype, status=200)
Example #5
0
def os_get_vnc_console(request, server_id, args):
    # Normal Response Code: 200
    # Error Response Codes: computeFault (400, 500),
    #                       serviceUnavailable (503),
    #                       unauthorized (401),
    #                       badRequest (400),
    #                       badMediaType(415),
    #                       itemNotFound (404),
    #                       buildInProgress (409),
    #                       overLimit (413)

    credentials = request.credentials
    log.debug("User: %s, VM: %s, Action: get_osVNC console, Request: %s",
              credentials.userid, server_id, args)

    console_type = args.get('type')
    if console_type is None:
        raise faults.BadRequest("No console 'type' specified.")

    supported_types = {'novnc': 'vnc-wss', 'xvpvnc': 'vnc'}
    if console_type not in supported_types:
        raise faults.BadRequest('Supported types: %s' %
                                ', '.join(supported_types.keys()))

    console_info = servers.console(server_id, supported_types[console_type],
                                   credentials=credentials)

    global machines_console_url
    if machines_console_url is None:
        machines_console_url = reverse('synnefo.ui.views.machines_console')

    if console_type == 'novnc':
        # Return the URL of the WebSocket noVNC client
        url = settings.CYCLADES_BASE_URL + machines_console_url
        url += '?host=%(host)s&port=%(port)s&password=%(password)s'
    else:
        # Return a URL to paste into a Java VNC client
        # FIXME: VNC clients (and the TigerVNC Java applet) can't handle the
        # password.
        url = '%(host)s:%(port)s?password=%(password)s'

    resp = {'type': console_type,
            'url': url % console_info}

    if request.serialization == 'xml':
        mimetype = 'application/xml'
        data = render_to_string('os-console.xml', {'console': resp})
    else:
        mimetype = 'application/json'
        data = json.dumps({'console': resp})

    log.info("User %s got VNC console for VM %s",
             credentials.userid, server_id)

    return HttpResponse(data, content_type=mimetype, status=200)