Giter VIP home page Giter VIP logo

intellij-openshift-connector's Introduction

OpenShift Toolkit

Build status Sonar Quality Gate Status JetBrains plugins JetBrains plugins Project Map

Gitter

Overview

A JetBrains IntelliJ plugin for interacting with Red Hat OpenShift and Kubernetes clusters. This extension is currently in Preview Mode and supports only Java and Node.js components. We will be supporting other languages in the future releases.

Running OpenShift Clusters

To run the instance of OpenShift cluster locally, developers can use the following:

The extension also supports OpenShift running on Azure, AWS, and any others supported environments.

New features

Debug is now supported when component is running on Podman

This new improvement enables you to debug your component when using Podman, similar to the debug on Cluster.

Added Change/Create namespace/project actions in tree

Along with the usage of namespace labels when dealing with kubernetes cluster, we added several actions to create or change current project/namespace.

Features

Install Helm Charts on the current cluster within the IDE

We're Happy to announce that we've implemented a new action that provides the capability to install a Helm chart into the current cluster.

Below is a small demo of the workflow: installing kuberos chart from the Helm stable repo (https://charts.helm.sh/stable)

There is no need to install anything prior to use Helm. By default, if there is no repository configured, the OpenShift Helm repository will be used (https://charts.openshift.io/).

For more information about using Helm on OpenShift, please see here

Share your Feedback !

We introduced a new toolbar action within the plugin that enables you to share your feedback with our team. Please feel free to provide your valuable feedback for the plugin workflow.

Red Hat Developer Sandbox login

Red Hat provides an online OpenShift environment called Developer Sandbox that makes it easy for developers to build, test and deploy cloud native applications and microservices.

In order to use Developer Sandbox, you must own a Red Hat SSO account (which can be linked to social accounts like GitHub,…​). Once logged in into Red Hat SSO, you will get an environment provisioned in Developer Sandbox but the first time you will try to log in into Developer Sandbox, your account needs to be verified (in order to prevent crypto miners and robots) thus you need to go through a verification phase where you will be asked to provide:

  • first your phone number and country code
  • then a verification code that you will receive on your smartphone.

So it is now possible to provision and log in to Developer Sandbox from the OpenShift Toolkit and connect it to the Developer Sandbox environment.

Open the OpenShift window (Window → OpenShift):

Right-click on the first node and select the Login in to cluster context menu:

In order to provision the Developer Sandbox environment, click on the Red Hat Developer Sandbox link: a browser window will open, and you will be required to log in to your Red Hat SSO account:

Login to your account (please note that if you don’t have a Red Hat account, you can create a new one). Once you’re logged in, you should see the following window:

Enter your country code (+XX) and phone number and click the Verify button:

You will be required to provide the verification code that you should have received on your phone:

Once your Developer Sandbox environment is provisioned; you will see the following window:

Click on the Ǹext button to log in to your Developer Sandbox environment:

Click on the DevSandbox button and log in with the same credentials: you will see the following window:

Click on the Display Token link and the click on the Finish button, you should be back to the Login wizard:

Please note that the URL and Token fields have been updated. Click the Finish button, the OpenShift view will be updated with the Developer Sandbox URL and if you expand it, you will see the current namespace available for you to start playing with:

You’re now ready to work against this environment for free !!!.

Operator based services

When developing cloud native applications on OpenShift, developer may need to launch services (databases, messaging system,…) that the application under development may need to connect to. The OpenShift Toolkit allowed to launch such services, but it was based on the service catalog which is not available anymore on OpenShift 4.

The new feature is based on operators which is the devops way of installing and managing software on Kubernetes clusters. So when you want to launch a service for your application, you will have to choose from the list of installed operators on your cluster and then select type of deployment you want.

In the following example, a single operator is installed on our cluster: the Strimzi operator for setting up Kafka clusters on Kubernetes.

For each operator, we can select the type of deployment we want to set up. For each type of deployment, specific parameters may be specified. In this example, we decided to set the replicas number to 4 for a Kafka cluster.

After you’ve entered the name of your service, it will appear in the OpenShift view:

Application Explorer focused on current namespace/project

The Application Explorer now display components and services from the current namespace/project. If you want to switch to a different namespace/project, switch to the Kubernetes view and choose the Use Project or Use Namespace menu:

Simplified create component wizard

When a new component is to be created, a wizard was displayed and the user has to enter several fields before the component could be created. This looks complex for users, so we decided that most of those fields can be automatically computed with default values and user can immediately push the Finish button:

Devfile registries management

The preferred way of developing components is now based on devfile, which is a YAML file that describe how to build the component and if required, launch other containers with other containers. When you create a component, you need to specify a devfile that describe your component. So either your component source contains its own devfile or you need to pick a devfile that is related to your component. In the second case, OpenShift Toolkit supports devfile registries that contains a set of different devfiles. There is a default registry (https://registry.devfile.io) but you may want to have your own registries. It is now possible to add and remove registries as you want.

The registries are displayed in the OpenShift Application Explorer under the Devfile registries node:

Please note that expanding the registry node will list all devfiles from that registry with a description:

Integration with the Kubernetes by Red Hat plugin

Connection from the plugin to the cluster is managed through the well known kubeconfig file. In previous versions of this plugin, it was possible to switch between contexts inside this file but the features were very limited. In order to offer a better user experience for Kubernetes developers, all kubeconfig related features have been moved out from this plugin and delegated to the Kubernetes by Red Hat plugin.

So the Kubernetes by Red Hat plugin is now a required dependency of this plugin, and you can access his features through the Kubernetes window:

Improved OpenShift Container Platform 4 compatibility

Although previous versions of the plugin were compatible with OCP 4, there were some small issues that have been fixes (ie paste login command in the Login wizard)

Telemetry data collection

The plugin collects anonymous usage data, if enabled, and sends it to Red Hat servers to help improve our products and services.

Starter projects

When you create a component from a devfile, if the selected devfile contains starter projects (sample projects that contain source code that can be used to bootstrap your component) and if the selected local module is empty, you can optionally select one of those starter projects whose content will be copied to your local module before the component is created.

Enhanced devfile editing experience

Devfile based components now have a local devfile added to the local module when the component is created. A devfile is a YAML file with a specific syntax. It is now possible for the end user to edit this file (in case specific settings needs to be updated or added). The YAML editor will now assist during edition of this file with syntax validation and code assist.

Devfile support

The plugin is now based on Odo, which brings support for Devfiles. A devfile is describing the way your component should be built, rebuilt, debugged. When creating a component, there is now two different choices:

  • Pick a devfile from a registry. The registry will contain devfiles specific to your component language, framework and variants (ex Java/Quarkus, Java/SpringBoot, Python/Django,...)
  • Your component has its own devfile and the plugin will automatically use it if it's there

For more information about devfiles, see the devfile docs

WARNING

Breaking Changes

Post 1.0.0 releases contains breaking changes mentioned below.

  • The Components created with previous versions(<=1.0.0) will be automatically migrated to use odo v3 workflow.

Please follow the migration guide to resolve any possible issues for older breaking changes.

In case of any queries, please use the Feedback & Question section.

Commands and features

OpenShift Toolkit supports a number of commands & actions for interacting with OpenShift/Kubernetes clusters; these are accessible via the context menu.

General Commands

  • Log in to cluster - Log in to your cluster and save login for subsequent use.
    • Credentials : Log in to the given cluster with the given credentials.
    • Token : Login using bearer token for authentication to the API server.
  • New Project/New Namespace - Create new project inside the OpenShift cluster / Create new namespace inside the Kubernetes cluster.
  • Change Project/Change Namespace - Select a new project inside the OpenShift cluster / Select a new namespace inside the Kubernetes cluster.
  • Open Console Dashboard - Opens the OpenShift webconsole URL.
  • Refresh- Refresh the tree with the latest resources from the cluster.
  • Getting Started - Open the Getting Started tour.
  • About - Provides the information about the tools used.

Actions available for a Cluster Project/Namespace

  • Change Project/Change Namespace - Select a new project inside the OpenShift cluster / Select a new namespace inside the Kubernetes cluster.
  • New Component - Create locally a new Component.
  • New Service - Perform Service Catalog operations when it is enabled in the cluster. The created service can then be linked to a component.
  • Delete - Delete an existing Project/Namespace.
  • Open Helm Charts - Open a dialog to install a Helm Chart inside the current project/namespace.

WARNING: Use the above delete action will perform the same delete action as in the cluster. That means all resources tied to that project/namespace will be also deleted (ie secrets, configMaps,...)

Actions available for a Component

Components can be in 5 stages:
  no local context - When the component is present into the cluster but not in local config.
  locally created  - When the component is in local config but NOT pushed/deployed into the cluster.
  dev              - When the component is pushed into the cluster in dev mode, that is every changes are synced and when terminating the command, the component will be deleted from the cluster.
  debug            - When the component is pushed into the cluster in debug mode, same as dev mode plus the ability to put breakpoints in the code and use the debugger.
  deploy           - When the component is deployed into the cluster.

Common Actions

  • Describe - Describe the given component in a terminal window.
  • Link Service - Link the component to an existing service in the cluster. That will create a binding from the component to the service.
  • Delete - Delete an existing component from the local config.

Actions for a locally created component

  • Start dev on Cluster - Push the local component in the cluster inside the project/namespace in dev mode.
  • Start dev on Podman - Push the local component in local Podman in dev mode.

Actions for a pushed component (Dev/Debug)

  • Stop dev on Cluster - Stop the dev mode and delete the component from the cluster.
  • Stop dev on Podman - Stop the dev mode and delete the component from Podman.
  • Debug - Connect a local debugger to the Component. See the wiki page for more details.
  • Show Log - Retrieve the log for the given Component.
  • Follow Log - Follow logs for the given Component.

Actions available for a URL in a Component

  • Open in Browser - Open the exposed URL in a browser. ** NOTE ** URLs are exposed only when the component is in dev mode or deployed in the cluster. The URL definitions are stored in the devfile file.

Actions available for a Service in a project/namespace

  • Delete - Delete the Service from the project/namespace.

Actions available for a binding in a component

  • Show binding information - Show the binding information a dialog.
  • Delete - Delete the binding from the component.

Actions available for a Helm Release in a project/namespace

  • Uninstall - Uninstall the Helm release from the project/namespace.

Icons Representation

Cluster tree
Cluster Resource Cluster Resource
Project Resource Project Resource
Component Resource Component Resource
Component Resource Helm Release Resource
Service Resource Service Resource
URL Resource URL Resource
Devfile registry tree
Registry Resource Registry Resource
Component Type Resource Component Type Resource
Starter Resource Starter Resource

Dependencies

CLI Tools

This extension uses the following CLI tool to interact with OpenShift cluster:

If odo tool is located in a directory from PATH environment variable it will be used automatically. The plugin will detect these dependencies and prompt the user to install if they are missing or have not supported version - choose Download & Install when you see a notification for the missing tool.

NOTE: This plugin is in Preview mode. The extension support for OpenShift is strictly experimental - assumptions may break, commands and behavior may change!

Release notes

See the change log.

Data and Telemetry

The OpenShift plugin collects anonymous usage data and sends it to Red Hat servers to help improve our products and services. Read our privacy statement to learn more. This extension respects the Red Hat Telemetry setting which you can learn more about at https://github.com/redhat-developer/intellij-redhat-telemetry#telemetry-reporting

Contributing

This is an open source project open to anyone. This project welcomes contributions and suggestions!

For information on getting started, refer to the CONTRIBUTING instructions.

Feedback & Questions

If you discover an issue please file a bug, and we will fix it as soon as possible.

License

EPL 2.0, See LICENSE for more information.

intellij-openshift-connector's People

Contributors

actions-user avatar adietish avatar alexkarezin avatar creydr avatar dependabot[bot] avatar fbricon avatar github-actions[bot] avatar jeffmaury avatar jrichter1 avatar mohitsuman avatar odockal avatar richard0202 avatar sbouchet avatar tgrall avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intellij-openshift-connector's Issues

Cant run "odo"

What versions of software are you using?

  • Operating System: MacOS Mojave (10.14.6)
  • IntelliJ version: 2018.3
  • OpenShift version: v3.11.88

What did you run exactly?

Install plugin/odo

Actual behavior

odo install error.

I have odo installed:
$ which odo
/usr/local/bin/odo

$ odo version
odo v0.0.20 (bd3e74a4)

When I try to use plug in, I continually get asked to download odo. If I select 'Yes' it will download it to my user home directory, however it will continually ask me to install it. If I select 'No' any interaction results in error "Error: Cannot run program "odo" (in directory ".") error=2, No such file or directory"

Expected behavior

plugin to find and execute odo

Any logs, error output, etc?

The OpenShift and Clusters Tree view should only support single item selection

In GitLab by @tgrall on Jan 29, 2019, 17:09

The current implementation allow the user to select multiple entries in the tree (for example multiple project, services)

This is confusing since user can right click and for example do a delete.

Since the underline technology (odo) can only send a single command, we should only allow single item selection in tree.

ODO Version should be packaged with the plugin

In GitLab by @tgrall on Jan 31, 2019, 14:34

It would be better to package ODO with the plugin to be sure that version of the tool is compatible with the plugin.

Other Option: check the ODO version and be sure it has been tested/compatible and install if not.

Switch to odo 1.0.x workflow

[kind/Feature]

Which functionality do you think we should add?

Switch to latest odo 1.0.x and adapt workflow

Why is this needed?

odo will be GA based on 1.0.x stream

Add support for Java based applications

[kind/Enhancement]

Which functionality do you think we should update/improve?

odo now supports debugging for Java applications. We should add the proper workflow for such applications.

Why is this needed?

This is part of the inner loop experience

odo output is scrambled on Linux

[kind/bug]

What versions of software are you using?

  • Operating System: RHE8
  • IntelliJ version: 2018.1
  • OpenShift version:0.0.5

What did you run exactly?

create component and push

Actual behavior

ouput is not getting line returns

Expected behavior

should process line returns

Any logs, error output, etc?

IntelliJ Plugin MVP

In GitLab by @tgrall on Nov 28, 2018, 08:33

To be able to publish the OpenShift/ODO plugin on IJ Market place we must have the same level of features that we have in VS Code. The list of features is the following:

  • Use ODO 0.16.0
  • Implement odo version check #8

The features are not "commands" but should be available in IntelliJ UI, for example in the cluster view.

General Commands

  • OpenShift: Log in to cluster - Log in to your server and save login for subsequent use.
  • Credentials : Log in to the given server with the given credentials.
  • Token : Login using bearer token for authentication to the API server.
  • OpenShift: List catalog components - List all available component types from OpenShift's Image Builder.
  • OpenShift: List catalog services - Lists all available services e.g. mysql
  • OpenShift: New Project - Create new project inside the cluster.
  • OpenShift: About - Provides the information about the OpenShift tools.
  • OpenShift: Log out - Logs out of the current OpenShift cluster.

Actions available inside an OpenShift Cluster Project

  • Project -> New Application - Create a new application inside the selected project.
  • Project -> Delete - Delete an existing project.

Actions available for an Application inside a Project

  • Application -> New Component - Create a new component inside the selected application.
    • git - Use a git repository as the source file for the component.
    • local - Use local directory as a source file for the component.
  • Application -> New Service - Perform service catalog operations.
  • Application -> Describe - Describe the given application in terminal window.
  • Application -> Delete - Delete an existing application.

Actions available for a Component in an Application

  • Component -> Create URL - Expose component to the outside world. The URLs that are generated using this command, can be used to access the deployed components from outside the cluster.
  • Component -> Create Storage - Create storage and mount to a component.
  • Component -> Show Log - Retrieve the log for the given component.
  • Component -> Follow Log - Follow logs for the given component.
  • Component -> Open in Browser - Open the exposed URL in a browser.
  • Component -> Push - Push source code to a component.
  • Component -> Watch - Watch for changes, update component on change.
  • Component -> Describe - Describe the given component in terminal window.
  • Component -> Delete - Delete an existing component.
  • Component -> Link - Link component to another component
  • Component -> Link - Link component to another service

Actions available inside a storage for a component

  • Storage -> Delete - Delete storage from component.

Actions available inside a service in a application

  • Service -> Link - Link service to another component
  • Service -> Delete - Delete an existing service

Should buid on Java11

[kind/bug]

What versions of software are you using?

  • Operating System: RHEL8
  • IntelliJ version:2018.1
  • OpenShift version:0.1.0

What did you run exactly?

./gradlew check

Actual behavior

Errors during build

Expected behavior

Build shoud run ok

Any logs, error output, etc?

Implement login from oc command line paste

When you need to login in to a cluster, it would be fine to be able to set the parameters from the command that is copied into the clipboard from the OpenShift web console

Provide icon for the OpenShift window

[kind/Enhancement]

Which functionality do you think we should update/improve?

The OpenShift window is listed with other tool windows but it has no associated icon. We should add the icon of the plugin

Why is this needed?

For UI consistency

Push Error

Hi,

We have push issue. Maybe you help us.

We have internal Openhift platform. We want to deploy Spring Boot App from local to Openshift. We followed steps at link below.

https://tools.jboss.org/blog/ij-openshift-connector.html

Then, we have problem during push like attached PNG.

Can I take any advice to solve this problem?

Openshift2
openshift1 (2)

Thanks.

Dont see that "Set Current" is in progress

[kind/Enhancement]

Which functionality do you think we should update/improve?

Steps:

  1. ASSERT: have ~/.kube/config with several clusters
  2. EXEC: in "Clusters" view pick "Set Current" in ctx menu of a cluster

Result:
At first nothing happens. There's no hour glass nor any sort of feedback that the operation is in progress. After a few seconds only I see the OpenShift explorer being updated to cluster that I selected.

Building using jdk11 errors "Execution failed for task ':instrumentCode'"

What did you run exactly?

  1. Set gradle to use java 11
    image
  2. Run build

Actual behavior

errors with the following:

$ gradle build --stacktrace
> Task :instrumentCode FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':instrumentCode'.
> Forms instrumentation failed for /Users/adietish/Documents/jboss-workspaces/intellij-openshift-connector/src/main/java/org/jboss/tools/intellij/openshift/ui/cluster/LoginDialog.form: : /Users/adietish/Documents/jboss-workspaces/intellij-openshift-connector/src/main/java/org/jboss/tools/intellij/openshift/ui/cluster/LoginDialog.form: Class not found: javax.swing.JPanel

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':instrumentCode'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:166)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:163)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:156)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
        at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
        at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: : Forms instrumentation failed for /Users/adietish/Documents/jboss-workspaces/intellij-openshift-connector/src/main/java/org/jboss/tools/intellij/openshift/ui/cluster/LoginDialog.form: : /Users/adietish/Documents/jboss-workspaces/intellij-openshift-connector/src/main/java/org/jboss/tools/intellij/openshift/ui/cluster/LoginDialog.form: Class not found: javax.swing.JPanel
        at com.intellij.ant.Javac2.fireError(Javac2.java:524)
        at com.intellij.ant.Javac2.instrumentForms(Javac2.java:354)
        at com.intellij.ant.Javac2.compile(Javac2.java:251)
        at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:1130)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.gradle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(BasicAntBuilder.java:80)
        at org.gradle.api.internal.project.ant.BasicAntBuilder.doInvokeMethod(BasicAntBuilder.java:107)
        at org.jetbrains.intellij.tasks.IntelliJInstrumentCodeTask.instrumentCode(IntelliJInstrumentCodeTask.groovy:158)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.jetbrains.intellij.tasks.IntelliJInstrumentCodeTask.instrumentClasses(IntelliJInstrumentCodeTask.groovy:92)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:49)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:717)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:684)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:476)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:461)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:444)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:93)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:237)
        at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$1(ExecuteStep.java:33)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
        at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58)
        at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33)
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39)
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
        at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
        at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45)
        at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31)
        at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:208)
        at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70)
        at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
        at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43)
        at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:69)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:47)
        at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:140)
        ... 34 more


