qapi: Add new command to query colo status
Libvirt or other high level software can use this command query colo status.
You can test this command like that:
{'execute':'query-colo-status'}
Signed-off-by: Zhang Chen <zhangckid@gmail.com>
Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
			
			
This commit is contained in:
		
							parent
							
								
									41b6b77921
								
							
						
					
					
						commit
						f56c0065b8
					
				| @ -29,6 +29,7 @@ | ||||
| #include "net/colo.h" | ||||
| #include "block/block.h" | ||||
| #include "qapi/qapi-events-migration.h" | ||||
| #include "qapi/qmp/qerror.h" | ||||
| 
 | ||||
| static bool vmstate_loading; | ||||
| static Notifier packets_compare_notifier; | ||||
| @ -237,6 +238,26 @@ void qmp_xen_colo_do_checkpoint(Error **errp) | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| COLOStatus *qmp_query_colo_status(Error **errp) | ||||
| { | ||||
|     COLOStatus *s = g_new0(COLOStatus, 1); | ||||
| 
 | ||||
|     s->mode = get_colo_mode(); | ||||
| 
 | ||||
|     switch (failover_get_state()) { | ||||
|     case FAILOVER_STATUS_NONE: | ||||
|         s->reason = COLO_EXIT_REASON_NONE; | ||||
|         break; | ||||
|     case FAILOVER_STATUS_REQUIRE: | ||||
|         s->reason = COLO_EXIT_REASON_REQUEST; | ||||
|         break; | ||||
|     default: | ||||
|         s->reason = COLO_EXIT_REASON_ERROR; | ||||
|     } | ||||
| 
 | ||||
|     return s; | ||||
| } | ||||
| 
 | ||||
| static void colo_send_message(QEMUFile *f, COLOMessage msg, | ||||
|                               Error **errp) | ||||
| { | ||||
|  | ||||
| @ -1307,6 +1307,38 @@ | ||||
| ## | ||||
| { 'command': 'xen-colo-do-checkpoint' } | ||||
| 
 | ||||
| ## | ||||
| # @COLOStatus: | ||||
| # | ||||
| # The result format for 'query-colo-status'. | ||||
| # | ||||
| # @mode: COLO running mode. If COLO is running, this field will return | ||||
| #        'primary' or 'secondary'. | ||||
| # | ||||
| # @reason: describes the reason for the COLO exit. | ||||
| # | ||||
| # Since: 3.0 | ||||
| ## | ||||
| { 'struct': 'COLOStatus', | ||||
|   'data': { 'mode': 'COLOMode', 'reason': 'COLOExitReason' } } | ||||
| 
 | ||||
| ## | ||||
| # @query-colo-status: | ||||
| # | ||||
| # Query COLO status while the vm is running. | ||||
| # | ||||
| # Returns: A @COLOStatus object showing the status. | ||||
| # | ||||
| # Example: | ||||
| # | ||||
| # -> { "execute": "query-colo-status" } | ||||
| # <- { "return": { "mode": "primary", "active": true, "reason": "request" } } | ||||
| # | ||||
| # Since: 3.0 | ||||
| ## | ||||
| { 'command': 'query-colo-status', | ||||
|   'returns': 'COLOStatus' } | ||||
| 
 | ||||
| ## | ||||
| # @migrate-recover: | ||||
| # | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Zhang Chen
						Zhang Chen