Skip to content

Commit

Permalink
display routes for openshift clusters (#610)
Browse files Browse the repository at this point in the history
Signed-off-by: Andre Dietisheim <[email protected]>
  • Loading branch information
adietish committed Jun 6, 2023
1 parent 1b66ac3 commit 51095e7
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.Deployme
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ImageStreamsOperator
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ProjectsOperator
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ReplicationControllersOperator
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.RoutesOperator
import io.fabric8.kubernetes.api.model.HasMetadata
import io.fabric8.kubernetes.client.KubernetesClient
import io.fabric8.openshift.client.OpenShiftClient
Expand All @@ -58,6 +59,7 @@ object OperatorFactory {
BuildsOperator.KIND to ::BuildsOperator,
BuildConfigsOperator.KIND to ::BuildConfigsOperator,
ReplicationControllersOperator.KIND to ::ReplicationControllersOperator,
RoutesOperator.KIND to ::RoutesOperator,
ServicesOperator.KIND to ::ServicesOperator,
EndpointsOperator.KIND to ::EndpointsOperator,
PersistentVolumesOperator.KIND to ::PersistentVolumesOperator,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*******************************************************************************
* Copyright (c) 2023 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v2.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package com.redhat.devtools.intellij.kubernetes.model.resource.openshift

import com.redhat.devtools.intellij.kubernetes.model.client.ClientAdapter
import com.redhat.devtools.intellij.kubernetes.model.resource.NamespacedOperation
import com.redhat.devtools.intellij.kubernetes.model.resource.NamespacedResourceOperator
import com.redhat.devtools.intellij.kubernetes.model.resource.ResourceKind
import io.fabric8.openshift.api.model.Route
import io.fabric8.openshift.client.OpenShiftClient

class RoutesOperator(client: ClientAdapter<out OpenShiftClient>)
: NamespacedResourceOperator<Route, OpenShiftClient>(client.get()) {

companion object {
val KIND = ResourceKind.create(Route::class.java)
}

override val kind = KIND

override fun getOperation(): NamespacedOperation<Route> {
return client.routes()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import io.fabric8.openshift.api.model.Build
import io.fabric8.openshift.api.model.BuildConfig
import io.fabric8.openshift.api.model.DeploymentConfig
import io.fabric8.openshift.api.model.ImageStream
import io.fabric8.openshift.api.model.Route
import javax.swing.Icon

object OpenShiftDescriptors {
Expand All @@ -48,7 +49,8 @@ object OpenShiftDescriptors {
is DeploymentConfig,
is ReplicationController,
is BuildConfig,
is Build -> ResourceDescriptor(element as HasMetadata, childrenKind, parent, model, project)
is Build,
is Route -> ResourceDescriptor(element as HasMetadata, childrenKind, parent, model, project)
else -> null
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.Deployme
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ImageStreamsOperator
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ProjectsOperator
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.ReplicationControllersOperator
import com.redhat.devtools.intellij.kubernetes.model.resource.openshift.RoutesOperator
import com.redhat.devtools.intellij.kubernetes.model.resourceName
import com.redhat.devtools.intellij.kubernetes.tree.KubernetesStructure.Folders.NETWORK
import com.redhat.devtools.intellij.kubernetes.tree.KubernetesStructure.Folders.WORKLOADS
import com.redhat.devtools.intellij.kubernetes.tree.TreeStructure.Folder
import io.fabric8.kubernetes.api.model.HasMetadata
Expand All @@ -37,11 +39,13 @@ class OpenShiftStructure(model: IResourceModel): AbstractTreeStructureContributi
val IMAGESTREAMS = Folder("ImageStreams", kind = ImageStreamsOperator.KIND)
val DEPLOYMENTCONFIGS = Folder("DeploymentConfigs", kind = DeploymentConfigsOperator.KIND)
val BUILDCONFIGS = Folder("BuildConfigs", kind = BuildConfigsOperator.KIND)
val ROUTES = Folder("Routes", kind = RoutesOperator.KIND)
}

override val elementsTree: List<ElementNode<*>> = listOf(
*createProjectsElements(),
*createWorkloadElements()
*createWorkloadElements(),
*createNetworkElements()
)

private fun createProjectsElements(): Array<ElementNode<*>> {
Expand Down Expand Up @@ -134,6 +138,29 @@ class OpenShiftStructure(model: IResourceModel): AbstractTreeStructureContributi
)
}

private fun createNetworkElements(): Array<ElementNode<*>> {
return arrayOf(
element<Any> {
applicableIf { it == NETWORK }
children {
listOf<Any>(
ROUTES
)
}
},
element<Any> {
applicableIf { it == ROUTES }
childrenKind { RoutesOperator.KIND }
children {
model.resources(RoutesOperator.KIND)
.inCurrentNamespace()
.list()
.sortedBy(resourceName)
}
}
)
}

override fun descriptorFactory(): (Any, ResourceKind<out HasMetadata>?, NodeDescriptor<*>?, IResourceModel, com.intellij.openapi.project.Project) -> NodeDescriptor<*>? {
return OpenShiftDescriptors::createDescriptor
}
Expand Down

0 comments on commit 51095e7

Please sign in to comment.