All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.executor.models.LogrotateCronTemplateContext Maven / Gradle / Ivy

The newest version!
package com.hubspot.singularity.executor.models;

import com.hubspot.singularity.executor.SingularityExecutorLogrotateFrequency;
import com.hubspot.singularity.executor.config.SingularityExecutorConfiguration;
import com.hubspot.singularity.executor.task.SingularityExecutorTaskDefinition;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class LogrotateCronTemplateContext {
  private final String logrotateStateFile;
  private final String logrotateSizeBasedConfig;
  Map logrotateConfPathsByLogrotateFrequency;
  private final SingularityExecutorConfiguration configuration;

  public LogrotateCronTemplateContext(
    SingularityExecutorConfiguration configuration,
    SingularityExecutorTaskDefinition taskDefinition,
    Map logrotateConfPathsByLogrotateFrequency,
    String logrotateSizeBasedConfig
  ) {
    this.configuration = configuration;
    this.logrotateStateFile = taskDefinition.getLogrotateStateFilePath().toString();
    this.logrotateConfPathsByLogrotateFrequency = logrotateConfPathsByLogrotateFrequency;
    this.logrotateSizeBasedConfig = logrotateSizeBasedConfig;
  }

  public List getLogrotateForceConfigs() {
    return logrotateConfPathsByLogrotateFrequency
      .entrySet()
      .stream()
      .map(
        frequencyWithLogrotateConfPath -> {
          SingularityExecutorLogrotateFrequency frequency = frequencyWithLogrotateConfPath.getKey();
          String frequencySpecificLogrotateConfPath = frequencyWithLogrotateConfPath.getValue();

          return new LogrotateForceConfig(
            frequencySpecificLogrotateConfPath,
            frequency.getCronSchedule().get()
          );
        }
      )
      .collect(Collectors.toList());
  }

  public static class LogrotateForceConfig {
    private final String logrotateForceConfigPath;
    private final String cronSchedule;

    public LogrotateForceConfig(String logrotateForceConfigPath, String cronSchedule) {
      this.logrotateForceConfigPath = logrotateForceConfigPath;
      this.cronSchedule = cronSchedule;
    }

    public String getLogrotateForceConfigPath() {
      return logrotateForceConfigPath;
    }

    public String getCronSchedule() {
      return cronSchedule;
    }
  }

  public String getLogrotateStateFile() {
    return logrotateStateFile;
  }

  public String getLogrotateSizeBasedConfig() {
    return logrotateSizeBasedConfig;
  }

  public String getOutputRedirect() {
    return configuration.isIgnoreLogrotateOutput() ? "> /dev/null 2>&1" : "";
  }

  public String getLogrotateCommand() {
    return configuration.getLogrotateCommand();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy