2014-01-10 17:37:54 +08:00
#
# Copyright 2013 Fujitsu Limited.
# Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
#
2018-04-04 14:35:41 +01:00
# This work is licensed under the GNU GPLv2 or later.
2018-03-20 15:00:02 -04:00
# See the COPYING file in the top-level directory.
2014-01-10 17:37:54 +08:00
2018-03-20 12:18:35 -04:00
from . device import Device
2018-03-20 12:27:37 -04:00
from . . xmlbuilder import XMLProperty
2014-01-10 17:37:54 +08:00
2018-03-20 12:18:35 -04:00
class DevicePanic ( Device ) :
2018-03-21 10:53:34 -04:00
XML_NAME = " panic "
2017-09-04 18:40:34 +02:00
MODEL_ISA = " isa "
2017-09-05 09:38:39 +02:00
MODEL_PSERIES = " pseries "
MODEL_HYPERV = " hyperv "
MODEL_S390 = " s390 "
MODELS = [ MODEL_ISA , MODEL_PSERIES , MODEL_HYPERV , MODEL_S390 ]
2017-09-04 18:40:34 +02:00
ISA_ADDRESS_TYPE = " isa "
2014-01-10 17:37:54 +08:00
@staticmethod
2017-09-04 18:40:34 +02:00
def get_pretty_model ( panic_model ) :
2018-03-20 12:18:35 -04:00
if panic_model == DevicePanic . MODEL_ISA :
2014-01-10 17:37:54 +08:00
return _ ( " ISA " )
2018-03-20 12:18:35 -04:00
elif panic_model == DevicePanic . MODEL_PSERIES :
2017-09-05 09:38:39 +02:00
return _ ( " pSeries " )
2018-03-20 12:18:35 -04:00
elif panic_model == DevicePanic . MODEL_HYPERV :
2017-09-05 09:38:39 +02:00
return _ ( " Hyper-V " )
2018-03-20 12:18:35 -04:00
elif panic_model == DevicePanic . MODEL_S390 :
2017-09-05 09:38:39 +02:00
return _ ( " s390 " )
2017-09-04 18:40:34 +02:00
return panic_model
2014-01-10 17:37:54 +08:00
2017-09-05 09:38:39 +02:00
@staticmethod
def get_models ( os ) :
if os . is_x86 ( ) :
2018-03-20 12:18:35 -04:00
return [ DevicePanic . MODEL_ISA ,
DevicePanic . MODEL_HYPERV ]
2017-09-05 09:38:39 +02:00
elif os . is_pseries ( ) :
2018-03-20 12:18:35 -04:00
return [ DevicePanic . MODEL_PSERIES ]
2017-09-05 09:38:39 +02:00
elif os . is_s390x ( ) :
2018-03-20 12:18:35 -04:00
return [ DevicePanic . MODEL_S390 ]
2017-10-27 09:42:54 +02:00
return [ ]
2017-09-05 09:38:39 +02:00
2018-09-01 15:58:26 -04:00
model = XMLProperty ( " ./@model " )
type = XMLProperty ( " ./address/@type " )
iobase = XMLProperty ( " ./address/@iobase " )
##################
# Default config #
##################
2017-09-05 09:38:39 +02:00
@staticmethod
2018-09-01 15:58:26 -04:00
def get_default_model ( guest ) :
models = DevicePanic . get_models ( guest . os )
2017-09-05 09:38:39 +02:00
if models :
return models [ 0 ]
return None
2018-09-01 15:58:26 -04:00
def set_defaults ( self , guest ) :
if not self . type and self . iobase :
self . type = DevicePanic . ISA_ADDRESS_TYPE
if not self . model :
self . model = self . get_default_model ( guest )