nsidc / vagrant-vsphere

VMware vSphere provider for Vagrant
Other
609 stars 166 forks source link

"can't modify frozen String" error on vagrant-vsphere 1.14.0 #299

Open hgtok opened 1 year ago

hgtok commented 1 year ago

Problem

Error "can't modify frozen String" when running vagrant up using plugin version 1.14.0

vagrant up aio --debug

console log ``` INFO interface: info: Bringing machine 'aio' up with 'vsphere' provider... Bringing machine 'aio' up with 'vsphere' provider... INFO machine: Calling action: get_state on provider vSphere (new) INFO interface: Machine: action ["get_state", "start", {:target=>:aio}] INFO runner: Running action: machine_action_get_state # INFO warden: Calling IN action: # INFO handle_box: Machine already has box. HandleBox will not run. INFO warden: Calling IN action: # INFO warden: Calling IN action: # INFO warden: Calling IN action: # INFO warden: Calling IN action: # INFO warden: Calling OUT action: # INFO warden: Calling OUT action: # INFO warden: Calling OUT action: # INFO warden: Calling OUT action: # INFO warden: Calling OUT action: # INFO interface: Machine: action ["get_state", "end", {:target=>:aio}] INFO batch_action: Enabling parallelization by default. INFO batch_action: Disabling parallelization because only executing one action INFO batch_action: Batch action will parallelize: false INFO batch_action: Starting action: # up {:destroy_on_error=>true, :install_provider=>false, :parallel=>true, :provision_ignore_sentinel=>false, :provision_types=>nil} INFO machine: Calling action: up on provider vSphere (new) DEBUG environment: Attempting to acquire process-lock: machine-action-0f22c9a593d0bcd5b320c09e437c621d DEBUG environment: Attempting to acquire process-lock: dotlock INFO environment: Acquired process lock: dotlock INFO environment: Released process lock: dotlock INFO environment: Acquired process lock: machine-action-0f22c9a593d0bcd5b320c09e437c621d INFO interface: Machine: action ["up", "start", {:target=>:aio}] INFO runner: Running action: machine_action_up # DEBUG updater: init updater INFO warden: Calling IN action: # INFO handle_box: Machine already has box. HandleBox will not run. INFO warden: Calling IN action: # INFO warden: Calling IN action: # INFO warden: Calling IN action: # INFO runner: Running action: machine_action_up # INFO warden: Calling IN action: # INFO machine: Calling action: get_state on provider vSphere (new) INFO interface: Machine: action ["get_state", "start", {:target=>:aio}] INFO runner: Running action: machine_action_get_state # INFO warden: Calling IN action: # INFO handle_box: Machine already has box. HandleBox will not run. INFO warden: Calling IN action: # INFO warden: Calling IN action: # INFO warden: Calling IN action: # INFO warden: Calling IN action: # INFO warden: Calling OUT action: # INFO warden: Calling OUT action: # INFO warden: Calling OUT action: # INFO warden: Calling OUT action: # INFO warden: Calling OUT action: # INFO interface: Machine: action ["get_state", "end", {:target=>:aio}] INFO warden: Calling OUT action: # INFO runner: Running action: machine_action_up # INFO warden: Calling IN action: # INFO warden: Calling IN action: # ERROR warden: Error occurred: can't modify frozen String: "vsphere_aio" INFO warden: Beginning recovery process... INFO warden: Recovery complete. ERROR warden: Error occurred: can't modify frozen String: "vsphere_aio" INFO warden: Beginning recovery process... INFO warden: Recovery complete. ERROR warden: Error occurred: can't modify frozen String: "vsphere_aio" INFO warden: Beginning recovery process... INFO warden: Calling recover: # INFO warden: Beginning recovery process... INFO warden: Recovery complete. INFO warden: Recovery complete. ERROR warden: Error occurred: can't modify frozen String: "vsphere_aio" INFO warden: Beginning recovery process... INFO warden: Recovery complete. INFO warden: Beginning recovery process... INFO warden: Recovery complete. INFO warden: Beginning recovery process... INFO warden: Recovery complete. INFO environment: Released process lock: machine-action-0f22c9a593d0bcd5b320c09e437c621d INFO environment: Running hook: environment_unload INFO runner: Running action: environment_unload # ERROR vagrant: Vagrant experienced an error! Details: ERROR vagrant: # ERROR vagrant: can't modify frozen String: "vsphere_aio" ERROR vagrant: /home/tokhg/.vagrant.d/gems/2.7.6/gems/vagrant-vsphere-1.14.0/lib/vSphere/action/connect_vsphere.rb:25:in `rescue in call' /home/tokhg/.vagrant.d/gems/2.7.6/gems/vagrant-vsphere-1.14.0/lib/vSphere/action/connect_vsphere.rb:16:in `call' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/action/warden.rb:48:in `call' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/action/builtin/config_validate.rb:25:in `call' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/action/warden.rb:48:in `call' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/action/builtin/handle_box.rb:56:in `call' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/action/warden.rb:48:in `call' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/action/builder.rb:180:in `call' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/action/runner.rb:101:in `block in run' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/util/busy.rb:19:in `busy' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/action/runner.rb:101:in `run' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/machine.rb:248:in `action_raw' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/machine.rb:217:in `block in action' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/environment.rb:631:in `lock' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/machine.rb:203:in `call' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/machine.rb:203:in `action' /opt/vagrant/embedded/gems/2.3.0/gems/vagrant-2.3.0/lib/vagrant/batch_action.rb:86:in `block (2 levels) in run' INFO interface: error: can't modify frozen String: "vsphere_aio" can't modify frozen String: "vsphere_aio" INFO interface: Machine: error-exit ["VagrantPlugins::VSphere::Errors::VSphereError", "can't modify frozen String: \"vsphere_aio\""] ```

Using

Workaround #1 (downgrade)

downgrade plugin back to last working version vagrant plugin install vagrant-vsphere --plugin-version 1.13.5

Workaround #2 (set name; thanks to @tmarshall93)

Vagrant.configure("2") do |config|
  config.vm.hostname = 'dummy'
  ...
  config.vm.provider :vsphere do |vsphere|
    vsphere.name = config.vm.hostname
    ...
tmarshall93 commented 1 year ago

also running into this issue on provider version 1.14.0 when not giving a vm name. Specifying a name works