opennebula-5.2.1-vncautoport.diff

VNC autoport (some SPICE support) - Roy Keene, 04/23/2017 03:45 PM

Download (6.92 KB)

View differences:

opennebula-5.2.1-vncautoport/src/lcm/LifeCycleActions.cc 2017-04-20 12:04:16.417496645 -0500
907 907

  
908 908
    const VectorAttribute * graphics = vm->get_template_attribute("GRAPHICS");
909 909

  
910
    if ( graphics != 0 && (graphics->vector_value("PORT", port) == 0))
910
    if ( graphics != 0 && (graphics->vector_value("PORT") != "auto" && graphics->vector_value("PORT", port) == 0))
911 911
    {
912 912
        clpool->release_vnc_port(vm->get_cid(), port);
913 913
    }
opennebula-5.2.1-vncautoport/src/lcm/LifeCycleStates.cc 2017-04-20 12:04:25.748497333 -0500
965 965

  
966 966
    const VectorAttribute * graphics = vm->get_template_attribute("GRAPHICS");
967 967

  
968
    if ( graphics != 0 && (graphics->vector_value("PORT", port) == 0))
968
    if ( graphics != 0 && (graphics->vector_value("PORT") != "auto" && graphics->vector_value("PORT", port) == 0))
969 969
    {
970 970
        clpool->release_vnc_port(vm->get_cid(), port);
971 971
    }
opennebula-5.2.1-vncautoport/src/onedb/fsck.rb 2017-04-20 12:21:54.810574684 -0500
812 812

  
813 813
            # VNC ports per cluster
814 814
            cid = vm_doc.root.at_xpath("HISTORY_RECORDS/HISTORY[last()]/CID").text.to_i rescue nil
815
            port = vm_doc.root.at_xpath('TEMPLATE/GRAPHICS[translate(TYPE,"vnc","VNC")="VNC"]/PORT').text.to_i rescue nil
815

  
816
            port = vm_doc.root.at_xpath('TEMPLATE/GRAPHICS[translate(TYPE,"vnc","VNC")="VNC"]/PORT').text rescue nil
817
            if port == "auto"
818
                port = nil
819
            else
820
                port = port.to_i rescue nil
821

  
822
                if port == 0
823
                    port = nil
824
                end
825
            end
816 826

  
817 827
            if cid && port
818 828
                cluster_vnc[cid] ||= Set.new
opennebula-5.2.1-vncautoport/src/onedb/local/4.13.85_to_4.90.0.rb 2017-04-20 12:22:05.782575493 -0500
854 854
      @db.fetch("SELECT * FROM vm_pool WHERE state != 6") do |row|
855 855
        doc = Nokogiri::XML(row[:body],nil,NOKOGIRI_ENCODING){|c| c.default_xml.noblanks}
856 856

  
857
        port = doc.root.at_xpath('TEMPLATE/GRAPHICS[translate(TYPE,"vnc","VNC")="VNC"]/PORT').text.to_i rescue nil
857
        port = doc.root.at_xpath('TEMPLATE/GRAPHICS[translate(TYPE,"vnc","VNC")="VNC"]/PORT').text rescue nil
858
        if port == "auto"
859
            port = nil
860
        else
861
            port = port.to_i rescue nil
862

  
863
            if port == 0
864
                port = nil
865
            end
866
        end
858 867
        cluster_id = doc.root.at_xpath('HISTORY_RECORDS/HISTORY[last()]/CID').text.to_i rescue nil
859 868

  
860 869
        # skip if no port is defined or if it's not assigned to a cluster (not deployed yet!)
opennebula-5.2.1-vncautoport/src/rm/RequestManagerVirtualMachine.cc 2017-04-20 12:02:27.305488600 -0500
708 708
    {
709 709
        return 0;
710 710
    }
711
    else if (graphics->vector_value("PORT") == "auto")
712
    {
713
        return 0;
714
    }
711 715
    else if (graphics->vector_value("PORT", port) == 0)
712 716
    {
713 717
        rc = cpool->set_vnc_port(cluster_id, port);
opennebula-5.2.1-vncautoport/src/vm/VirtualMachine.cc 2017-04-20 12:15:31.279546405 -0500
1309 1309

  
1310 1310
    if ( !graphics->vector_value("PORT").empty() )
1311 1311
    {
1312
        unsigned int port;
1312
        if (graphics->vector_value("PORT") != "auto") {
1313
            unsigned int port;
1314
            int rc = graphics->vector_value("PORT", port);
1313 1315

  
1314
        int rc = graphics->vector_value("PORT", port);
1315

  
1316
        if (rc == -1 || port > 65535 )
1317
        {
1318
            error_str = "Wrong PORT number in GRAPHICS attribute";
1319
            return -1;
1316
            if (rc == -1 || port > 65535 )
1317
            {
1318
                error_str = "Wrong PORT number in GRAPHICS attribute";
1319
                return -1;
1320
            }
1320 1321
        }
1321 1322
    }
1322 1323

  
opennebula-5.2.1-vncautoport/src/vmm/LibVirtDriverKVM.cc 2017-04-20 12:22:36.293577743 -0500
1022 1022

  
1023 1023
            if ( !port.empty() )
1024 1024
            {
1025
                file << " port=" << one_util::escape_xml_attr(port);
1025
                if (port == "auto") {
1026
                    file << " autoport='yes'";
1027
                } else {
1028
                    file << " port=" << one_util::escape_xml_attr(port);
1029
                }
1026 1030
            }
1027 1031

  
1028 1032
            if ( !passwd.empty() )
opennebula-5.2.1-vncautoport/src/vmm_mad/remotes/kvm/poll 2017-04-23 09:09:25.867408643 -0500
418 418

  
419 419
        spice_txt = ''
420 420
        if spice
421
            spice_txt = %Q<GRAPHICS = [ TYPE="spice", PORT="#{spice}" ]>
421
            spice_autoport = spice.attributes['autoport']
422

  
423
            if vnc_autoport == "yes"
424
                spice_txt = %Q<GRAPHICS = [ TYPE="spice", PORT="auto" ]>
425
            else
426
                spice_txt = %Q<GRAPHICS = [ TYPE="spice", PORT="#{spice}" ]>
427
            end
422 428
        end
423 429

  
424 430
        vnc = REXML::XPath.first(doc, "/domain/devices/graphics[@type='vnc']")
......
426 432

  
427 433
        vnc_txt = ''
428 434
        if vnc
429
            vnc_txt = %Q<GRAPHICS = [ TYPE="vnc", PORT="#{vnc}" ]>
435
            vnc_autoport = vnc.attributes['autoport']
436

  
437
            if vnc_autoport == "yes"
438
                vnc_txt = %Q<GRAPHICS = [ TYPE="vnc", PORT="auto" ]>
439
            else
440
                vnc_txt = %Q<GRAPHICS = [ TYPE="vnc", PORT="#{vnc}" ]>
441
            end
430 442
        end
431 443

  
432 444