mirror of
https://github.com/OpenNebula/one.git
synced 2024-12-25 23:21:29 +03:00
parent
4c740213d0
commit
4ac61ef922
@ -80,11 +80,17 @@ class VirtualMachineDB
|
|||||||
time = Time.now.to_i
|
time = Time.now.to_i
|
||||||
last = @db.execute("SELECT value from #{@settings} where key = 'LAST_SYNC'").flatten[0].to_i
|
last = @db.execute("SELECT value from #{@settings} where key = 'LAST_SYNC'").flatten[0].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 = ''
|
status_str = ''
|
||||||
monitor_ids = []
|
monitor_ids = []
|
||||||
|
|
||||||
|
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)
|
vms = DomainList.state_info(@host, @host_id)
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
@ -118,6 +124,7 @@ class VirtualMachineDB
|
|||||||
)
|
)
|
||||||
|
|
||||||
status_str << vm_to_status(vm)
|
status_str << vm_to_status(vm)
|
||||||
|
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -132,7 +139,7 @@ class VirtualMachineDB
|
|||||||
"#{filter}"
|
"#{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)
|
status_str << vm_to_status(vm)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -157,6 +164,8 @@ class VirtualMachineDB
|
|||||||
|
|
||||||
@db.execute("DELETE FROM #{@dataset} WHERE uuid = \"#{uuid}\"")
|
@db.execute("DELETE FROM #{@dataset} WHERE uuid = \"#{uuid}\"")
|
||||||
else
|
else
|
||||||
|
status_str << vm_db_to_status(vm_db) if sync_state
|
||||||
|
|
||||||
@db.execute(
|
@db.execute(
|
||||||
"UPDATE #{@dataset} SET " \
|
"UPDATE #{@dataset} SET " \
|
||||||
"timestamp = #{time}, " \
|
"timestamp = #{time}, " \
|
||||||
@ -187,34 +196,6 @@ class VirtualMachineDB
|
|||||||
|
|
||||||
private
|
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
|
|
||||||
|
|
||||||
@db.execute("REPLACE INTO #{@settings} VALUES ('LAST_SYNC', #{time.to_s})")
|
|
||||||
|
|
||||||
status_str
|
|
||||||
end
|
|
||||||
|
|
||||||
def vm_to_status(vm, state = vm[:state])
|
def vm_to_status(vm, state = vm[:state])
|
||||||
"VM = [ ID=\"#{vm[:id]}\", DEPLOY_ID=\"#{vm[:deploy_id]}\", " \
|
"VM = [ ID=\"#{vm[:id]}\", DEPLOY_ID=\"#{vm[:deploy_id]}\", " \
|
||||||
" STATE=\"#{state}\" ]\n"
|
" STATE=\"#{state}\" ]\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user