Bug #1505
Updated by Tomer Brisker about 9 years ago
Tried to create a new host with DHCP smart proxy and an IP address provided by myself. This failed with: Unable to save failed to detect boot server: undefined method `dns_lookup' for nil:NilClass Failed to stop Guest: Connect has been freed Failed to perform rollback on DHCP Settings for bl-cassandra-s04.example.com - undefined method `destroy' for nil:NilClass Failed to destroy Libirt instance bl-cassandra-s04.example.com: Connect has been freed Failed to destroy Storage for Libirt instance bl-cassandra-s04.example.com: Connection has been closed foreman-proxy.log: W, [2012-02-24T09:37:34.192315 #32138] WARN -- : skipped bl-memcached-s01 - invalid address W, [2012-02-24T09:37:34.194593 #32138] WARN -- : skipped bl-memcached-s02 - invalid address I, [2012-02-24T09:37:34.289264 #32138] INFO -- : Enumerated hosts on 10.200.10.0 W, [2012-02-24T09:37:34.307224 #32138] WARN -- : Failed to resolve IP address for false I, [2012-02-24T09:37:34.406806 #32138] INFO -- : Added DHCP reservation for bl-cassandra-s04.example.com (10.200.10.64 / 52:54:00:06:a9:be) I, [2012-02-24T09:37:34.512930 #32138] INFO -- : TFTP: entry for 52:54:00:06:a9:be created successfully W, [2012-02-24T09:38:17.693066 #32138] WARN -- : skipped hq-mgmt-p01 - invalid address W, [2012-02-24T09:38:17.696518 #32138] WARN -- : skipped imagini-nas - invalid address foreman/production.log: Processing HostsController#create (for 192.168.1.220 at 2012-02-24 09:37:31) [POST] Parameters: {"commit"=>"Submit", "action"=>"create", "authenticity_token"=>"7m4nORy3CpkeISXK8AoSy9hVeiEggwNfwjPBO/xwZh0=", "controller"=>"hosts", "host"=>{"comment"=>"", "architecture_id"=>"1", "subnet_id"=>"3", "managed"=>"true", "puppetproxy_id"=>"1", "name"=>"bl-cassandra-s04", "host_parameters_attributes"=>{"0"=>{"name"=>"", "nested"=>"", "value"=>"", "_destroy"=>""}}, "sp_mac"=>"", "powerup"=>"1", "network_type"=>"bridge", "puppetmaster_name"=>"puppet.example.com", "disk_size"=>"10", "memory"=>"8388608", "sp_name"=>"", "domain_id"=>"1", "storage_pool"=>"rootvg", "enabled"=>"1", "root_pass"=>"[FILTERED]", "build"=>"1", "medium_id"=>"6", "interface"=>"virbr0", "hypervisor_id"=>"5", "hostgroup_id"=>"6", "ptable_id"=>"9", "sp_subnet_id"=>"", "ip"=>"10.200.10.64", "environment_id"=>"1", "model_id"=>"", "disk"=>"", "sp_ip"=>"", "vcpu"=>"2", "puppetclass_ids"=>[""], "operatingsystem_id"=>"1"}} Adding Libvirt instance storage for bl-cassandra-s04.example.com Adding Libvirt instance for bl-cassandra-s04.example.com failed to detect boot server: undefined method `dns_lookup' for nil:NilClass Create DHCP reservation for bl-cassandra-s04.example.com-52:54:00:06:a9:be/10.200.10.64 Add the TFTP configuration for bl-cassandra-s04.example.com Fetching required TFTP boot files for bl-cassandra-s04.example.com Rolling back due to a problem: Failed to stop Guest: Connect has been freed Delete the TFTP configuration for bl-cassandra-s04.example.com Failed to perform rollback on DHCP Settings for bl-cassandra-s04.example.com - undefined method `destroy' for nil:NilClass Removing Libvirt instance for for bl-cassandra-s04.example.com Failed to destroy Libirt instance bl-cassandra-s04.example.com: Connect has been freed Removing Libvirt instance storage for bl-cassandra-s04.example.com Failed to destroy Storage for Libirt instance bl-cassandra-s04.example.com: Connection has been closed Failed to save: failed to detect boot server: undefined method `dns_lookup' for nil:NilClass, Failed to stop Guest: Connect has been freed, Failed to perform rollback on DHCP Settings for bl-cassandra-s04.example.com - undefined method `destroy' for nil:NilClass, Failed to destroy Libirt instance bl-cassandra-s04.example.com: Connect has been freed, Failed to destroy Storage for Libirt instance bl-cassandra-s04.example.com: Connection has been closed Rendering template within layouts/application Rendering hosts/new I've applied the patch from http://theforeman.org/issues/1420, however this changes the error to: failed to detect boot server (foreman-proxy.example.com): getaddrinfo: Name or service not known Our DNS records are: foreman-proxy.example.com. 86400 IN CNAME foreman-proxy-01.prod.example.com. foreman-proxy-01.prod.example.com. 86400 IN CNAME hq-mgmt-p01.internal.hq.example.com. hq-mgmt-p01.internal.hq.example.com. 86400 IN A 192.168.1.12 12.1.168.192.in-addr.arpa. 86400 IN PTR hq-mgmt-p01.internal.hq.example.com. hq-mgmt-p01.internal.hq.example.com. 86400 IN A 192.168.1.12 So I changed app/models/orchestration.rb to: def bootserver_ip name_or_ip return name_or_ip if name_or_ip =~ Net::Validations::IP_REGEXP # APB # return dns_ptr_record.dns_lookup(name_or_ip).ip if dns_ptr_record # # Looks like we are managing DHCP but not DNS # domain.resolver.getaddress(name_or_ip).to_s dns=Resolv::DNS.new dns.getaddress(name_or_ip).to_s end Which got a little further: DHCP conflict detected - expected bl-cassandra-s04.example.com-52:54:00:06:a9:be/10.200.10.64, found bl-cassandra-s04.example.com-52:54:00:06:a9:be/10.200.10.64, bl-cassandra-s04.example.com-52:54:00:06:a9:be/10.200.10.64 (note the duplication in the error as well) I manually removed the lease and hey presto -it's all working now :-)