Migrate windows vmware vm error: No bootable device

What happened:
A clear and concise description of what the bug is.

vmware vm:

windows version: windows 2019
virtio driver:

What you expected to happen:
A clear and concise description of what you expected to happen.
Migrate windows vmware vm error: No bootable device
vm.yaml
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  annotations:
    kubevirt.io/latest-observed-api-version: v1
    kubevirt.io/storage-observed-api-version: v1
    virtnest.io/alias-name: ""
    virtnest.io/image-secret: ""
  finalizers:
  - kubevirt.io/virtualMachineControllerFinalize
  labels:
    virtnest.io/os-family: windows
    virtnest.io/os-version: "server2019"
  name: export-window
  namespace: default
spec:
  dataVolumeTemplates:
  - metadata:
      creationTimestamp: null
      name: export-window-rootdisk
      namespace: default
    spec:
      pvc:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 42Gi
        storageClassName: local-path
      source:
        vddk:
          backingFile: "[LOCAL-RAID5-10-6-10-1] virtnest-export-window-1/virtnest-export-window-1.vmdk"
          url: "https://<IP_ADDRESS>"
          uuid: "4234434b-41e3-d0bf-4cbe-8b550b30120e"
          thumbprint: "C3:9D:D7:55:6A:43:11:2B:DE:BA:27:EA:3B:C2:13:AF:E4:12:62:4D"
          secretRef: "vsphere"
          initImageURL: "virtnest/vddk:v1"
  runStrategy: Manual
  template:
    spec:
      architecture: amd64
      domain:
        cpu:
          cores: 4
        devices:
          disks:
          - bootOrder: 1
            disk:
              bus: virtio
            name: rootdisk
          interfaces:
            - masquerade: {}
              name: default
        machine:
          type: q35
        resources:
          requests:
            memory: 4Gi
      networks:
        - name: default
          pod: {}
      volumes:
      - dataVolume:
          name: export-window-rootdisk
        name: rootdisk

How to reproduce it (as minimally and precisely as possible):
Steps to reproduce the behavior.
Additional context:
Add any other context about the problem here.
Environment:

KubeVirt version (use virtctl version): v1.2.2
Kubernetes version (use kubectl version): v1.29.0
VM or VMI specifications:

apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
metadata:
  annotations:
    kubevirt.io/latest-observed-api-version: v1
    kubevirt.io/storage-observed-api-version: v1
    kubevirt.io/vm-generation: "2"
  creationTimestamp: "2024-06-20T09:22:48Z"
  finalizers:
  - kubevirt.io/virtualMachineControllerFinalize
  - foregroundDeleteVirtualMachine
  generation: 12
  labels:
    kubevirt.io/nodeName: controller-node-1
  name: export-window
  namespace: default
  ownerReferences:
  - apiVersion: kubevirt.io/v1
    blockOwnerDeletion: true
    controller: true
    kind: VirtualMachine
    name: export-window
    uid: 37d2a9a0-37f7-4a7a-b6d2-d1537410f3d2
  resourceVersion: "826788"
  uid: 7c0de365-2b43-4386-ac6c-b7be70045762
spec:
  architecture: amd64
  domain:
    cpu:
      cores: 4
      maxSockets: 4
      model: host-model
    devices:
      disks:
      - bootOrder: 1
        disk:
          bus: virtio
        name: rootdisk
      interfaces:
      - masquerade: {}
        name: default
    features:
      acpi:
        enabled: true
    firmware:
      uuid: 93901a4c-9eaf-5cc4-95ad-7cbc9888f884
    machine:
      type: q35
    resources:
      requests:
        memory: 4Gi
  evictionStrategy: None
  networks:
  - name: default
    pod: {}
  volumes:
  - dataVolume:
      name: export-window-rootdisk
    name: rootdisk
status:
  activePods:
    03310c2a-d1e4-4da8-8c76-6691454f9dd3: controller-node-1
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2024-06-20T09:27:25Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: null
    message: All of the VMI's DVs are bound and not running
    reason: AllDVsReady
    status: "True"
    type: DataVolumesReady
  - lastProbeTime: null
    lastTransitionTime: null
    message: 'cannot migrate VMI: PVC export-window-rootdisk is not shared, live migration
      requires that all PVCs must be shared (using ReadWriteMany access mode)'
    reason: DisksNotLiveMigratable
    status: "False"
    type: LiveMigratable
  currentCPUTopology:
    cores: 4
    sockets: 1
    threads: 1
  guestOSInfo: {}
  interfaces:
  - infoSource: domain
    ipAddress: <IP_ADDRESS>
    ipAddresses:
    - <IP_ADDRESS>
    mac: 16:f4:3c:8e:cd:60
    name: default
    queueCount: 1
  launcherContainerImageVersion: kubevirt/virt-launcher:v1.2.2
  machine:
    type: pc-q35-rhel9.2.0
  memory:
    guestCurrent: 4Gi
  migrationMethod: BlockMigration
  migrationTransport: Unix
  nodeName: controller-node-1
  phase: Running
  phaseTransitionTimestamps:
  - phase: Pending
    phaseTransitionTimestamp: "2024-06-20T09:22:48Z"
  - phase: Scheduling
    phaseTransitionTimestamp: "2024-06-20T09:27:24Z"
  - phase: Scheduled
    phaseTransitionTimestamp: "2024-06-20T09:27:25Z"
  - phase: Running
    phaseTransitionTimestamp: "2024-06-20T09:27:29Z"
  qosClass: Burstable
  runtimeUser: 107
  selinuxContext: system_u:object_r:var_lib_t:s0
  virtualMachineRevisionName: revision-start-vm-37d2a9a0-37f7-4a7a-b6d2-d1537410f3d2-2
  volumeStatus:
  - name: rootdisk
    persistentVolumeClaimInfo:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 42Gi
      filesystemOverhead: "0.055"
      requests:
        storage: 42Gi
      volumeMode: Filesystem
    target: vda

