Search in sources :

Example 11 with Tkn

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"));
                }
            }
        }
    });
}
Also used : ClusterTaskNode(com.redhat.devtools.intellij.tektoncd.tree.ClusterTaskNode) Arrays(java.util.Arrays) RefUsage(com.redhat.devtools.intellij.tektoncd.ui.toolwindow.findusage.RefUsage) TreeHelper(com.redhat.devtools.intellij.tektoncd.utils.TreeHelper) KIND_TASK(com.redhat.devtools.intellij.tektoncd.Constants.KIND_TASK) ConditionNode(com.redhat.devtools.intellij.tektoncd.tree.ConditionNode) Tkn(com.redhat.devtools.intellij.tektoncd.tkn.Tkn) PipelineRunNode(com.redhat.devtools.intellij.tektoncd.tree.PipelineRunNode) TaskNode(com.redhat.devtools.intellij.tektoncd.tree.TaskNode) Constants(com.redhat.devtools.intellij.tektoncd.Constants) TriggerTemplateNode(com.redhat.devtools.intellij.tektoncd.tree.TriggerTemplateNode) ExecHelper(com.redhat.devtools.intellij.common.utils.ExecHelper) Map(java.util.Map) TelemetryService(com.redhat.devtools.intellij.tektoncd.telemetry.TelemetryService) Messages(com.intellij.openapi.ui.Messages) UIHelper(com.redhat.devtools.intellij.common.utils.UIHelper) ActionMessage(com.redhat.devtools.intellij.telemetry.core.service.TelemetryMessageBuilder.ActionMessage) TaskRunNode(com.redhat.devtools.intellij.tektoncd.tree.TaskRunNode) AnonymizeUtils.anonymizeResource(com.redhat.devtools.intellij.telemetry.core.util.AnonymizeUtils.anonymizeResource) KIND_CLUSTERTASK(com.redhat.devtools.intellij.tektoncd.Constants.KIND_CLUSTERTASK) TreePath(javax.swing.tree.TreePath) IOException(java.io.IOException) NAME_PREFIX_CRUD(com.redhat.devtools.intellij.tektoncd.telemetry.TelemetryService.NAME_PREFIX_CRUD) ParentableNode(com.redhat.devtools.intellij.tektoncd.tree.ParentableNode) DeleteDialog(com.redhat.devtools.intellij.tektoncd.ui.DeleteDialog) Collectors(java.util.stream.Collectors) TektonTreeStructure(com.redhat.devtools.intellij.tektoncd.tree.TektonTreeStructure) PipelineNode(com.redhat.devtools.intellij.tektoncd.tree.PipelineNode) List(java.util.List) ClusterTriggerBindingNode(com.redhat.devtools.intellij.tektoncd.tree.ClusterTriggerBindingNode) AnActionEvent(com.intellij.openapi.actionSystem.AnActionEvent) EventListenerNode(com.redhat.devtools.intellij.tektoncd.tree.EventListenerNode) ResourceNode(com.redhat.devtools.intellij.tektoncd.tree.ResourceNode) TriggerBindingNode(com.redhat.devtools.intellij.tektoncd.tree.TriggerBindingNode) TektonTreeStructure(com.redhat.devtools.intellij.tektoncd.tree.TektonTreeStructure) IOException(java.io.IOException) DeleteDialog(com.redhat.devtools.intellij.tektoncd.ui.DeleteDialog) ParentableNode(com.redhat.devtools.intellij.tektoncd.tree.ParentableNode) ActionMessage(com.redhat.devtools.intellij.telemetry.core.service.TelemetryMessageBuilder.ActionMessage) List(java.util.List)

Example 12 with Tkn

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;
}
Also used : JPanel(javax.swing.JPanel) GridBagConstraints(java.awt.GridBagConstraints) GridBagLayout(java.awt.GridBagLayout) JComboBox(javax.swing.JComboBox) JComboBox(javax.swing.JComboBox) ComboBox(com.intellij.openapi.ui.ComboBox) JLabel(javax.swing.JLabel) IOException(java.io.IOException) JTextField(javax.swing.JTextField) JCheckBox(javax.swing.JCheckBox) Tkn(com.redhat.devtools.intellij.tektoncd.tkn.Tkn) StartResourceModel(com.redhat.devtools.intellij.tektoncd.utils.model.actions.StartResourceModel)

Example 13 with Tkn

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;
}
Also used : Tkn(com.redhat.devtools.intellij.tektoncd.tkn.Tkn) GenericKubernetesResource(io.fabric8.kubernetes.api.model.GenericKubernetesResource)

Example 14 with Tkn

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;
}
Also used : Tkn(com.redhat.devtools.intellij.tektoncd.tkn.Tkn) GenericResource(com.redhat.devtools.intellij.common.model.GenericResource) ActionMessage(com.redhat.devtools.intellij.telemetry.core.service.TelemetryMessageBuilder.ActionMessage) IOException(java.io.IOException) KubernetesClientException(io.fabric8.kubernetes.client.KubernetesClientException)

Example 15 with Tkn

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);
            }
        });
    });
}
Also used : ConfigMap(io.fabric8.kubernetes.api.model.ConfigMap) Tkn(com.redhat.devtools.intellij.tektoncd.tkn.Tkn) IOException(java.io.IOException) Notification(com.intellij.notification.Notification)

Aggregations

Tkn (com.redhat.devtools.intellij.tektoncd.tkn.Tkn)25 IOException (java.io.IOException)21 ArrayList (java.util.ArrayList)13 LookupElementBuilder (com.intellij.codeInsight.lookup.LookupElementBuilder)3 Project (com.intellij.openapi.project.Project)3 TreeHelper (com.redhat.devtools.intellij.tektoncd.utils.TreeHelper)3 CompletionParameters (com.intellij.codeInsight.completion.CompletionParameters)2 CompletionResultSet (com.intellij.codeInsight.completion.CompletionResultSet)2 ProcessingContext (com.intellij.util.ProcessingContext)2 KIND_CLUSTERTASK (com.redhat.devtools.intellij.tektoncd.Constants.KIND_CLUSTERTASK)2 KIND_TASK (com.redhat.devtools.intellij.tektoncd.Constants.KIND_TASK)2 NAMESPACE (com.redhat.devtools.intellij.tektoncd.Constants.NAMESPACE)2 ClusterTaskNode (com.redhat.devtools.intellij.tektoncd.tree.ClusterTaskNode)2 ClusterTriggerBindingNode (com.redhat.devtools.intellij.tektoncd.tree.ClusterTriggerBindingNode)2 ConditionNode (com.redhat.devtools.intellij.tektoncd.tree.ConditionNode)2 EventListenerNode (com.redhat.devtools.intellij.tektoncd.tree.EventListenerNode)2 PipelineNode (com.redhat.devtools.intellij.tektoncd.tree.PipelineNode)2 PipelineRunNode (com.redhat.devtools.intellij.tektoncd.tree.PipelineRunNode)2 ResourceNode (com.redhat.devtools.intellij.tektoncd.tree.ResourceNode)2 TaskNode (com.redhat.devtools.intellij.tektoncd.tree.TaskNode)2