Foreman 1.9.2 - Issues creating VMs on clusters within a vSphere folder

Hey guys/girls,

We have been running Foreman 1.9.2 in our lab environment for about 2 weeks
now and are happy with it. It manages a single vSphere cluster.

We upgraded our prod instance last Friday to 1.9.2 as well. Unfortunately
we have a multiple clusters and folders in prod which Fog appears to be
having difficulty with in this new version. This was working in 1.6 and 1.8
(didnt test 1.7)

The vSphere structure looks like this:

  • DC1
    – Folder01
  • DC2
    – Folder01
    — ESX01
    – Folder02
    — Cluster01
    ---- ESX01-08
    — Cluster02
    ---- ESX01-04

When we provision to DC2-Folder02-Cluster01 we receive the following error
message:

Failed to create a compute MyVSphereCluster (VMware) instance
myhostname.mydomain: failed to create vm: undefined method `resourcePool'
for nil:NilClass

Similar occurs if I try provisioning to the second Cluster as well

It looks similar to
http://projects.theforeman.org/issues/10912
http://projects.theforeman.org/issues/9779
http://projects.theforeman.org/issues/2696
but even upon resubmission I cannot get it to work. Foreman to vSphere
authentication is working.

Here is the error from the log

> Started POST "/hosts" for my.ip.address at 2015-10-12 09:29:41 +1100
2015-10-12 09:29:41 [app] [I] Processing by HostsController#create as /
2015-10-12 09:29:41 [app] [I] Parameters: {"utf8"=>"✓",
"authenticity_token"=>"5ww+shvZQHBGK2wyX/NLpVuk+nHTS3NU1iMOtQs3bGw=",
"host"=>{"name"=>"globmwtest12", "organization_id"=>"18",
"location_id"=>"1", "hostgroup_id"=>"186", "compute_resource_id"=>"6",
"environment_id"=>"1", "puppet_ca_proxy_id"=>"1", "puppet_proxy_id"=>"1",
"config_group_ids"=>[""], "puppetclass_ids"=>[""], "managed"=>"true",
"progress_report_id"=>"[FILTERED]", "type"=>"Host::Managed",
"interfaces_attributes"=>{"0"=>{"_destroy"=>"0", "type"=>"Nic::Managed",
"mac"=>"", "identifier"=>"eth0", "name"=>"globmwtest12", "domain_id"=>"16",
"subnet_id"=>"1", "ip"=>"my.ip.address", "managed"=>"1", "primary"=>"1",
"provision"=>"1", "virtual"=>"0", "tag"=>"", "attached_to"=>"",
"compute_attributes"=>{"type"=>"VirtualVmxnet3",
"network"=>"Monitoring_Network"}}}, "compute_attributes"=>{"cpus"=>"2",
"corespersocket"=>"1", "memory_mb"=>"2048",
"cluster"=>"cluster_ip_address", "path"=>"/Datacenters/glob/vm/linux",
"guest_id"=>"centos64Guest",
"scsi_controller_type"=>"ParaVirtualSCSIController",
"hardware_version"=>"Default", "start"=>"1",
"volumes_attributes"=>{"0"=>{"_delete"=>"", "datastore"=>"DataStoreSIMM",
"name"=>"Hard disk", "size_gb"=>"10", "thin"=>"true",
"eager_zero"=>"false"}}}, "architecture_id"=>"1",
"operatingsystem_id"=>"21", "provision_method"=>"build", "build"=>"1",
"medium_id"=>"16", "ptable_id"=>"241", "disk"=>"",
"root_pass"=>"[FILTERED]", "is_owned_by"=>"30-Users", "enabled"=>"1",
"model_id"=>"", "comment"=>"", "overwrite"=>"false"},
"capabilities"=>"build image", "provider"=>"Vmware"}
2015-10-12 09:29:41 [sql] [I] Adding Compute instance for
myhostname.mydomain
2015-10-12 09:29:41 [sql] [I] Successfully decrypted field for
Foreman::Model::Vmware GESX
2015-10-12 09:29:41 [sql] [I] Successfully decrypted field for
Foreman::Model::Vmware G
ESX
2015-10-12 09:29:42 [app] [W] Failed to create a compute G**********ESX
(VMware) instance myhostname.mydomain: failed to create vm: undefined
method resourcePool' for nil:NilClass > > NoMethodError: failed to create vm: undefined methodresourcePool' for
nil:NilClass
>
/opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/requests/compute/create_vm.rb:35:in
rescue in create_vm' > /opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/requests/compute/create_vm.rb:8:increate_vm'
>
/opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/models/compute/server.rb:235:in
save' > /usr/share/foreman/app/models/compute_resources/foreman/model/vmware.rb:326:increate_vm'
> /usr/share/foreman/app/models/concerns/orchestration/compute.rb:76:in
setCompute' > /usr/share/foreman/app/models/concerns/orchestration.rb:152:inexecute'
> /usr/share/foreman/app/models/concerns/orchestration.rb:97:in block in process' > /usr/share/foreman/app/models/concerns/orchestration.rb:89:ineach'
> /usr/share/foreman/app/models/concerns/orchestration.rb:89:in process' > /usr/share/foreman/app/models/concerns/orchestration.rb:19:inon_save'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:660:in
_run__2596865478280346459__save__2544365256120986850__callbacks' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:405:in__run_callback'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:385:in
_run_save_callbacks' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:81:inrun_callbacks'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/callbacks.rb:264:in
create_or_update' > /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/persistence.rb:84:insave'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/validations.rb:50:in
save' > /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/attribute_methods/dirty.rb:22:insave'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:241:in
block (2 levels) in save' > /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:295:inblock in with_transaction_returning_status'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in
transaction' > /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:208:intransaction'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:293:in
with_transaction_returning_status' > /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:241:inblock in save'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:252:in
rollback_active_record_state!' > /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:240:insave'
> /usr/share/foreman/app/models/concerns/foreman/sti.rb:29:in
save_with_type' > /usr/share/foreman/app/controllers/hosts_controller.rb:84:increate'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_controller/metal/implicit_render.rb:4:in
send_action' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/abstract_controller/base.rb:167:inprocess_action'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_controller/metal/rendering.rb:10:in
process_action' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/abstract_controller/callbacks.rb:18:inblock in process_action'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:627:in
block (4 levels) in _run__1681778167113484607__process_action__3673635032914090382__callbacks' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:215:inblock in _conditional_callback_around_8199'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:326:in
around' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:310:in_callback_around_3011'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:214:in
_conditional_callback_around_8199' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:626:inblock (3 levels) in
_run__1681778167113484607__process_action__3673635032914090382__callbacks'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:215:in
block in _conditional_callback_around_8198' > /usr/share/foreman/app/controllers/concerns/application_shared.rb:13:inset_timezone'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:214:in
_conditional_callback_around_8198' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:625:inblock (2 levels) in
_run__1681778167113484607__process_action__3673635032914090382__callbacks'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:215:in
block in _conditional_callback_around_8197' > /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:inclear_thread'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:214:in
_conditional_callback_around_8197' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:448:inblock in
_run__1681778167113484607__process_action__3673635032914090382__callbacks'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:215:in
block in _conditional_callback_around_8196' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:326:inaround'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:310:in
_callback_around_13' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:214:in_conditional_callback_around_8196'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:414:in
_run__1681778167113484607__process_action__3673635032914090382__callbacks' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:405:in__run_callback'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:385:in
_run_process_action_callbacks' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:81:inrun_callbacks'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/abstract_controller/callbacks.rb:17:in
process_action' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_controller/metal/rescue.rb:29:inprocess_action'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_controller/metal/instrumentation.rb:30:in
block in process_action' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/notifications.rb:123:inblock in instrument'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/notifications/instrumenter.rb:20:in
instrument' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/notifications.rb:123:ininstrument'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_controller/metal/instrumentation.rb:29:in
process_action' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_controller/metal/params_wrapper.rb:207:inprocess_action'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/railties/controller_runtime.rb:18:in
process_action' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/abstract_controller/base.rb:121:inprocess'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/abstract_controller/rendering.rb:45:in
process' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_controller/metal.rb:203:indispatch'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_controller/metal/rack_delegation.rb:14:in
dispatch' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_controller/metal.rb:246:inblock in action'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/routing/route_set.rb:73:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/routing/route_set.rb:73:indispatch'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/routing/route_set.rb:36:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/journey-1.0.4/lib/journey/router.rb:68:inblock in call'
>
/opt/rh/ruby193/root/usr/share/gems/gems/journey-1.0.4/lib/journey/router.rb:56:in
each' > /opt/rh/ruby193/root/usr/share/gems/gems/journey-1.0.4/lib/journey/router.rb:56:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/routing/route_set.rb:600:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/apipie-rails-0.2.6/lib/apipie/extractor/recorder.rb:97:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/static.rb:62:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/apipie-rails-0.2.6/lib/apipie/middleware/checksum_in_headers.rb:27:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/best_standards_support.rb:17:in
call' > /opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/etag.rb:23:incall'
>
/opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/conditionalget.rb:35:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/head.rb:14:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/params_parser.rb:21:in
call' > /usr/share/foreman/lib/middleware/catch_json_parse_errors.rb:9:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/flash.rb:242:in
call' > /opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:210:incontext'
>
/opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/session/abstract/id.rb:205:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/cookies.rb:339:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/query_cache.rb:64:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:473:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/callbacks.rb:28:in
block in call' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:405:in_run__136604507602276194__call__2544365256120986850__callbacks'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:405:in
__run_callback' > /opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:385:inrun_call_callbacks'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:81:in
run_callbacks' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/callbacks.rb:27:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/remote_ip.rb:31:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/debug_exceptions.rb:16:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/show_exceptions.rb:56:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/railties-3.2.8/lib/rails/rack/logger.rb:26:incall_app'
>
/opt/rh/ruby193/root/usr/share/gems/gems/railties-3.2.8/lib/rails/rack/logger.rb:16:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/request_id.rb:22:incall'
>
/opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/methodoverride.rb:21:in
call' > /opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/runtime.rb:17:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/cache/strategy/local_cache.rb:72:in
call' > /opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/lock.rb:15:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/actionpack-3.2.8/lib/action_dispatch/middleware/static.rb:62:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:inforward'
>
/opt/rh/ruby193/root/usr/share/gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:143:in
pass' > /opt/rh/ruby193/root/usr/share/gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:155:ininvalidate'
>
/opt/rh/ruby193/root/usr/share/gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:71:in
call!' > /opt/rh/ruby193/root/usr/share/gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/railties-3.2.8/lib/rails/engine.rb:479:in
call' > /opt/rh/ruby193/root/usr/share/gems/gems/railties-3.2.8/lib/rails/application.rb:223:incall'
>
/opt/rh/ruby193/root/usr/share/gems/gems/railties-3.2.8/lib/rails/railtie/configurable.rb:30:in
method_missing' > /opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/builder.rb:134:incall'
>
/opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/urlmap.rb:64:in
block in call' > /opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/urlmap.rb:49:ineach'
>
/opt/rh/ruby193/root/usr/local/share/gems/gems/rack-1.4.5/lib/rack/urlmap.rb:49:in
call' > /usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/lib/phusion_passenger/rack/thread_handler_extension.rb:77:inprocess_request'
>
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/lib/phusion_passenger/request_handler/thread_handler.rb:140:in
accept_and_process_next_request' > /usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/lib/phusion_passenger/request_handler/thread_handler.rb:108:inmain_loop'
>
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/lib/phusion_passenger/request

I added the following to
/usr/share/foreman/app/models/concerns/orchestration/compute.rb
def setCompute
logger.info "Adding Compute instance for #{name}"
add_interfaces_to_compute_attrs

  • logger.info "Compute attributes merged: %s" %
    compute_attributes.merge(:name => vm_name)
    self.vm = compute_resource.create_vm compute_attributes.merge(:name =>
    vm_name)
    rescue => e

and got the following output
Log trace:
/usr/share/foreman/app/models/concerns/orchestration/compute.rb:279 method:
2015-10-12 12:13:01 [sql] [I] Compute attributes merged: {"cpus"=>"2",
"corespersocket"=>"1", "memory_mb"=>"1024",
"cluster"=>"glob-vmware-cluster-01", "path"=>"/Datacenters/glob/vm/linux",
"guest_id"=>"centos64Guest",
"scsi_controller_type"=>"ParaVirtualSCSIController",
"hardware_version"=>"Default", "start"=>"1",
"volumes_attributes"=>{"0"=>{"_delete"=>"",
"datastore"=>"shared_storage02", "name"=>"Hard disk", "size_gb"=>"10",
"thin"=>"true", "eager_zero"=>"false"}},
"interfaces_attributes"=>{"0"=>{"type"=>"VirtualVmxnet3",
"network"=>"Monitoring_Network"}}, "name"=>"globmwtest15.mydomain"}

where all the attributes appear correct including the cluster name,
glob-vmware-cluster-01 which is the real name of Cluster01. This doesnt
include the path in any fashion though, ie shoudl it be
DC2/Folder02/cluster-name-01?

Matt

We previously ran into this bug Bug #5855: Cannot select vSphere clusters in folders (foreman-vmware) - Foreman
and couldnt deploy 1.7. It seems somewhat similar except now I can select
the cluster but cannot deploy to it. Gabriel's log in that issue looks
similar to what we are experiencing here.

More info

Added the following
to /opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/requests/compute/create_vm.rb

      vm_cfg[:cpuHotAddEnabled] = attributes[:cpuHotAddEnabled] if 

attributes.key?(:cpuHotAddEnabled)
vm_cfg[:memoryHotAddEnabled] = attributes[:memoryHotAddEnabled]
if attributes.key?(:memoryHotAddEnabled)
vm_cfg[:firmware] = attributes[:firmware] if
attributes.key?(:firmware)

  •      Rails.logger.info("vm_cfg = #{vm_cfg}")
    
  •      Rails.logger.info("cluster=#{attributes[:cluster]}")
    
  •      Rails.logger.info("datacenter=#{attributes[:datacenter]}")
    
··· + Rails.logger.info("raw_cluster=#{get_raw_cluster(attributes[:cluster], attributes[:datacenter])}") resource_pool = if attributes[:resource_pool]

Add got the following data back

Log trace:
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/log_subscriber.rb:105
method: info
2015-10-12 14:15:40 [app] [I] vm_cfg = {:name=>“globmwtest16.mydomain”,
:guestId=>“centos64Guest”, :version=>nil,
:files=>{:vmPathName=>"[shared_storage02]"}, :numCPUs=>“2”,
:numCoresPerSocket=>“1”, :memoryMB=>“1024”,
:deviceChange=>[{:operation=>:add,
:device=>#<RbVmomi::VIM::VirtualVmxnet3:0x00000009b3b358 @props={:key=>0,
:deviceInfo=>{:label=>“Network adapter”, :summary=>“VM Network”},
:backing=>#<RbVmomi::VIM::VirtualEthernetCardNetworkBackingInfo:0x00000009b3d810
@props={:deviceName=>“Monitoring_Network”}>, :addressType=>“generated”}>},
{:operation=>“add”,
:device=>#<RbVmomi::VIM::ParaVirtualSCSIController:0x0000000a0c0698
@props={:key=>1000, :busNumber=>0, :sharedBus=>:noSharing}>},
{:operation=>:add, :fileOperation=>:create,
:device=>#<RbVmomi::VIM::VirtualDisk:0x0000000a108088 @props={:key=>0,
:backing=>#<RbVmomi::VIM::VirtualDiskFlatVer2BackingInfo:0x0000000a0ea8f8
@props={:fileName=>"[shared_storage02]", :diskMode=>:persistent,
:thinProvisioned=>“true”}>, :controllerKey=>1000, :unitNumber=>0,
:capacityInKB=>10485760}>}], :extraConfig=>[{:key=>“bios.bootOrder”,
:value=>“ethernet0”}]}
Log trace:
/opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/requests/compute/create_vm.rb:24
method: create_vm
2015-10-12 14:15:40 [app] [I] cluster=glob-vmware-cluster-01
Log trace:
/opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/requests/compute/create_vm.rb:25
method: create_vm
2015-10-12 14:15:40 [app] [I] datacenter=glob
Log trace:
/opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/requests/compute/create_vm.rb:26
method: create_vm
2015-10-12 14:15:40 [app] [I] raw_cluster=

>
> Add more debug messages to get_cluster and Datacenter as well. Looks like
> it finds the DC but then the folder traversal fails to find the cluster by
> name…
>

Log trace:
/opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/requests/compute/create_vm.rb:27
method: create_vm
2015-10-12 15:09:24 [app] [I] get_raw_cluster name glob-vmware-cluster-01
and datacenter glob
Log trace:
/opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/requests/compute/get_cluster.rb:14
method: get_raw_cluster
2015-10-12 15:09:24 [app] [I] get_raw_cluster_name
dc=Datacenter("datacenter-21")
Log trace:
/opt/rh/ruby193/root/usr/share/gems/gems/fog-1.32.0/lib/fog/vsphere/requests/compute/get_cluster.rb:16
method: get_raw_cluster
2015-10-12 15:09:24 [app] [I] RbVmomi::VIM::Datacenter:
find_compute_resource at path=glob-vmware-cluster-01
Log trace:
/opt/rh/ruby193/root/usr/share/gems/gems/rbvmomi-1.8.2/lib/rbvmomi/vim/Datacenter.rb:4
method: find_compute_resource
2015-10-12 15:09:24 [app] [I] RbVmomi::VIM::Folder traverse
path=glob-vmware-cluster-01 type=ComputeResource create=false
Log trace:
/opt/rh/ruby193/root/usr/share/gems/gems/rbvmomi-1.8.2/lib/rbvmomi/vim/Folder.rb:79
method: traverse
2015-10-12 15:09:24 [app] [I] RbVmomi::VIM::Folder traverse
path=glob-vmware-cluster-01 is a string

Printing the datacenter cluster object
in /usr/share/foreman/app/models/compute_resources/foreman/model/vmware.rb:60
2015-10-12 15:30:33 [app] [I] Datacenter has the following clusters [
<Fog::Compute::Vsphere::Cluster
> id="domain-s1073",
> name="172.17.7.66",
> datacenter="glob",
> num_host=1,
> num_cpu_cores=6,
> overall_status="gray",
> full_path="dev/172.17.7.66"
> >, <Fog::Compute::Vsphere::Cluster
> id="domain-c103",
> name="glob-vmware-cluster-01",
> datacenter="glob",
> num_host=8,
> num_cpu_cores=64,
> overall_status="green",
> full_path="prod/glob-vmware-cluster-01"
> >, <Fog::Compute::Vsphere::Cluster
> id="domain-c299",
> name="glob-vmware-cluster-02",
> datacenter="glob",
> num_host=4,
> num_cpu_cores=28,
> overall_status="green",
> full_path="prod/glob-vmware-cluster-02"
> >]
Log trace:
/usr/share/foreman/app/models/compute_resources/foreman/model/vmware.rb:60
method: clusters

The clusters are there but cannot be found via traversal

Is this a regression of Feature #1945: Better VMWare support for non-clusters setup - Foreman and
possibly this
fix https://github.com/shlomizadok/foreman/commit/de764bf506e0b1bc3ca66f477d06f57c502e002b
?

You're probably hitting Bug #11274: Unable to get resource pool when cluster is nested in intermediate folder under Datacenter - Foreman,
which as you say is a regression. There was an issue in Fog in 1.9, so
the code was changed to match (#10151) and after the issue was fixed in
Fog for 1.10, it was changed back under #11274.

You may be able to apply the fix to both Fog and from Foreman 1.10 to
get the fix, or wait until 1.10.0-RC1, which I hope will be out within
the week.

Cheers,

··· On 12/10/15 06:35, Matthew Wilmott wrote: > Printing the datacenter cluster object > in /usr/share/foreman/app/models/compute_resources/foreman/model/vmware.rb:60 > 2015-10-12 15:30:33 [app] [I] Datacenter has the following clusters [ > > id="domain-s1073", > > name="172.17.7.66", > > datacenter="glob", > > num_host=1, > > num_cpu_cores=6, > > overall_status="gray", > > full_path="dev/172.17.7.66" > > >, > id="domain-c103", > > name="glob-vmware-cluster-01", > > datacenter="glob", > > num_host=8, > > num_cpu_cores=64, > > overall_status="green", > > full_path="prod/glob-vmware-cluster-01" > > >, > id="domain-c299", > > name="glob-vmware-cluster-02", > > datacenter="glob", > > num_host=4, > > num_cpu_cores=28, > > overall_status="green", > > full_path="prod/glob-vmware-cluster-02" > > >] > Log trace: > /usr/share/foreman/app/models/compute_resources/foreman/model/vmware.rb:60 > method: clusters > > The clusters are there but cannot be found via traversal > > Is this a regression of http://projects.theforeman.org/issues/1945 and > possibly this > fix https://github.com/shlomizadok/foreman/commit/de764bf506e0b1bc3ca66f477d06f57c502e002b > ?


Dominic Cleal
dominic@cleal.org

Seems that you are right. This is in develop
<https://github.com/theforeman/foreman/blob/develop/app/models/compute_resources/foreman/model/vmware.rb#L60>
as
well in 1.10
<https://github.com/theforeman/foreman/blob/1.10-stable/app/models/compute_resources/foreman/model/vmware.rb#L60>

··· 2015-10-12 7:35 GMT+03:00 Matthew Wilmott :

Printing the datacenter cluster object
in /usr/share/foreman/app/models/compute_resources/foreman/model/vmware.rb:60
2015-10-12 15:30:33 [app] [I] Datacenter has the following clusters [
<Fog::Compute::Vsphere::Cluster

id="domain-s1073",
name="172.17.7.66",
datacenter="glob",
num_host=1,
num_cpu_cores=6,
overall_status="gray",
full_path="dev/172.17.7.66"

, <Fog::Compute::Vsphere::Cluster
id=“domain-c103”,
name=“glob-vmware-cluster-01”,
datacenter=“glob”,
num_host=8,
num_cpu_cores=64,
overall_status=“green”,
full_path=“prod/glob-vmware-cluster-01”
, <Fog::Compute::Vsphere::Cluster
id=“domain-c299”,
name=“glob-vmware-cluster-02”,
datacenter=“glob”,
num_host=4,
num_cpu_cores=28,
overall_status=“green”,
full_path=“prod/glob-vmware-cluster-02”
]
Log trace:
/usr/share/foreman/app/models/compute_resources/foreman/model/vmware.rb:60
method: clusters

The clusters are there but cannot be found via traversal

Is this a regression of Feature #1945: Better VMWare support for non-clusters setup - Foreman and
possibly this fix
https://github.com/shlomizadok/foreman/commit/de764bf506e0b1bc3ca66f477d06f57c502e002b
?


You received this message because you are subscribed to the Google Groups
"Foreman users" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-users+unsubscribe@googlegroups.com.
To post to this group, send email to foreman-users@googlegroups.com.
Visit this group at http://groups.google.com/group/foreman-users.
For more options, visit https://groups.google.com/d/optout.