Skip to content

Commit 51095e7

Browse files
committed
display routes for openshift clusters (#610)
Signed-off-by: Andre Dietisheim <[email protected]>
1 parent 1b66ac3 commit 51095e7

File tree

4 files changed

+65
-2
lines changed

4 files changed

+65
-2
lines changed

src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/resource/OperatorFactory.kt

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.Deployme
3535
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ImageStreamsOperator
3636
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ProjectsOperator
3737
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ReplicationControllersOperator
38+
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.RoutesOperator
3839
import io.fabric8.kubernetes.api.model.HasMetadata
3940
import io.fabric8.kubernetes.client.KubernetesClient
4041
import io.fabric8.openshift.client.OpenShiftClient
@@ -58,6 +59,7 @@ object OperatorFactory {
5859
BuildsOperator.KIND to ::BuildsOperator,
5960
BuildConfigsOperator.KIND to ::BuildConfigsOperator,
6061
ReplicationControllersOperator.KIND to ::ReplicationControllersOperator,
62+
RoutesOperator.KIND to ::RoutesOperator,
6163
ServicesOperator.KIND to ::ServicesOperator,
6264
EndpointsOperator.KIND to ::EndpointsOperator,
6365
PersistentVolumesOperator.KIND to ::PersistentVolumesOperator,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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 com.redhat.devtools.intellij.kubernetes.model.resource.openshift
12+
13+
import com.redhat.devtools.intellij.kubernetes.model.client.ClientAdapter
14+
import com.redhat.devtools.intellij.kubernetes.model.resource.NamespacedOperation
15+
import com.redhat.devtools.intellij.kubernetes.model.resource.NamespacedResourceOperator
16+
import com.redhat.devtools.intellij.kubernetes.model.resource.ResourceKind
17+
import io.fabric8.openshift.api.model.Route
18+
import io.fabric8.openshift.client.OpenShiftClient
19+
20+
class RoutesOperator(client: ClientAdapter<out OpenShiftClient>)
21+
: NamespacedResourceOperator<Route, OpenShiftClient>(client.get()) {
22+
23+
companion object {
24+
val KIND = ResourceKind.create(Route::class.java)
25+
}
26+
27+
override val kind = KIND
28+
29+
override fun getOperation(): NamespacedOperation<Route> {
30+
return client.routes()
31+
}
32+
}

src/main/kotlin/com/redhat/devtools/intellij/kubernetes/tree/OpenShiftDescriptors.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import io.fabric8.openshift.api.model.Build
2727
import io.fabric8.openshift.api.model.BuildConfig
2828
import io.fabric8.openshift.api.model.DeploymentConfig
2929
import io.fabric8.openshift.api.model.ImageStream
30+
import io.fabric8.openshift.api.model.Route
3031
import javax.swing.Icon
3132

3233
object OpenShiftDescriptors {
@@ -48,7 +49,8 @@ object OpenShiftDescriptors {
4849
is DeploymentConfig,
4950
is ReplicationController,
5051
is BuildConfig,
51-
is Build -> ResourceDescriptor(element as HasMetadata, childrenKind, parent, model, project)
52+
is Build,
53+
is Route -> ResourceDescriptor(element as HasMetadata, childrenKind, parent, model, project)
5254
else -> null
5355
}
5456
}

src/main/kotlin/com/redhat/devtools/intellij/kubernetes/tree/OpenShiftStructure.kt

+28-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.Deployme
2222
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ImageStreamsOperator
2323
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ProjectsOperator
2424
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ReplicationControllersOperator
25+
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.RoutesOperator
2526
import com.redhat.devtools.intellij.kubernetes.model.resourceName
27+
import com.redhat.devtools.intellij.kubernetes.tree.KubernetesStructure.Folders.NETWORK
2628
import com.redhat.devtools.intellij.kubernetes.tree.KubernetesStructure.Folders.WORKLOADS
2729
import com.redhat.devtools.intellij.kubernetes.tree.TreeStructure.Folder
2830
import io.fabric8.kubernetes.api.model.HasMetadata
@@ -37,11 +39,13 @@ class OpenShiftStructure(model: IResourceModel): AbstractTreeStructureContributi
3739
val IMAGESTREAMS = Folder("ImageStreams", kind = ImageStreamsOperator.KIND)
3840
val DEPLOYMENTCONFIGS = Folder("DeploymentConfigs", kind = DeploymentConfigsOperator.KIND)
3941
val BUILDCONFIGS = Folder("BuildConfigs", kind = BuildConfigsOperator.KIND)
42+
val ROUTES = Folder("Routes", kind = RoutesOperator.KIND)
4043
}
4144

4245
override val elementsTree: List<ElementNode<*>> = listOf(
4346
*createProjectsElements(),
44-
*createWorkloadElements()
47+
*createWorkloadElements(),
48+
*createNetworkElements()
4549
)
4650

4751
private fun createProjectsElements(): Array<ElementNode<*>> {
@@ -134,6 +138,29 @@ class OpenShiftStructure(model: IResourceModel): AbstractTreeStructureContributi
134138
)
135139
}
136140

141+
private fun createNetworkElements(): Array<ElementNode<*>> {
142+
return arrayOf(
143+
element<Any> {
144+
applicableIf { it == NETWORK }
145+
children {
146+
listOf<Any>(
147+
ROUTES
148+
)
149+
}
150+
},
151+
element<Any> {
152+
applicableIf { it == ROUTES }
153+
childrenKind { RoutesOperator.KIND }
154+
children {
155+
model.resources(RoutesOperator.KIND)
156+
.inCurrentNamespace()
157+
.list()
158+
.sortedBy(resourceName)
159+
}
160+
}
161+
)
162+
}
163+
137164
override fun descriptorFactory(): (Any, ResourceKind<out HasMetadata>?, NodeDescriptor<*>?, IResourceModel, com.intellij.openapi.project.Project) -> NodeDescriptor<*>? {
138165
return OpenShiftDescriptors::createDescriptor
139166
}

0 commit comments

Comments
 (0)