use of com.redhat.devtools.intellij.tektoncd.tkn.Tkn in project intellij-tekton by redhat-developer.
the class DeleteAction method actionPerformed.
@Override
public void actionPerformed(AnActionEvent anActionEvent, TreePath[] path, Object[] selected, Tkn tkncli) {
ActionMessage telemetry = TelemetryService.instance().action(NAME_PREFIX_CRUD + "delete resource");
ParentableNode[] elements = Arrays.stream(selected).map(item -> getElement(item)).toArray(ParentableNode[]::new);
ExecHelper.submit(() -> {
String deleteText = getDeleteText(tkncli, elements);
int resultDialog = UIHelper.executeInUI(() -> {
DeleteDialog delDialog = new DeleteDialog(null, getTitle(elements), deleteText, getDeleteChkText(elements));
delDialog.show();
if (delDialog.isOK()) {
return delDialog.hasToDeleteRelatedResources() ? OK_DELETE_RESOURCES_CODE : OK_DELETE_CODE;
}
return CANCEL_CODE;
});
if (resultDialog != CANCEL_CODE) {
String namespace = elements[0].getNamespace();
boolean deleteRelatedResources = resultDialog == OK_DELETE_RESOURCES_CODE;
Map<Class, List<ParentableNode>> resourcesByClass = TreeHelper.getResourcesByClass(elements);
for (Class type : resourcesByClass.keySet()) {
try {
deleteResources(type, resourcesByClass, namespace, deleteRelatedResources, tkncli);
((TektonTreeStructure) getTree(anActionEvent).getClientProperty(Constants.STRUCTURE_PROPERTY)).fireModified(resourcesByClass.get(type).get(0).getParent());
telemetry.property(TelemetryService.PROP_RESOURCE_KIND, type.getSimpleName()).property(TelemetryService.PROP_RESOURCE_RELATED, String.valueOf(deleteRelatedResources)).success().send();
} catch (IOException e) {
telemetry.error(anonymizeResource(null, namespace, e.getMessage())).send();
UIHelper.executeInUI(() -> Messages.showErrorDialog("Error: " + e.getLocalizedMessage(), "Error"));
}
}
}
});
}
use of com.redhat.devtools.intellij.tektoncd.tkn.Tkn in project intellij-tekton by redhat-developer.
the class StartWizard method getOptionsPanel.
private JPanel getOptionsPanel(List<String> optionsToDisplay, ActionToRunModel model, ParentableNode element) {
JPanel innerOptionsPanel = new JPanel(new GridBagLayout());
innerOptionsPanel.setBackground(backgroundTheme);
innerOptionsPanel.setBorder(MARGIN_10);
int row = 0;
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.anchor = GridBagConstraints.WEST;
// set prefix for runs
if (optionsToDisplay.contains(PREFIX_NAME_RUN)) {
JLabel lblRunPrefixName = new JLabel("Prefix for the *Run name: ");
lblRunPrefixName.setFont(TIMES_PLAIN_14);
JLabel lblRunPrefixName_Help = new JLabel();
lblRunPrefixName_Help.setIcon(AllIcons.General.Information);
lblRunPrefixName_Help.setToolTipText("Specify a prefix for the *Run name (must be lowercase alphanumeric characters)");
txtRunPrefixName = new JTextField();
txtRunPrefixName.setPreferredSize(ROW_DIMENSION);
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = row;
innerOptionsPanel.add(lblRunPrefixName, gridBagConstraints);
gridBagConstraints.gridx = 1;
innerOptionsPanel.add(txtRunPrefixName, gridBagConstraints);
gridBagConstraints.gridx = 2;
innerOptionsPanel.add(lblRunPrefixName_Help, gridBagConstraints);
row++;
}
// import data from *run
if (optionsToDisplay.contains(IMPORT_DATA_FROM_RUN)) {
JCheckBox chkImportRunData = new JCheckBox("Import data from run");
chkImportRunData.setBackground(backgroundTheme);
JLabel chkImportRunData_Help = new JLabel();
chkImportRunData_Help.setIcon(AllIcons.General.Information);
chkImportRunData_Help.setToolTipText("Fill all wizard inputs with the values taken from an old *run");
JComboBox cmbPickRunToImportData = new ComboBox();
cmbPickRunToImportData.setEnabled(false);
cmbPickRunToImportData.setPreferredSize(ROW_DIMENSION);
chkImportRunData.addItemListener(itemEvent -> {
if (chkImportRunData.isSelected()) {
cmbPickRunToImportData.setEnabled(true);
} else {
cmbPickRunToImportData.setEnabled(false);
}
});
cmbPickRunToImportData.addItem("Please choose");
((StartResourceModel) model).getRuns().forEach(run -> cmbPickRunToImportData.addItem(run.getMetadata().getName()));
cmbPickRunToImportData.addItemListener(itemEvent -> {
// when combo box value change
if (itemEvent.getStateChange() == 1) {
if (itemEvent.getItem().toString().equals("Please choose"))
return;
Tkn tkncli = element.getRoot().getTkn();
String configuration = "";
String kind = model.getKind();
try {
if (kind.equalsIgnoreCase(KIND_PIPELINE)) {
configuration = tkncli.getPipelineRunYAML(element.getNamespace(), itemEvent.getItem().toString());
} else if (kind.equalsIgnoreCase(KIND_TASK) || kind.equalsIgnoreCase(KIND_CLUSTERTASK)) {
configuration = tkncli.getTaskRunYAML(element.getNamespace(), itemEvent.getItem().toString());
}
} catch (IOException e) {
e.printStackTrace();
}
if (!configuration.isEmpty()) {
((StartResourceModel) model).adaptsToRun(configuration);
refreshSteps();
updatePreview(model);
}
}
});
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = row;
innerOptionsPanel.add(chkImportRunData, gridBagConstraints);
gridBagConstraints.gridx = 1;
innerOptionsPanel.add(cmbPickRunToImportData, gridBagConstraints);
gridBagConstraints.gridx = 2;
innerOptionsPanel.add(chkImportRunData_Help, gridBagConstraints);
row++;
}
return innerOptionsPanel;
}
use of com.redhat.devtools.intellij.tektoncd.tkn.Tkn in project intellij-tekton by redhat-developer.
the class DeployHelper method existsResource.
public static boolean existsResource(Project project, String name, CustomResourceDefinitionContext crdContext) throws IOException {
Tkn tknCli = TreeHelper.getTkn(project);
if (tknCli == null) {
return false;
}
GenericKubernetesResource resource = tknCli.getCustomResource(tknCli.getNamespace(), name, crdContext);
return resource != null;
}
use of com.redhat.devtools.intellij.tektoncd.tkn.Tkn in project intellij-tekton by redhat-developer.
the class DeployHelper method saveOnCluster.
public static boolean saveOnCluster(Project project, String namespace, String yaml, String confirmationMessage, boolean updateLabels, boolean skipConfirmatioDialog) throws IOException {
ActionMessage telemetry = TelemetryService.instance().action(NAME_PREFIX_CRUD + "save to cluster");
GenericResource resource = getResource(yaml, telemetry);
Tkn tknCli = TreeHelper.getTkn(project);
if (tknCli == null) {
telemetry.error("tkn not found").send();
return false;
}
if (namespace.isEmpty()) {
namespace = tknCli.getNamespace();
}
if (confirmationMessage.isEmpty()) {
confirmationMessage = getDefaultConfirmationMessage(resource.getName(), resource.getKind());
}
if (!skipConfirmatioDialog && !isSaveConfirmed(confirmationMessage)) {
telemetry.result(VALUE_ABORTED).send();
return false;
}
try {
String resourceNamespace = CRDHelper.isClusterScopedResource(resource.getKind()) ? "" : namespace;
Pair<String, Boolean> saveResult = doSave(resourceNamespace, yaml, updateLabels, resource, tknCli);
telemetry.property(PROP_RESOURCE_CRUD, (saveResult.getSecond() ? VALUE_RESOURCE_CRUD_CREATE : VALUE_RESOURCE_CRUD_UPDATE)).send();
} catch (KubernetesClientException e) {
String errorMsg = createErrorMessage(resource, e);
telemetry.error(anonymizeResource(resource.getName(), namespace, errorMsg)).send();
logger.warn(errorMsg, e);
// give a visual notification to user if an error occurs during saving
throw new IOException(errorMsg, e);
}
return true;
}
use of com.redhat.devtools.intellij.tektoncd.tkn.Tkn in project intellij-tekton by redhat-developer.
the class TreeHelper method openTektonConfigurationInEditor.
private static void openTektonConfigurationInEditor(ParentableNode element) {
ExecHelper.submit(() -> {
Tkn tkncli = element.getRoot().getTkn();
String namespace = "tekton-pipelines";
String name = element.getName();
ConfigMap configMap = tkncli.getConfigMap(namespace, name);
UIHelper.executeInUI(() -> {
if (configMap == null) {
Messages.showErrorDialog("No configuration file " + name + " found in namespace " + namespace, "Configuration not Found");
return;
}
try {
String yaml = YAMLBuilder.writeValueAsString(configMap);
VirtualFileHelper.openVirtualFileInEditor(element.getRoot().getProject(), name + ".yaml", yaml, true, true);
} catch (IOException e) {
Notification notification = new Notification(NOTIFICATION_ID, "Error", name + " file in namespace " + namespace + " was not found\n" + e.getLocalizedMessage(), NotificationType.ERROR);
Notifications.Bus.notify(notification);
logger.warn("Error: " + e.getLocalizedMessage(), e);
}
});
});
}
Aggregations