Giter Club home page Giter Club logo

tanzu-toolkit-for-visual-studio's Introduction

VMware Tanzu logo Tanzu Toolkit for Visual Studio

Build Status

Tanzu Toolkit for Visual Studio is an extension for Visual Studio (2022 & 2019) that allows users of Tanzu Application Service ("TAS") to manage apps directly from within the IDE. Users of this extension are able to:

Install

To install this extension, you will need Visual Studio version 2022 or 2019. This extension can be downloaded within the IDE by searching "Tanzu" in the "Manage Extensions" window.

Extension manager showing Tanzu Toolkit for Visual Studio 2022

This extension can also be installed outside of Visual Studio by first downloading the appropriate .vsix file, then double-clicking it to prompt an installation.

The Tanzu.Toolkit.VisualStudio.vsix extension file is included in each release in this repository.

Alternatively, latest builds can be found on vsixgallery.com, though these may contain features still under development:

Uninstall

This extension can be uninstalled from Visual Studio using "Manage Extensions" window.

image image

More Info

Check out our Wiki! It goes into more detail on several features.

Our team uses this board in ZenHub to track progress.

Demo videos

Overview

0-0-4-demo.mp4

App Deployment using a Manifest

0-0-3-app-deployment.mp4

Deploying 'Published' .NET apps

Push-published-app-1-0-0.mp4

Remote Debugging .NET apps running on Tanzu Application Service

Remote-debug-1-0-0.mp4

tanzu-toolkit-for-visual-studio's People

Contributors

atwoosnam avatar ccheetham avatar jkonicki avatar timhess avatar zzori-theoriginal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

tanzu-toolkit-for-visual-studio's Issues

Refresh functionality - Keep TreeView in sync with CF foundation

If changes happen to the CF foundation outside of the treeview (e.g. through the CLI, in a different view, from someone else's machine, etc.), the treeview will not update itself (at the moment), so users of our extension might be mislead by the UI if it doesn't accurately reflect the state of the CF foundation.

A "Refresh" button might be a good 1st step toward keeping the view in sync with the CF foundation but the changes wouldn't be automatic

2 ways we might be able to have automated synchronization:

poll the CF foundation on a regular basis & update the tree view to match
use callbacks/hooks into the CF API (possibly using websocket?) to get notified when anything changes

PT: 175520607

Support CF CLI v7

Currently the extension comes bundled with a copy of cf.exe for CLI v6, but this version of the CLI isn't compatible with all CF foundations; newer CFs require CF CLI v7.

For users with newer versions of CF, we should also include a cf executable that uses v7 & amend our extension so that it's able to detect which version of the CLI to use for a given CF instance.

This doc describes CF foundation requirements for each CF CLI version: https://github.com/cloudfoundry/cli/wiki/Versioning-and-Support-Policy

Visual confirmation that Refresh is underway

Currently, when the Refresh button is clicked in the CloudExplorerToolWindow, all app/space/org/cf rows in the tree view will begin to update (i.e. request fresh lists of children behind the scenes), but nothing in the window changes immediately. This might lead some users to question whether or not they initiated the refresh properly.

If a refresh button click were to give some visual confirmation that the refresh process has started but is still ongoing, users will almost certainly have more confidence that they're using the extension properly.

Refresh button does not clear "empty" placeholder rows

Steps to reproduce:

  1. have tree view display a row with no children such that the "empty" placeholder child appears
  2. give that row children outside of Visual Studio
  3. click cloud explorer tool window's refresh button
  4. notice that any new children appear under the "empty" placeholder child (placeholder is not removed)

Example:
refresh-placeholder-bug.png

Log whenever "ProprtyChanged" handler is null in AbstractViewModel

The RaisePropertyChangedEvent method on AbstractViewModel only raises an event if the "handler" property is not null. We've occasionally seen this property be null when running unit tests but it should never happen in the wild; if it does it's probably a good sign that we have a bug & we should log any relevant diagnostic info.

Tanzu Cloud Explorer does not show existing CF connections when opened for the first time in a VS session

PT link

To Replicate:

Open a new VS session with the Tanzu-For-Visual-Studio-Toolkit extension installed
Try to deploy a project from the Solution Explorer: right click Project row > Deploy to Cloud Foundry
Add a new Cloud (CF) connection if there are none via "AddCloud" button (enter login creds)
Log in
Open Cloud Explorer Tool Window via VS menu bar > Extensions > Tanzu Cloud Explorer
NOTICE: the tool window shows a blank tree view (i.e. the Cloud connection we just added during the deployment step above is not shown immediately)
Add a new cloud (CF) connection via "Add Cloud" button (enter creds & log in)
NOTICE: TWO cloud connections are displayed in tree view when previously there were none shown.

New TAS instances could appear in tree view *automatically* after being added via DeploymentDialog

At the moment, when adding a new connection to a TAS instance via the DeploymentDialog "AddCloud" button, the tree view does not change automatically to add a new "CF Instance" row; seeing the new connection requires a manual refresh (button click).

It should be possible to have these new connections appear automatically the way they do after being added via the CloudExplorerToolWindow's "AddCloud" button.

Output Tool Window could scroll to keep most-recent lines on screen by *default*

At the moment, when deploying an app via the Deployment Dialog the output window appears & prints deployment updates but it stays locked to the top of the content window until the user scrolls all the way down (at which point the window automatically keeps scrolling to track the most recent lines of output).

A nicer feature would (arguably) be to have the output window start tracking the most recent deployment output by default (i.e. avoid having to manually scroll down first to see the most recent lines as they get printed).

DeploymentDialog dropdowns could have "loading" placeholder

At the moment, when using the DeploymentDialog window it takes a noticeable amount of time for the orgs & spaces to load for any selected TAS instance in the "Deployment Target" dropdown. When the orgs/spaces haven't yet loaded the dropdowns appear empty which is visually confusing. Adding a "Loading" placeholder item to these dropdowns could help explain why the proper orgs/spaces aren't listed right away.

Error Window UI lift

Our error dialog is very basic at the moment - there's room for improvement in terms of UI.

Amend "cmd.exe" invocation to make it as safe as possible

PT: 176982067

Currently we're using /C when we invoke cmd.exe; maybe we should consider also adding /D (disable AutoRun commands from registry), and possibly others from this list:

Starts a new instance of the Windows command interpreter

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] string]

