Skip to content

[Bug]: Get-HoloDeckDNSConfig /usr/bin/python: can't open file '/dnsmasq/get_configmap.py': [Errno 2] No such file or directory #135

Description

@aenagy

Holorouter Version

9.0.2

VCF Version

VCF 9.0.2.0

Target Type

vCenter Cluster

Describe the bug

While trying to create new DNS entries with:

PS /root> Set-HoloDeckDNSConfig -DNSRecord '10.1.1.200 test-a.site-a.vcf.lab'
Get-Content: Cannot find path '/dnsmasq/dnsmasq_configmap.yaml' because it does not exist.
30-05-2026 03:39:35  Unknown[2871788]: [ERROR] Failed to configure DNS entries
Failed to write to log file: Cannot bind argument to parameter 'Path' because it is an empty string.
30-05-2026 03:39:35  Unknown[2871788]: [ERROR] The property 'hosts' cannot be found on this object. Verify that the property exists and can be set.
Failed to write to log file: Cannot bind argument to parameter 'Path' because it is an empty string.
Exception: Exiting Function Set-HoloDeckDNSConfig
PS /root>

Followed by some troubleshooting:

PS /root> Set-HoloDeckDNSConfig -DNSRecord '10.1.1.200 test-a.site-a.vcf.lab'
Get-Content: Cannot find path '/dnsmasq/dnsmasq_configmap.yaml' because it does not exist.
30-05-2026 03:39:35  Unknown[2871788]: [ERROR] Failed to configure DNS entries
Failed to write to log file: Cannot bind argument to parameter 'Path' because it is an empty string.
30-05-2026 03:39:35  Unknown[2871788]: [ERROR] The property 'hosts' cannot be found on this object. Verify that the property exists and can be set.
Failed to write to log file: Cannot bind argument to parameter 'Path' because it is an empty string.
Exception: Exiting Function Set-HoloDeckDNSConfig
PS /root> Get-ChildItem -Recurse -Path "/" -Filter "get_configmap.py" -ErrorAction SilentlyContinue

    Directory: /holodeck-runtime/dnsmasq

UnixMode         User Group         LastWriteTime         Size Name
--------         ---- -----         -------------         ---- ----
-rw-r-----       root root        1/21/2026 14:42          686 get_configmap.py

PS /root> $config
PS /root> Get-HoloDeckDNSConfig
/usr/bin/python: can't open file '/dnsmasq/get_configmap.py': [Errno 2] No such file or directory
PS /root>

Reproduction steps

  1. Get-HoloDeckDNSConfig

Expected behavior

Get-HoloDeckDNSConfig should not produce an error.

Relevant logs

root@holorouter [ ~ ]# kubectl get pods -A | grep -i "dnsmasq" | cut --fields=9 --delimiter=" " | xargs -I {} sh -c 'printf "**********\nSTART pod: {}\n**********\n" ; kubectl describe pod {} ; kubectl logs {} ; printf "**********\nEND pod: {}\n**********\n"'
**********
START pod: dnsmasq-dhcp-deployment-c9bcb98b6-tl4vw
**********
Name:             dnsmasq-dhcp-deployment-c9bcb98b6-tl4vw
Namespace:        default
Priority:         0
Service Account:  default
Node:             holorouter/10.4.2.54
Start Time:       Sat, 30 May 2026 03:01:57 +0000
Labels:           app=dnsmasq-dhcp
                  pod-template-hash=c9bcb98b6
Annotations:      <none>
Status:           Running
IP:               10.4.2.54
IPs:
  IP:           10.4.2.54
Controlled By:  ReplicaSet/dnsmasq-dhcp-deployment-c9bcb98b6
Containers:
  dnsmasq:
    Container ID:   containerd://0d9d908af9c02252ca9e211a843499cd32f9c45322445edd983851585acd5511
    Image:          vcf.lab/dnsmasq
    Image ID:       sha256:7cd9ab7764e517029d50f35f43eeb9469522f988e5def3857834b65473dbdf36
    Ports:          67/TCP, 67/UDP
    Host Ports:     67/TCP, 67/UDP
    State:          Running
      Started:      Sat, 30 May 2026 03:01:57 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     1
      memory:  1Gi
    Requests:
      cpu:        200m
      memory:     256Mi
    Environment:  <none>
    Mounts:
      /etc/dnsmasq.conf from config-volume (ro,path="dnsmasq-dhcp.conf")
      /etc/hosts from config-volume (ro,path="hosts")
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-29tcs (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  config-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      dnsmasq
    Optional:  false
  kube-api-access-29tcs:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  33m   default-scheduler  0/1 nodes are available: 1 node(s) didn't have free ports for the requested pod ports. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod..
  Normal   Scheduled         33m   default-scheduler  Successfully assigned default/dnsmasq-dhcp-deployment-c9bcb98b6-tl4vw to holorouter
  Normal   Pulled            33m   kubelet            Container image "vcf.lab/dnsmasq" already present on machine
  Normal   Created           33m   kubelet            Created container dnsmasq
  Normal   Started           33m   kubelet            Started container dnsmasq
dnsmasq: started, version 2.90 DNS disabled
dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset no-nftset auth cryptohash DNSSEC loop-detect inotify dumpfile
dnsmasq-dhcp: DHCP, IP range 10.1.3.130 -- 10.1.3.200, lease time 1d
dnsmasq-dhcp: DHCP, IP range 10.1.1.220 -- 10.1.1.239, lease time 1d
**********
END pod: dnsmasq-dhcp-deployment-c9bcb98b6-tl4vw
**********
**********
START pod: dnsmasq-dns-deployment-66d9fbfb9b-5mnxs
**********
Name:             dnsmasq-dns-deployment-66d9fbfb9b-5mnxs
Namespace:        default
Priority:         0
Service Account:  default
Node:             holorouter/10.4.2.54
Start Time:       Sat, 30 May 2026 03:01:55 +0000
Labels:           app=dnsmasq-dns
                  pod-template-hash=66d9fbfb9b
Annotations:      <none>
Status:           Running
IP:               10.244.0.68
IPs:
  IP:           10.244.0.68
Controlled By:  ReplicaSet/dnsmasq-dns-deployment-66d9fbfb9b
Containers:
  dnsmasq:
    Container ID:   containerd://ccd32c3805651b2f3e80f221b82039bd1ca8836390deec916c34984796284227
    Image:          vcf.lab/dnsmasq
    Image ID:       sha256:7cd9ab7764e517029d50f35f43eeb9469522f988e5def3857834b65473dbdf36
    Ports:          53/TCP, 53/UDP
    Host Ports:     0/TCP, 0/UDP
    State:          Running
      Started:      Sat, 30 May 2026 03:01:56 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     500m
      memory:  1Gi
    Requests:
      cpu:        200m
      memory:     256Mi
    Environment:  <none>
    Mounts:
      /etc/dnsmasq.conf from config-volume (ro,path="dnsmasq-dns.conf")
      /etc/hosts from config-volume (ro,path="hosts")
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-l4s8x (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  config-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      dnsmasq
    Optional:  false
  kube-api-access-l4s8x:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  33m   default-scheduler  Successfully assigned default/dnsmasq-dns-deployment-66d9fbfb9b-5mnxs to holorouter
  Normal  Pulled     33m   kubelet            Container image "vcf.lab/dnsmasq" already present on machine
  Normal  Created    33m   kubelet            Created container dnsmasq
  Normal  Started    33m   kubelet            Started container dnsmasq
dnsmasq: started, version 2.90 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset no-nftset auth cryptohash DNSSEC loop-detect inotify dumpfile
dnsmasq: using nameserver 10.50.0.250#53
dnsmasq: read /etc/hosts - 206 names
**********
END pod: dnsmasq-dns-deployment-66d9fbfb9b-5mnxs
**********
**********
START pod: dnsmasq-dns-deployment-66d9fbfb9b-g6c8f
**********
Name:             dnsmasq-dns-deployment-66d9fbfb9b-g6c8f
Namespace:        default
Priority:         0
Service Account:  default
Node:             holorouter/10.4.2.54
Start Time:       Sat, 30 May 2026 03:01:55 +0000
Labels:           app=dnsmasq-dns
                  pod-template-hash=66d9fbfb9b
Annotations:      <none>
Status:           Running
IP:               10.244.0.69
IPs:
  IP:           10.244.0.69
Controlled By:  ReplicaSet/dnsmasq-dns-deployment-66d9fbfb9b
Containers:
  dnsmasq:
    Container ID:   containerd://7919ae27d6fa20de041e98f843967ff1ef303584911cdd8c75e8cee743d3a0ff
    Image:          vcf.lab/dnsmasq
    Image ID:       sha256:7cd9ab7764e517029d50f35f43eeb9469522f988e5def3857834b65473dbdf36
    Ports:          53/TCP, 53/UDP
    Host Ports:     0/TCP, 0/UDP
    State:          Running
      Started:      Sat, 30 May 2026 03:01:56 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     500m
      memory:  1Gi
    Requests:
      cpu:        200m
      memory:     256Mi
    Environment:  <none>
    Mounts:
      /etc/dnsmasq.conf from config-volume (ro,path="dnsmasq-dns.conf")
      /etc/hosts from config-volume (ro,path="hosts")
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-l6l6l (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  config-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      dnsmasq
    Optional:  false
  kube-api-access-l6l6l:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  33m   default-scheduler  Successfully assigned default/dnsmasq-dns-deployment-66d9fbfb9b-g6c8f to holorouter
  Normal  Pulled     33m   kubelet            Container image "vcf.lab/dnsmasq" already present on machine
  Normal  Created    33m   kubelet            Created container dnsmasq
  Normal  Started    33m   kubelet            Started container dnsmasq
dnsmasq: started, version 2.90 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset no-nftset auth cryptohash DNSSEC loop-detect inotify dumpfile
dnsmasq: using nameserver 10.50.0.250#53
dnsmasq: read /etc/hosts - 206 names
**********
END pod: dnsmasq-dns-deployment-66d9fbfb9b-g6c8f
**********
**********
START pod: dnsmasq-dns-deployment-66d9fbfb9b-ghd26
**********
Name:             dnsmasq-dns-deployment-66d9fbfb9b-ghd26
Namespace:        default
Priority:         0
Service Account:  default
Node:             holorouter/10.4.2.54
Start Time:       Sat, 30 May 2026 03:01:55 +0000
Labels:           app=dnsmasq-dns
                  pod-template-hash=66d9fbfb9b
Annotations:      <none>
Status:           Running
IP:               10.244.0.67
IPs:
  IP:           10.244.0.67
Controlled By:  ReplicaSet/dnsmasq-dns-deployment-66d9fbfb9b
Containers:
  dnsmasq:
    Container ID:   containerd://6d423bb1811c8db63bee8600c64bddf30a114fc30453059e5652b1940c6d84ca
    Image:          vcf.lab/dnsmasq
    Image ID:       sha256:7cd9ab7764e517029d50f35f43eeb9469522f988e5def3857834b65473dbdf36
    Ports:          53/TCP, 53/UDP
    Host Ports:     0/TCP, 0/UDP
    State:          Running
      Started:      Sat, 30 May 2026 03:01:56 +0000
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     500m
      memory:  1Gi
    Requests:
      cpu:        200m
      memory:     256Mi
    Environment:  <none>
    Mounts:
      /etc/dnsmasq.conf from config-volume (ro,path="dnsmasq-dns.conf")
      /etc/hosts from config-volume (ro,path="hosts")
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-lchsg (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  config-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      dnsmasq
    Optional:  false
  kube-api-access-lchsg:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  33m   default-scheduler  Successfully assigned default/dnsmasq-dns-deployment-66d9fbfb9b-ghd26 to holorouter
  Normal  Pulled     33m   kubelet            Container image "vcf.lab/dnsmasq" already present on machine
  Normal  Created    33m   kubelet            Created container dnsmasq
  Normal  Started    33m   kubelet            Started container dnsmasq
dnsmasq: started, version 2.90 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset no-nftset auth cryptohash DNSSEC loop-detect inotify dumpfile
dnsmasq: using nameserver 10.50.0.250#53
dnsmasq: read /etc/hosts - 206 names
**********
END pod: dnsmasq-dns-deployment-66d9fbfb9b-ghd26
**********
root@holorouter [ ~ ]#

Additional context

VCF 9.0.2 successfully installed.

Never encountered this error before.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions