summaryrefslogtreecommitdiffstats
path: root/src/software/lmi/software/core/Error.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/software/lmi/software/core/Error.py')
-rw-r--r--src/software/lmi/software/core/Error.py457
1 files changed, 457 insertions, 0 deletions
diff --git a/src/software/lmi/software/core/Error.py b/src/software/lmi/software/core/Error.py
new file mode 100644
index 0000000..d36ebb0
--- /dev/null
+++ b/src/software/lmi/software/core/Error.py
@@ -0,0 +1,457 @@
+# -*- encoding: utf-8 -*-
+# Software Management Providers
+#
+# Copyright (C) 2012-2013 Red Hat, Inc. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+"""
+Just a common functionality related to class CIM_Error.
+"""
+
+import pywbem
+
+from lmi.common import cmpi_logging
+
+class Values(object):
+ class ErrorSourceFormat(object):
+ Unknown = pywbem.Uint16(0)
+ Other = pywbem.Uint16(1)
+ CIMObjectPath = pywbem.Uint16(2)
+ # DMTF_Reserved = ..
+ _reverse_map = {
+ 0 : 'Unknown',
+ 1 : 'Other',
+ 2 : 'CIMObjectPath'
+ }
+
+ class ErrorType(object):
+ Unknown = pywbem.Uint16(0)
+ Other = pywbem.Uint16(1)
+ Communications_Error = pywbem.Uint16(2)
+ Quality_of_Service_Error = pywbem.Uint16(3)
+ Software_Error = pywbem.Uint16(4)
+ Hardware_Error = pywbem.Uint16(5)
+ Environmental_Error = pywbem.Uint16(6)
+ Security_Error = pywbem.Uint16(7)
+ Oversubscription_Error = pywbem.Uint16(8)
+ Unavailable_Resource_Error = pywbem.Uint16(9)
+ Unsupported_Operation_Error = pywbem.Uint16(10)
+ # DMTF_Reserved = ..
+ _reverse_map = {
+ 0 : 'Unknown',
+ 1 : 'Other',
+ 2 : 'Communications Error',
+ 3 : 'Quality of Service Error',
+ 4 : 'Software Error',
+ 5 : 'Hardware Error',
+ 6 : 'Environmental Error',
+ 7 : 'Security Error',
+ 8 : 'Oversubscription Error',
+ 9 : 'Unavailable Resource Error',
+ 10 : 'Unsupported Operation Error'
+ }
+
+ class CIMStatusCode(object):
+ CIM_ERR_FAILED = pywbem.Uint32(1)
+ CIM_ERR_ACCESS_DENIED = pywbem.Uint32(2)
+ CIM_ERR_INVALID_NAMESPACE = pywbem.Uint32(3)
+ CIM_ERR_INVALID_PARAMETER = pywbem.Uint32(4)
+ CIM_ERR_INVALID_CLASS = pywbem.Uint32(5)
+ CIM_ERR_NOT_FOUND = pywbem.Uint32(6)
+ CIM_ERR_NOT_SUPPORTED = pywbem.Uint32(7)
+ CIM_ERR_CLASS_HAS_CHILDREN = pywbem.Uint32(8)
+ CIM_ERR_CLASS_HAS_INSTANCES = pywbem.Uint32(9)
+ CIM_ERR_INVALID_SUPERCLASS = pywbem.Uint32(10)
+ CIM_ERR_ALREADY_EXISTS = pywbem.Uint32(11)
+ CIM_ERR_NO_SUCH_PROPERTY = pywbem.Uint32(12)
+ CIM_ERR_TYPE_MISMATCH = pywbem.Uint32(13)
+ CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED = pywbem.Uint32(14)
+ CIM_ERR_INVALID_QUERY = pywbem.Uint32(15)
+ CIM_ERR_METHOD_NOT_AVAILABLE = pywbem.Uint32(16)
+ CIM_ERR_METHOD_NOT_FOUND = pywbem.Uint32(17)
+ CIM_ERR_UNEXPECTED_RESPONSE = pywbem.Uint32(18)
+ CIM_ERR_INVALID_RESPONSE_DESTINATION = pywbem.Uint32(19)
+ CIM_ERR_NAMESPACE_NOT_EMPTY = pywbem.Uint32(20)
+ CIM_ERR_INVALID_ENUMERATION_CONTEXT = pywbem.Uint32(21)
+ CIM_ERR_INVALID_OPERATION_TIMEOUT = pywbem.Uint32(22)
+ CIM_ERR_PULL_HAS_BEEN_ABANDONED = pywbem.Uint32(23)
+ CIM_ERR_PULL_CANNOT_BE_ABANDONED = pywbem.Uint32(24)
+ CIM_ERR_FILTERED_ENUMERATION_NOT_SUPPORTED = pywbem.Uint32(25)
+ CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED = pywbem.Uint32(26)
+ CIM_ERR_SERVER_LIMITS_EXCEEDED = pywbem.Uint32(27)
+ CIM_ERR_SERVER_IS_SHUTTING_DOWN = pywbem.Uint32(28)
+ CIM_ERR_QUERY_FEATURE_NOT_SUPPORTED = pywbem.Uint32(29)
+ # DMTF_Reserved = ..
+ _reverse_map = {
+ 1 : 'CIM_ERR_FAILED',
+ 2 : 'CIM_ERR_ACCESS_DENIED',
+ 3 : 'CIM_ERR_INVALID_NAMESPACE',
+ 4 : 'CIM_ERR_INVALID_PARAMETER',
+ 5 : 'CIM_ERR_INVALID_CLASS',
+ 6 : 'CIM_ERR_NOT_FOUND',
+ 7 : 'CIM_ERR_NOT_SUPPORTED',
+ 8 : 'CIM_ERR_CLASS_HAS_CHILDREN',
+ 9 : 'CIM_ERR_CLASS_HAS_INSTANCES',
+ 10 : 'CIM_ERR_INVALID_SUPERCLASS',
+ 11 : 'CIM_ERR_ALREADY_EXISTS',
+ 12 : 'CIM_ERR_NO_SUCH_PROPERTY',
+ 13 : 'CIM_ERR_TYPE_MISMATCH',
+ 14 : 'CIM_ERR_QUERY_LANGUAGE_NOT_SUPPORTED',
+ 15 : 'CIM_ERR_INVALID_QUERY',
+ 16 : 'CIM_ERR_METHOD_NOT_AVAILABLE',
+ 17 : 'CIM_ERR_METHOD_NOT_FOUND',
+ 18 : 'CIM_ERR_UNEXPECTED_RESPONSE',
+ 19 : 'CIM_ERR_INVALID_RESPONSE_DESTINATION',
+ 20 : 'CIM_ERR_NAMESPACE_NOT_EMPTY',
+ 21 : 'CIM_ERR_INVALID_ENUMERATION_CONTEXT',
+ 22 : 'CIM_ERR_INVALID_OPERATION_TIMEOUT',
+ 23 : 'CIM_ERR_PULL_HAS_BEEN_ABANDONED',
+ 24 : 'CIM_ERR_PULL_CANNOT_BE_ABANDONED',
+ 25 : 'CIM_ERR_FILTERED_ENUMERATION_NOT_SUPPORTED',
+ 26 : 'CIM_ERR_CONTINUATION_ON_ERROR_NOT_SUPPORTED',
+ 27 : 'CIM_ERR_SERVER_LIMITS_EXCEEDED',
+ 28 : 'CIM_ERR_SERVER_IS_SHUTTING_DOWN',
+ 29 : 'CIM_ERR_QUERY_FEATURE_NOT_SUPPORTED'
+ }
+
+ class PerceivedSeverity(object):
+ Unknown = pywbem.Uint16(0)
+ Other = pywbem.Uint16(1)
+ Information = pywbem.Uint16(2)
+ Degraded_Warning = pywbem.Uint16(3)
+ Minor = pywbem.Uint16(4)
+ Major = pywbem.Uint16(5)
+ Critical = pywbem.Uint16(6)
+ Fatal_NonRecoverable = pywbem.Uint16(7)
+ # DMTF_Reserved = ..
+ _reverse_map = {
+ 0 : 'Unknown',
+ 1 : 'Other',
+ 2 : 'Information',
+ 3 : 'Degraded/Warning',
+ 4 : 'Minor',
+ 5 : 'Major',
+ 6 : 'Critical',
+ 7 : 'Fatal/NonRecoverable'
+ }
+
+ class ProbableCause(object):
+ Unknown = pywbem.Uint16(0)
+ Other = pywbem.Uint16(1)
+ Adapter_Card_Error = pywbem.Uint16(2)
+ Application_Subsystem_Failure = pywbem.Uint16(3)
+ Bandwidth_Reduced = pywbem.Uint16(4)
+ Connection_Establishment_Error = pywbem.Uint16(5)
+ Communications_Protocol_Error = pywbem.Uint16(6)
+ Communications_Subsystem_Failure = pywbem.Uint16(7)
+ Configuration_Customization_Error = pywbem.Uint16(8)
+ Congestion = pywbem.Uint16(9)
+ Corrupt_Data = pywbem.Uint16(10)
+ CPU_Cycles_Limit_Exceeded = pywbem.Uint16(11)
+ Dataset_Modem_Error = pywbem.Uint16(12)
+ Degraded_Signal = pywbem.Uint16(13)
+ DTE_DCE_Interface_Error = pywbem.Uint16(14)
+ Enclosure_Door_Open = pywbem.Uint16(15)
+ Equipment_Malfunction = pywbem.Uint16(16)
+ Excessive_Vibration = pywbem.Uint16(17)
+ File_Format_Error = pywbem.Uint16(18)
+ Fire_Detected = pywbem.Uint16(19)
+ Flood_Detected = pywbem.Uint16(20)
+ Framing_Error = pywbem.Uint16(21)
+ HVAC_Problem = pywbem.Uint16(22)
+ Humidity_Unacceptable = pywbem.Uint16(23)
+ I_O_Device_Error = pywbem.Uint16(24)
+ Input_Device_Error = pywbem.Uint16(25)
+ LAN_Error = pywbem.Uint16(26)
+ Non_Toxic_Leak_Detected = pywbem.Uint16(27)
+ Local_Node_Transmission_Error = pywbem.Uint16(28)
+ Loss_of_Frame = pywbem.Uint16(29)
+ Loss_of_Signal = pywbem.Uint16(30)
+ Material_Supply_Exhausted = pywbem.Uint16(31)
+ Multiplexer_Problem = pywbem.Uint16(32)
+ Out_of_Memory = pywbem.Uint16(33)
+ Output_Device_Error = pywbem.Uint16(34)
+ Performance_Degraded = pywbem.Uint16(35)
+ Power_Problem = pywbem.Uint16(36)
+ Pressure_Unacceptable = pywbem.Uint16(37)
+ Processor_Problem__Internal_Machine_Error_ = pywbem.Uint16(38)
+ Pump_Failure = pywbem.Uint16(39)
+ Queue_Size_Exceeded = pywbem.Uint16(40)
+ Receive_Failure = pywbem.Uint16(41)
+ Receiver_Failure = pywbem.Uint16(42)
+ Remote_Node_Transmission_Error = pywbem.Uint16(43)
+ Resource_at_or_Nearing_Capacity = pywbem.Uint16(44)
+ Response_Time_Excessive = pywbem.Uint16(45)
+ Retransmission_Rate_Excessive = pywbem.Uint16(46)
+ Software_Error = pywbem.Uint16(47)
+ Software_Program_Abnormally_Terminated = pywbem.Uint16(48)
+ Software_Program_Error__Incorrect_Results_ = pywbem.Uint16(49)
+ Storage_Capacity_Problem = pywbem.Uint16(50)
+ Temperature_Unacceptable = pywbem.Uint16(51)
+ Threshold_Crossed = pywbem.Uint16(52)
+ Timing_Problem = pywbem.Uint16(53)
+ Toxic_Leak_Detected = pywbem.Uint16(54)
+ Transmit_Failure = pywbem.Uint16(55)
+ Transmitter_Failure = pywbem.Uint16(56)
+ Underlying_Resource_Unavailable = pywbem.Uint16(57)
+ Version_Mismatch = pywbem.Uint16(58)
+ Previous_Alert_Cleared = pywbem.Uint16(59)
+ Login_Attempts_Failed = pywbem.Uint16(60)
+ Software_Virus_Detected = pywbem.Uint16(61)
+ Hardware_Security_Breached = pywbem.Uint16(62)
+ Denial_of_Service_Detected = pywbem.Uint16(63)
+ Security_Credential_Mismatch = pywbem.Uint16(64)
+ Unauthorized_Access = pywbem.Uint16(65)
+ Alarm_Received = pywbem.Uint16(66)
+ Loss_of_Pointer = pywbem.Uint16(67)
+ Payload_Mismatch = pywbem.Uint16(68)
+ Transmission_Error = pywbem.Uint16(69)
+ Excessive_Error_Rate = pywbem.Uint16(70)
+ Trace_Problem = pywbem.Uint16(71)
+ Element_Unavailable = pywbem.Uint16(72)
+ Element_Missing = pywbem.Uint16(73)
+ Loss_of_Multi_Frame = pywbem.Uint16(74)
+ Broadcast_Channel_Failure = pywbem.Uint16(75)
+ Invalid_Message_Received = pywbem.Uint16(76)
+ Routing_Failure = pywbem.Uint16(77)
+ Backplane_Failure = pywbem.Uint16(78)
+ Identifier_Duplication = pywbem.Uint16(79)
+ Protection_Path_Failure = pywbem.Uint16(80)
+ Sync_Loss_or_Mismatch = pywbem.Uint16(81)
+ Terminal_Problem = pywbem.Uint16(82)
+ Real_Time_Clock_Failure = pywbem.Uint16(83)
+ Antenna_Failure = pywbem.Uint16(84)
+ Battery_Charging_Failure = pywbem.Uint16(85)
+ Disk_Failure = pywbem.Uint16(86)
+ Frequency_Hopping_Failure = pywbem.Uint16(87)
+ Loss_of_Redundancy = pywbem.Uint16(88)
+ Power_Supply_Failure = pywbem.Uint16(89)
+ Signal_Quality_Problem = pywbem.Uint16(90)
+ Battery_Discharging = pywbem.Uint16(91)
+ Battery_Failure = pywbem.Uint16(92)
+ Commercial_Power_Problem = pywbem.Uint16(93)
+ Fan_Failure = pywbem.Uint16(94)
+ Engine_Failure = pywbem.Uint16(95)
+ Sensor_Failure = pywbem.Uint16(96)
+ Fuse_Failure = pywbem.Uint16(97)
+ Generator_Failure = pywbem.Uint16(98)
+ Low_Battery = pywbem.Uint16(99)
+ Low_Fuel = pywbem.Uint16(100)
+ Low_Water = pywbem.Uint16(101)
+ Explosive_Gas = pywbem.Uint16(102)
+ High_Winds = pywbem.Uint16(103)
+ Ice_Buildup = pywbem.Uint16(104)
+ Smoke = pywbem.Uint16(105)
+ Memory_Mismatch = pywbem.Uint16(106)
+ Out_of_CPU_Cycles = pywbem.Uint16(107)
+ Software_Environment_Problem = pywbem.Uint16(108)
+ Software_Download_Failure = pywbem.Uint16(109)
+ Element_Reinitialized = pywbem.Uint16(110)
+ Timeout = pywbem.Uint16(111)
+ Logging_Problems = pywbem.Uint16(112)
+ Leak_Detected = pywbem.Uint16(113)
+ Protection_Mechanism_Failure = pywbem.Uint16(114)
+ Protecting_Resource_Failure = pywbem.Uint16(115)
+ Database_Inconsistency = pywbem.Uint16(116)
+ Authentication_Failure = pywbem.Uint16(117)
+ Breach_of_Confidentiality = pywbem.Uint16(118)
+ Cable_Tamper = pywbem.Uint16(119)
+ Delayed_Information = pywbem.Uint16(120)
+ Duplicate_Information = pywbem.Uint16(121)
+ Information_Missing = pywbem.Uint16(122)
+ Information_Modification = pywbem.Uint16(123)
+ Information_Out_of_Sequence = pywbem.Uint16(124)
+ Key_Expired = pywbem.Uint16(125)
+ Non_Repudiation_Failure = pywbem.Uint16(126)
+ Out_of_Hours_Activity = pywbem.Uint16(127)
+ Out_of_Service = pywbem.Uint16(128)
+ Procedural_Error = pywbem.Uint16(129)
+ Unexpected_Information = pywbem.Uint16(130)
+ # DMTF_Reserved = ..
+ _reverse_map = {
+ 0 : 'Unknown',
+ 1 : 'Other',
+ 2 : 'Adapter/Card Error',
+ 3 : 'Application Subsystem Failure',
+ 4 : 'Bandwidth Reduced',
+ 5 : 'Connection Establishment Error',
+ 6 : 'Communications Protocol Error',
+ 7 : 'Communications Subsystem Failure',
+ 8 : 'Configuration/Customization Error',
+ 9 : 'Congestion',
+ 10 : 'Corrupt Data',
+ 11 : 'CPU Cycles Limit Exceeded',
+ 12 : 'Dataset/Modem Error',
+ 13 : 'Degraded Signal',
+ 14 : 'DTE-DCE Interface Error',
+ 15 : 'Enclosure Door Open',
+ 16 : 'Equipment Malfunction',
+ 17 : 'Excessive Vibration',
+ 18 : 'File Format Error',
+ 19 : 'Fire Detected',
+ 20 : 'Flood Detected',
+ 21 : 'Framing Error',
+ 22 : 'HVAC Problem',
+ 23 : 'Humidity Unacceptable',
+ 24 : 'I/O Device Error',
+ 25 : 'Input Device Error',
+ 26 : 'LAN Error',
+ 27 : 'Non-Toxic Leak Detected',
+ 28 : 'Local Node Transmission Error',
+ 29 : 'Loss of Frame',
+ 30 : 'Loss of Signal',
+ 31 : 'Material Supply Exhausted',
+ 32 : 'Multiplexer Problem',
+ 33 : 'Out of Memory',
+ 34 : 'Output Device Error',
+ 35 : 'Performance Degraded',
+ 36 : 'Power Problem',
+ 37 : 'Pressure Unacceptable',
+ 38 : 'Processor Problem (Internal Machine Error)',
+ 39 : 'Pump Failure',
+ 40 : 'Queue Size Exceeded',
+ 41 : 'Receive Failure',
+ 42 : 'Receiver Failure',
+ 43 : 'Remote Node Transmission Error',
+ 44 : 'Resource at or Nearing Capacity',
+ 45 : 'Response Time Excessive',
+ 46 : 'Retransmission Rate Excessive',
+ 47 : 'Software Error',
+ 48 : 'Software Program Abnormally Terminated',
+ 49 : 'Software Program Error (Incorrect Results)',
+ 50 : 'Storage Capacity Problem',
+ 51 : 'Temperature Unacceptable',
+ 52 : 'Threshold Crossed',
+ 53 : 'Timing Problem',
+ 54 : 'Toxic Leak Detected',
+ 55 : 'Transmit Failure',
+ 56 : 'Transmitter Failure',
+ 57 : 'Underlying Resource Unavailable',
+ 58 : 'Version Mismatch',
+ 59 : 'Previous Alert Cleared',
+ 60 : 'Login Attempts Failed',
+ 61 : 'Software Virus Detected',
+ 62 : 'Hardware Security Breached',
+ 63 : 'Denial of Service Detected',
+ 64 : 'Security Credential Mismatch',
+ 65 : 'Unauthorized Access',
+ 66 : 'Alarm Received',
+ 67 : 'Loss of Pointer',
+ 68 : 'Payload Mismatch',
+ 69 : 'Transmission Error',
+ 70 : 'Excessive Error Rate',
+ 71 : 'Trace Problem',
+ 72 : 'Element Unavailable',
+ 73 : 'Element Missing',
+ 74 : 'Loss of Multi Frame',
+ 75 : 'Broadcast Channel Failure',
+ 76 : 'Invalid Message Received',
+ 77 : 'Routing Failure',
+ 78 : 'Backplane Failure',
+ 79 : 'Identifier Duplication',
+ 80 : 'Protection Path Failure',
+ 81 : 'Sync Loss or Mismatch',
+ 82 : 'Terminal Problem',
+ 83 : 'Real Time Clock Failure',
+ 84 : 'Antenna Failure',
+ 85 : 'Battery Charging Failure',
+ 86 : 'Disk Failure',
+ 87 : 'Frequency Hopping Failure',
+ 88 : 'Loss of Redundancy',
+ 89 : 'Power Supply Failure',
+ 90 : 'Signal Quality Problem',
+ 91 : 'Battery Discharging',
+ 92 : 'Battery Failure',
+ 93 : 'Commercial Power Problem',
+ 94 : 'Fan Failure',
+ 95 : 'Engine Failure',
+ 96 : 'Sensor Failure',
+ 97 : 'Fuse Failure',
+ 98 : 'Generator Failure',
+ 99 : 'Low Battery',
+ 100 : 'Low Fuel',
+ 101 : 'Low Water',
+ 102 : 'Explosive Gas',
+ 103 : 'High Winds',
+ 104 : 'Ice Buildup',
+ 105 : 'Smoke',
+ 106 : 'Memory Mismatch',
+ 107 : 'Out of CPU Cycles',
+ 108 : 'Software Environment Problem',
+ 109 : 'Software Download Failure',
+ 110 : 'Element Reinitialized',
+ 111 : 'Timeout',
+ 112 : 'Logging Problems',
+ 113 : 'Leak Detected',
+ 114 : 'Protection Mechanism Failure',
+ 115 : 'Protecting Resource Failure',
+ 116 : 'Database Inconsistency',
+ 117 : 'Authentication Failure',
+ 118 : 'Breach of Confidentiality',
+ 119 : 'Cable Tamper',
+ 120 : 'Delayed Information',
+ 121 : 'Duplicate Information',
+ 122 : 'Information Missing',
+ 123 : 'Information Modification',
+ 124 : 'Information Out of Sequence',
+ 125 : 'Key Expired',
+ 126 : 'Non-Repudiation Failure',
+ 127 : 'Out of Hours Activity',
+ 128 : 'Out of Service',
+ 129 : 'Procedural Error',
+ 130 : 'Unexpected Information'
+ }
+
+@cmpi_logging.trace_function
+def make_instance(
+ status_code=Values.CIMStatusCode.CIM_ERR_FAILED,
+ error_type=Values.ErrorType.Software_Error,
+ probable_cause=Values.ErrorType.Unknown,
+ error_source=None,
+ status_code_description=None,
+ message=None,
+ message_arguments=None,
+ probable_cause_description=None,
+ recommended_actions=None):
+ for param in ('status_code', 'probable_cause', 'error_type'):
+ if not isinstance(locals()[param], (int, long)):
+ raise TypeError('%s must be integer'%param)
+ if error_source is None:
+ # this is a cyclic dependency
+ from lmi.software.core import InstallationService
+ error_source = InstallationService.get_path()
+ if not isinstance(error_source, pywbem.CIMInstanceName):
+ raise TypeError('error_source must be a CIMInstanceName')
+
+ inst = pywbem.CIMInstance(classname="CIM_Error",
+ path=pywbem.CIMInstanceName(classname="CIM_Error",
+ namespace="root/cimv2"))
+ inst['CIMStatusCode'] = pywbem.Uint32(status_code)
+ if status_code_description is not None:
+ inst['CIMStatusCodeDescription'] = status_code_description
+ inst['ErrorType'] = pywbem.Uint16(error_type)
+ inst['ErrorSource'] = str(error_source)
+ inst['ErrorSourceFormat'] = Values.ErrorSourceFormat.CIMObjectPath
+ if message is not None:
+ inst['Message'] = message
+ if message_arguments is not None:
+ inst['MessageArguments'] = message_arguments
+ inst['ProbableCause'] = pywbem.Uint16(probable_cause)
+ if probable_cause_description is not None:
+ inst['ProbableCauseDescription'] = probable_cause_description
+ if recommended_actions is not None:
+ inst['RecommendedActions'] = recommended_actions
+ return inst
+