/C Carries out the command specified by string and then terminates
/K Carries out the command specified by string but remains
/S Modifies the treatment of string after /C or /K (see below)
/Q Turns echo off
/D Disable execution of AutoRun commands from registry (see below)
/A Causes the output of internal commands to a pipe or file to be ANSI
/U Causes the output of internal commands to a pipe or file to be
Unicode
/T:fg Sets the foreground/background colors (see COLOR /? for more info)
/E:ON Enable command extensions (see below)
/E:OFF Disable command extensions (see below)
/F:ON Enable file and directory name completion characters (see below)
/F:OFF Disable file and directory name completion characters (see below)
/V:ON Enable delayed environment variable expansion using ! as the
delimiter. For example, /V:ON would allow !var! to expand the
variable var at execution time. The var syntax expands variables
at input time, which is quite a different thing when inside of a FOR
loop.
/V:OFF Disable delayed environment expansion.

NOTES:

Other folks probably have opinions about how best to invoke cmd.exe from the Process class in C#; let's see if we can find any useful suggestions online

Re-authenticate when refresh token expires

The CF CLI manages 2 auth tokens (it stores them in ~/.cf/config.json):

  1. An Access Token with a 2-hour lifespan. When this token expires mid-session, the CF CLI requests a new one from the CF API using:...
  2. A Refresh Token with a 2-week lifespan. When this token expires, the CF CLI requires re-authentication (from what I understand)

Our extension currently only performs an authentication request (i.e. retrieval of a new refresh token) when connecting to a new "Cloud Foundry Instance" for the first time. This means that we can expect users of our extension to encounter issues after 2 weeks of using the same "Cloud connection" if they don't manually re-login (and nothing about our extension makes that clear at the moment).

Improve error messages for when operation errors due to missing target (e.g. deleted app/space/org)

Currently, when using the CloudExplorer to stop/start/delete an app which has been deleted outside the IDE (i.e. the tree view is not in sync with the real CF foundation), an error window is raised with the message "Unable to stop/start/delete {app name}."

This message could be made more explanatory; it could describe that the reason for the error is that the app didn't exist at the time the start/stop command was issued. In the case of an app deletion, we could improve the UX even further and not raise any error when trying to delete an already-deleted app.

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.