Skip to content

Commit

Permalink
- the plugin is successfully releasing the repositories
Browse files Browse the repository at this point in the history
  • Loading branch information
dhladky committed Jan 8, 2020
1 parent e1bf712 commit 4f5785f
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 32 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
<artifactId>nexus-staging-plugin</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
<!-- <type>${nexus-plugin.type}</type> -->
<type>${nexus-plugin.type}</type> <!-- -->
</dependency>
</dependencies>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,75 +1,81 @@
package com.redhat.nexus.releasestagingrepositories.task;

import com.sonatype.nexus.staging.internal.DefaultStagingManager;
import com.sonatype.nexus.staging.internal.DefaultStagingRepositoryManager;
import com.sonatype.nexus.staging.StagingManager;
import com.sonatype.nexus.staging.internal.RepositoryState;
import com.sonatype.nexus.staging.internal.persist.DefaultStagingConfiguration;
import com.sonatype.nexus.staging.internal.persist.StagingConfiguration;
import com.sonatype.nexus.staging.persist.model.CStageRepository;
import com.sonatype.nexus.staging.persist.model.Configuration;
import org.sonatype.nexus.configuration.application.NexusConfiguration;
import org.sonatype.nexus.proxy.repository.Repository;
import org.sonatype.nexus.scheduling.AbstractNexusRepositoriesTask;
import org.sonatype.nexus.scheduling.AbstractNexusTask;

import javax.inject.Inject;
import javax.inject.Named;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;

import static com.google.common.base.Preconditions.checkNotNull;

@Named(CleanUpTask.ID)
public class CleanUpTask extends AbstractNexusTask<String> { //todo define Object
public class CleanUpTask extends AbstractNexusTask<String> {

final private NexusConfiguration nexusConfiguration;
final private DefaultStagingManager stagingManager;
final private DefaultStagingRepositoryManager stagingRepositoryManager;
final private DefaultStagingConfiguration stagingConfiguration;
final private StagingManager stagingManager;
final private StagingConfiguration stagingConfiguration;

static final String ID = "CleanUpTask";

@Inject
public CleanUpTask(final NexusConfiguration nexusConfiguration, DefaultStagingManager stagingManager, DefaultStagingRepositoryManager stagingRepositoryManager, DefaultStagingConfiguration stagingConfiguration) {
this.nexusConfiguration = checkNotNull(nexusConfiguration);
public CleanUpTask(final StagingManager stagingManager, final StagingConfiguration stagingConfiguration) {
this.stagingManager = checkNotNull(stagingManager);
this.stagingRepositoryManager = checkNotNull(stagingRepositoryManager);
this.stagingConfiguration = checkNotNull(stagingConfiguration);
}

private static String ACTION = "cleanup_repository";

@Override
protected String doRun() throws Exception {
logger.info("I am doing run!"); // todo not implemented

// HashSet<String> stagingProfilesToProcess = new HashSet<>();
// for(CProfile stagingProfile : stagingManager.listProfiles()) {
// if(stagingProfile.getRepositoryTargetId().equals(getRepositoryId() )) {
// // We need to process this
// stagingProfilesToProcess.add(stagingProfile.getId());
// }
// }

Field configurationField = DefaultStagingConfiguration.class.getDeclaredField("configuration");
configurationField.setAccessible(true);
Configuration configuration = (Configuration) configurationField.get(stagingConfiguration);

String profileId = getParameter(CleanUpTaskDescriptor.FLD_STAGING_PROFILE_ID);
int age = Integer.parseInt(getParameter(CleanUpTaskDescriptor.FLD_AGE));

for(CStageRepository stagingRepository : configuration.getRepositories()) {
Date processingDate = new Date(System.currentTimeMillis() - age*86400000L);

ArrayList<String> reposToPromote = new ArrayList<>();
for(CStageRepository stagingRepository : configuration.getRepositories()) {
if(stagingRepository.getProfileId().equals(profileId)) {
if(stagingRepository.getUpdated().before(processingDate)
&& (RepositoryState.matches(stagingRepository.getState(), RepositoryState.closed)
|| RepositoryState.matches(stagingRepository.getState(), RepositoryState.group))
) {
final String id = stagingRepository.getId();
logger.info("Automatically releasing repository "+ id);
reposToPromote.add(id);
}
}
}

if(reposToPromote.size() > 0) {
try {
stagingManager.promoteStagingRepositories(reposToPromote, getParameter(CleanUpTaskDescriptor.FLD_DESCRIPTION), Boolean.parseBoolean(getParameter(CleanUpTaskDescriptor.FLD_AUTOMATIC_DROP)));
} catch (Exception e) {
logger.error("Error promoting repositories: ", e.getMessage());
}
}

return null;
}

@Override
protected String getAction() {
return ACTION;
return "cleanup_repository";
}

@Override
protected String getMessage() {
//todo add profile repo id

return "Executing repository cleanup: " + getParameter(CleanUpTaskDescriptor.FLD_STAGING_PROFILE_ID);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package com.redhat.nexus.releasestagingrepositories.task;

import com.google.common.collect.ImmutableList;
import com.redhat.nexus.releasestagingrepositories.ui.StagingProfileComboFormField;
import org.sonatype.nexus.formfields.CheckboxFormField;
import org.sonatype.nexus.formfields.FormField;
import org.sonatype.nexus.formfields.NumberTextFormField;
import org.sonatype.nexus.formfields.StringTextFormField;
import org.sonatype.nexus.tasks.descriptors.AbstractScheduledTaskDescriptor;

import javax.inject.Named;
Expand All @@ -19,12 +20,20 @@ public class CleanUpTaskDescriptor extends AbstractScheduledTaskDescriptor {

static final String FLD_AGE = "ageID";

static final String FLD_AUTOMATIC_DROP = "autoDrop";

static final String FLD_DESCRIPTION = "description";

@SuppressWarnings("rawtypes")
private final List<FormField> fields = ImmutableList.<FormField>of(
new StagingProfileComboFormField(FLD_STAGING_PROFILE_ID,"Target Staging Profile", "Staging repositories promoted by this profile will be released",
// new StagingProfileComboFormField(FLD_STAGING_PROFILE_ID,"Target Staging Profile", "Staging repositories promoted by this profile will be released",
// FormField.MANDATORY),
new StringTextFormField(FLD_STAGING_PROFILE_ID,"Target Staging Profile", "Staging repositories promoted by this profile will be released",
FormField.MANDATORY),

(new NumberTextFormField(FLD_AGE, "Staging Repository Age","The time period after the repositories will be released in days", FormField.MANDATORY)).withInitialValue(30)
(new NumberTextFormField(FLD_AGE, "Staging Repository Age","The time period after the repositories will be released in days", FormField.MANDATORY)).withInitialValue(30),
(new CheckboxFormField(FLD_AUTOMATIC_DROP, "Automatic Drop after Release", "If checked, the released staging profile will be dropped.", false)).withInitialValue(true),
new StringTextFormField(FLD_DESCRIPTION, "Description", "Description message of the automatic release. Usable when Automatic Drop is not used.", false)
);

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@ public String getStoreRoot() {
@Override
public String getType() {
//noinspection SpellCheckingInspection
return "stgprofile";
return "combo"; // FIXME: 06/01/2020
}
}

0 comments on commit 4f5785f

Please sign in to comment.