use of com.cloudbees.jenkins.support.api.SupportProvider in project support-core-plugin by jenkinsci.
the class SupportPlugin method getBundlePrefix.
/**
* Returns the prefix of the bundle name.
*
* @return the prefix of the bundle name.
*/
private static String getBundlePrefix() {
// default bundle filename
String filename = "support";
final SupportPlugin instance = getInstance();
if (instance != null) {
SupportProvider supportProvider = instance.getSupportProvider();
if (supportProvider != null) {
// let the provider name it
filename = supportProvider.getName();
}
}
final String instanceType = BundleNameInstanceTypeProvider.getInstance().getInstanceType();
if (StringUtils.isNotBlank(instanceType)) {
filename = filename + "_" + instanceType;
}
return filename;
}
use of com.cloudbees.jenkins.support.api.SupportProvider in project support-core-plugin by jenkinsci.
the class SupportPlugin method appendManifestHeader.
private static void appendManifestHeader(StringBuilder manifest) {
SupportPlugin plugin = SupportPlugin.getInstance();
SupportProvider supportProvider = plugin == null ? null : plugin.getSupportProvider();
String bundleName = (supportProvider == null ? "Support" : supportProvider.getDisplayName()) + " Bundle Manifest";
manifest.append(bundleName).append('\n').append(StringUtils.repeat("=", bundleName.length())).append("\n\n");
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ");
f.setTimeZone(TimeZone.getTimeZone("UTC"));
manifest.append("Generated on ").append(f.format(new Date())).append("\n\n");
}
use of com.cloudbees.jenkins.support.api.SupportProvider in project support-core-plugin by jenkinsci.
the class BundleFileName method getSupportProviderName.
/**
* Returns the prefix of the bundle name.
*
* @return the prefix of the bundle name.
*/
private static String getSupportProviderName() {
// default bundle filename
String filename = "support";
final SupportPlugin instance = SupportPlugin.getInstance();
if (instance != null) {
SupportProvider supportProvider = instance.getSupportProvider();
if (supportProvider != null) {
// let the provider name it
filename = supportProvider.getName();
}
}
return filename;
}
use of com.cloudbees.jenkins.support.api.SupportProvider in project support-core-plugin by jenkinsci.
the class SupportPlugin method writeBundle.
public static void writeBundle(OutputStream outputStream, final List<Component> components) throws IOException {
// TODO why is this not SupportPlugin.logger?
Logger logger = Logger.getLogger(SupportPlugin.class.getName());
final java.util.Queue<Content> toProcess = new ConcurrentLinkedQueue<Content>();
final Set<String> names = new TreeSet<String>();
Container container = new Container() {
@Override
public void add(@CheckForNull Content content) {
if (content != null) {
names.add(content.getName());
toProcess.add(content);
}
}
};
StringBuilder manifest = new StringBuilder();
SupportPlugin plugin = SupportPlugin.getInstance();
SupportProvider supportProvider = plugin == null ? null : plugin.getSupportProvider();
String bundleName = (supportProvider == null ? "Support" : supportProvider.getDisplayName()) + " Bundle Manifest";
manifest.append(bundleName).append('\n');
manifest.append(StringUtils.repeat("=", bundleName.length())).append('\n');
manifest.append("\n");
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ");
f.setTimeZone(TimeZone.getTimeZone("UTC"));
manifest.append("Generated on ").append(f.format(new Date())).append("\n");
manifest.append("\n");
manifest.append("Requested components:\n\n");
StringWriter errors = new StringWriter();
PrintWriter errorWriter = new PrintWriter(errors);
for (Component c : components) {
try {
manifest.append(" * ").append(c.getDisplayName()).append("\n\n");
names.clear();
c.addContents(container);
for (String name : names) {
manifest.append(" - `").append(name).append("`\n\n");
}
} catch (Throwable e) {
String cDisplayName = null;
try {
cDisplayName = c.getDisplayName();
} catch (Throwable e1) {
// be very defensive
cDisplayName = c.getClass().getName();
}
LogRecord logRecord = new LogRecord(Level.WARNING, "Could not get content from ''{0}'' for support bundle");
logRecord.setThrown(e);
logRecord.setParameters(new Object[] { cDisplayName });
logger.log(logRecord);
errorWriter.println(MessageFormat.format("Could not get content from ''{0}'' for support bundle", cDisplayName));
errorWriter.println("-----------------------------------------------------------------------");
errorWriter.println();
SupportLogFormatter.printStackTrace(e, errorWriter);
errorWriter.println();
}
}
toProcess.add(new StringContent("manifest.md", manifest.toString()));
try {
ZipOutputStream zip = new ZipOutputStream(outputStream);
try {
BufferedOutputStream bos = new BufferedOutputStream(zip, 16384) {
@Override
public void close() throws IOException {
// don't let any of the contents accidentally close the zip stream
super.flush();
}
};
while (!toProcess.isEmpty()) {
Content c = toProcess.poll();
if (c == null) {
continue;
}
final String name = c.getName();
try {
ZipEntry entry = new ZipEntry(name);
entry.setTime(c.getTime());
zip.putNextEntry(entry);
c.writeTo(bos);
} catch (Throwable e) {
LogRecord logRecord = new LogRecord(Level.WARNING, "Could not attach ''{0}'' to support bundle");
logRecord.setThrown(e);
logRecord.setParameters(new Object[] { name });
logger.log(logRecord);
errorWriter.println(MessageFormat.format("Could not attach ''{0}'' to support bundle", name));
errorWriter.println("-----------------------------------------------------------------------");
errorWriter.println();
SupportLogFormatter.printStackTrace(e, errorWriter);
errorWriter.println();
} finally {
bos.flush();
}
zip.flush();
}
errorWriter.close();
String errorContent = errors.toString();
if (!StringUtils.isBlank(errorContent)) {
try {
zip.putNextEntry(new ZipEntry("manifest/errors.txt"));
zip.write(errorContent.getBytes("utf-8"));
} catch (IOException e) {
// ignore
}
zip.flush();
}
} finally {
zip.close();
}
} finally {
outputStream.flush();
}
}
Aggregations