我正在尝试修补一个工头错误,在该错误中他们不会在构建后禁用网络启动,并在您想要重建主机时将其重新打开。看起来我只需要在“内置”方法中添加一些代码:
./app/controllers/unattended_controller.rb
def built
logger.info "#{controller_name}: #{@host.name} is Built!"
update_ip if Setting[:update_ip_from_built_request]
head(@host.built ? :created : :conflict)
end
和“setBuild”方法:
./app/models/host/managed.rb
def setBuild
self.build = true
self.save
errors.empty?
end
从foreman_bootdisk.rb和modify_vm_cdrom.rb的第 79 行借用灵感,我想出了一些类似的东西:
def setBuild
load '/usr/share/foreman/app/models/compute_resources/foreman/model/vmware.rb'
if ComputeResources::Foreman::Model::Vmware.available?
vm_reconfig_hardware('instance_uuid' => params[:token], 'hardware_spec' => {'bootOptions'=>['network', 'disk']})
end
self.build = true
self.save
errors.empty?
end
问题是我得到了错误,
糟糕,很抱歉,但出了点问题 自动加载常量 ComputeResources::Foreman::Model::Vmware 时检测到循环依赖
我已经对此进行了一些阅读,并听说问题可能出在 rail 的自动加载上,但我尝试使用 load 和 require 修复此问题(我试图避免我听到的自动加载功能已被弃用),但尽管两者都尝试过,我继续收到此错误,我不确定为什么。我与 foreman_bootdisk.rb 的编码人员有什么不同,才能得到他们不是的错误?vmware.rb似乎不想加载?