* Get more help at https://help.gradle.org

BUILD FAILED in 1s

"Cluster login" dialog should remember username & password / token

[kind/Enhancement]

Which functionality do you think we should update/improve?

Steps:

  1. ASSERT: have a cluster active in in OpenShift explorer
  2. ASSERT: make sure that you're logged in via username & password / token
  3. EXEC: log out
  4. EXEC: log in to cluster

Result:
Cluster login dialog appears, "Cluster URL" is prefilled but neither username & password or the token. I have to provide them again.

Why is this needed?

"Delete" cluster doesn't do anything

What versions of software are you using?

  • Operating System: MacOS
  • IntelliJ version: 2018.2
  • intellij-openshift-connector 1.0.0
  • OpenShift version: -

What did you run exactly?

  1. ASSERT: have a ~/.kube/config with several clusters defined
  2. EXEC: In Clusters view select a cluster and pick "Delete" in the ctx menu

Actual behavior

Does nothing

Expected behavior

Deletes the selected cluster(s)

Any logs, error output, etc?

When odo is not install the odo installed failed due to permission

In GitLab by @tgrall on Jan 31, 2019, 15:46

  • Mac OS 10.14.2 (18C54)
  • Running from gradlew runide
  • VS Code and its plugin is installed and working.
  1. I have remove odo (017) from my environment
  2. when I run the IntelliJ, it asked me to install ODO and I said yes
  3. Then when I tried to use it I got the following error: Error: Cannot run program "/Users/tgrall/.vs-openshift/cache/0.0.16/odo": error=13 permission denied

