mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
(cherry picked from commit 4ac61ef922a7c465eccde3b4b6426633d98425de)
This commit is contained in:
parent
efd48ddb07
commit
b72aca9789
@ -104,12 +104,18 @@ class VirtualMachineDB
|
||||
last = @db.execute("SELECT MAX(timestamp) from #{@dataset}").flatten![0]
|
||||
last ||= @mtime.to_i
|
||||
|
||||
return sync_status(@host, @host_id) if last == 0 || time > (last + @conf[:sync].to_i)
|
||||
sync_state = last == 0 || time > (last + @conf[:sync].to_i)
|
||||
|
||||
status_str = ''
|
||||
monitor_ids = []
|
||||
|
||||
vms = DomainList.state_info(@host, @host_id)
|
||||
if sync_state then
|
||||
status_str = "SYNC_STATE=yes\nMISSING_STATE=#{@conf[:missing_state]}\n"
|
||||
|
||||
@db.execute("REPLACE INTO #{@settings} VALUES ('LAST_SYNC', #{time.to_s})")
|
||||
end
|
||||
|
||||
vms = DomainList.state_info(@host, @host_id)
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# report state changes in vms
|
||||
@ -142,6 +148,7 @@ class VirtualMachineDB
|
||||
)
|
||||
|
||||
status_str << vm_to_status(vm)
|
||||
|
||||
next
|
||||
end
|
||||
|
||||
@ -156,7 +163,7 @@ class VirtualMachineDB
|
||||
"#{filter}"
|
||||
)
|
||||
|
||||
if vm_db[col_name_to_idx('state')] != vm[:state]
|
||||
if sync_state || vm_db[col_name_to_idx('state')] != vm[:state]
|
||||
status_str << vm_to_status(vm)
|
||||
end
|
||||
end
|
||||
@ -181,6 +188,8 @@ class VirtualMachineDB
|
||||
|
||||
@db.execute("DELETE FROM #{@dataset} WHERE uuid = \"#{uuid}\"")
|
||||
else
|
||||
status_str << vm_db_to_status(vm_db) if sync_state
|
||||
|
||||
@db.execute(
|
||||
"UPDATE #{@dataset} SET " \
|
||||
"timestamp = #{time}, " \
|
||||
@ -206,32 +215,6 @@ class VirtualMachineDB
|
||||
|
||||
private
|
||||
|
||||
def sync_status(host, host_id)
|
||||
time = Time.now.to_i
|
||||
|
||||
@db.execute("DELETE FROM #{@dataset}")
|
||||
|
||||
status_str = "SYNC_STATE=yes\nMISSING_STATE=#{@conf[:missing_state]}\n"
|
||||
|
||||
DomainList.state_info(host, host_id).each do |uuid, vm|
|
||||
@db.execute(
|
||||
"INSERT INTO #{@dataset} VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
|
||||
[uuid,
|
||||
vm[:id].to_i,
|
||||
vm[:name],
|
||||
vm[:deploy_id],
|
||||
time,
|
||||
0,
|
||||
vm[:state],
|
||||
@conf[:hyperv]]
|
||||
)
|
||||
|
||||
status_str << vm_to_status(vm)
|
||||
end
|
||||
|
||||
status_str
|
||||
end
|
||||
|
||||
def vm_to_status(vm, state = vm[:state])
|
||||
"VM = [ ID=\"#{vm[:id]}\", DEPLOY_ID=\"#{vm[:deploy_id]}\", " \
|
||||
" STATE=\"#{state}\" ]\n"
|
||||
|
Loading…
x
Reference in New Issue
Block a user