3030import org .commonjava .indy .data .IndyDataException ;
3131import org .commonjava .indy .data .StoreDataManager ;
3232import org .commonjava .indy .measure .annotation .Measure ;
33+ import org .commonjava .indy .metrics .IndyMetricsManager ;
3334import org .commonjava .indy .model .core .ArtifactStore ;
3435import org .commonjava .indy .model .core .Group ;
3536import org .commonjava .indy .model .core .HostedRepository ;
6465import java .io .InputStream ;
6566import java .util .ArrayList ;
6667import java .util .Collections ;
68+ import java .util .HashMap ;
6769import java .util .HashSet ;
6870import java .util .List ;
6971import java .util .Map ;
@@ -93,6 +95,9 @@ public class PromotionManager
9395
9496 private final Logger logger = LoggerFactory .getLogger ( getClass () );
9597
98+ @ Inject
99+ private IndyMetricsManager metricsManager ;
100+
96101 @ Inject
97102 private PromoteConfig config ;
98103
@@ -511,8 +516,10 @@ private PathsPromoteResult doPathsPromotion( PathsPromoteRequest request, String
511516 }
512517 else if ( validation .isValid () )
513518 {
514- return runPathPromotions ( request , pending , Collections .emptySet (), Collections .emptySet (), contents ,
515- validation , validationRequest );
519+ PathsPromoteResult result = runPathPromotions ( request , pending , Collections .emptySet (), Collections .emptySet (), contents ,
520+ validation , validationRequest );
521+ doPathPromoteMetrics ( contents .size (), result );
522+ return result ;
516523 }
517524 else
518525 {
@@ -521,6 +528,22 @@ else if ( validation.isValid() )
521528 }
522529 }
523530
531+ private void doPathPromoteMetrics ( int total , PathsPromoteResult result )
532+ {
533+ try
534+ {
535+ Map <String , Integer > pathPromoteMetrics = new HashMap <>();
536+ pathPromoteMetrics .put ( "total" , total );
537+ pathPromoteMetrics .put ( "complete" , result .getCompletedPaths ().size () );
538+ pathPromoteMetrics .put ( "skipped" , result .getSkippedPaths ().size () );
539+ metricsManager .addGauges ( this .getClass (), "path.promote" , pathPromoteMetrics );
540+ }
541+ catch ( Throwable e )
542+ {
543+ logger .warn ( "Failed to get path promote files metrics. Reason: {} " , e .getMessage () );
544+ }
545+ }
546+
524547 private Future <PathsPromoteResult > submitPathsPromoteRequest ( PathsPromoteRequest request , final String baseUrl )
525548 throws IndyWorkflowException
526549 {
0 commit comments