/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hudson.plugins.disk_usage;
import hudson.Extension;
import hudson.model.PeriodicWork;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import jenkins.model.Jenkins;
/**
*
* @author jbrazdil
*/
@Extension
public class DiskUsageOvearallGraphGenerator extends PeriodicWork {
@Override
public long getRecurrencePeriod() {
return PeriodicWork.DAY;
}
@Override
protected void doRun() throws Exception {
DiskUsagePlugin plugin = Jenkins.getInstance().getPlugin(DiskUsagePlugin.class);
plugin.refreshGlobalInformation();
File jobsDir = new File(Jenkins.getInstance().getRootDir(), "jobs");
Long freeJobsDirSpace = jobsDir.getTotalSpace();
DiskUsageProjectActionFactory.DESCRIPTOR.addHistory(new DiskUsageOvearallGraphGenerator.DiskUsageRecord(plugin.getCashedGlobalBuildsDiskUsage(), plugin.getGlobalSlaveDiskUsageWorkspace(), plugin.getCashedGlobalJobsWithoutBuildsDiskUsage(), freeJobsDirSpace, plugin.getCashedNonSlaveDiskUsageWorkspace()));
DiskUsageProjectActionFactory.DESCRIPTOR.save();
}
public static class DiskUsageRecord extends DiskUsage{
private static SimpleDateFormat sdf = new SimpleDateFormat("d/M");
Date date;
private Long jobsWithoutBuildsUsage = 0l;
private Long allSpace = 0l;
private Long diskUsageNonSlaveWorkspaces = 0l;
public DiskUsageRecord(Long diskUsageBuilds, Long diskUsageWorkspaces, Long diskUsageJobsWithoutBuilds, Long allSpace, Long diskUsageNonSlaveWorkspaces){
super(diskUsageBuilds, diskUsageWorkspaces);
this.jobsWithoutBuildsUsage = diskUsageJobsWithoutBuilds;
this.allSpace = allSpace;
this.diskUsageNonSlaveWorkspaces = diskUsageNonSlaveWorkspaces;
date = new Date(){
private static final long serialVersionUID = 1L;
@Override
public String toString(){
return sdf.format(this);
}
};
}
public Long getNonSlaveWorkspacesUsage(){
if(diskUsageNonSlaveWorkspaces==null)
return 0l;
return diskUsageNonSlaveWorkspaces;
}
public Long getSlaveWorkspacesUsage(){
if(diskUsageNonSlaveWorkspaces==null)
return getWorkspacesDiskUsage();
return getWorkspacesDiskUsage() - diskUsageNonSlaveWorkspaces;
}
public Long getBuildsDiskUsage(){
if(buildUsage==null)
return 0l;
return buildUsage;
}
public Long getJobsDiskUsage(){
if(jobsWithoutBuildsUsage==null)
return getBuildsDiskUsage();
return (jobsWithoutBuildsUsage + getBuildsDiskUsage());
}
public Long getAllSpace(){
if(allSpace==null)
return 0l;
return allSpace;
}
public Long getWorkspacesDiskUsage(){
if(wsUsage==null)
return 0l;
return wsUsage;
}
Date getDate(){
return date;
}
}
}