laucher log
kubectl logs -f virt-launcher-export-window-pwp76
{"component":"virt-launcher","level":"info","msg":"Collected all requested hook sidecar sockets","pos":"manager.go:88","timestamp":"2024-06-20T09:27:24.977679Z"}
{"component":"virt-launcher","level":"info","msg":"Sorted all collected sidecar sockets per hook point based on their priority and name: map[]","pos":"manager.go:91","timestamp":"2024-06-20T09:27:24.977784Z"}
{"component":"virt-launcher","level":"info","msg":"Connecting to libvirt daemon: qemu+unix:///session?socket=/var/run/libvirt/virtqemud-sock","pos":"libvirt.go:565","timestamp":"2024-06-20T09:27:24.978266Z"}
{"component":"virt-launcher","level":"info","msg":"Connecting to libvirt daemon failed: virError(Code=38, Domain=7, Message='Failed to connect socket to '/var/run/libvirt/virtqemud-sock': No such file or directory')","pos":"libvirt.go:573","timestamp":"2024-06-20T09:27:24.978851Z"}
{"component":"virt-launcher","level":"info","msg":"libvirt version: 9.5.0, package: 6.el9<EMAIL_ADDRESS>2023-08-25-08:53:56, )","subcomponent":"libvirt","thread":"39","timestamp":"2024-06-20T09:27:25.014000Z"}
{"component":"virt-launcher","level":"info","msg":"hostname: export-window","subcomponent":"libvirt","thread":"39","timestamp":"2024-06-20T09:27:25.014000Z"}
{"component":"virt-launcher","level":"error","msg":"internal error: Unable to get session bus connection: Cannot spawn a message bus without a machine-id: Unable to load /var/lib/dbus/machine-id or /etc/machine-id: Failed to open file “/var/lib/dbus/machine-id”: No such file or directory","pos":"virGDBusGetSessionBus:126","subcomponent":"libvirt","thread":"39","timestamp":"2024-06-20T09:27:25.014000Z"}
{"component":"virt-launcher","level":"error","msg":"internal error: Unable to get system bus connection: Could not connect: No such file or directory","pos":"virGDBusGetSystemBus:99","subcomponent":"libvirt","thread":"39","timestamp":"2024-06-20T09:27:25.014000Z"}
{"component":"virt-launcher","level":"info","msg":"Connected to libvirt daemon","pos":"libvirt.go:581","timestamp":"2024-06-20T09:27:25.484064Z"}
{"component":"virt-launcher","level":"info","msg":"Registered libvirt event notify callback","pos":"client.go:563","timestamp":"2024-06-20T09:27:25.496110Z"}
{"component":"virt-launcher","level":"info","msg":"Marked as ready","pos":"virt-launcher.go:75","timestamp":"2024-06-20T09:27:25.496605Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Executing PreStartHook on VMI pod environment","name":"export-window","namespace":"default","pos":"manager.go:684","timestamp":"2024-06-20T09:27:25.863485Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Starting PreCloudInitIso hook","name":"export-window","namespace":"default","pos":"manager.go:705","timestamp":"2024-06-20T09:27:25.863549Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"info","msg":"Found nameservers in /etc/resolv.conf: \n\ufffd\u0000\u0003","pos":"network.go:171","timestamp":"2024-06-20T09:27:25.864417Z"}
{"component":"virt-launcher","level":"info","msg":"Found search domains in /etc/resolv.conf: default.svc.cluster.local svc.cluster.local cluster.local","pos":"network.go:172","timestamp":"2024-06-20T09:27:25.864453Z"}
{"component":"virt-launcher","level":"info","msg":"Starting SingleClientDHCPServer","pos":"server.go:65","timestamp":"2024-06-20T09:27:25.864548Z"}
{"component":"virt-launcher","level":"info","msg":"Driver cache mode for /var/run/kubevirt-private/vmi-disks/rootdisk/disk.img set to none","pos":"converter.go:502","timestamp":"2024-06-20T09:27:25.864686Z"}
{"component":"virt-launcher","level":"warning","msg":"disk size is not 1MiB-aligned. Adjusting from<PHONE_NUMBER>4 down to<PHONE_NUMBER>2.","pos":"util.go:236","timestamp":"2024-06-20T09:27:25.931504Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Domain XML generated. Base64 dump [encoded data, 5616 characters]","name":"export-window","namespace":"default","pos":"libvirt_helper.go:133","timestamp":"2024-06-20T09:27:25.932733Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher-monitor","level":"info","msg":"Reaped pid 59 with status 0","pos":"virt-launcher-monitor.go:198","timestamp":"2024-06-20T09:27:26.042658Z"}
{"component":"virt-launcher-monitor","level":"info","msg":"Reaped pid 61 with status 0","pos":"virt-launcher-monitor.go:198","timestamp":"2024-06-20T09:27:26.421710Z"}
{"component":"virt-launcher-monitor","level":"info","msg":"Reaped pid 67 with status 0","pos":"virt-launcher-monitor.go:198","timestamp":"2024-06-20T09:27:26.698594Z"}
{"component":"virt-launcher-monitor","level":"info","msg":"Reaped pid 69 with status 0","pos":"virt-launcher-monitor.go:198","timestamp":"2024-06-20T09:27:26.771391Z"}
{"component":"virt-launcher","level":"info","msg":"DomainLifecycle event Domain event=\"defined\" detail=\"added\" with event id 0 reason 0 received","pos":"client.go:470","timestamp":"2024-06-20T09:27:27.016025Z"}
{"component":"virt-launcher","level":"info","msg":"kubevirt domain status: Shutoff(5):Unknown(0)","pos":"client.go:297","timestamp":"2024-06-20T09:27:27.019315Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Domain XML generated. Base64 dump [encoded data, 7864 characters]","name":"export-window","namespace":"default","pos":"libvirt_helper.go:133","timestamp":"2024-06-20T09:27:27.022019Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"info","msg":"Successfully connected to domain notify socket at /var/run/kubevirt/domain-notify-pipe.sock","pos":"client.go:171","timestamp":"2024-06-20T09:27:27.027757Z"}
{"component":"virt-launcher","level":"info","msg":"Domain name event: default_export-window","pos":"client.go:424","timestamp":"2024-06-20T09:27:27.035443Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Domain defined.","name":"export-window","namespace":"default","pos":"manager.go:1076","timestamp":"2024-06-20T09:27:27.035887Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"info","msg":"DomainLifecycle event Domain event=\"defined\" detail=\"updated\" with event id 0 reason 1 received","pos":"client.go:470","timestamp":"2024-06-20T09:27:27.036027Z"}
{"component":"virt-launcher","level":"info","msg":"Monitoring loop: rate 1s start timeout 5m56s","pos":"monitor.go:209","timestamp":"2024-06-20T09:27:27.036060Z"}
{"component":"virt-launcher","level":"info","msg":"kubevirt domain status: Shutoff(5):Unknown(0)","pos":"client.go:297","timestamp":"2024-06-20T09:27:27.038485Z"}
{"component":"virt-launcher","level":"info","msg":"Domain name event: default_export-window","pos":"client.go:424","timestamp":"2024-06-20T09:27:27.042015Z"}
{"component":"virt-launcher","level":"info","msg":"GuestAgentLifecycle event state 2 with reason 1 received","pos":"client.go:546","timestamp":"2024-06-20T09:27:27.236498Z"}
{"component":"virt-launcher","level":"info","msg":"kubevirt domain status: Paused(3):StartingUp(11)","pos":"client.go:297","timestamp":"2024-06-20T09:27:27.240728Z"}
{"component":"virt-launcher","level":"info","msg":"Domain name event: default_export-window","pos":"client.go:424","timestamp":"2024-06-20T09:27:27.243120Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20 09:27:27.046+0000: starting up libvirt version: 9.5.0, package: 6.el9<EMAIL_ADDRESS>2023-08-25-08:53:56, ), qemu version: 8.0.0qemu-kvm-8.0.0-13.el9, kernel: 5.4.278-1.el7.elrepo.x86_64, hostname: export-window","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981467Z"}
{"component":"virt-launcher","level":"info","msg":"LC_ALL=C \\PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \\HOME=/home/qemu \\XDG_CACHE_HOME=/var/run/kubevirt-private/libvirt/qemu/lib/domain-1-default_export-windo/.cache \\/usr/libexec/qemu-kvm \\-name guest=default_export-window,debug-threads=on \\-S \\-object '{\"qom-type\":\"secret\",\"id\":\"masterKey0\",\"format\":\"raw\",\"file\":\"/var/run/kubevirt-private/libvirt/qemu/lib/domain-1-default_export-windo/master-key.aes\"}' \\-machine pc-q35-rhel9.2.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=on \\-accel kvm \\-cpu Skylake-Server-IBRS,ss=on,vmx=on,hypervisor=on,tsc-adjust=on,clflushopt=on,umip=on,pku=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,ibpb=on,ibrs=on,amd-stibp=on,amd-ssbd=on,rsba=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,hle=off,rtm=off,xgetbv1=off,pdpe1gb=off \\-m size=4194304k \\-object '{\"qom-type\":\"memory-backend-ram\",\"id\":\"pc.ram\",\"size\":4294967296}' \\-overcommit mem-lock=off \\-smp 4,maxcpus=16,sockets=4,dies=1,cores=4,threads=1 \\-object '{\"qom-type\":\"iothread\",\"id\":\"iothread1\"}' \\-uuid 93901a4c-9eaf-5cc4-95ad-7cbc9888f884 \\-smbios type=1,manufacturer=KubeVirt,product=None,uuid=93901a4c-9eaf-5cc4-95ad-7cbc9888f884,family=KubeVirt \\-no-user-config \\-nodefaults \\-chardev socket,id=charmonitor,fd=20,server=on,wait=off \\-mon chardev=charmonitor,id=monitor,mode=control \\-rtc base=utc \\-no-shutdown \\-boot strict=on \\-device '{\"driver\":\"pcie-root-port\",\"port\":16,\"chassis\":1,\"id\":\"pci.1\",\"bus\":\"pcie.0\",\"multifunction\":true,\"addr\":\"0x2\"}' \\-device '{\"driver\":\"pcie-root-port\",\"port\":17,\"chassis\":2,\"id\":\"pci.2\",\"bus\":\"pcie.0\",\"addr\":\"0x2.0x1\"}' \\-device '{\"driver\":\"pcie-root-port\",\"port\":18,\"chassis\":3,\"id\":\"pci.3\",\"bus\":\"pcie.0\",\"addr\":\"0x2.0x2\"}' \\-device '{\"driver\":\"pcie-root-port\",\"port\":19,\"chassis\":4,\"id\":\"pci.4\",\"bus\":\"pcie.0\",\"addr\":\"0x2.0x3\"}' \\-device '{\"driver\":\"pcie-root-port\",\"port\":20,\"chassis\":5,\"id\":\"pci.5\",\"bus\":\"pcie.0\",\"addr\":\"0x2.0x4\"}' \\-device '{\"driver\":\"pcie-root-port\",\"port\":21,\"chassis\":6,\"id\":\"pci.6\",\"bus\":\"pcie.0\",\"addr\":\"0x2.0x5\"}' \\-device '{\"driver\":\"pcie-root-port\",\"port\":22,\"chassis\":7,\"id\":\"pci.7\",\"bus\":\"pcie.0\",\"addr\":\"0x2.0x6\"}' \\-device '{\"driver\":\"pcie-root-port\",\"port\":23,\"chassis\":8,\"id\":\"pci.8\",\"bus\":\"pcie.0\",\"addr\":\"0x2.0x7\"}' \\-device '{\"driver\":\"pcie-root-port\",\"port\":24,\"chassis\":9,\"id\":\"pci.9\",\"bus\":\"pcie.0\",\"addr\":\"0x3\"}' \\-device '{\"driver\":\"virtio-scsi-pci-non-transitional\",\"id\":\"scsi0\",\"bus\":\"pci.5\",\"addr\":\"0x0\"}' \\-device '{\"driver\":\"virtio-serial-pci-non-transitional\",\"id\":\"virtio-serial0\",\"bus\":\"pci.6\",\"addr\":\"0x0\"}' \\-blockdev '{\"driver\":\"file\",\"filename\":\"/var/run/kubevirt-private/vmi-disks/rootdisk/disk.img\",\"node-name\":\"libvirt-1-storage\",\"cache\":{\"direct\":true,\"no-flush\":false},\"auto-read-only\":true,\"discard\":\"unmap\"}' \\-blockdev '{\"node-name\":\"libvirt-1-format\",\"read-only\":false,\"discard\":\"unmap\",\"cache\":{\"direct\":true,\"no-flush\":false},\"driver\":\"raw\",\"file\":\"libvirt-1-storage\"}' \\-device '{\"driver\":\"virtio-blk-pci-non-transitional\",\"bus\":\"pci.7\",\"addr\":\"0x0\",\"drive\":\"libvirt-1-format\",\"id\":\"ua-rootdisk\",\"bootindex\":1,\"write-cache\":\"on\",\"werror\":\"stop\",\"rerror\":\"stop\"}' \\-netdev '{\"type\":\"tap\",\"fd\":\"21\",\"vhost\":true,\"vhostfd\":\"23\",\"id\":\"hostua-default\"}' \\-device '{\"driver\":\"virtio-net-pci-non-transitional\",\"host_mtu\":1480,\"netdev\":\"hostua-default\",\"id\":\"ua-default\",\"mac\":\"16:f4:3c:8e:cd:60\",\"bus\":\"pci.1\",\"addr\":\"0x0\",\"romfile\":\"\"}' \\-add-fd set=0,fd=19,opaque=serial0-log \\-chardev socket,id=charserial0,fd=17,server=on,wait=off,logfile=/dev/fdset/0,logappend=on \\-device '{\"driver\":\"isa-serial\",\"chardev\":\"charserial0\",\"id\":\"serial0\",\"index\":0}' \\-chardev socket,id=charchannel0,fd=18,server=on,wait=off \\-device '{\"driver\":\"virtserialport\",\"bus\":\"virtio-serial0.0\",\"nr\":1,\"chardev\":\"charchannel0\",\"id\":\"channel0\",\"name\":\"org.qemu.guest_agent.0\"}' \\-audiodev '{\"id\":\"audio1\",\"driver\":\"none\"}' \\-vnc vnc=unix:/var/run/kubevirt-private/7c0de365-2b43-4386-ac6c-b7be70045762/virt-vnc,audiodev=audio1 \\-device '{\"driver\":\"VGA\",\"id\":\"video0\",\"vgamem_mb\":16,\"bus\":\"pcie.0\",\"addr\":\"0x1\"}' \\-global ICH9-LPC.noreboot=off \\-watchdog-action reset \\-device '{\"driver\":\"virtio-balloon-pci-non-transitional\",\"id\":\"balloon0\",\"free-page-reporting\":true,\"bus\":\"pci.8\",\"addr\":\"0x0\"}' \\-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \\-msg timestamp=on","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981704Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.158574Z qemu-kvm: warning: host doesn't support requested feature: CPUID.40000001H:EAX.kvm-asyncpf-int [bit 14]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981757Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.158735Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-xapic [bit 0]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981772Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.158851Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-register [bit 8]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981789Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.158890Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-vid [bit 9]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981803Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.158915Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-pml [bit 17]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981815Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.158950Z qemu-kvm: warning: host doesn't support requested feature: MSR(48DH).vmx-posted-intr [bit 7]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981826Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.158990Z qemu-kvm: warning: host doesn't support requested feature: MSR(48CH).vmx-eptad [bit 21]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981838Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.161112Z qemu-kvm: warning: host doesn't support requested feature: CPUID.40000001H:EAX.kvm-asyncpf-int [bit 14]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981850Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.161197Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-xapic [bit 0]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981866Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.161224Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-register [bit 8]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981881Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.161248Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-vid [bit 9]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981910Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.161272Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-pml [bit 17]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981922Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.161311Z qemu-kvm: warning: host doesn't support requested feature: MSR(48DH).vmx-posted-intr [bit 7]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981935Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.161351Z qemu-kvm: warning: host doesn't support requested feature: MSR(48CH).vmx-eptad [bit 21]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981947Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.162631Z qemu-kvm: warning: host doesn't support requested feature: CPUID.40000001H:EAX.kvm-asyncpf-int [bit 14]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981959Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.162725Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-xapic [bit 0]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981974Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.162762Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-register [bit 8]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.981991Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.162796Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-vid [bit 9]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982007Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.162821Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-pml [bit 17]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982019Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.162849Z qemu-kvm: warning: host doesn't support requested feature: MSR(48DH).vmx-posted-intr [bit 7]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982031Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.162898Z qemu-kvm: warning: host doesn't support requested feature: MSR(48CH).vmx-eptad [bit 21]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982057Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.164636Z qemu-kvm: warning: host doesn't support requested feature: CPUID.40000001H:EAX.kvm-asyncpf-int [bit 14]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982070Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.164723Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-xapic [bit 0]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982083Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.164758Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-register [bit 8]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982096Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.164787Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-apicv-vid [bit 9]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982114Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.164820Z qemu-kvm: warning: host doesn't support requested feature: MSR(48BH).vmx-pml [bit 17]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982126Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.164849Z qemu-kvm: warning: host doesn't support requested feature: MSR(48DH).vmx-posted-intr [bit 7]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982138Z"}
{"component":"virt-launcher","level":"info","msg":"2024-06-20T09:27:27.164889Z qemu-kvm: warning: host doesn't support requested feature: MSR(48CH).vmx-eptad [bit 21]","subcomponent":"qemu","timestamp":"2024-06-20T09:27:27.982185Z"}
{"component":"virt-launcher","level":"info","msg":"Found PID for default_export-window: 75","pos":"monitor.go:170","timestamp":"2024-06-20T09:27:28.036825Z"}
{"component":"virt-launcher","level":"info","msg":"DomainLifecycle event Domain event=\"resumed\" detail=\"unpaused\" with event id 4 reason 0 received","pos":"client.go:470","timestamp":"2024-06-20T09:27:29.037868Z"}
{"component":"virt-launcher","level":"info","msg":"DomainLifecycle event Domain event=\"started\" detail=\"booted\" with event id 2 reason 0 received","pos":"client.go:470","timestamp":"2024-06-20T09:27:29.041540Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Domain started.","name":"export-window","namespace":"default","pos":"manager.go:1104","timestamp":"2024-06-20T09:27:29.042299Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Synced vmi","name":"export-window","namespace":"default","pos":"server.go:208","timestamp":"2024-06-20T09:27:29.044314Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"info","msg":"kubevirt domain status: Running(1):Unknown(1)","pos":"client.go:297","timestamp":"2024-06-20T09:27:29.044966Z"}
{"component":"virt-launcher","level":"info","msg":"Domain name event: default_export-window","pos":"client.go:424","timestamp":"2024-06-20T09:27:29.051356Z"}
{"component":"virt-launcher","level":"info","msg":"kubevirt domain status: Running(1):Unknown(1)","pos":"client.go:297","timestamp":"2024-06-20T09:27:29.054099Z"}
{"component":"virt-launcher","level":"info","msg":"Domain name event: default_export-window","pos":"client.go:424","timestamp":"2024-06-20T09:27:29.056060Z"}
{"component":"virt-launcher","level":"warning","msg":"disk size is not 1MiB-aligned. Adjusting from<PHONE_NUMBER>4 down to<PHONE_NUMBER>2.","pos":"util.go:236","timestamp":"2024-06-20T09:27:29.194883Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Synced vmi","name":"export-window","namespace":"default","pos":"server.go:208","timestamp":"2024-06-20T09:27:29.195048Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"warning","msg":"disk size is not 1MiB-aligned. Adjusting from<PHONE_NUMBER>4 down to<PHONE_NUMBER>2.","pos":"util.go:236","timestamp":"2024-06-20T09:27:29.240740Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Synced vmi","name":"export-window","namespace":"default","pos":"server.go:208","timestamp":"2024-06-20T09:27:29.240872Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"warning","msg":"disk size is not 1MiB-aligned. Adjusting from<PHONE_NUMBER>4 down to<PHONE_NUMBER>2.","pos":"util.go:236","timestamp":"2024-06-20T09:31:16.243124Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Synced vmi","name":"export-window","namespace":"default","pos":"server.go:208","timestamp":"2024-06-20T09:31:16.243260Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"warning","msg":"disk size is not 1MiB-aligned. Adjusting from<PHONE_NUMBER>4 down to<PHONE_NUMBER>2.","pos":"util.go:236","timestamp":"2024-06-20T09:36:16.247262Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Synced vmi","name":"export-window","namespace":"default","pos":"server.go:208","timestamp":"2024-06-20T09:36:16.247500Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"warning","msg":"disk size is not 1MiB-aligned. Adjusting from<PHONE_NUMBER>4 down to<PHONE_NUMBER>2.","pos":"util.go:236","timestamp":"2024-06-20T09:41:16.242311Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Synced vmi","name":"export-window","namespace":"default","pos":"server.go:208","timestamp":"2024-06-20T09:41:16.242401Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"warning","msg":"disk size is not 1MiB-aligned. Adjusting from<PHONE_NUMBER>4 down to<PHONE_NUMBER>2.","pos":"util.go:236","timestamp":"2024-06-20T09:46:16.243868Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Synced vmi","name":"export-window","namespace":"default","pos":"server.go:208","timestamp":"2024-06-20T09:46:16.244080Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"warning","msg":"disk size is not 1MiB-aligned. Adjusting from<PHONE_NUMBER>4 down to<PHONE_NUMBER>2.","pos":"util.go:236","timestamp":"2024-06-20T09:51:16.250205Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Synced vmi","name":"export-window","namespace":"default","pos":"server.go:208","timestamp":"2024-06-20T09:51:16.250315Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}
{"component":"virt-launcher","level":"warning","msg":"disk size is not 1MiB-aligned. Adjusting from<PHONE_NUMBER>4 down to<PHONE_NUMBER>2.","pos":"util.go:236","timestamp":"2024-06-20T09:56:16.245256Z"}
{"component":"virt-launcher","kind":"","level":"info","msg":"Synced vmi","name":"export-window","namespace":"default","pos":"server.go:208","timestamp":"2024-06-20T09:56:16.245638Z","uid":"7c0de365-2b43-4386-ac6c-b7be70045762"}

Cloud provider or hardware configuration: N/A
OS (e.g. from /etc/os-release):

Kernel (e.g. uname -a):

Install tools: N/A
Others:

/cc @xpivarc @mhenriks

Can someone help me?

Can you post the DataVolume and PVC yamls?

apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
  annotations:
    cdi.kubevirt.io/allowClaimAdoption: "true"
    cdi.kubevirt.io/storage.pod.vddk.version: 8.0.0
    cdi.kubevirt.io/storage.usePopulator: "false"
  creationTimestamp: "2024-07-10T03:27:32Z"
  generation: 1
  labels:
    kubevirt.io/created-by: 18496d8c-30b9-4018-be90-14192f8749b5
  name: export-window-rootdisk
  namespace: default
  ownerReferences:
  - apiVersion: kubevirt.io/v1
    blockOwnerDeletion: true
    controller: true
    kind: VirtualMachine
    name: export-window
    uid: 18496d8c-30b9-4018-be90-14192f8749b5
  resourceVersion: "349471"
  uid: b024881e-548a-4f67-84e4-de44bfddab48
spec:
  pvc:
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: 42Gi
    storageClassName: local-path
  source:
    vddk:
      backingFile: '[esxi-d02-08-SSD] kubevirt-export-ubuntu-1/kubevirt-export-ubuntu-1.vmdk'
      initImageURL: virtnest/vddk:v1
      secretRef: vsphere
      thumbprint: C3:9D:D7:55:6A:43:11:2B:DE:BA:27:EA:3B:C2:13:AF:E4:12:62:4D
      url: https://<IP_ADDRESS>
      uuid: 4234ea54-9b4b-b8ba-3de0-8612d8600648
status:
  claimName: export-window-rootdisk
  conditions:
  - lastHeartbeatTime: "2024-07-10T03:27:35Z"
    lastTransitionTime: "2024-07-10T03:27:35Z"
    message: PVC export-window-rootdisk Bound
    reason: Bound
    status: "True"
    type: Bound
  - lastHeartbeatTime: "2024-07-10T03:31:31Z"
    lastTransitionTime: "2024-07-10T03:31:31Z"
    status: "True"
    type: Ready
  - lastHeartbeatTime: "2024-07-10T03:31:29Z"
    lastTransitionTime: "2024-07-10T03:31:29Z"
    message: Import Complete
    reason: Completed
    status: "False"
    type: Running
  phase: Succeeded
  progress: 100.0%

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    cdi.kubevirt.io/allowClaimAdoption: "true"
    cdi.kubevirt.io/createdForDataVolume: b024881e-548a-4f67-84e4-de44bfddab48
    cdi.kubevirt.io/storage.condition.running: "false"
    cdi.kubevirt.io/storage.condition.running.message: Import Complete
    cdi.kubevirt.io/storage.condition.running.reason: Completed
    cdi.kubevirt.io/storage.contentType: kubevirt
    cdi.kubevirt.io/storage.import.backingFile: '[esxi-d02-08-SSD] kubevirt-export-ubuntu-1/kubevirt-export-ubuntu-1.vmdk'
    cdi.kubevirt.io/storage.import.endpoint: https://<IP_ADDRESS>
    cdi.kubevirt.io/storage.import.importPodName: importer-export-window-rootdisk
    cdi.kubevirt.io/storage.import.secretName: vsphere
    cdi.kubevirt.io/storage.import.source: vddk
    cdi.kubevirt.io/storage.import.uuid: 4234ea54-9b4b-b8ba-3de0-8612d8600648
    cdi.kubevirt.io/storage.import.vddk.thumbprint: C3:9D:D7:55:6A:43:11:2B:DE:BA:27:EA:3B:C2:13:AF:E4:12:62:4D
    cdi.kubevirt.io/storage.pod.phase: Succeeded
    cdi.kubevirt.io/storage.pod.restarts: "0"
    cdi.kubevirt.io/storage.pod.vddk.initimageurl: virtnest/vddk:v1
    cdi.kubevirt.io/storage.pod.vddk.version: 8.0.0
    cdi.kubevirt.io/storage.preallocation.requested: "false"
    cdi.kubevirt.io/storage.usePopulator: "false"
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
    volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path
    volume.kubernetes.io/selected-node: centos
    volume.kubernetes.io/storage-provisioner: rancher.io/local-path
  creationTimestamp: "2024-07-10T03:27:32Z"
  finalizers:
  - kubernetes.io/pvc-protection
  labels:
    alerts.k8s.io/KubePersistentVolumeFillingUp: disabled
    app: containerized-data-importer
    app.kubernetes.io/component: storage
    app.kubernetes.io/managed-by: cdi-controller
    kubevirt.io/created-by: 18496d8c-30b9-4018-be90-14192f8749b5
  name: export-window-rootdisk
  namespace: default
  ownerReferences:
  - apiVersion: cdi.kubevirt.io/v1beta1
    blockOwnerDeletion: true
    controller: true
    kind: DataVolume
    name: export-window-rootdisk
    uid: b024881e-548a-4f67-84e4-de44bfddab48
  resourceVersion: "349467"
  uid: 060b1b3d-8933-4ea7-9e37-069a22e6cf68
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 42Gi
  storageClassName: local-path
  volumeMode: Filesystem
  volumeName: pvc-060b1b3d-8933-4ea7-9e37-069a22e6cf68
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 42Gi
  phase: Bound

I have resolved,thank

Hi @scydas, I'm facing the same issue. Can you please help me, how you solved the issue?

@scydas  how did you solve the issue.  We are facing the same issue
We are migrating existing Windows VM which is running on top of Esxi server.  We have followed the steps given in the documentation.
First we converted VMDK file to QCOW2 image format
Uploaded image to PVC using virctl image-upload
virtctl image-upload pvc win-vm-disk --size 200Gi --image-path /root/xxxxxx.qcow2 --storage-class=rook-ceph-block --insecure --uploadproxy-url https://<IP_ADDRESS>:31001/
PVC default/win-vm-disk not found
PersistentVolumeClaim default/win-vm-disk created
Waiting for PVC win-vm-disk upload pod to be ready...
Pod now ready
Uploading data to https://<IP_ADDRESS>:31001/

 48.85 GiB / 48.85 GiB [===========================================================================================] 100.00% 17m58s
Uploading data completed successfully, waiting for processing to complete, you can hit ctrl-c without interrupting the progress
Processing completed successfully

Uploading /root/xxxxxxxx.qcow2 completed successfully
3.  Then updated VirtalMachine manifest file with PVC details.
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  annotations:
    kubevirt.io/latest-observed-api-version: v1
    kubevirt.io/storage-observed-api-version: v1
  labels:
    kubevirt.io/os: windows
    test: krishna-win-vm
  name: krishna-win-vm
  namespace: default
spec:
  running: true
  template:
    metadata:
      creationTimestamp: null
      labels:
        kubevirt.io/domain: win2022-vm
        kubevirt.io/os: windows
        kubevirt.io/vm: krishna-win-vm
        test: krishna-win-vm
    spec:
      architecture: amd64
      domain:
        devices:
          autoattachGraphicsDevice: true
          autoattachPodInterface: true
          autoattachSerialConsole: true
          disks:
          - bootOrder: 1
            disk:
              bus:  scsi
            name: win-vm-pvc
          interfaces:
          - masquerade: {}
            name: default
        machine:
          type: q35
        resources:
          limits:
            memory: 2G
          requests:
            memory: 2G
      networks:
      - name: default
        pod: {}
      volumes:
      - name: win-vm-pvc
        persistentVolumeClaim:
          claimName: win-vm-disk

After launching the VM,   the console output shows no bootdevice found.

win vm‘s bios mod is uefi or bios?

It is uefi node.
On Fri, 18 Oct 2024, 6:15 pm scydas, @.***> wrote:

win vm‘s bios mod is uefi or bios?
—
Reply to this email directly, view it on GitHub
https://github.com/kubevirt/kubevirt/issues/12178#issuecomment-2422395838,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABNIDJUL7SWCONDBQETUICDZ4D7IBAVCNFSM6AAAAABJTTWC3KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMRSGM4TKOBTHA
.
You are receiving this because you commented.Message ID:
@.***>

@scydas   I am able run windows machine in kubevirt env after changing bios settings to efi mode.  One more thing,  network is not working in my windows machine.

network, you need to install virtio device  in win vm

After migration to kubevirt or before migration to kubevirt?
On Sat, 19 Oct 2024, 6:30 pm scydas, @.***> wrote:

network, you need to install virtio device in win vm
—
Reply to this email directly, view it on GitHub
https://github.com/kubevirt/kubevirt/issues/12178#issuecomment-2423835304,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABNIDJUCFKVCXNSIWZDW5KDZ4JJWJAVCNFSM6AAAAABJTTWC3KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMRTHAZTKMZQGQ
.
You are receiving this because you commented.Message ID:
@.***>

after

Do you suggest any steps for installation virtio device ?
On Sat, 19 Oct 2024, 6:52 pm scydas, @.***> wrote:

after
—
Reply to this email directly, view it on GitHub
https://github.com/kubevirt/kubevirt/issues/12178#issuecomment-2423846781,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABNIDJSTFZD42ZW46RJGIR3Z4JMKDAVCNFSM6AAAAABJTTWC3KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMRTHA2DMNZYGE
.
You are receiving this because you commented.Message ID:
@.***>

@kasim457
You can refer to this link
https://docs.daocloud.io/virtnest/best-practice/import-windows/#_2


Allow secondary action to be null

Secondary action is defined as  secondaryAction?: NavigationAlertAction; in NavigationAlerts.d.ts.
However, in practice it is not option. If it is a nil, a nullException happens crashing the app. This allows the secondary action to be null by adding in a check.

Looks like there are no changes in the PR?


Fix typos

Trivial dartdoc change intended to deflake devicelab.

Landing on red tree to deflake after stopping a problematic devicelab bot.


Cleanup

Update README.

Add more information about environment customization
Credit gym-minigrid more appropriately
Add gifs for both DirectedNavigation and UndirectedNavigation. And reduce the speed of gifs.

Change default agent color to :red
Add _ to separate words in env file names.
Update TagBot.yml

Codecov Report

Merging #119 (cd698a7) into master (2e8975c) will decrease coverage by 0.26%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #119      +/-   ##
==========================================
- Coverage   76.53%   76.26%   -0.27%
==========================================
  Files          17       17
  Lines         848      847       -1
==========================================
- Hits          649      646       -3
- Misses        199      201       +2

Impacted Files
Coverage Δ

src/envs/collect_gems.jl
100.00% <ø> (ø)

src/envs/door_key.jl
100.00% <ø> (ø)

src/envs/dynamic_obstacles.jl
97.56% <ø> (ø)

src/envs/empty_room.jl
100.00% <ø> (ø)

src/envs/go_to_door.jl
96.29% <ø> (ø)

src/envs/grid_rooms.jl
100.00% <ø> (ø)

src/envs/sequential_rooms.jl
99.11% <ø> (ø)

src/objects.jl
35.71% <ø> (ø)

... and 1 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2e8975c...cd698a7. Read the comment docs.

Codecov Report

Merging #119 (cd698a7) into master (2e8975c) will decrease coverage by 0.26%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #119      +/-   ##
==========================================
- Coverage   76.53%   76.26%   -0.27%
==========================================
  Files          17       17
  Lines         848      847       -1
==========================================
- Hits          649      646       -3
- Misses        199      201       +2

Impacted Files
Coverage Δ

src/envs/collect_gems.jl
100.00% <ø> (ø)

src/envs/door_key.jl
100.00% <ø> (ø)

src/envs/dynamic_obstacles.jl
97.56% <ø> (ø)

src/envs/empty_room.jl
100.00% <ø> (ø)

src/envs/go_to_door.jl
96.29% <ø> (ø)

src/envs/grid_rooms.jl
100.00% <ø> (ø)

src/envs/sequential_rooms.jl
99.11% <ø> (ø)

src/objects.jl
35.71% <ø> (ø)

... and 1 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2e8975c...cd698a7. Read the comment docs.


Bug: getByProperty() when invoked with property value null should return records with null in database for the property

When getByProperty() is invoked with property value null it should return records with null value for that property in database. Currently it returns no records.

fixed in v1.3.2


Progress bar and progress % do not match - how is the math done?

Hello,
I love this plugin but I need to be able to show my clients that it makes sense.
I often see project that show the bar 1/2 way across but the percent complete says 0%.
I've tried to fnd the documentation that explains how you calculate the % complete but I can not find anything.
I would gladly help update the documentation to explain the process or show how the % complete is calculated if you can tell me.
Thanks

@Saylrman64 please read comments for #10. Seems it should explain you how these progress bars work. Let me know if you still have any questions.
Thanks for loving my plugin :)

I did and it helps.
Still some strange math.
Thank you!


Update homework.sh

Answered questions from the 1 Module and the first lesson
What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
I was following the instruction provided in the assignment to complete the homework which include creating directories, verifying directories, generating files, appending text to files, and ensuring the proper execution of commands.
What did you learn from the changes you have made?
Specifically, I learned how to create directories, generate files, append text to files.
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
o be honest, at that moment, I didn't have another approach in mind. Everything felt quite challenging for me, and I was focused on understanding and completing the tasks using the available resources and knowledge.
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
Yes, I experienced challenges during the assignment. One issue I faced was with running the ./homework.sh command. Despite following the instructions provided, I encountered difficulties executing the script directly. To overcome this, I resorted to manually copying and pasting the commands from the script into the terminal. While this workaround allowed me to proceed with the tasks, it was less efficient than running the script as intended.
How were these changes tested?
The changes were tested by verifying each step of the process in the terminal. After executing each command to create directories, generate files, and append text
A reference to a related issue in your repository (if applicable)
I encountered these issues while practicing the homework assignment. Initially, I faced the 'bash: ./homework.sh: No such file or directory' error, indicating that the shell couldn't locate the script file in the current directory. After verifying the file's location, I then encountered 'Permission denied' and 'Operation not permitted' errors, suggesting issues with file permissions and filesystem properties. Because of these errors, I needed to resort to manually copying and pasting the commands from the script into the terminal to proceed with the assignment.
@mentions of the person or team responsible for reviewing proposed changes (At least 2 people)

@dtxe
@michaeladrouillard

Checklist

[✅ ] I can confirm that my changes are working as intended

@dwz92 Should I include the missing information in the lines where it was missed, or can I simply add comments? Alternatively, do I need to submit a new request? Lastly, does this count as completing of the assignment? If not, could you please provide guidance on how to complete it? Thank you for your attention to this matter.

uoft-dsi-c3-homework-20240426


add scipy talk by @munkm

This is awesome! :smile:
Pinging @sendilkumarn if you haven't seen this so it can get merged in.

Yay 🎉 Thanks @munkm

Thanks @mgattozzi and @sendilkumarn! I really enjoy reading these posts from week to week! I <3 the rustwasm community.


foundry-world-tools seems not to support Foundry VTT v11

I recently tried to use FWT's dedup function with no success.
sudo fwt dedup --ext=".png" --ext=".webp" --byname --preferred=".*webp" /home/foundry/foundrydata/Data/worlds/vamp-hunters
Traceback (most recent call last):
  File "/srv/fabric/.local/bin/fwt", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/srv/fabric/.local/pipx/venvs/foundryworldtools/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/fabric/.local/pipx/venvs/foundryworldtools/lib/python3.11/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/srv/fabric/.local/pipx/venvs/foundryworldtools/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/fabric/.local/pipx/venvs/foundryworldtools/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/fabric/.local/pipx/venvs/foundryworldtools/lib/python3.11/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/fabric/.local/pipx/venvs/foundryworldtools/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/fabric/.local/pipx/venvs/foundryworldtools/lib/python3.11/site-packages/foundryWorldTools/fwtCli.py", line 116, in dedup
    dir = lib.FWTPath(dir)
          ^^^^^^^^^^^^^^^^
  File "/srv/fabric/.local/pipx/venvs/foundryworldtools/lib/python3.11/site-packages/foundryWorldTools/lib.py", line 542, in __init__
    resolve_fvtt_path(self,path)
  File "/srv/fabric/.local/pipx/venvs/foundryworldtools/lib/python3.11/site-packages/foundryWorldTools/lib.py", line 125, in resolve_fvtt_path
    fwtpath.project_name = json.loads(manafest.read_text())["name"]
                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
KeyError: 'name'

I don't know Python, so I could be completely wrong, but I believe line 125 in lib.py is trying to pull the "name" field from world.json? It looks like at some point Foundry updated to change this field to "id" instead. Here is my world.json:
  "title": "Vamp Hunters?",
  "description": "
An unlikely band of adventurers are drawn into the mysterious land of Barovia.  Is it their fate to defeat the land's dark master, the vampire Strahd von Zarovich?  Or is it their fate to become Strahd's thralls and be trapped in Barovia for eternity?

On the way to>
  "version": "1.0.0",
  "system": "dnd5e",
  "coreVersion": "11.307",
  "systemVersion": "2.3.0",
  "scripts": [
    "templates/roll20-templates.js"
  ],
  "styles": [
    "templates/roll20-templates.css"
  ],
  "resetKeys": false,
  "safeMode": false,
  "id": "vamp-hunters",
  "compatibility": {
    "minimum": "11",
    "verified": "11.307"
  },
  "lastPlayed": "Sat Aug 19 2023 20:37:42 GMT-0400 (Eastern Daylight Time)",
  "playtime": 4464,
  "background": "CurseofStrahd_Throne_2560x1600_Wallpaper.jpeg",
  "joinTheme": "default",
  "nextSession": "2023-09-01T01:00:00.000Z"
}

@Bernie-McGee, thanks for the bug report. I'm sorry I've not been more proactively updating my utility to keep up with the changes to Foundry in versions 10 and 11. I've updated the README to explicitly say that this utility is only intended to be compatible with Foundry versions 7-9. I have done some research on the changes required to support newer versions of Foundry, and while it looks to be possible, I'm not sure when I'll finish working on it.

@nathan-sain No problem. Thanks for your work! I've been working on converting PNGs in a world created with R20Converter, which creates a world for Foundry 9, so I've just used foundry-world-tools before I update the world to Foundry 11.


Update Vietnamese translation

If possible, please make me official collaborator with write permission, thanks

@tranlyvu: Please don't take this the wrong way. I like to follow PR model of doing contributions when it comes to open source projects. It's just easier to do code reviews and makes it accountable.
I'm also thinking about making the changes I make as merge requests. It'd be great if you could get on board as a reviewer. You could also help/mentor others in our slack team  https://firstcontributions.herokuapp.com


Self Hosted - Responding twice

Since the bot updated today it's been replying twice to everything.

What's the response to .stats?

Solved it on my own. I had two processes of the bot running.


Composite Agents should take in an error handler and counter on construction to better handle composite doWork/onClose/onStart exceptions in children

This allows more flexibility in exception handling and will allow composite agents to handle errors more correctly/fairly. Consider for instance that an agent which always throws an exception will starve other agents.
Sadly this is API breaking.

Can this not be passed to the constructor of the Agent? It feels like against current usage.

On reflection collaborators are best past in by constructor injection so the object is always in a valid state. The only reason for passing in later would be to void a circular dependency. The suggested level of breaking change is too much.

Seems reasonable. I will rename to reflect on Composite agents where most of the issue is.

Your point on exceptions is well made. I think a better solution is to have a MultiAgentRunner rather than a composite agent.

Is this a way to work around breaking existing code or a genuine difference?

It is a better way to separate the concerns and centralise the error handling. The composite agent approach was wrong in this respect. I'm working on fix this all.


HUNTER_BUILD_SHARED_LIBS

I would like to discuss whether it makes sense to enabling the propagation of BUILD_SHARED_LIBS and CMAKE_POSITION_INDEPENDENT_CODE globally for all hunter projects.
It makes it easier to use for a user as it is NOT typical to build a shared libraries by adding whole static archives. That is not the common case, so that is probably a default we can change.

CMAKE_POSITION_INDEPENDENT_CODE globally

See https://github.com/ruslo/hunter/issues/64

enabling the propagation of BUILD_SHARED_LIBS ... globally

Hm... I think I've closed one by mistake https://github.com/ruslo/hunter/issues/21
I will rename this issue.
Related discussion:

https://github.com/ruslo/hunter/issues/63

Can HUNTER_BUILD_SHARED_LIBS use BUILD_SHARED_LIBS as the default value if unspecified?

Can HUNTER_BUILD_SHARED_LIBS use BUILD_SHARED_LIBS as the default value if unspecified?

I guess it make sense.

cc @chfast.

Can HUNTER_BUILD_SHARED_LIBS use BUILD_SHARED_LIBS as the default value if unspecified?

On second thought it's a valid case when all 3rd parties are static and local project use BUILD_SHARED_LIBS=ON so I'm leaving this untouched.
Fixed:

https://docs.hunter.sh/en/latest/reference/user-variables.html#hunter-build-shared-libs

Available since:

https://github.com/ruslo/hunter/releases/tag/v0.19.115


编译错误

ld: 2 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Thanks
On Tue, 12 Jul 2022 at 06:03, Joseph.L @.***> wrote:

Closed #7 https://github.com/AI-HELP/sdk-ios-example/issues/7 as
completed.
—
Reply to this email directly, view it on GitHub
https://github.com/AI-HELP/sdk-ios-example/issues/7#event-6974449229,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ARRQYMT6CVKW3CMFJUFATRLVTT4A3ANCNFSM5CYJHLPQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Allow host cert renewals even if client auth strictness is false

Description
This PR allows the management servers to renew certificates issued to hosts, even if ca.plugin.root.auth.strictness is false.  There is already a global setting named ca.framework.cert.automatic.renewal that should be controlling the certificate renewals.  However, ca.plugin.root.auth.strictness currently circumvents that setting.
More Detail
The ca.plugin.root.auth.strictness setting is checked early in the client certificate checking method and exits the method without adding the certificate to the management server's in-memory certificate map if strictness is false.  The certificate renewal process (if enabled with ca.framework.cert.automatic.renewal) reads that in-memory certificate map to determine what certs it could renew.  Those two settings shouldn't be so closely related.

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[ ] Bug fix (non-breaking change which fixes an issue)
[X] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale

[ ] Major
[X ] Minor

Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[X] Minor
[ ] Trivial

Screenshots (if appropriate):
How Has This Been Tested?
We've deployed and tested this in our CloudStack environments.

Update PR with more tests and now when not in strict mode it will still log issues with certificates, but just accept the cert still.

Let me know if i can do anything else to help this along

@sureshanaparti do you approve now?

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark: centos7 :heavy_check_mark: centos8 :heavy_check_mark: debian.  I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark: centos7 :heavy_check_mark: centos8 :heavy_check_mark: debian. SL-JID 338

@blueorangutan test

@nvazquez a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-1070)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 37786 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr4852-t1070-kvm-centos7.zip
Intermittent failure detected: /marvin/tests/smoke/test_kubernetes_clusters.py
Intermittent failure detected: /marvin/tests/smoke/test_vpc_vpn.py
Smoke tests completed. 87 look OK, 1 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

ContextSuite context=TestKubernetesCluster>:teardown
Error
71.22
test_kubernetes_clusters.py

@weizhouapache can you please test this PR?

Thanks @weizhouapache that looks like a bug, @Slair1 can you please advise?

Ping @slavkap thanks for the PR, it seems like an important fix. Can you address the outstanding comment so we can move forward with this PR?

@rhtyd, unfortunately, I don't have anything with this PR

My bad @slavkap sorry I wrongly selected the Github ID when I typed<EMAIL_ADDRESS>and selected your handle.
I meant @Slair1 can you address the outstanding comment so we can move forward with this PR?

@Slair1 can you address the outstanding comment so we can move forward with this PR?

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian. SL-JID 929

@blueorangutan test

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-1722)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 34368 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr4852-t1722-kvm-centos7.zip
Smoke tests completed. 89 look OK, 0 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

@nvazquez @rhtyd
since we have 2 approvals (including 1 manual test) and integration test passed, can we merge this pr ?

Merging this based on your comment @weizhouapache


Hide repeated logs for streams

Let's say I pull the plug of camera1. go2rtc will keep try to reconnect to camera1 all the time, which is good.
However, it will flood the logs with connection attempts to camera1.
I have a suggestion to make this a little better:
If a stream fails to connect for the exact same reason 3 times in a row, subsequent logs are omitted for that stream.

I don't think this is good idea. Logs are needed to see if something is going wrong. If the stream can't connect, something is wrong. The user should be able to see that.
I think it is better to put more useful data in the WebUI

But 3 repeated logs are enough to tell that something is wrong.
Also, when for example, some battery camera runs out of battery, it will just cause go2rtc to generate error logs forever, which is not helpful and makes it difficult to find issues for other streams.


Add blog for AWS v6

Description
Resolves https://github.com/pulumi/pulumi-aws/issues/2620
Checklist:

[ ] I have reviewed the style guide.
[ ] If blogging, I have reviewed the blogging guide.
[ ] I have manually confirmed that all new links work.
[ ] I added aliases (i.e., redirects) for all filename changes.
[ ] If making css changes, I rebuilt the bundle.

@mnlumi We need to update this PR to help promote an associated workshop (more details at https://github.com/pulumi/marketing/issues/785). Do you want me to push some changes to your branch for this, or is there another approach you'd prefer?

@scottslowe Please feel free to push changes. Thanks!

Remaining:

Links have been added but they are not valid until the release is actually cut and the migration guide is published.
Chart resolution + size needs to be fixed
Need to standardize on v6, 6.0, v6.0.


Towards a 1.0.0 release

Goals
Simplify, reduce API surface and focus
Currently, there are too many functions to learn. Some of them are not relevant to end user, so they should be removed from API. Some other are too obscure features (pcset-dft, for example) than should be moved to a less noisy place.
Focus: some functional functions are provided (like map). That's not the scope of tonal.

[x] Split codebase into groups: core, extensions, utilities, incubator, deprecated
[ ] Move deprecated functions to its own file and provide warnings
[ ] Remove functional plumbing

Reduce technical debt

[ ] Interchangeable notation was not a good idea and introduced a cost abstraction. Remove it (no API breaking changes)
[ ] Deprecate unused packages (a lot! :-( https://www.npmjs.com/browse/keyword/tonal?offset=3)

Stabilize
All the core should be stable. Extensions should be stable. Incubator packages are allowed to be unstable.

[ ] Use different versioning number for core and extensions? (lerna?)

Incubator
Harmony
harmony() => [
  { tonic: "C", degree: 'I', types: ["M", "Maj7", "M9", f: "tonic" },
  { tonic: "D", degree: 'I', types: ["m", "m7"], f: "subdominant" },
  ...
]

Currently 1.0.0-0 version is released. The API should be considered stable, but there are a lot of breaking changes from the previous version, more notably:
List of notes and intervals can NOT be expressed as strings anymore: you should use arrays of strings.
So instead of tonal.pcset.chroma('A B C') now you should write tonal.pcset.chroma(['A', 'B', 'C'])
The API is now more consistent across modules and most of the technical debt is removed: less functional programming utilities, no more "interchangeable notation" and fewer code tricks.
Please review the API docs: http://danigb.github.io/tonal/api/


Allow override the note model type in the frontmatter for #card

the fields must be [Front, Back].

one workaroud could be add some special handling for #card-basic-xxx, e.g.
# #card-basic-foo Front content

Back content

==>
{
  model: "basic-foo",
  fields: {
    Front: "Front content",
    Back: "Back content",
  }
}


save many-to-none reference to db

Hi,
First of all, thanks for the great tool!!
I am trying to add a child to a parent doc with a many-to-none relationship between them. But both object exists before I create the relationship. (I use version 0.5.0 of the adapter)
Parent model:
children: hasMany('child', {
    inverse: null,
    buildReference(db, record) {
      return db.collection('parents').doc(record.get('id')).collection('children');
    }
  }),

The child model doesn't have a reference to the parent, because I don't need that.
When a user adds a child to a parent, I am doing:
parent.get('children').pushObject(child);

My question is, how do I persist this in the database?
If I do parent.save() it doesn't create a subcollection reference to the child. Also parent.get('hasDirtyAttributes') returns false.
Maybe I just don't find this in the docs. In that case sorry for the inconvenience, but could you direct me to a solution?
Thanks in advance!

Ok, I found a solution.
I made a model called reference, that looks like this:
cloudFirestoreReference: attr('string')

Then when the user adds a child to the parent I do this:
        this.get('store').createRecord('reference',{
          id: child.get('id'),
          cloudFirestoreReference: 'parents/' + child.get('id')
        }).save({
          adapterOptions: {
            buildReference(db) {
              return db.collection('parents').doc(parent.get('id')).collection('children');
            }
          }
        })

This way I can add/remove the reference quite easily.
Let me know if there is a simple method. Otherwise, just close this issue. Thanks again :)!

So before you close this issue, I thought deleting will be easy, but it's not working it seems.
I try to do this to remove a reference:
First I get the reference object
    this.get('store').findRecord('reference', child.get('id'), {
        adapterOptions: {
          buildReference(db) {
            return db.collection('parents').doc(parent.get('id')).collection('children');
          }
        }
      })

Which I tried to delete with simply doing .then(ref => {ref.destroyRecord()}) or
.then(ref => {
  ref.deleteRecord();
  ref.save({
        adapterOptions: {
          buildReference(db) {
            return db.collection('parents').doc(parent.get('id')).collection('children');
          }
        }
      })
})

In both case I get this error:
Error: Attempted to handle event `pushedData` on <reference:my3QBGOqhqIUss8q6nvc> while in state root.deleted.inFlight.

How should I delete a reference in a subcollection?

You'll have to manually persist the relationship yourself when it's a many-to-many or many-to-none. See the note here.

Also just to add. In your case, you don't need to implement a buildReference hook in the hasMany of your parent model. When the relationship is many-to-many or many-to-none, by default it will look for it under the sub-collection.
children: hasMany('child', {
  inverse: null,
}),

Just having that setup above will default to parents/<parent_id>/childrens sub-collection.

Thanks for the fast reply! I somehow looked over the batched writes.
Yeah, the deletion works fine that way.
Also just a note, that could go into the guides maybe. As you define the full doc reference on batch.delete, I also had to do that to create the reference.
Like this:
parent.save({
  adapterOptions: {
    include(batch, db) {
      batch.set(db.collection('parents').doc(parent.get('id')).collection('children').doc(child.get('id'),{});
    }
  }
});

Otherwise it gave an error. I guess it was because the parent was already existing in the db? Not sure. I also noticed that it doesn't matter what I try to save to create the relationship. To have the same result I can do
children.save({
  adapterOptions: {
    include(batch, db) {
      batch.set(db.collection('parents').doc(parent.get('id')).collection('children').doc(child.get('id'),{});
    }
  }
});

Which makes me wonder if I could just call the batch.set somehow directly, because to create the relationship, I actually don't need to save neither the parent or the child.
And finally, after creating the reference in the way you see above, in the database, the subcollection will only have an id with no content. Well I don't know if this case I should see the cloudFirestoreReference automatically there or not. But even if it's not there, the adapter still finds the children just fine with the id only.
Thanks again!

Ok I realized I can set it directly through firebase like this.
db.collection('parents').doc(parent.get('id')).collection('children').doc(child.get('id')).set({})

Closing this now :)


Fix goto definition for field names.

Changes Tree-Sitter field_name to contain a reference_expression.
On top of https://github.com/vlang/v-analyzer/pull/134

Why is there a need for it?
Can you show a small V code sample, that is now handled, but was not before?

Thank you 🙇🏻♂ .


Treat admin token users like regular users, require URL

Changes:

Admin token users are now treated like regular users: they can be persisted in the metadata Realm, logged out and back in, etc
Added a flag when configuring file system to allow admin token users to opt out of being persisted (they also will not show up in allSessions or currentSession if so)
Admin token users now require a URL to initialize
Updated tests

Shouldn't be merged in until Sync 2 is ready to ship.

We can't do this for the ROS 2.0 timeframe, so I'm closing it. We can revisit in the future.


Spyder Internal Problem (Blowfish deprecated ?)

Issue Report Checklist

[x] Searched the issues page for similar reports
[x] Read the relevant sections of the Spyder Troubleshooting Guide and followed its advice
[x] Reproduced the issue after updating with conda update spyder (or pip, if not using Anaconda)
[x] Could not reproduce inside jupyter qtconsole (if console-related)
[x] Tried basic troubleshooting (if a bug/error)

[x] Restarted Spyder
[x] Reset preferences with spyder --reset
[x] Reinstalled the latest version of Anaconda
[x] Tried the other applicable steps from the Troubleshooting Guide

[x] Completed the Problem Description, Steps to Reproduce and Version sections below

Problem Description
I have been trying to integrate PsychoPy with Spyder, and have  been following online instructions to create environments viathe Anaconda prompt through which these two programs can interact. Examples of the code I've been using to do this are:
conda env create -n psychopy -f psychopy-env.yml
conda activate psychopy
OR:
conda create -n psychopy  python=3.8  anaconda
source activate psychopy
pip install psychopy
OR:
conda create -n psychopyenv python=3.8
conda install -n psychopyenv pip spyder psychopy
conda activate psychopyenv
After all this, Spyder still does not recognise the PsychoPy module. And now, when I open Spyder, an 'Issue reporter' window opens saying that there is an internal problem. Spyder also seems to have 'reset', in that all my altered keyboard shortcuts have returned to default settings and I keep being offered the interactive software tour upon startup, as if I've just downloaded Spyder for the first time.
What steps reproduce the problem?

Opening Spyder.

What is the expected output? What do you see instead?
When opening Spyder from the Anaconda prompt, there are the following lines of errors:
(base) C:\Users\alexn>spyder
fromIccProfile: failed minimal tag size sanity
C:\Users\alexn\anaconda3\lib\site-packages\paramiko\transport.py:219: CryptographyDeprecationWarning: Blowfish has been deprecated
"class": algorithms.Blowfish,
Error on reading from the event loop self pipe
loop:
Traceback (most recent call last):
File "C:\Users\alexn\anaconda3\lib\asyncio\windows_events.py", line 453, in finish_recv
return ov.getresult()
OSError: [WinError 995] The I/O operation has been aborted because of either a thread exit or an application request
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\alexn\anaconda3\lib\asyncio\proactor_events.py", line 768, in _loop_self_reading
f.result()  # may raise
File "C:\Users\alexn\anaconda3\lib\asyncio\windows_events.py", line 808, in _poll
value = callback(transferred, key, ov)
File "C:\Users\alexn\anaconda3\lib\asyncio\windows_events.py", line 457, in finish_recv
raise ConnectionResetError(*exc.args)
ConnectionResetError: [WinError 995] The I/O operation has been aborted because of either a thread exit or an application request
Paste Traceback/Error Below (if applicable)

PASTE TRACEBACK HERE

Versions

Spyder version: 5.3.3
Python version: 3.8.5
Qt version:
PyQt version:
Operating System name/version: Windows 10

Dependencies

# Mandatory:
atomicwrites >=1.2.0          :  1.4.0 (OK)
chardet >=2.0.0               :  4.0.0 (OK)
cloudpickle >=0.5.0           :  2.0.0 (OK)
cookiecutter >=1.6.0          :  1.7.3 (OK)
diff_match_patch >=20181111   :  20200713 (OK)
intervaltree >=3.0.2          :  3.1.0 (OK)
IPython >=7.31.1;<8.0.0       :  7.31.1 (OK)
jedi >=0.17.2;<0.19.0         :  0.18.1 (OK)
jellyfish >=0.7               :  0.9.0 (OK)
jsonschema >=3.2.0            :  4.16.0 (OK)
keyring >=17.0.0              :  23.4.0 (OK)
nbconvert >=4.0               :  6.4.4 (OK)
numpydoc >=0.6.0              :  1.4.0 (OK)
paramiko >=2.4.0              :  2.8.1 (OK)
parso >=0.7.0;<0.9.0          :  0.8.3 (OK)
pexpect >=4.4.0               :  4.8.0 (OK)
pickleshare >=0.4             :  0.7.5 (OK)
psutil >=5.3                  :  5.9.0 (OK)
pygments >=2.0                :  2.11.2 (OK)
pylint >=2.5.0;<3.0           :  2.14.5 (OK)
pyls_spyder >=0.4.0           :  0.4.0 (OK)
pylsp >=1.5.0;<1.6.0          :  1.5.0 (OK)
pylsp_black >=1.2.0           :  1.2.1 (OK)
qdarkstyle >=3.0.2;<3.1.0     :  3.0.2 (OK)
qstylizer >=0.1.10            :  0.1.10 (OK)
qtawesome >=1.0.2             :  1.0.3 (OK)
qtconsole >=5.3.2;<5.4.0      :  5.3.2 (OK)
qtpy >=2.1.0                  :  2.2.0 (OK)
rtree >=0.9.7                 :  0.9.7 (OK)
setuptools >=49.6.0           :  65.5.0 (OK)
sphinx >=0.6.6                :  5.0.2 (OK)
spyder_kernels >=2.3.3;<2.4.0 :  2.3.3 (OK)
textdistance >=4.2.0          :  4.2.1 (OK)
three_merge >=0.1.1           :  0.1.1 (OK)
watchdog >=0.10.3             :  2.1.6 (OK)
zmq >=22.1.0                  :  23.2.0 (OK)

# Optional:
cython >=0.21                 :  None (NOK)
matplotlib >=3.0.0            :  3.5.1 (OK)
numpy >=1.7                   :  1.23.3 (OK)
pandas >=1.1.1                :  1.4.1 (OK)
scipy >=0.17.0                :  1.7.3 (OK)
sympy >=0.7.3                 :  None (NOK)

Hey @Nagle2036, thanks for reporting. I think you're expecting that Spyder is connected automatically to the psychopy or psychopyenv environments you created to install psychopy, but unfortunately that doesn't happen like that.
To solve this issue, you need to:

Open the Anaconda Prompt and run there:
 conda activate psychopy
 pip install spyder-kernels

Follow our instructions to make the connection I talked about with your psychopy environment.

Besides, to solve the other problem you have, i.e. this one:

When opening Spyder from the Anaconda prompt, there are the following lines of errors:
(base) C:\Users\alexn>spyder
fromIccProfile: failed minimal tag size sanity
C:\Users\alexn\anaconda3\lib\site-packages\paramiko\transport.py:219: CryptographyDeprecationWarning: Blowfish has >been deprecated
"class": algorithms.Blowfish,
Error on reading from the event loop self pipe
loop:
Traceback (most recent call last):
File "C:\Users\alexn\anaconda3\lib\asyncio\windows_events.py", line 453, in finish_recv
return ov.getresult()
OSError: [WinError 995] The I/O operation has been aborted because of either a thread exit or an application request
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\alexn\anaconda3\lib\asyncio\proactor_events.py", line 768, in _loop_self_reading
f.result() # may raise
File "C:\Users\alexn\anaconda3\lib\asyncio\windows_events.py", line 808, in _poll
value = callback(transferred, key, ov)
File "C:\Users\alexn\anaconda3\lib\asyncio\windows_events.py", line 457, in finish_recv
raise ConnectionResetError(*exc.args)
ConnectionResetError: [WinError 995] The I/O operation has been aborted because of either a thread exit or an application request

you need to close Spyder, open the Anaconda Prompt and run there
conda update python

That should work, but let us know if it does for you.

@Nagle2036
In addition to the remedy suggested by @ccordoba12 .....
paramiko\transport.py:219: CryptographyDeprecationWarning: Blowfish has been deprecated
Yes, blowfish is deprecated in favour of AES. I believe that you are seeing this issue originating from paramikobecause the installed version (2.8.1 - 2021-11-28) is out of date.  I would try specifically updating paramiko. The resulting version should be bumped significantly.
Reference: https://www.paramiko.org/changelog.html?highlight=blowfish#2.11.0

@ccordoba12 and @texadactyl , thank you very much for your responses! It's much appreciated. Your suggestions have worked, and Spyder is no longer opening with an internal error.
The one thing that is still not working is changing the environment to use psychopy within Spyder. After opening the Python Interpreter Preferences, selecting the environment that I have created and activated in the Ananconda Prompt, and clicking 'Apply', I receive an 'Invalid file path' error, even though the path to that environment definitely exists.
Do you have any suggestions on this? Thanks very much again!

@Nagle2036
You didn't explain how you updated paramiko. And, I obviously do not know how your machine and O/S are set up.
Python pip packages outside of conda are independent of conda so that probably explains the difference in paramiko versions. Also, independent of pip, the O/S sometimes bundles Python packages when you install O/S packages related to Python.
Unfortunately, mixing pip and conda packages are like gasoline and water.  Don't do that.  Been there, done that, paid the price!  Free advice: do not use pip in conda environments.
What version of paramiko is used in the conda environments you are using?
conda list | grep paramiko
conda list -n ENVNAME | grep paramiko

Hi @texadactyl , thanks for the quick reply.
I updated paramiko using conda update paramiko.
Running conda list | findstr paramiko , it says I have version 2.8.1
Running conda list -n psychopy | findstr paramiko , nothing is returned.
Thanks again for your ongoing help.

Somehow, your copy of anaconda/miniconda is using an out of date paramiko.  Why?  What is your O/S?
I am not using anaconda/miniconda at the moment in Xubuntu Linux.  I'll experiment later today with conda when I am free.

Yes, I'm not sure why my paramiko wouldn't be the most up to date version, especially after explicitly updating it in Anaconda Prompt. My O/S is Windows 10 Home, Version 10.0.19045 Build 19045. I hope that helps.
Do you think that the error here (that I also pasted above) is related to the error that I have in applying the new psychopy environment within Spyder?
(base) C:\Users\alexn>spyder
fromIccProfile: failed minimal tag size sanity
C:\Users\alexn\anaconda3\lib\site-packages\paramiko\transport.py:219: CryptographyDeprecationWarning: Blowfish has been deprecated
"class": algorithms.Blowfish,

Thank you!
Alex

These are separate anomalies, hence, you have 2 issues.
The vanilla default conda channel is using an old paramiko.  See https://anaconda.org/anaconda/paramiko
The conda-forge channel has the correct version of paramiko to use.  See https://anaconda.org/conda-forge/paramiko .  Don't ask me why the default channel has fallen so far behind!  Well, everybody is busy.
To get the conda-forge package, do this: conda install -c conda-forge paramiko.

Hi @texadactyl , thanks very much, the paramiko error has gone! I still have the fromIccProfile: failed minimal tag size sanity warning, but I believe I can ignore this.
Do you happen to have any thoughts about my last issue - that I receive an 'Invalid file path' error when trying to change the environment within the Spyder Python Interpreter preferences to psychopy?
Perhaps I need to first install Spyder within the psychopy environment, as I cannot open Spyder from the Anaconda Prompt when in the psychopy environment.
Thanks again!
Alex

Your "'Invalid file path" error when trying to change the environment within the Spyder Python Interpreter preferences to psychopy" issue has nothing to do with this issue.

That's right, but still this is something we can help @Nagle2036 here.
@Nagle2036, the thing is we run some validations before allowing users to set a Python interpreter so we know that it's an actual interpreter and not another program. To help you with this, please open a terminal (cmd.exe), and run there:
ipython
In [1]: from spyder.utils.programs import is_python_interpreter
In [2]: is_python_interpreter(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")

and report the result here.

Ok, thanks for your help @Nagle2036. I was expecting that result but I wanted to be sure. Now could you run
from spyder.utils.programs import check_python_help
check_python_help(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")

and also in a terminal
C:\Users\alexn\anaconda3\envs\pyschopy\python.exe -c 'import this'

and post both results? Thanks!

Thanks very much @ccordoba12. Here are the results below:
(base) C:\Users\alexn>python
Python 3.8.13 (default, Oct 19 2022, 22:38:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
from spyder.utils.programs import check_python_help
check_python_help(r"C:\Users\alexn\anaconda3\envs\psychopy\python.exe")
False

There was an error running the second command. Not sure how to account for this.
(base) C:\Users\alexn>C:\Users\alexn\anaconda3\envs\psychopy\python.exe -c 'import this'
  File "<string>", line 1
    'import
          ^
SyntaxError: EOL while scanning string literal

Let me know how best to proceed. Thanks.
Alex

Thanks for your patience @Nagle2036. About the second command, please run this instead:
C:\Users\alexn\anaconda3\envs\psychopy\python.exe -c "import this"

I think on Windows you need to use double quotes to run things in the console (and I forgot about it).

No worries, I've run it again. Must say, I wasn't expecting this output!
(base) C:\Users\alexn>C:\Users\alexn\anaconda3\envs\psychopy\python.exe -c "import this"
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Must say, I wasn't expecting this output!

Haha, that's what we use to check if you passed to Spyder a valid Python interpreter.
Now please open the file
C:\Users\alexn\anaconda3\lib\site-packages\spyder\utils\programs.py

look for the function check_python_help and change this line on it
proc = run_program(filename, ['-c', 'import this'], env={})

to
proc = run_program(filename, ['-c', '"import this"'], env={})

Finally, you need to run again in a terminal
from spyder.utils.programs import check_python_help
check_python_help(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")

That should give True and so solve your problem.

Ok, could you replace check_python_help in the file I mentioned for this
def check_python_help(filename):
    """Check that the python interpreter can compile and provide the zen."""
    proc = run_program(filename, ['-c', 'import this'], env={})
    stdout, _ = proc.communicate()
    stdout = str(stdout)
    valid_lines = [
        'Beautiful is better than ugly.',
        'Explicit is better than implicit.',
        'Simple is better than complex.',
        'Complex is better than complicated.',
    ]
    if all(line in stdout for line in valid_lines):
        return True
    else:
        return False

and run it again in a new terminal?
That should generate an error that would let us know what's the cause of this problem.

Hi @ccordoba12 , all done, here it is:
(base) C:\Users\alexn>python
Python 3.8.13 (default, Oct 19 2022, 22:38:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
from spyder.utils.programs import check_python_help
check_python_help(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\alexn\anaconda3\lib\site-packages\spyder\utils\programs.py", line 1006, in check_python_help
    proc = run_program(filename, ['-c', 'import this'], env={})
  File "C:\Users\alexn\anaconda3\lib\site-packages\spyder\utils\programs.py", line 274, in run_program
    raise ProgramError("Program %s was not found" % program)
spyder.utils.programs.ProgramError: Program C:\Users\alexn\anaconda3\envs\pyschopy\python.exe was not found

Hope that's helpful.
Alex

Hi @ccordoba12 , thanks for this suggestion. I'm not too sure what you mean by adding Anaconda to the PATH environment variable. I made the change in code in the programs.py file, but still returned the same error when running check_python_help:
(base) C:\Users\alexn>python
Python 3.8.13 (default, Oct 19 2022, 22:38:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
from spyder.utils.programs import check_python_help
check_python_help(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\alexn\anaconda3\lib\site-packages\spyder\utils\programs.py", line 1009, in check_python_help
    proc = run_program(filename, ['-c', 'import this'], env={})
  File "C:\Users\alexn\anaconda3\lib\site-packages\spyder\utils\programs.py", line 275, in run_program
    raise ProgramError("Program %s was not found" % program)
spyder.utils.programs.ProgramError: Program C:\Users\alexn\anaconda3\envs\pyschopy\python.exe was not found

I don't want to keep taking up your time with this. I can try to just use PsychoPy through its GUI instead of writing the code. If there's any other obvious solution, please let me know. Thanks very much. Alex

I don't want to keep taking up your time with this.

Don't worry, I don't have a problem with this. The thing is several users have reported a similar problem to yours before and we've been unable to pin it down and fix it because we can't reproduce it on our side.
So, what do you get when run in a terminal?
import os.path as osp
osp.isfile(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")

Thank you @ccordoba12 ,
I ran the code above and it returned False.
Best wishes,
Alex

Sorry for the long delay to come back to you. What do you get if you run instead
import os.path as osp
osp.exists(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")

?

Hi @ccordoba12,
No worries! Again, running this code in my terminal returns False.
Best wishes,
Alex

Ok, let's try a different approach because I don't understand what happens here.
Please look again for the function run_program in spyder\utils\programs.py and replace the following lines there
fullcmd = find_program(program)
if not fullcmd:
    raise ProgramError("Program %s was not found" % program)

with
fullcmd = r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe"
#if not fullcmd:
#   raise ProgramError("Program %s was not found" % program)

then open a Python prompt and run again
from spyder.utils.programs import check_python_help
check_python_help(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")

Perhaps that works this time.

Hi @ccordoba12
Thanks for this. I replaced the the lines in spyder\utils\programs.py, and ran the code you suggested in my Anaconda prompt, and received the following output:
(base) C:\Users\alexn>python
Python 3.8.13 (default, Oct 19 2022, 22:38:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from spyder.utils.programs import check_python_help
>>> check_python_help(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\alexn\anaconda3\lib\site-packages\spyder\utils\programs.py", line 1009, in check_python_help
    proc = run_program(filename, ['-c', 'import this'], env={})
  File "C:\Users\alexn\anaconda3\lib\site-packages\spyder\utils\programs.py", line 284, in run_program
    return subprocess.Popen(fullcmd, **subprocess_kwargs)
  File "C:\Users\alexn\anaconda3\lib\subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\alexn\anaconda3\lib\subprocess.py", line 1311, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified

For the lines that I replaced with in programs.py, did you mean for them to be commented? I've attached a screenshot of where I replaced.
Thanks very much.
Alex

Set a breakpoint at return subprocess.Popen(fullcmd, **subprocess_kwargs).
What values are fullcmd and subprocess_kwargs set to?

That's a good idea @Nagle2036. Let us know what you get.

Thanks @texadactyl and @ccordoba12
Apologies in advance if I didn't understand these instructions correctly. In the def check_python_help(filename) command, I saw that my version was not wrapped by the try: and except Exception: lines, so I added these in.
I then went into def run_program, set a breakpoint at the last line as you asked, and ran the file from within Spyder. Was I  meant to see values for fullcmd and subprocess_kwargs in the variable explorer and pass them to you? I couldn't see them.
In the code, fullcmd and subprocess_kwargs are set to the same as what you have pasted above.
Hope that's somewhat helpful. Thanks.
Alex

No, you were just supposed to verify that the values of fullcmd and subprocess_kwargs make sense. Don't change the code. What are the values (Variable Explorer) when you reach the breakpoint?
Also, it sounds like your copy of spyder.utils.programs is not current. When was the last time that you updated spyder? Ditto for the other Pyhon library modules.

Looking back at your problem description, I am concerned that you may have "mixed gaoline and water". Spyder and many other projects caution us to avoid mixing conda and pip whenever possible. After looking at both Anaconda and pip code, I can see why.
When I install Anaconda (or Miniconda) + Spyder, I have never had an issue with Spyder.  If I need to add a non-Anaconda package with pip, I create a special environment for that purpose, activate it , and only do my pip install operations there. In that way, I keep the Anaconda base and other environments clean of pip manipulation. When done with a pip-modified Anaconda environment, one can safely remove it.
This should work after installing Anaconda or Miniconda:
conda create -n psychopy
source activate psychopy
pip install psychopy

If you wish to import psychopy stuff in a Spyder development tab (develop + edit + debug etc.), be sure to start Spyder only when the psychopy envirnment is active.
Yes, it is a royal pain that in 2022 there are STILL 2 conflicting package managers for Python.

For my own laptop, I use only pip and no conda. Spyder works just fine for me. If I get into package trouble, I nuke the Python libraries and generated executables and start over. But that rarely happens. In any case, its my problem alone.
For my Seti Institute projects, the data centre standardizes using Anaconda so I create special environments when I need pip. My colleagues do too.

Are you guys sure this interpreter issue is not related to a typo in the path? @ccordoba12
If I read right @Nagle2036 created environment psychopy.

conda create -n psychopy

But most if not all of tests are applied on pyschopy.

from spyder.utils.programs import check_python_help
check_python_help(r"C:\Users\alexn\anaconda3\envs\pyschopy\python.exe")

That would explain why the interpreter validation failed also after adding (Windows) double quotes in the code.


Other mime types support - Images

I'm trying to incorporate image loading as well as html parsing and I seem to see that support for this is planned from the code at some future point as the Response object underlying the async request can contain whichever stream
    static async Task<IDocument> LoadDocumentAsync(this IBrowsingContext context, IResponse response, MimeType contentType, TextSource source, CancellationToken cancel)
    {
        if (contentType.Represents(MimeTypes.Xml) || contentType.Represents(MimeTypes.ApplicationXml))
            return await XmlDocument.LoadAsync(context, response, contentType, source, cancel).ConfigureAwait(false);
        else if (contentType.Represents(MimeTypes.Svg))
            return await SvgDocument.LoadAsync(context, response, contentType, source, cancel).ConfigureAwait(false);

        return await HtmlDocument.LoadAsync(context, response, contentType, source, cancel).ConfigureAwait(false);
    }

At the moment the stream is encapsulated in the TextSource built from response but I could imagine having an ImageSource which would just wrap the image contents.
OpenAsync also already supports non-html types although the resulting Idocument becomes inconsistent but the actual content loading is already working as ContentType reports correct image type.
Now I see several ways to expose the stream:

Create IAbstractDocument interface which would just hold the contents and then add ImageDocument support which will create ImageDocument with Stream property to allow conversion to Image for display in XAML
Directly load the image indepently using IHtmlImage Source but the problem here is that some images can be behind the cookie wall requiring login via HTMLDocument handling of the login page so it becomes quite messy
Hack the Idocument to always hold the Stream and ignore the inconsistency

Have you given thought to this? Am I missing something here?
Is this supposed to be handled via Resources instead? I can see the GetImage() method of IHtmlImageElement which returns IImageInfo via LoadResource, do you think the best way is to extend this to also be able to return IImageContent which wraps the actual response data?

Is this supposed to be handled via Resources instead? I can see the GetImage() method of IHtmlImageElement which returns IImageInfo via LoadResource, do you think the best way is to extend this to also be able to return IImageContent which wraps the actual response data?

Yes, this is definitely how I thought about it. The IImageInfo only exposes the information required for the DOM, while your concrete implementation would also have an underlying stream to the (decoded) image data.
The loading of images should be (or will be) done automatically if you allow external resources to be loaded from the document. All requests contain the appropriate cookies (and possibly other relevant information for the request). Internally, the IRequester interface is used (via the IResourceLoader interface).
I guess you can also load the image manually. You only have to have a reference to the document. If I am not completely mistaken the Loader field should contain a reference to the IResourceLoader instance (if resource loading is allowed). This would allow you to make arbitrary requests (and thus get the response).
I will try to make this more elegant / efficient in the future. Possibly, in the currently online version (v0.9.3) Loader is not exposed. But this will change and, e.g., XHR will be possible with, e.g., AngleSharp.Scripting.JavaScript, as well.

I see, it makes sense, thanks. While I agree that automatic loading would be useful in most cases but that would mean that each document request would trigger multiple request to all underlying resources causing more downloads than might be necessary.

There are multiple ways to prevent this. One is to introduce your own IRequester implementation, which does not perform all requested downloads. The most simple one, however, is to provide a filter to the (default) ResourceLoader instance, which would only allow certain requests.
There are no plans for an "async lazy resource loading". Reasoning is simple: If you don't need it, don't load it. If you might need it - load it (loading may take some time, hence you want to start as early as possible).

(I closed it for now as I think no new enhancement / feature request would originate from here. Otherwise, please start a new one with a specific feature request.)
Last remark: Yes, I know that allowing resource loading by default (w/o requiring the user to take actions) would result in MANY unnecessary requests. That is the reason why resource loading is disabled by default and needs to be enabled explicitly.


Strip googleadservices links?

Whenever I search for something on google I find some useful links in the ad-section.
And if you hover over a link it looks ok, but if you copy it you get a googleadservices link that will redirect to the one it showed in the statusbar.
You think you could fix the link? :)
Keep up the great work :)
Ove B-)

Can you provide some examples please, @ove70 ?


doc/examples/local-backend-env

Adds an example of a backend environment that can be run in Kind
Adds the option to configure redis using DNS records in the Sentinel custom resource. This feature is only meant for testing purposes, to avoid having to configure the specific IPs of the redis Pods in the Sentinel resource. Should not be used in production.

/kind feature
/kind documentation
/priority important-soon
/assign

/lgtm

/approve


Downloadable webpage

Link to the Issue
Fixes #4
Description of your PR
Added 3 buttons to download the HTML, CSS and JS codes. Also, manually linked the css and js files in the html file for proper style and js rendering. Since, a Navbar is not present right now, the buttons can be styled later as per the navbar style for consistency
Screenshots (if applicable)
Download buttons

Saved files

Test Plan
Added 3 functions that download the respective files. Verified by downloading the files and opening the index.html in browser, which successfully render with the css and js
Have you read the Contributing Guidelines?
Yes

@s-katte We need to use anchor tags as only they have href and download attribute. Made rest of the requested changes

we can provide default values for href and that may avoid warnings, can't we?

I tried that already, but it doesn't work

we can provide default values for href and that may avoid warnings, can't we?

Giving " " for href did the job


Increase prowjob age so that jobs stay longer on deck

Make the prowjob CRD's more persistent by increasing their age. This will enable them to be displayed on deck for longer (1 month as opposed to 1 week by default), so we can have badges for infrequent jobs like release-postsubmits.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/test helm-chart-tooling-presubmit


Covid

I left placeholder text for where the images should go.

@graceyraspberry
Ok we added two new vignettes. What are the current blockers before we merge they into dev?

Could we build the site?
Did we checked for the tupos?
We decided turn off code-runs in this vignettes. Is it working now?

Is this a blocker? If not, what is the deadline for the review?

Confirmed that external images work now, but I had to download and install png package in order for it to work, is the package included somewhere else or should I add the installation somewhere?


FIX: set the default thread count to 1 in all actions

Closes #29.

ping @gregcaporaso 🔔 would this do?