=> To solve the issue I open all permissios to the .vs-openshift folder

Note: should we or not reuse the vs-openshift folder?

Support multi URL creation

The current implementation does not support multi URLs creation as no name is required. The URL creation workflow should be extended to allow multi URLs ie as for a name

Detailed error output does not appear

Hi,

I notice two bugs.

One of them is that if push take error due to any reason, error reason does not appear on IntelliJ Odo terminal. For example I could see error reason on command prompt but I could not see on IntelliJ Odo terminal.

2

1

The other one is that, when I try to login my own openshift cluster, I could not view our projects after click on OK. After restart IntelliJ I could see projects in Openshift. I think it isn't working dynamically.

3

Thanks.

Add support for Node based applications

[kind/Enhancement]

Which functionality do you think we should update/improve?

odo now supports debugging for Node applications. We should add the proper workflow for such applications.

Why is this needed?

This is part of the inner loop experience

Add support for debug

[kind/Feature]

Which functionality do you think we should add?

Users should be able to debug their components. So from a running component, user
could launch a debug that will switch the component in debug mode and launch and connector the debugger from the local IDE

Why is this needed?

This is a requirement from developers

This will require odo changes.

Proxy support issues

[bug]

What versions of software are you using?

  • Operating System: Windows 10 Pro
  • IntelliJ version: 2018.3
  • OpenShift version: Minishift 3.11.0

What did you run exactly?

Installed plugin.

Actual behavior

Fresh install of plugin causes significant instability and IntelliJ crashing. Openshift panel is completely empty with no buttons or capacity to interact. IntelliJ degrades within a minute or two and cannot complete basic screen draws or accept any UI interactions globally before requiring forcible kill.

After several attempts to start IntelliJ and navigate settings screens before it crashed I was able to disable this plugin. All functionality returned to normal.

Expected behaviour

Not this...

Any logs, error output, etc?

The most concrete issue I can find seems unrelated but may be part of the problem. Underlying fabric8 library is barfing on the proxy configuration:

2019-08-13 12:11:46,460 [ 219739]  ERROR - llij.ide.plugins.PluginManager - Invalid proxy server configuration 
io.fabric8.kubernetes.client.KubernetesClientException: Invalid proxy server configuration
	at io.fabric8.kubernetes.client.utils.HttpClientUtils.createHttpClient(HttpClientUtils.java:159)
	at io.fabric8.kubernetes.client.BaseClient.<init>(BaseClient.java:55)
	at io.fabric8.openshift.client.DefaultOpenShiftClient.<init>(DefaultOpenShiftClient.java:222)
	at io.fabric8.openshift.client.DefaultOpenShiftClient.<init>(DefaultOpenShiftClient.java:218)
... cut many, many lines ...
Caused by: java.net.MalformedURLException: unknown protocol: <snip... this was a host name without a protocol>
	at java.net.URL.<init>(URL.java:600)
	at java.net.URL.<init>(URL.java:490)
	at java.net.URL.<init>(URL.java:439)
	at io.fabric8.kubernetes.client.utils.HttpClientUtils.getProxyUrl(HttpClientUtils.java:207)

It seems there is a fundamental disconnect in handling of proxy host names. In IntelliJ you select the protocol in a separate UI control and then supply a naked hostname. Attempting to include the protocol will result in an error:
image

Then fabric8 tries to trivially consume that configuration and doesn't like the syntax without protocol which results in the crash. Perhaps the broader instability is based on that low level error? Seems unlikely but you never know.

There are also lots and lots of another error that appeared in idea.log after installation as well. They were not there historically, and stopped after disabling the plugin... but there is nothing in the stack trace (that I could see) that points at this plugin beside that timing:

java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. Please ensure you're using invokeLater/invokeAndWait with a correct modality state (not "any"). See TransactionGuard documentation for details.
  current modality=ModalityState.NON_MODAL
  known modalities:
    ModalityState.NON_MODAL, writingAllowed=true;
    ModalityState:{[com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog[dialog0,781,447,358x125,invalid,hidden,layout=java.awt.BorderLayout,APPLICATION_MODAL,title=IDE and Plugin Updates,defaultCloseOperation=DO_NOTHING_ON_CLOSE,rootPane=,rootPaneCheckingEnabled=true]]}, writingAllowed=false;
    ModalityState:{}, writingAllowed=true;
    ModalityState:{}, writingAllowed=true;
    ModalityState:{[com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog[dialog1,438,137,1028x713,invalid,hidden,layout=java.awt.BorderLayout,APPLICATION_MODAL,title=Settings,defaultCloseOperation=DO_NOTHING_ON_CLOSE,rootPane=,rootPaneCheckingEnabled=true]]}, writingAllowed=true;
    ModalityState:{}, writingAllowed=true
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:134)
	at com.intellij.openapi.application.TransactionGuardImpl.assertWriteActionAllowed(TransactionGuardImpl.java:232)
	at com.intellij.openapi.fileEditor.impl.EditorWindow.lambda$closeFile$1(EditorWindow.java:279)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.runChange(FileEditorManagerImpl.java:1660)
	at com.intellij.openapi.fileEditor.impl.EditorWindow.closeFile(EditorWindow.java:214)
	at com.intellij.openapi.fileEditor.impl.EditorsSplitters.closeFile(EditorsSplitters.java:517)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.lambda$closeFileImpl$3(FileEditorManagerImpl.java:637)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.runChange(FileEditorManagerImpl.java:1660)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.closeFileImpl(FileEditorManagerImpl.java:637)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.lambda$closeFile$2(FileEditorManagerImpl.java:631)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:212)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:178)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:168)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:154)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.closeFile(FileEditorManagerImpl.java:631)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.closeFile(FileEditorManagerImpl.java:625)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.closeAllFiles(FileEditorManagerImpl.java:1917)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$3.projectClosed(FileEditorManagerImpl.java:174)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:117)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:397)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:358)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:347)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:331)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:322)
	at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:29)
	at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:196)
	at com.sun.proxy.$Proxy67.stateChanged(Unknown Source)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.fireStateChanged(ToolWindowManagerImpl.java:1559)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.execute(ToolWindowManagerImpl.java:587)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.execute(ToolWindowManagerImpl.java:576)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.projectClosed(ToolWindowManagerImpl.java:553)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl$2.projectClosed(ToolWindowManagerImpl.java:162)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:117)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:397)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:358)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:347)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:324)
	at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:29)
	at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:196)
	at com.sun.proxy.$Proxy26.projectClosed(Unknown Source)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.fireProjectClosed(ProjectManagerImpl.java:809)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.lambda$closeProject$15(ProjectManagerImpl.java:698)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1057)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.closeProject(ProjectManagerImpl.java:695)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.closeAndDisposeAllProjects(ProjectManagerImpl.java:635)
	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$disposeSelf$6(ApplicationImpl.java:241)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:220)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:178)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:168)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:154)
	at com.intellij.openapi.application.impl.ApplicationImpl.disposeSelf(ApplicationImpl.java:239)
	at com.intellij.openapi.application.impl.ApplicationImpl.doExit(ApplicationImpl.java:818)
	at com.intellij.openapi.application.impl.ApplicationImpl.exit(ApplicationImpl.java:788)
	at com.intellij.openapi.application.impl.ApplicationImpl.exit(ApplicationImpl.java:777)
	at com.intellij.openapi.application.impl.ApplicationImpl.exit(ApplicationImpl.java:773)
	at com.intellij.openapi.application.impl.ApplicationImpl.restart(ApplicationImpl.java:750)
	at com.intellij.ide.plugins.PluginManagerConfigurable.shutdownOrRestartApp(PluginManagerConfigurable.java:157)
	at com.intellij.ide.plugins.PluginManagerConfigurableNew.lambda$null$9(PluginManagerConfigurableNew.java:642)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:435)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:419)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:403)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:762)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:732)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:719)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:668)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:363)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Better show that username & password / token are alternatives

[kind/Enhancement]

Which functionality do you think we should update/improve?

When trying to log into a cluster I am presented with 3 fields:

  • username
  • password
  • token

image

The tooling should outline that username & password / token are alternatives which isn't visible at first sight. Currently one only discovers that as soon as you start typing (typing into token disables username & password, typing into token disables username, password).

image

Imho a better alternative would be to use 2 tabs: "username & password" and "token". Similarly one could use radio buttons (or a combo) that shows/hides the panel(s)

Update README.md

[kind/Enhancement]

Which functionality do you think we should update/improve?

Update README as it's almost empty

Why is this needed?

To better document for the community

Double click on cluster in "Clusters" view should set it as current

[kind/Enhancement]

Which functionality do you think we should update/improve?

Currently, to change cluster, one has to select a cluster in the "clusters" view and pick "Set current" in the context menu.
It would be even more handy if double clicking it would set the cluster as "current"

Compiling with java 11 errors

What did you run exactly?

Compile the sources using java 11

Actual behavior

Errors with the following compilation problem:

/Users/adietish/Documents/jboss-workspaces/intellij-openshift-connector/src/main/java/org/jboss/tools/intellij/openshift/tree/application/ApplicationTreeModel.java:167: error: incompatible types: inference variable T has incompatible equality constraints Object,CAP#1
          return Collections.list(((MutableTreeNode)o).children());
                                 ^
  where T is a type-variable:
    T extends Object declared in method <T>list(Enumeration<T>)
  where CAP#1 is a fresh type-variable:
    CAP#1 extends TreeNode from capture of ? extends TreeNode

Switch to odo 1.0.0-beta7

[kind/Enhancement]

Which functionality do you think we should update/improve?

Switch to latest odo 1.0.0-beta7

Why is this needed?

We should be prepared to latest odo

New workflow is broken if module does not have .iml file

[kind/bug]

What versions of software are you using?

  • Operating System: RHEL8
  • IntelliJ version: 2018.1
  • OpenShift version:0.1.0

What did you run exactly?

Opened a project created from a Maven project and tried to open the OpenShift window

Actual behavior

NPE when the OpenShift window is opened

Expected behavior

The OpenShift window should open without errors

Any logs, error output, etc?

Unclear how to add a new cluster

[kind/Enhancement]

Which functionality do you think we should update/improve?

Steps:

  1. ASSERT: have a cluster active in the "OpenShift Explorer"
  2. EXEC: right click into empty space

Result:
A context menu with "Nothing here" appears. To a dummy user it's unclear how he'd now add a new cluster.
image
It's only after trying that you find out that you can "Log out" of your cluster, "Log in to cluster" and change the url. Alternatively you can pick a cluster in the clusters view.

Login to cluster fails

[kind/bug]

What versions of software are you using?

  • Operating System: Windows 10 1903
  • IntelliJ version: 2019.3 EAP8
  • OpenShift version:

What did you run exactly?

Try to login to cluster

Actual behavior

Nothing happens

Expected behavior

I'm logged in to the cluster

Any logs, error output, etc?

IDEA Fatal errors shows

java.lang.ClassCastException: class com.intellij.openapi.actionSystem.impl.ActionMenu cannot be cast to class com.intellij.ui.treeStructure.Tree (com.intellij.openapi.actionSystem.impl.ActionMenu and com.intellij.ui.treeStructure.Tree are in unnamed module of loader com.intellij.util.lang.UrlClassLoader @3bfdc050)
	at org.jboss.tools.intellij.openshift.actions.TreeAction.getTree(TreeAction.java:32)
	at org.jboss.tools.intellij.openshift.actions.TreeAction.update(TreeAction.java:38)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareUpdate(ActionUtil.java:177)
	at com.intellij.ide.util.gotoByName.GotoActionModel.updateActionBeforeShow(GotoActionModel.java:303)
	at com.intellij.ide.util.gotoByName.GotoActionModel$ActionWrapper.lambda$getPresentation$0(GotoActionModel.java:652)
	at com.intellij.ide.util.gotoByName.GotoActionModel.lambda$updateOnEdt$4(GotoActionModel.java:456)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:309)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:441)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:424)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:407)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:906)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:779)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:422)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:421)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Use released odo 1.0.0

[kind/bug]

What versions of software are you using?

  • Operating System: RHEL8
  • IntelliJ version: 2018.1
  • OpenShift version:0.1.0

What did you run exactly?

Actual behavior

Expected behavior

Any logs, error output, etc?

Add support for OCP4.x console URLs

[kind/bug]

What versions of software are you using?

  • Operating System: RHEL8
  • IntelliJ version:0.1.0
  • OpenShift version:4.x

What did you run exactly?

Open Console action

Actual behavior

Invalid for OCP4 clusters as Web console is now mapped onto different URL mapping.

Expected behavior

Should be ok for OCP4 cluster

Any logs, error output, etc?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.