/*
* Copyright 2013-2014 EMC Corporation
* Copyright 2016 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.emc.storageos.svcs.errorhandling.resources;
import static com.emc.storageos.svcs.errorhandling.resources.ServiceCode.Action.FATAL;
import static com.emc.storageos.svcs.errorhandling.resources.ServiceCode.Action.NON_APPLICABLE;
import static com.emc.storageos.svcs.errorhandling.resources.ServiceCode.Action.RETRY;
import static com.emc.storageos.svcs.errorhandling.utils.Messages.localize;
import java.util.Locale;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.Response.StatusType;
import com.emc.storageos.svcs.errorhandling.annotations.MessageBundle;
import com.sun.jersey.api.client.ClientResponse;
/**
* Enum to define all the service codes to be used in ViPR in error conditions.
*
* If you are defining a new service code, remember to add the English message associated to the service code in ServiceCode.properties
*
* For more information or to see an example, check the Developers Guide section in the Error Handling Wiki page:
* http://confluence.lab.voyence.com/display/OS/Error+Handling+Framework+and+Exceptions+in+ViPR
*/
@MessageBundle
public enum ServiceCode {
UNFORSEEN_ERROR(999),
// *********************************************************************************
// New style of Service codes
// We are in the process of migrating the code to use the new style of
// service codes.
// If you are adding a new service code, please use the non deprecated
// constructor
// *********************************************************************************
// API Bad Request Errors (1000s)
API_PARAMETER_INVALID_URI(1002),
API_UNSUPPORTED_MEDIA_TYPE(1003),
API_PARAMETER_NOT_FOUND(1004),
API_PARAMETER_MISSING(1005),
API_PARAMETER_INACTIVE(1006),
API_METHOD_NOT_SUPPORTED(1007),
API_PARAMETER_INVALID(1008),
API_BAD_HEADERS(1009),
API_MARKED_FOR_DELETION(1010),
API_PARAMETER_INVALID_VPOOL(1011),
API_UNSUPPORTED_CHANGE(1012),
API_BAD_REQUEST(1013),
API_PARAMETER_INVALID_RANGE(1014),
API_RESOURCE_EXISTS(1015),
API_PARAMETER_INVALID_ZONE(1016),
API_CANNOT_REGISTER(1017),
API_NOT_REGISTERED(1018),
API_RESOURCE_MISSING(1019),
API_RESOURCE_BEING_REFERENCED(1020),
API_NO_PLACEMENT_FOUND(1021),
API_ALREADY_REGISTERED(1022),
API_BAD_VERSION(1023),
API_CANNOT_DELETE(1025),
API_INSUFFICIENT_PERMISSIONS(1026),
API_EXCEEDING_ASSIGNMENT_LIMIT(127),
API_PARAMETER_INVALID_ROLE(1028),
API_PARAMETER_INVALID_TIME_FORMAT(1029),
API_VOLUME_VPOOL_CHANGE_DISRUPTIVE(1030),
API_EXCEEDING_LIMIT(1031),
API_INSUFFICIENT_QUOTA(1032),
API_UNKNOWN_RP_CONFIGURATION(1033),
API_PLACEMENT_ERROR(1034),
API_BAD_ATTACHMENT(1035),
API_INVALID_VOLUME_TYPE(1036),
API_INVALID_PROTECTION_VPOOLS(1037),
API_PARAMETER_INVALID_FSNAME(1038),
API_INVALID_VARRAY_NETWORK_CONFIGURATION(1039),
API_INVALID_VPOOL_FOR_INGESTION(1040),
API_NO_DOWNLOAD_IN_PROGRESS(1041),
API_UNSUPPORTED_INGESTED_VOLUME_OPERATION(1042),
API_INVALID_HIGH_AVAILABILITY_FOR_MIRROR_VPOOL(1043),
API_INVALID_VARARY_CONTINUOUS_COPIES_VPOOL(1044),
API_INVALID_ACTION_FOR_VPLEX_MIRRORS(1045),
API_VPOOL_IN_USE_AS_CONTINUOUS_COPIES_VPOOL(1046),
API_NOT_INITIALIZED(1047),
API_INVALID_CONTINUOUS_COPIES_VPOOL(1048),
API_PARAMETER_REQUIRED(1049),
API_CANNOT_DEREGISTER(1050),
API_RESOURCE_CANNOT_BE_DELETE_DUE_TO_UNREACHABLE_VDC(1051),
API_INVALID_OBJECT(1052),
API_PARAMETER_INVALID_QDNAME(1053),
API_AUTH_KEYSTONE_PROVIDER_CREATE_NOT_ALLOWED(1054),
API_DELETION_IN_PROGRESS(1055),
API_TASK_EXECUTION_IN_PROGRESS(1056),
API_PRECONDITION_FAILED(1057),
API_INTERNAL_LOCK_ERROR(1058),
API_INVALID_MAX_CONTINUOUS_COPIES(1059),
API_DUPLICATE_EXPORT_GROUP_NAME_SAME_PROJECT_AND_VARRAY(1060),
API_INVALID_ACTION_FOR_LOCAL_MIRRORS(1061),
API_MOUNTS_EXIST(1062),
// API Not Founds (2000s)
API_URL_ENTITY_NOT_FOUND(2000),
API_URL_ENTITY_INACTIVE(2001),
// API Forbidden (3000s)
SECURITY_INSUFFICIENT_PERMISSIONS(3000),
LICENSE_OPERATION_FORBIDDEN(3001),
DR_OPERATION_FORBIDDEN(3002),
// API Unauthorized (4000s)
SECURITY_UNAUTHORIZED_OPERATION(4000),
// API Method not allowed (5000s)
// API Service unavailable (6000s)
API_SERVICE_UNAVAILABLE(6000),
API_VERSION_OF_IMAGE_UNKNOWN_SO_FAR(6001),
/*
* Nginx load balancer error codes. 6400-6507
* These codes represent the standard HTTP status codes Nginx is capable of returning.
* They will be used in the JSON/XML responses generated by Nginx for any HTTP errors it returns.
*/
NGINX_BAD_REQUEST(6400),
NGINX_UNAUTHORIZED(6401),
NGINX_PAYMENT_REQUIRED(6402),
NGINX_NOT_FOUND(6404), // 403 is merged with 404
NGINX_METHOD_NOT_ALLOWED(6405),
NGINX_NOT_ACCEPTABLE(6406),
NGINX_CONFLICT(6409),
NGINX_GONE(6410),
NGINX_LENGTH_REQUIRED(6411),
NGINX_PRECONDITION_FAILED(6412),
NGINX_REQUEST_ENTITY_TOO_LARGE(6413),
NGINX_REQUEST_URI_TOO_LONG(6414),
NGINX_UNSUPPORTED_MEDIA(6415),
NGINX_REQUESTED_RANGE_NOT_SATISFIABLE(6416),
NGINX_REQUEST_HEADER_TOO_LARGE(6494),
NGINX_CERT_ERROR(6495),
NGINX_NO_CERT(6496),
NGINX_HTTP_TO_HTTPS(6497),
NGINX_INTERNAL_SERVER_ERROR(6500), // 504 is merged with 500
NGINX_NOT_IMPLEMENTED(6501),
NGINX_SERVICE_UNAVAILABLE(6503), // 502 is merged with 503
NGINX_INSUFFICIENT_STORAGE(6507),
// API Internal Server Errors (7000s)
API_INTERNAL_SERVER_ERROR(7000),
API_JAXB_CONTEXT_ERROR(7001),
API_AUDIT_LOG_ERROR(7002),
API_METERING_STAT_ERROR(7003),
API_EVENT_RETRIEVER_ERROR(7004),
API_INGESTION_ERROR(7005),
API_RP_VOLUME_DELETE_ERROR(7006),
API_RP_VOLUME_CREATE_ERROR(7007),
DOWNLOAD_ERROR(7008),
// Fatal Database Client Errors (8000 - 8499):
DBSVC_ERROR(8000),
DBSVC_ENTITY_NOT_FOUND(8001),
DBSVC_SERIALIZATION_ERROR(8003),
DBSVC_DESERIALIZATION_ERROR(8004),
DBSVC_PURGE_ERROR(8005),
DBSVC_QUERY_ERROR(8006),
DBSVC_ANNOTATION_ERROR(8007),
DBSVC_GEO_UPDATE_ERROR(8008),
DBSVC_FIELD_LENGTH_ERROR(8009),
// Retryable Database Client Errors (8500 - 8999):
DBSVC_CONNECTION_ERROR(8500),
DBSVC_DUMMY_ERROR(8501),
// Fatal Coordinator Client Errors (9000 - 9499):
COORDINATOR_UNABLE_TO_QUEUE_JOB(9000),
COORDINATOR_ERROR(9001),
COORDINATOR_DECODING_ERROR(9002),
COORDINATOR_INVALID_REPO_INFO(9003),
COORDINATOR_NOTCONNECTABLE_ERROR(9004),
// Retryable Coordinator Client Errors (9500 - 9999):
COORDINATOR_QUEUE_TOO_BUSY(9500),
COORDINATOR_SVC_NOT_FOUND(9501),
COORDINATOR_SITE_NOT_FOUND(9502),
// Fatal Security Client Errors (10000 - 10499):
SECURITY_ERROR(10000),
SECURITY_AUTH_TOKEN_ENCODING_ERROR(10001),
SECURITY_PARAMETER_MISSING(10004),
SECURITY_AUTH_SERVICE_ENCODING_ERROR(10005),
// Retryable Security Client Errors (10500 - 10999):
SECURITY_REQUIRED_SERVICE_UNAVAILABLE(10500),
SECURITY_KEYSTORE_UNAVAILABLE(10501),
SECURITY_AUTH_TIMEOUT(10502),
// Fatal Controller Client Errors (11000 - 11499):
CONTROLLER_CLIENT_UNABLE_TO_SCHEDULE_JOB(11000),
CONTROLLER_CLIENT_UNABLE_TO_LOCATE_DEVICE_CONTROLLER(11001),
CONTROLLER_CLIENT_UNABLE_TO_SCAN_JOB(11002),
CONTROLLER_CLIENT_UNABLE_TO_MONITOR_JOB(11003),
// Fatal File Error (5001 - 5999)
FILE_CONTROLLER_ERROR(5001),
FILE_CONNECTION_ERROR(5002),
BLOCK_CONTROLLER_ERROR(5101),
// Retryable Controller Client Errors (11500 - 11999):
// Device Controller Errors (12000 - 12999)
CONTROLLER_JOB_ERROR(12000),
DISCOVERY_ERROR(12001),
METERING_STORAGE_ERROR(12002),
MONITORING_STORAGE_ERROR(12003),
CONTROLLER_UNABLE_DELETE_INITIATOR_GROUPS(12004),
CONTROLLER_INVALID_URI(12005),
CONTROLLER_ENTITY_INACTIVE(12006),
CONTROLLER_ENDPOINTS_ERROR(12007),
TRANSPORT_ZONE_ERROR(12008),
CONTROLLER_ENTITY_NOT_FOUND(12009),
CONTROLLER_VOLUME_REUSE_ERROR(12010),
CONTROLLER_UNEXPECTED_VOLUME(12011),
VOLUME_CAN_NOT_BE_EXPANDED(12014),
CONTROLLER_INVALID_SYSTEM_TYPE(12015),
CONTROLLER_INITIATORS_WITH_DIFFERENT_OSTYPE(12016),
CONTROLLER_MIXING_CLUSTERED_AND_NON_CLUSTERED_INITIATORS(12017),
CONTROLLER_NON_CLUSTER_EXPORT_WITH_INITIATORS_IN_DIFFERENT_IGS(12018),
CONTROLLER_EXISTING_IG_HAS_DIFFERENT_PORTS(12019),
CONTROLLER_EXISTING_IG_DOES_NOT_HAVE_SAME_PORTS(12020),
CONTROLLER_VMAX_STORAGE_GROUP_NOT_FOUND(12021),
CONTROLLER_VMAX_MULTIPLE_MATCHING_COMPUTE_RESOURCE_MASKS(12022),
CONTROLLER_VMAX_EXPORT_GROUP_CREATE_ERROR(12023),
CONTROLLER_ERROR_ASSIGNING_STORAGE_PORTS(12024),
CONTROLLER_VMAX_FAST_EXPORT_STORAGE_GROUP_ALREADY_IN_MASKINGVIEW(12025),
CONTROLLER_VMAX_CONCURRENT_REMOVE_FROM_SG_CAUSES_EMPTY_SG(12026),
CONTROLLER_VMAX_MASK_SUPPORTS_SINGLE_HOST_ERROR(12027),
VCENTER_CONTROLLER_ERROR(12028),
CONTROLLER_JOB_ABORTED(12029),
CONTROLLER_LOCK_RETRY_EXCEPTION(12030),
CONTROLLER_VALIDATION_EXCEPTION(12031),
CONTROLLER_SERVICE_NOT_AVALIABLE(12032),
VCENTER_CONTROLLER_OBJECT_NOT_FOUND(12033),
// Isilon errors (13000 - 13999):
ISILON_ERROR(13000),
ISILON_DIR_ERROR(13001),
ISILON_CONNECTION_ERROR(13002),
ISILON_INFO_ERROR(13003),
ISILON_RESOURCE_ERROR(13004),
ISILON_STATS_ERROR(13005),
// Workflow errors (14000 - 14999):
WORKFLOW_STEP_ERROR(14000),
WORKFLOW_TERMINATED_ABNORMALLY(14001),
WORKFLOW_STEP_CANCELLED(14002),
WORKFLOW_NOT_FOUND(14003),
WORKFLOW_IN_WRONG_STATE(14004),
WORKFLOW_CANNOT_BE_ROLLED_BACK(14005),
WORKFLOW_TERMINATED_DR_FAILOVER(14006),
WORKFLOW_INVALID_ARGUMENTS(14007),
WORKFLOW_CONSTRUCTION_ERROR(14008),
WORKFLOW_INVOKED_FAILURE(14009),
WORKFLOW_CANNOT_ACQUIRE_LOCK(14010),
WORKFLOW_TERMINATED_BY_REQUEST(14011),
// Dispatcher errors (15000 - 15999):
DISPATCHER_UNABLE_FIND_CONTROLLER(15000),
// Smis errors (16000 - 16999):
SMIS_COMMAND_ERROR(16000),
STORAGE_PROVIDER_UNAVAILABLE(16001),
// NetApp errors (17000 - 17999):
NETAPP_ERROR(17000),
NETAPP_FS_CREATE_ERROR(17001),
NETAPP_FS_DELETE_ERROR(17002),
NETAPP_SHARE_CREATE_ERROR(17003),
NETAPP_SHARE_DELETE_ERROR(17004),
NETAPP_FS_EXPAND_ERROR(17005),
NETAPP_SNAPSHOT_CREATE_ERROR(17006),
NETAPP_FS_RESTORE_ERROR(17007),
NETAPP_FS_EXPORT_ERROR(17008),
NETAPP_FS_UNEXPORT_ERROR(17009),
NETAPP_QTREE_CREATE_ERROR(17010),
NETAPP_QTREE_DELETE_ERROR(17011),
NETAPP_QTREE_UPDATE_ERROR(17012),
NETAPP_CIFS_SHARE_ACL_UPDATE_ERROR(17013),
NETAPP_CIFS_SHARE_ACL_DELETE_ERROR(17014),
NETAPP_INVALID_OPERATION(17015),
// VPlex errors (18000 - 18999):
VPLEX_API_ERROR(18000),
VPLEX_UNSUPPORTED_ARRAY(18001),
VPLEX_VARRAY_HAS_MIXED_CLUSTERS(18002),
VPLEX_DATA_COLLECTION_EXCEPTION(18003),
VPLEX_UNMANAGED_VOLUME_DISCOVERY_EXCEPTION(18004),
VPLEX_UNMANAGED_VOLUME_INGEST_EXCEPTION(18005),
VPLEX_CANT_FIND_REQUESTED_VOLUME(18006),
VPLEX_UNMANAGED_EXPORT_MASK_EXCEPTION(18007),
VPLEX_API_CONCURRENCY_ERROR(18008),
VPLEX_API_RESPONSE_TIMEOUT_ERROR(180009),
VPLEX_API_FIRMWARE_UPDATE_NEEDED(180010),
VPLEX_CANNOT_ROLLBACK_COMMITTED_MIGRATION(180011),
// Recover Point errors (19000 - 19999):
RECOVER_POINT_ERROR(19000),
RECOVER_POINT_LICENSE_ERROR(19001),
// VNX errors (20000 - 20999):
VNX_ERROR(20000),
VNXFILE_COMM_ERROR(20001),
VNXFILE_FILESYSTEM_ERROR(20002),
VNXFILE_SNAPSHOT_ERROR(20003),
VNXFILE_EXPORT_ERROR(20004),
VNXFILE_QUOTA_DIR_ERROR(20005),
VNXFILE_SHARE_ERROR(20006),
// CIM Adapter errors (21000 - 21999):
CIM_ADAPTER_ERROR(21000),
CIM_CONNECTION_MANAGER_ERROR(21001),
// Network Device Controller (22000 - 22999):
CONTROLLER_NETWORK_SESSION_LOCKED(22001),
CONTROLLER_NETWORK_SESSION_TIMEOUT(22002),
CONTROLLER_NETWORK_ERROR(22003),
CONTROLLER_NETWORK_OBJ_ERROR(22004),
CONTROLLER_NETWORK_DB_ERROR(22005),
CONTROLLER_CANNOTLOCATEPORTS(22006),
// Placement errors (23000 - 23999)
// NOTE: these are called from both the api and controller paths
PLACEMENT_NUMPATHSLTNETWORKS(23000),
PLACEMENT_CANNOTALLOCATEPORTS(23001),
PLACEMENT_NOSTORAGEPORTSINNETWORK(23002),
PLACEMENT_CANNOTALLOCATEMINPATHS(23003),
PLACEMENT_HOSTHASFEWERTHANMINPATHS(23004),
PLACEMENT_HOSTHASUNUSEDINITIATORS(23005),
PLACEMENT_INSUFFICENTREDUNDANCY(23006),
// Device Data Collection (Discovery/Scan/Metering/etc) (24000-24999)
CONTROLLER_DATA_COLLECTION_ERROR(24001),
// HDS Errors (25000-25999)
HDS_INVALID_RESPONSE(25000),
ERROR_RESPONSE_RECEIVED(25001),
HDS_ASYNC_TASK_INVALID_RESPONSE(25002),
HDS_ASYNC_TASK_MAXIMUM_RETRIES_EXCEED(25003),
HDS_ASYNC_TASK_WITH_ERROR_RESPONSE(25004),
HDS_COMMAND_ERROR(25005),
HDS_RESPONSE_PARSING_FAILED(25006),
HDS_SCAN_FAILED(25007),
// HDS Provisioning Errors
HDS_VOLUME_CREATION_FAILED(25054),
HDS_NOT_ABLE_TO_ADD_INITIATOR(25055),
HDS_NOT_ABLE_TO_ADD_HSD(25056),
HDS_NOT_ABLE_TO_ADD_VOLUME_TO_HSD(25057),
HDS_NOT_ABLE_TO_GET_FREE_LUN_INFO(25058),
HDS_NOT_ABLE_ADD_HOST(25059),
HDS_HSD_ALREADY_EXISTS_WITH_SAME_INITIATORS(25060),
HDS_FAILED_TO_REGISTER_HOST(25061),
HDS_FAILED_TO_GET_HOST_ONFO(25062),
HDS_VOLUME_DELETION_FAILED(25063),
HDS_VOLUME_INFO_FAILED(25064),
HDS_UNSUPPORTED_HOST_WITH_BOTH_FC_ISCSI_INITIATORS(25065),
HDS_NO_TARGET_PORTS_AVAILABLE(25066),
UNABLE_TO_GENERATE_INPUT_XML(25067),
UNABLE_TO_GENERATE_INPUT_XML_DUE_TO_NO_OPERATIONS(25068),
UNABLE_TO_GENERATE_INPUT_XML_DUE_TO_UNSUPPORTED_MODEL(25069),
HDS_UNSUPPORTED_OPERATION(25070),
UNABLE_TO_PROCESS_REQUEST_DUE_TO_UNAVAILABLE_FREE_LUNS(25071),
XTREMIO_API_ERROR(25072),
XTREMIO_DISCOVERY_ERROR(25073),
XTREMIO_IG_NOT_FOUND(25074),
HDS_REPLICATION_CONFIGURATION_PROBLEM(25075),
HDS_EXPORT_GROUP_UPDATE_FAILURE(25076),
// DataDomain errors
DATADOMAIN_API_ERROR(25100),
DATADOMAIN_RESOURCE_NOT_FOUND(25101),
DATADOMAIN_INVALID_PARAMETER(25102),
DATADOMAIN_INVALID_OPERATION(25103),
CONTROLLER_COMPUTESYSTEM_ERROR(26000),
// Syssvc Errors (30000 - 30999)
SYS_CLUSTER_STATE_NOT_STABLE(30000),
SYS_RELEASE_LOCK_ERROR(30001),
SYS_IS_NULL_OR_EMPTY(30002),
SYS_IO_WRITE_ERROR(30003),
SYS_IO_READ_ERROR(30004),
SYS_CREATE_OBJECT_ERROR(30005),
SYS_GET_OBJECT_ERROR(30006),
SYS_SET_OBJECT_ERROR(30007),
SYS_UPDATE_OBJECT_ERROR(30008),
SYS_WAIT_TO_COMPLETE_ERROR(30009),
SYS_SELF_TEST_ERROR(30010),
SYS_UPLOAD_INSTALL_ERROR(30011),
SYS_WAKEUP_ERROR(30012),
SYS_CONNECTEMC_NOT_CONFIGURED(30013),
SYS_INITIALIZE_SSL_CONTENT_ERROR(30014),
SYS_NO_NODES_AVAILABLE(30015),
SYS_INVALID_OBJECT(30016),
SYS_DOWNLOAD_IMAGE_ERROR(30017),
SYS_INTERNAL_INVALID_LOCK_OWNER(30018),
SYS_INTERNAL_INVALID_SOFTWARE_VERSION(30020),
SYS_INTERNAL_LOCAL_REPO_ERROR(30021),
SYS_INTERNAL_REMOTE_REPO_ERROR(30022),
SYS_INTERNAL_SYS_CLIENT_ERROR(30023),
SYS_INTERNAL_ERROR(30024),
SYS_INTERNAL_COORDINATOR_ERROR(30025),
SYS_SERVICE_BUSY(30026),
SYS_POWEROFF_ERROR(30027),
SYS_IMAGE_DOWNLOAD_FAILED(30028),
SYS_INTERNAL_SERVICE_RESTART(30029),
SYS_DATANODE_FAILCONNECT_CONTROLLER(30030),
SYS_RECOVERY_TRIGGER_FAILED(30031),
SYS_RECOVERY_REPAIR_FAILED(30032),
SYS_RECOVERY_REBUILD_FAILED(30033),
SYS_RECOVERY_ADD_LISTENER_FAILED(30034),
SYS_RECOVERY_GET_LOCK_FAILED(30035),
SYS_RECOVERY_NEW_NODE_FAILURE(30036),
SYS_BACKUP_LIST_EXTERNAL_FAILED(30037),
SYS_BACKUP_QUERY_EXTERNAL_FAILED(30038),
SYS_IPRECONFIG_TRIGGER_FAILED(30040),
SYS_INTERNAL_SERVICE_NAME_NOT_FOUND(30041),
SYS_DR_OPERATION_PRECHECK_FAILED(30042),
SYS_DR_OPERATION_RECONFIG_FAILED(30043),
SYS_DR_OPERATION_TIMEOUT(30044),
SYS_DR_NAT_CHECK_FAILED(30045),
SYS_DR_ADD_STANDBY_FAILED(30046),
SYS_DR_CONFIG_STANDBY_FAILED(30047),
SYS_DR_REMOVE_STANDBY_FAILED(30048),
SYS_DR_PAUSE_STANDBY_FAILED(30049),
SYS_DR_RESUME_STANDBY_FAILED(30050),
SYS_DR_SWITCHOVER_FAILED(30051),
SYS_DR_ACQUIRE_OPERATION_LOCK_FAILED(30052),
SYS_DR_CONCURRENT_OPERATION_NOT_ALLOWED(30053),
SYS_DR_FAILOVER_FAILED(30054),
SYS_DR_CREATE_VIPR_CLIENT_FAILED(30055),
SYS_DR_UPDATE_SITE_FAILED(30056),
SYS_DR_UPGRADE_NOT_ALLOWED(30057),
SYS_DR_RETRY_STANDBY_OP_FAILED(30058),
SYS_DR_SITE_CONNECTION_BROKEN(30059),
SYS_BACKUP_EXTERNAL_SERVER_ERROR(30060),
SYS_BACKUP_EXTERNAL_SERVER_FAILED(30061),
SYS_BACKUP_RESTORE_FAILED(30062),
// Storage driver operation errors
SYS_INSTALL_DRIVER_UPLOAD_FAILED(30063),
SYS_INSTALL_DRIVER_PRECHECK_FAILED(30064),
SYS_UNINSTALL_DRIVER_PRECHECK_FAILED(30065),
SYS_UPGRADE_DRIVER_PRECHECK_FAILED(30066),
SYS_INSTALL_DRIVER_FAILED(30067),
SYS_UNINSTALL_DRIVER_FAILED(30068),
SYS_UPGRADE_DRIVER_FAILED(30069),
// Log collection errors
SYS_LOG_COLLECTING_TIMEOUT(30070),
// Objsvc errors (40000 - 40999)
OBJ_DATASTORE_CREATE_ERROR(40000),
OBJ_DATASTORE_DELETE_ERROR(40001),
OBJ_PROJECT_INVALID(40002),
OBJ_PROJECT_NOT_FOUND_FOR_NAMESPACE(40003),
OBJ_VPOOL_INVALID(40004),
OBJ_VPOOL_NOT_FOUND_FOR_NAMESPACE(40005),
OBJ_VPOOL_NOT_COMPATIBLE(40006),
OBJ_VPOOL_EMPTY(40007),
OBJ_BUCKET_EXISTS(40008),
OBJ_BUCKETNAME_INVALID(40009),
OBJ_NOT_BUCKT_OWNER(40010),
OBJ_VPOOL_TYPE_INVALID(40011),
DATASERVICE_INVALID_VARRAY(40012),
OBJ_SYSVARRAY_NOT_DEFINED(40013),
OBJ_SYSTABLE_NOT_CREATED_YET(40014),
OBJ_VPOOL_LISTS_NOT_MUTUALLY_EXCLUSIVE(40015),
// Cinder errors ( 41000 - 41199)
CINDER_OPERATION_FAILED(41000),
CINDER_JOB_FAILED(41001),
CINDER_VOLUME_NOT_FOUND(41002),
CINDER_VOLUME_CREATE_FAILED(41003),
CINDER_SNAPSHOT_NOT_FOUND(41004),
CINDER_SNAPSHOT_CREATE_FAILED(41005),
CINDER_VOLUME_CLONE_FAILED(41006),
CINDER_CREATE_VOLUME_FROM_SNAPSHOT_FAILED(41007),
CINDER_VOLUME_ATTACH_FAILED(41008),
CINDER_VOLUME_DETACH_FAILED(41009),
CINDER_VOLUME_EXPAND_FAILED(41010),
CINDER_VOLUME_DELETE_FAILED(41011),
CINDER_SNAPSHOT_DELETE_FAILED(41012),
// GLANCE errors ( 41200 - 41999)
GLANCE_OPERATION_FAILED(41200),
GLANCE_JOB_FAILED(41201),
GLANCE_RESPONSE_PARSE_ERROR(41202),
// Vnxe errors (42000 - 42999):
VNXE_COMMAND_ERROR(42000),
VNXE_UNEXPECTED_DATA(42001),
VNXE_DISCOVERY_ERROR(42002),
IMAGE_SERVER_CONTROLLER_ERROR(49000),
// Geosvc errors (50000 - 60000):
GEOSVC_VDC_CONNECT_ERROR(50000),
GEOSVC_INTERNAL_ERROR(50001),
GEOSVC_ACQUIRED_LOCK_FAIL(50002),
GEOSVC_VDC_VERSION_INCOMPATIBLE(50003),
GEOSVC_FEDERATION_UNSTABLE(50004),
GEOSVC_GEODB_CONFIG_FAILED(50005),
GEOSVC_UNSTABLE_VDC_ERROR(50006),
GEOSVC_VESION_ERROR(50007),
GEOSVC_WRONG_STATE(50008),
GEOSVC_PRECHECK_ERROR(50009),
GEOSVC_SECURITY_ERROR(50010),
GEOSVC_POSTCHECK_ERROR(50011),
GEOSVC_INVALID_ENDPOINT(50012),
GEOSVC_CONNECTIVITY_ERROR(50013),
GEOSVC_REMOTEVDC_EXCEPTION(50014),
GEOSVC_CONNECTVDC_INVALID_STATUS(51001),
GEOSVC_CONNECTVDC_SYNC_CERT_ERROR(51004),
GEOSVC_CONNECTVDC_GEN_CERT_CHAIN_ERROR(51005),
GEOSVC_CONNECTVDC_STATUS_UPDATE_ERROR(51008),
GEOSVC_CONNECTVDC_REMOVE_ROOT_ROLES_ERROR(51009),
GEOSVC_REMOVEVDC_SYNC_CONFIG_ERROR(52002),
GEOSVC_REMOVEVDC_INVALID_STATUS(52004),
GEOSVC_UPDATEVDC_ERROR(53001),
GEOSVC_UPDATEVDC_INVALID_STATUS(53002),
GEOSVC_DISCONNECTVDC_INVALID_STATUS(54001),
GEOSVC_DISCONNECTVDC_STILL_REACHABLE(54002),
GEOSVC_DISCONNECTVDC_CONCURRENT(54003),
GEOSVC_DISCONNECTVDC_FAILED(54004),
GEOSVC_RECONNECTVDC_FAILED(55001),
GEOSVC_RECONNECTVDC_INVALID_STATUS(55002),
GEOSVC_RECONNECTVDC_NODE_REPAIR_FAILED(55003),
GEOSVC_RECONNECTVDC_UNREACHABLE(55004),
// Backup errors (61000 - 61099)
BACKUP_INTERNAL_ERROR(61000),
BACKUP_CREATE_FAILED(61001),
BACKUP_CREATE_EXSIT(61002),
BACKUP_DELETE_FAILED(61003),
BACKUP_LIST_FAILED(61004),
BACKUP_RESTORE_FAILED(61005),
BACKUP_CONNECTION_FAILED(61006),
BACKUP_GET_LOCK_ERROR(61007),
BACKUP_LOCK_OCCUPIED(61008),
BACKUP_INTERNAL_NOT_LEADER(61009),
BACKUP_PURGE_FAILED(61010),
BACKUP_DISABLED_AS_DISK_FULL(61011),
BACKUP_DISABLED_AS_REACH_LIMIT(61012),
BACKUP_DISABLED_AS_ON_STANDBY(61013),
BACKUP_PULL_FAILED(61014),
// ScaleIO errors (60000 - 60999)
SCALEIO_UNSUPPORTED_OPERATION(60000),
SCALEIO_OPERATION_EXCEPTION(60001),
SCALEIO_CREATE_VOLUME_ERROR(60002),
SCALEIO_DELETE_VOLUME_ERROR(60003),
SCALEIO_MODIFY_VOLUME_CAPACITY_ERROR(60004),
SCALEIO_MAP_ERROR(60005),
SCALEIO_UNMAP_ERROR(60006),
SCALEIO_CREATE_SNAPSHOT_ERROR(60007),
SCALEIO_DELETE_SNAPSHOT_ERROR(60008),
SCALEIO_CREATE_FULL_COPY_ERROR(60009),
SCALEIO_SCAN_FAILED(60010),
SCALEIO_CLI_NEEDS_TO_SPECIFY_MDM_CREDS(60011),
SCALEIO_CLI_INIT_WAS_NOT_CALLED(60012),
SCALEIO_API_FAILURE(60013),
// customConfig controller errors (62000 - 62099)
CONTROLLER_CUSTOMCONFIG_ERROR(62000),
// Keystone errors (62100-62199)
KEYSTONE_API_ERROR(62100),
KEYSTONE_REQUEST_PARSE_ERRORS(62101),
KEYSTONE_RESPONSE_PARSE_ERROR(62102),
KEYSTONE_CONFIGURATION_ERROR(62103),
// NetApp Cluster errors (63000 - 63099):
NETAPPC_ERROR(63000),
NETAPPC_FS_CREATE_ERROR(63001),
NETAPPC_FS_EXPAND_ERROR(63002),
NETAPPC_FS_DELETE_ERROR(63003),
NETAPPC_SHARE_CREATE_ERROR(63004),
NETAPPC_SHARE_DELETE_ERROR(63005),
NETAPPC_SNAPSHOT_CREATE_ERROR(63006),
NETAPPC_SNAPSHOT_DELETE_ERROR(63007),
NETAPPC_FS_RESTORE_ERROR(63008),
NETAPPC_FS_EXPORT_ERROR(63009),
NETAPPC_FS_UNEXPORT_ERROR(63010),
NETAPPC_SNAPSHOT_EXPORT_ERROR(63011),
NETAPPC_SNAPSHOT_UNEXPORT_ERROR(63012),
NETAPPC_QTREE_CREATE_ERROR(63013),
NETAPPC_QTREE_DELETE_ERROR(63014),
NETAPPC_QTREE_UPDATE_ERROR(63015),
NETAPPC_CIFS_SHARE_ACL_UPDATE_ERROR(63016),
NETAPPC_CIFS_SHARE_ACL_DELETE_ERROR(63017),
NETAPPC_INVALID_OPERATION(63018),
// Unmanaged Volume Errors (64000 - 64999)
UNMANAGED_VOLUME_INGESTION_EXCEPTION(64000),
ECS_BASEURI(65000),
// ECS errors (65000 - 65999)
ECS_RETURN_PARAM_ERROR(65001),
ECS_LOGINVALIDATE_ERROR(65002),
ECS_STORAGEPOOL_ERROR(65003),
ECS_STATS_ERROR(65004),
ECS_NON_SYSTEM_ADMIN_ERROR(65005),
ECS_CONNECTION_ERROR(65006),
ECS_BUCKET_UPDATE_ERROR(65010),
ECS_BUCKET_DELETE_ERROR(65011),
ECS_BUCKET_GET_OWNER_ERROR(65012),
ECS_GET_NAMESPACES_ERROR(65013),
ECS_GET_NAMESPACE_DETAILS_ERROR(65014),
ECS_GET_USER_SECRET_KEYS_ERROR(65015),
ECS_ADD_USER_SECRET_KEYS_ERROR(65016),
ECS_BUCKET_ACL_ERROR(65017),
ECS_NODE_ERROR(65018),
// External Device Errors (66000 - 66999)
EXTERNALDEVICE_NO_DRIVER_DEFINED_FOR_DEVICE_ERROR(66001),
EXTERNALDEVICE_CREATE_VOLUMES_ERROR(66002),
EXTERNALDEVICE_DELETE_VOLUMES_ERROR(66003),
EXTERNALDEVICE_CREATE_SNAPSHOTS_ERROR(66004),
EXTERNALDEVICE_CREATE_CONSISTENCY_GROUP_ERROR(66005),
EXTERNALDEVICE_DELETE_CONSISTENCY_GROUP_ERROR(66006),
EXTERNALDEVICE_DELETE_GROUP_SNAPSHOT_ERROR(66007),
EXTERNALDEVICE_DELETE_SNAPSHOT_ERROR(66008),
EXTERNALDEVICE_CREATE_EXPORT_MASK_ERROR(66009),
EXTERNALDEVICE_ADD_VOLUME_TO_EXPORT_MASK_ERROR(66010),
EXTERNALDEVICE_NO_NATIVEID_DEFINED_FOR_STORAGE_PORT_ERROR(66011),
EXTERNALDEVICE_DELETE_VOLUME_FROM_EXPORT_MASK_ERROR(66012),
EXTERNALDEVICE_DELETE_EXPORT_MASK_ERROR(66013),
EXTERNALDEVICE_RESTORE_FROM_SNAPSHOT_ERROR(66014),
EXTERNALDEVICE_CREATE_VOLUME_CLONE_ERROR(66015),
EXTERNALDEVICE_CREATE_GROUP_CLONE_ERROR(66016),
EXTERNALDEVICE_DETACH_CLONE_ERROR(66017),
EXTERNALDEVICE_RESTORE_CLONES_ERROR(66018),
EXTERNALDEVICE_EXPAND_VOLUME_ERROR(66019),
EXTERNALDEVICE_ADD_EXPORT_MASK_INITIATORS_ERROR(66020),
EXTERNALDEVICE_REMOVE_EXPORT_MASK_INITIATORS_ERROR(66021),
EXTERNALDEVICE_DISCONNECT_STORAGE_SYSTEM_ERROR(66022),
EXTERNALDEVICE_DRIVERTASK_ERROR(66023),
// Ceph errors (67000 - 67999)
CEPH_CONNECTION_ERROR(67000),
CEPH_OPERATION_EXCEPTION(67001),
CEPH_INVALID_CREDENTIALS_ERROR(67002),
XIV_COMMAND_FAILURE(68000),
XIV_REST_REQUEST_FAILURE(68001),
XIV_REST_RESPONSE_JSON_PARSER_FAILURE(68002),
XIV_REST_CREATE_FAILURE(68003),
XIV_REST_DELETE_FAILURE(68004),
XIV_REST_HOST_PARTOF_CLUSTER(68010),
// ****************************
// Old style of Service codes
// ****************************
// API Errors:
@Deprecated API_BAD_PARAMETERS(30, FATAL),
@Deprecated API_UNAUTHORIZED_OPERATION(20, FATAL),
@Deprecated API_ERROR(70, FATAL),
// Controller Errors:
@Deprecated CONTROLLER_ERROR(160, FATAL),
@Deprecated CONTROLLER_STORAGE_ERROR(180, FATAL),
@Deprecated CONTROLLER_OBJECT_ERROR(190, FATAL),
@Deprecated CONTROLLER_NOT_FOUND(200, FATAL),
@Deprecated CONTROLLER_WORKFLOW_ERROR(210, FATAL),
// Device Controller Errors (Asynchronous aspect of controllers):
@Deprecated WORKFLOW_ERROR(240, FATAL),
@Deprecated WORKFLOW_RESTARTED_ERROR(250, FATAL),
// Token encoding errors:
@Deprecated AUTH_TOKEN_ENCODING_ERROR(290, FATAL),
// General errors:
@Deprecated IO_ERROR(320, FATAL);
@Deprecated
static enum Action {
@Deprecated RETRY,
@Deprecated FATAL,
@Deprecated NON_APPLICABLE
};
private final int _serviceCode;
private final Action _action;
private ServiceCode(int code) {
this(code, NON_APPLICABLE);
}
private ServiceCode(int code, Action action) {
_serviceCode = code;
_action = action;
}
/**
* Get the internal service code
*
* @return the service code
*/
public int getCode() {
return _serviceCode;
}
/**
* Get whether the action can be retried
*
* @return whether the action is retryable or not
*/
public boolean isRetryable() {
return _action == RETRY;
}
/**
* Get whether the error is fatal or not
*
* @return whether the error is fatal
*/
public boolean isFatal() {
return _action == FATAL;
}
/**
* Get the appropriate HTTP status for the service code
*
* @return the HTTP status
*/
public StatusType getHTTPStatus() {
switch (this) {
case API_BAD_HEADERS:
case API_BAD_REQUEST:
case API_NO_PLACEMENT_FOUND:
case API_PLACEMENT_ERROR:
case API_INSUFFICIENT_QUOTA:
case API_UNKNOWN_RP_CONFIGURATION:
case API_PARAMETER_INVALID:
case API_INVALID_VARRAY_NETWORK_CONFIGURATION:
case API_INVALID_VPOOL_FOR_INGESTION:
return Status.BAD_REQUEST;
case SECURITY_AUTH_SERVICE_ENCODING_ERROR:
case SECURITY_UNAUTHORIZED_OPERATION:
return Status.UNAUTHORIZED;
case SECURITY_INSUFFICIENT_PERMISSIONS:
return Status.FORBIDDEN;
case API_METHOD_NOT_SUPPORTED:
return ClientResponse.Status.METHOD_NOT_ALLOWED;
case API_SERVICE_UNAVAILABLE:
return Status.SERVICE_UNAVAILABLE;
case DBSVC_ENTITY_NOT_FOUND:
case API_URL_ENTITY_NOT_FOUND:
return Status.NOT_FOUND;
case API_UNSUPPORTED_MEDIA_TYPE:
return Status.UNSUPPORTED_MEDIA_TYPE;
default:
return isRetryable() ? Status.SERVICE_UNAVAILABLE : Status.INTERNAL_SERVER_ERROR;
}
}
public static ServiceCode fromHTTPStatus(final int status) {
switch (status) {
case 400:// Status.BAD_REQUEST
return ServiceCode.API_BAD_REQUEST;
case 401:// Status.UNAUTHORIZED
return ServiceCode.SECURITY_UNAUTHORIZED_OPERATION;
case 403:// Status.FORBIDDEN
return ServiceCode.SECURITY_INSUFFICIENT_PERMISSIONS;
case 404:// Status.NOT_FOUND
return ServiceCode.API_URL_ENTITY_NOT_FOUND;
case 405:
return ServiceCode.API_METHOD_NOT_SUPPORTED;
case 415:
return ServiceCode.API_UNSUPPORTED_MEDIA_TYPE;
case 503:// Status.SERVICE_UNAVAILABLE
return ServiceCode.API_SERVICE_UNAVAILABLE;
default:
return ServiceCode.UNFORSEEN_ERROR;
}
}
/**
* Converts a numerical service code into the corresponding ServiceCode
*
* @param code the numerical service code
* @return the matching ServiceCode
*/
public static ServiceCode toServiceCode(int code) {
for (ServiceCode svcCode : ServiceCode.values()) {
if (svcCode.getCode() == code) {
return svcCode;
}
}
return ServiceCode.UNFORSEEN_ERROR;
}
public String getSummary(final Locale locale) {
return localize(locale, this);
}
public String getSummary() {
return localize(Locale.ENGLISH, this);
}
}