11use serde:: { Serializer , ser:: SerializeStruct } ;
22use thiserror:: Error ;
3+ use strum_macros:: EnumDiscriminants ;
34
4- #[ derive( Debug , PartialEq , Clone , Error ) ]
5+ #[ derive( Debug , PartialEq , Clone , Error , EnumDiscriminants ) ]
6+ #[ strum_discriminants( derive( serde:: Serialize ) ) ]
7+ #[ strum_discriminants( serde( rename_all = "SCREAMING_SNAKE_CASE" ) ) ]
58#[ allow( clippy:: enum_variant_names) ]
69pub enum ReplicateStatusCause {
710 #[ error( "input file URL {0} is missing" ) ]
@@ -30,7 +33,7 @@ pub enum ReplicateStatusCause {
3033 PreComputeInputFilesNumberMissing ,
3134 #[ error( "Invalid dataset checksum for dataset {0}" ) ]
3235 PreComputeInvalidDatasetChecksum ( usize ) ,
33- #[ error( "Input files number related environment variable is missing" ) ]
36+ #[ error( "Output folder related environment variable is missing" ) ]
3437 PreComputeOutputFolderNotFound ,
3538 #[ error( "Output path related environment variable is missing" ) ]
3639 PreComputeOutputPathMissing ,
@@ -50,64 +53,7 @@ impl serde::Serialize for ReplicateStatusCause {
5053 S : Serializer ,
5154 {
5255 let mut state = serializer. serialize_struct ( "ReplicateStatusCause" , 2 ) ?;
53-
54- let cause_name = match self {
55- ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( _) => {
56- "PRE_COMPUTE_AT_LEAST_ONE_INPUT_FILE_URL_MISSING"
57- }
58- ReplicateStatusCause :: PreComputeDatasetChecksumMissing ( _) => {
59- "PRE_COMPUTE_DATASET_CHECKSUM_MISSING"
60- }
61- ReplicateStatusCause :: PreComputeDatasetDecryptionFailed ( _) => {
62- "PRE_COMPUTE_DATASET_DECRYPTION_FAILED"
63- }
64- ReplicateStatusCause :: PreComputeDatasetDownloadFailed ( _) => {
65- "PRE_COMPUTE_DATASET_DOWNLOAD_FAILED"
66- }
67- ReplicateStatusCause :: PreComputeDatasetFilenameMissing ( _) => {
68- "PRE_COMPUTE_DATASET_FILENAME_MISSING"
69- }
70- ReplicateStatusCause :: PreComputeDatasetKeyMissing ( _) => {
71- "PRE_COMPUTE_DATASET_KEY_MISSING"
72- }
73- ReplicateStatusCause :: PreComputeDatasetUrlMissing ( _) => {
74- "PRE_COMPUTE_DATASET_URL_MISSING"
75- }
76- ReplicateStatusCause :: PreComputeFailedUnknownIssue => {
77- "PRE_COMPUTE_FAILED_UNKNOWN_ISSUE"
78- }
79- ReplicateStatusCause :: PreComputeInvalidTeeSignature => {
80- "PRE_COMPUTE_INVALID_TEE_SIGNATURE"
81- }
82- ReplicateStatusCause :: PreComputeIsDatasetRequiredMissing => {
83- "PRE_COMPUTE_IS_DATASET_REQUIRED_MISSING"
84- }
85- ReplicateStatusCause :: PreComputeInputFileDownloadFailed => {
86- "PRE_COMPUTE_INPUT_FILE_DOWNLOAD_FAILED"
87- }
88- ReplicateStatusCause :: PreComputeInputFilesNumberMissing => {
89- "PRE_COMPUTE_INPUT_FILES_NUMBER_MISSING"
90- }
91- ReplicateStatusCause :: PreComputeInvalidDatasetChecksum ( _) => {
92- "PRE_COMPUTE_INVALID_DATASET_CHECKSUM"
93- }
94- ReplicateStatusCause :: PreComputeOutputFolderNotFound => {
95- "PRE_COMPUTE_OUTPUT_FOLDER_NOT_FOUND"
96- }
97- ReplicateStatusCause :: PreComputeOutputPathMissing => "PRE_COMPUTE_OUTPUT_PATH_MISSING" ,
98- ReplicateStatusCause :: PreComputeSavingPlainDatasetFailed => {
99- "PRE_COMPUTE_SAVING_PLAIN_DATASET_FAILED"
100- }
101- ReplicateStatusCause :: PreComputeTaskIdMissing => "PRE_COMPUTE_TASK_ID_MISSING" ,
102- ReplicateStatusCause :: PreComputeTeeChallengePrivateKeyMissing => {
103- "PRE_COMPUTE_TEE_CHALLENGE_PRIVATE_KEY_MISSING"
104- }
105- ReplicateStatusCause :: PreComputeWorkerAddressMissing => {
106- "PRE_COMPUTE_WORKER_ADDRESS_MISSING"
107- }
108- } ;
109-
110- state. serialize_field ( "cause" , cause_name) ?;
56+ state. serialize_field ( "cause" , & ReplicateStatusCauseDiscriminants :: from ( self ) ) ?;
11157 state. serialize_field ( "message" , & self . to_string ( ) ) ?;
11258 state. end ( )
11359 }
0 commit comments