Module: OvirtProvisionPlugin::HostExtensions
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/ovirt_provision_plugin/host_extensions.rb
Instance Method Summary collapse
- #host_for_installing(client) ⇒ Object
- #host_service(client) ⇒ Object
- #ovirt_client ⇒ Object
- #ovirt_host? ⇒ Boolean
- #ovirt_host_callback ⇒ Object
- #ovirt_host_id ⇒ Object
- #ovirt_node? ⇒ Boolean
- #status_installing?(host) ⇒ Boolean
Instance Method Details
#host_for_installing(client) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'app/models/concerns/ovirt_provision_plugin/host_extensions.rb', line 51 def host_for_installing(client) begin ovirt_host = host_service(client).get unless status_installing?(ovirt_host) return nil end rescue OvirtSDK4::Error logger.warn "OvirtProvisionPlugin:: Host #{ovirt_host_id} does not exists on ovirt" return nil end ovirt_host end |
#host_service(client) ⇒ Object
64 65 66 |
# File 'app/models/concerns/ovirt_provision_plugin/host_extensions.rb', line 64 def host_service(client) client.system_service.hosts_service.host_service(ovirt_host_id) end |
#ovirt_client ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'app/models/concerns/ovirt_provision_plugin/host_extensions.rb', line 75 def ovirt_client cr_id = parameters.find_by(:name => "compute_resource_id").value cr = ComputeResource.find(cr_id) connection_opts = { :url => cr.url, :username => cr.user, :password => cr.password } if cr.public_key.blank? connection_opts[:insecure] = true else connection_opts[:ca_certs] = [cr.public_key] end OvirtSDK4::Connection.new(connection_opts) rescue NoMethodError logger.error "OvirtProvisionPlugin:: fail to read compute_rescource_id on host #{name}, id #{cr_id}" nil rescue StandardError logger.error "OvirtProvisionPlugin:: error occured during ovirt_client #{e}" nil end |
#ovirt_host? ⇒ Boolean
97 98 99 100 101 102 103 |
# File 'app/models/concerns/ovirt_provision_plugin/host_extensions.rb', line 97 def ovirt_host? host_id = ovirt_host_id return false if host_id.nil? logger.info "OvirtProvisionPlugin:: host #{host_id} is related to oVirt" true end |
#ovirt_host_callback ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'app/models/concerns/ovirt_provision_plugin/host_extensions.rb', line 7 def ovirt_host_callback logger.info "OvirtProvisionPlugin:: Running provision callback.." return unless ovirt_host? return if ovirt_node? max_tries = 10 while max_tries.positive? client = ovirt_client if client.nil? logger.warn "OvirtProvisionPlugin:: Failed to connect to ovirt-engine" max_tries -= 1 next end ovirt_host = host_for_installing(client) unless ovirt_host client.close return end unless errors.empty? client.close logger.warn "OvirtProvisionPlugin:: Failed to run classes. Trying again (#{max_tries})" puppetrun! max_tries -= 1 next end begin logger.info "OvirtProvisionPlugin:: Running ovirt_host_callback on \"#{ovirt_host.name}\"" host_service(client).install(:ssh => { authentication_method: OvirtSDK4::SshAuthenticationMethod::PUBLICKEY }) logger.info "OvirtProvisionPlugin:: Sent reinstall command successfully" return rescue OvirtSDK4::Error logger.warn "OvirtProvisionPlugin:: Failed to reinstall host. Trying again (#{max_tries})" puppetrun! max_tries -= 1 ensure client.close end end end |
#ovirt_host_id ⇒ Object
105 106 107 108 109 110 |
# File 'app/models/concerns/ovirt_provision_plugin/host_extensions.rb', line 105 def ovirt_host_id parameters.find_by(:name => "host_ovirt_id").value rescue StandardError logger.error "OvirtProvisionPlugin:: error occured during ovirt_host_id for #{name}" nil end |
#ovirt_node? ⇒ Boolean
112 113 114 115 116 117 |
# File 'app/models/concerns/ovirt_provision_plugin/host_extensions.rb', line 112 def ovirt_node? return false unless ["oVirt-Node", "RHEV-H"].include?(.name) logger.info "OvirtProvisionPlugin:: Provisioned ovirt node host #{name}" true end |
#status_installing?(host) ⇒ Boolean
68 69 70 71 72 73 |
# File 'app/models/concerns/ovirt_provision_plugin/host_extensions.rb', line 68 def status_installing?(host) return false if host.status.strip != "installing_os" logger.info "OvirtProvisionPlugin:: host in status '#{host.status}'" true end |