Skip to content
This repository was archived by the owner on Apr 23, 2025. It is now read-only.

Commit 0f82cdb

Browse files
committed
feat: add/remove/edit helm repo (#673)
Signed-off-by: Andre Dietisheim <[email protected]>
1 parent 8c4b059 commit 0f82cdb

File tree

20 files changed

+563
-111
lines changed

20 files changed

+563
-111
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ dependencies {
140140
'io.fabric8:openshift-client:6.12.0',
141141
'org.apache.commons:commons-compress:1.26.1',
142142
'org.apache.commons:commons-exec:1.4.0',
143-
'com.redhat.devtools.intellij:intellij-common:1.9.5',
143+
'com.redhat.devtools.intellij:intellij-common:1.9.6-SNAPSHOT',
144144
'io.jsonwebtoken:jjwt-impl:0.12.5',
145145
'io.jsonwebtoken:jjwt-jackson:0.12.5',
146146
'org.keycloak:keycloak-installed-adapter:24.0.2',
@@ -150,7 +150,7 @@ dependencies {
150150
'org.junit.platform:junit-platform-launcher:1.10.2',
151151
'org.mockito:mockito-core:5.11.0',
152152
'org.easytesting:fest-assert:1.4',
153-
'com.redhat.devtools.intellij:intellij-common:1.9.5:test',
153+
'com.redhat.devtools.intellij:intellij-common:1.9.6-SNAPSHOT:test',
154154
'org.awaitility:awaitility:4.2.1',
155155
'org.mock-server:mockserver-client-java:5.15.0',
156156
'org.mock-server:mockserver-netty:5.15.0',

src/it/java/org/jboss/tools/intellij/openshift/test/ui/annotations/UITest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
******************************************************************************/
1111
package org.jboss.tools.intellij.openshift.test.ui.annotations;
1212

13-
import java.lang.annotation.RetentionPolicy;
14-
import java.lang.annotation.Target;
13+
import org.junit.jupiter.api.Tag;
14+
1515
import java.lang.annotation.ElementType;
1616
import java.lang.annotation.Retention;
17-
18-
import org.junit.jupiter.api.Tag;
17+
import java.lang.annotation.RetentionPolicy;
18+
import java.lang.annotation.Target;
1919

2020
/**
2121
* @author Ondrej Dockal

src/it/java/org/jboss/tools/intellij/openshift/test/ui/common/ImportProjectFromVersionControlFixture.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
import com.intellij.remoterobot.fixtures.FixtureName;
1919
import com.intellij.remoterobot.fixtures.JTextFieldFixture;
2020
import org.jetbrains.annotations.NotNull;
21+
2122
import java.time.Duration;
23+
2224
import static com.intellij.remoterobot.search.locators.Locators.byXpath;
2325

2426
/**

src/it/java/org/jboss/tools/intellij/openshift/test/ui/common/ProjectTreeFixture.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
import com.intellij.remoterobot.fixtures.FixtureName;
1818
import com.intellij.remoterobot.fixtures.JTreeFixture;
1919
import org.jetbrains.annotations.NotNull;
20+
2021
import java.time.Duration;
22+
2123
import static com.intellij.remoterobot.search.locators.Locators.byXpath;
2224
import static com.intellij.remoterobot.utils.RepeatUtilsKt.waitFor;
2325

src/it/java/org/jboss/tools/intellij/openshift/test/ui/common/WelcomeDialogFixture.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
import com.intellij.remoterobot.data.RemoteComponent;
1515
import com.intellij.remoterobot.fixtures.ComponentFixture;
1616
import com.intellij.remoterobot.fixtures.ContainerFixture;
17-
import org.jetbrains.annotations.NotNull;
1817
import com.intellij.remoterobot.fixtures.DefaultXpath;
1918
import com.intellij.remoterobot.fixtures.FixtureName;
19+
import org.jetbrains.annotations.NotNull;
20+
2021
import java.time.Duration;
22+
2123
import static com.intellij.remoterobot.search.locators.Locators.byXpath;
2224

2325
/**

src/it/java/org/jboss/tools/intellij/openshift/test/ui/views/GettingStartedView.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@
1212

1313
import com.intellij.remoterobot.RemoteRobot;
1414
import com.intellij.remoterobot.data.RemoteComponent;
15-
import com.intellij.remoterobot.fixtures.*;
15+
import com.intellij.remoterobot.fixtures.ComponentFixture;
16+
import com.intellij.remoterobot.fixtures.ContainerFixture;
17+
import com.intellij.remoterobot.fixtures.DefaultXpath;
18+
import com.intellij.remoterobot.fixtures.FixtureName;
19+
import com.intellij.remoterobot.fixtures.JTreeFixture;
1620
import com.intellij.remoterobot.search.locators.Locator;
1721
import com.intellij.remoterobot.utils.Keyboard;
1822
import com.intellij.remoterobot.utils.WaitForConditionTimeoutException;

src/it/java/org/jboss/tools/intellij/openshift/utils/helm/Charts.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public static Chart get(String name, Helm helm) throws Exception {
3131
}
3232

3333
public static void addRepository(Pair<String, String> pair, Helm helm) throws IOException {
34-
helm.addRepo(pair.first, pair.second);
34+
helm.addRepo(pair.first, pair.second, null);
3535
}
3636

3737
}

src/it/java/org/jboss/tools/intellij/openshift/utils/helm/HelmCliRepoTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public void testListRepos_should_list_repo_that_was_added() throws IOException {
2020
// given openshift repo was added to helm repos
2121
String name = "openshift";
2222
String url = "https://charts.openshift.io/";
23-
helm.addRepo(name, url);
23+
helm.addRepo(name, url, null);
2424
// when
2525
List<HelmRepository> repositories = helm.listRepos();
2626
// then
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2023 Red Hat, Inc.
3+
* Distributed under license by Red Hat, Inc. All rights reserved.
4+
* This program is made available under the terms of the
5+
* Eclipse Public License v2.0 which accompanies this distribution,
6+
* and is available at http://www.eclipse.org/legal/epl-v20.html
7+
*
8+
* Contributors:
9+
* Red Hat, Inc. - initial API and implementation
10+
******************************************************************************/
11+
package org.jboss.tools.intellij.openshift.actions.helm;
12+
13+
import com.intellij.openapi.actionSystem.AnActionEvent;
14+
import com.intellij.openapi.project.Project;
15+
import com.redhat.devtools.intellij.common.utils.ApplicationUtils;
16+
import com.redhat.devtools.intellij.common.utils.SwingUtils;
17+
import java.awt.Point;
18+
import java.io.IOException;
19+
import java.util.Collection;
20+
import java.util.Collections;
21+
import java.util.concurrent.CompletableFuture;
22+
import org.jboss.tools.intellij.openshift.actions.HelmAction;
23+
import org.jboss.tools.intellij.openshift.telemetry.TelemetryService;
24+
import org.jboss.tools.intellij.openshift.tree.application.HelmRepositoriesNode;
25+
import org.jboss.tools.intellij.openshift.ui.helm.AddHelmRepoDialog;
26+
import org.jboss.tools.intellij.openshift.utils.helm.Helm;
27+
import org.jboss.tools.intellij.openshift.utils.helm.HelmRepository;
28+
import org.jetbrains.annotations.NotNull;
29+
import org.slf4j.Logger;
30+
import org.slf4j.LoggerFactory;
31+
32+
33+
public class AddHelmRepoAction extends HelmAction {
34+
35+
private static final Logger LOGGER = LoggerFactory.getLogger(AddHelmRepoAction.class);
36+
37+
@Override
38+
public void actionPerformedOnSelectedObject(AnActionEvent anActionEvent, Object selected, @NotNull Helm helm) {
39+
Project project = getEventProject(anActionEvent);
40+
if (!(selected instanceof HelmRepositoriesNode repositoriesNode)) {
41+
return;
42+
}
43+
openAddHelmRepoDialog(repositoriesNode, helm, project, SwingUtils.getMouseLocation(anActionEvent));
44+
}
45+
46+
private void openAddHelmRepoDialog(HelmRepositoriesNode repositoriesNode, Helm helm, Project project, Point location) {
47+
CompletableFuture.supplyAsync(
48+
() -> listRepositories(helm),
49+
ApplicationUtils.PLATFORM_EXECUTOR
50+
).thenAcceptAsync(
51+
repositories -> {
52+
AddHelmRepoDialog dialog = new AddHelmRepoDialog(repositories, repositoriesNode, helm, project, location);
53+
sendTelemetryResults(TelemetryService.TelemetryResult.SUCCESS);
54+
dialog.show();
55+
},
56+
ApplicationUtils.UI_EXECUTOR
57+
);
58+
}
59+
60+
private Collection<HelmRepository> listRepositories(Helm helm) {
61+
try {
62+
return helm.listRepos();
63+
} catch (IOException e) {
64+
LOGGER.warn("Could not list helm repositories", e);
65+
return Collections.emptyList();
66+
}
67+
}
68+
69+
@Override
70+
public String getTelemetryActionName() {
71+
return "helm-add repo";
72+
}
73+
74+
@Override
75+
public boolean isVisible(Object selected) {
76+
return selected instanceof HelmRepositoriesNode;
77+
}
78+
}

src/main/java/org/jboss/tools/intellij/openshift/actions/helm/OpenHelmChartsAction.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
import com.intellij.openapi.actionSystem.AnActionEvent;
1414
import com.intellij.openapi.project.Project;
1515
import org.jboss.tools.intellij.openshift.actions.HelmAction;
16+
import org.jboss.tools.intellij.openshift.actions.NodeUtils;
1617
import org.jboss.tools.intellij.openshift.telemetry.TelemetryService;
1718
import org.jboss.tools.intellij.openshift.tree.application.ApplicationsRootNode;
1819
import org.jboss.tools.intellij.openshift.tree.application.NamespaceNode;
19-
import org.jboss.tools.intellij.openshift.tree.application.ParentableNode;
2020
import org.jboss.tools.intellij.openshift.ui.helm.ChartsDialog;
2121
import org.jboss.tools.intellij.openshift.utils.helm.Helm;
2222
import org.jboss.tools.intellij.openshift.utils.odo.Odo;
@@ -27,11 +27,10 @@ public class OpenHelmChartsAction extends HelmAction {
2727
@Override
2828
public void actionPerformedOnSelectedObject(AnActionEvent anActionEvent, Object selected, @NotNull Helm helm) {
2929
Project project = getEventProject(anActionEvent);
30-
ParentableNode<?> parentableNode = ((ParentableNode<?>) selected);
31-
if (parentableNode == null) {
30+
ApplicationsRootNode rootNode = NodeUtils.getRoot(selected);
31+
if (rootNode == null) {
3232
return;
3333
}
34-
ApplicationsRootNode rootNode = parentableNode.getRoot();
3534
Odo odo = rootNode.getOdo().getNow(null);
3635
if (odo == null) {
3736
return;

0 commit comments

Comments
 (0)