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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions