googlecloudplatform / google-cloud-visualstudio Goto Github PK
View Code? Open in Web Editor NEWGoogle Cloud Tools for Visual Studio
Home Page: https://cloud.google.com/tools/visual-studio/docs/
License: Apache License 2.0
Google Cloud Tools for Visual Studio
Home Page: https://cloud.google.com/tools/visual-studio/docs/
License: Apache License 2.0
C:\Windows\system32>gcloud -v
Google Cloud SDK 90.0.0
alpha 2015.10.08
app-engine-python 1.9.30
app-engine-python-extras 1.9.21
bq 2.0.18
bq-win 2.0.18
core 2015.12.07
core-win 2015.11.24
gcloud
gsutil 4.16
gsutil-win 4.15
windows-ssh-tools 2015.09.21
Currently, only a limited set of the GCP services are exposed in the Cloud Explorer. However, there is not obvious reason for the user as to why, and they may draw misleading inferences as to whether the other services do not exist, or are not available for ASP.NET developers.
I suggest two avenues for solutions:
Option 1) Only show services that are enabled, and a clear affordance for adding more
Option 2) Show all the services that are available, distinguishing the active ones from the inactive ones, e.g. greying out inactive, or separating into two lists, active and inactive ones.
New project templates for ASP.NET contain options pertaining to deploying to Azure which are enabled by default. Consider having the extension modify them to add a Google Cloud option as well.
When requesting an action, detect that the necessary port is open or not in the instance and if not prompt the user with a warning and the possibility of opening said port before the action is taken.
For example, if the user invokes the "Open Terminal Server Session..." command in the instance's context menu then check that the RDP port is opened on the target machine. If we can't determine that it is open, we can prompt the user with a special dialog to let the user know that the operation might fail unless we open the port; we can offer opening the port before the terminal session is started.
This will help eliminate some of the friction related to firewall ports. The user can close the port after the operation is completed, for security reasons.
CURRENT
In dark theme, the UI shows the following UI bugs:
Need to ensure that all of the source code has the right license headers, probably use the full header instead of the small one we're using now.
Need to implement the analytics opt-in for the extension, ensure it follows the guidelines.
When launching ASP.NET projects locally, if the project is using the useable auth library it will pick up the credentials to use, the application_default_credentials.json
file, that is generated by GCloud CLI. We want to ensure that the app will instead pick up the credentials for the current user selected in Visual Studio.
In order to do this we need to set the environment variable GOOGLE_APPLICATION_CREDENTIALS
to point to a file of our creation which will contain the credentials for the currently selected user. This file will be overwritten every time the current user is changed in Visual Studio.
Because it is an env variable it will be inherited by the child process (created when the app is started by Visual Studio) so we will set that variable in Visual Studio's own environment.
This will allow us to know usage statistics when APIs are called from Visual Studio.
Use the official metric ID for cloud products.
Remove the images that are not used and/or update with final images.
Add project templates for GCP projects:
Need to have an updated set of icons for the extension.
The preliminary list of needed icons is:
Currently we're opening an internal website, which is not the URL we should navigate. It should be https://console.cloud.google.com/storage/browser/{bucket}/?project={project}
.
Show relevant pieces of data from the app.yaml in the dialogs, such as the module that is being deployed.
Also, set the stage for having auto-complete for app.yaml.
Currently the zone nodes in the GCE data source for the Cloud Explorer don't have any actions. We should have at least a "Get Info" action that the user can invoke, redirect to the cloud console for further actions until those are implemented locally.
Add ability to pull from the subscription directly from the Visual Studio.
So the WeakCommand class is the one that does the cast and only calls the command handler if the cast succeeds.
There is an opportunity to help users quickly get up to speed developing against our APIs. That would involve using the extension to enable a new API, pull its associated NuGet packages, and provisioning credentials to help them get up to speed.
When using a feature that requires the Cloud SDK and it is not installed the extension will prompt the user to install the SDK. The dialog used for this prompt should have a clickable link so the user can easily find and install the SDK.
Add ability to publish to the topic directly from the Visual Studio.
Since it is installed per machine under "Program Files" this operation fails and aborts the deployment of the app.
Currently the current user is persisted, globally for the machine, but the project is not. The proposed change is to store the current user and current project per project. In the project options section.
Catch the exception and offer up a link to the user to go to the console to enable the feature.
Because of this the generated app.yaml is bad and the deployment fails with the message:
Unable to assign value 'customapi_version' to attribute 'runtime':
.
Currently only Server 2012 is recognized as a Windows instance.
It would be interesting to show the version/deployment date of an ASP.NET app running on a Windows VM. The server component for WebDeploy might be doing this already, we could see if we could surface it.
Currently if an account is selected that doesn't have any projects the projects dropdown is just empty. Need to clearly show that. Perhaps even have a special empty state for the control.
CURRENT
Right-clicking on parent nodes (like a service node or region node) does nothing. Users might infer that right click is not available on this UI.
RECOMMENDATION
Offer options on right-click of nodes, even if those options only take them to the Console for now.
Need to ensure that we're using the right brushes for all backgrounds, foregrounds, etc... So the dialogs and tool windows look as close as the native ones in Visual Studio as possible.
Modernize the code when possible.
It seems that the best practice is to open the default browser in the system to ask the user for credentials instead of having a custom dialog.
This work will require us to:
auth_code
.Implement the gcloud integration for password reset. The extension will be able to reset Windows VMs passwords, given the username and show it to the user.
The user will access this from the context menu for the VM.
Currently we use "Google Cloud Profile-WebDeploy". Use something that incorporates the name of the VM.
I was running the new installer experience, and I've ran into a situation where the plug-in is installed but the menu isn't showing up within Visual Studio.
It's possible the problem is with my machine or how I am calling VSIXInstaller.exe
. Does anything from the VSIX log stand out? Did you release an update of your plug-in recently that would have caused problems? (The installer pulls from https://storage.googleapis.com/aspnet-mvm/extension/GoogleCloudExtension.vsix
.)
https://screenshot.googleplex.com/JfSHH3WyT4k.png
Nothing too crazy is going on here. This worked in the past, so I assume it has to do with versioning or a botched uninstall of the plugin (from the Visual Studio UI).
Section /o "Cloud Tools for Visual Studio" section_visualStudioAddIn
${DetailLog} "Downloading the Google Cloud extension for Visual Studio:"
NSISdl::download_quiet /TIMEOUT=30000 \
"${PATH_TO_GOOGLE_CLOUD_EXTENSION_VSIX}" \
"$PLUGINSDIR\GoogleCloudExtension.vsix"
Pop $R0 ; Get the return value.
${If} $R0 != "success"
MessageBox MB_OK|MB_ICONEXCLAMATION "Error downloading the Google Cloud Extension for Visual Studio."
${DetailLog} "Download failed: ${PATH_TO_GOOGLE_CLOUD_EXTENSION_VSIX}"
Abort "Download failed."
${EndIf}
; Perform the installation.
${DetailLog} "Installing: GoogleCloudExtension.vsix"
${If} $instMode == 0
Exec '"$pathToVsIdeFolder\VSIXInstaller.exe" /quiet "$PLUGINSDIR\GoogleCloudExtension.vsix"'
${Else}
Exec '"$pathToVsIdeFolder\VSIXInstaller.exe" /quiet /admin "$PLUGINSDIR\GoogleCloudExtension.vsix"'
${EndIf}
SectionEnd
12/18/2015 11:01:44 AM - Microsoft VSIX Installer
12/18/2015 11:01:45 AM - -------------------------------------------
12/18/2015 11:01:45 AM - Initializing Install...
12/18/2015 11:01:45 AM - Extension Details...
12/18/2015 11:01:45 AM - Identifier : GoogleAppEngine.Google.d3d3eeb8-3710-4bd9-97ba-1401bf2acd22
12/18/2015 11:01:45 AM - Name : Google Cloud Platform Extension for Visual Studio
12/18/2015 11:01:45 AM - Author : Google Inc.
12/18/2015 11:01:45 AM - Version : 0.4.20151216
12/18/2015 11:01:45 AM - Description : Tools to develop applications for Google Cloud Platform.
12/18/2015 11:01:45 AM - Locale : en-US
12/18/2015 11:01:45 AM - MoreInfoURL : https://github.com/GoogleCloudPlatform/gcloud-visualstudio
12/18/2015 11:01:45 AM - InstalledByMSI : False
12/18/2015 11:01:45 AM - SupportedFrameworkVersionRange : [4.5,)
12/18/2015 11:01:45 AM -
12/18/2015 11:01:45 AM - Supported Products :
12/18/2015 11:01:45 AM - Microsoft.VisualStudio.Community
12/18/2015 11:01:45 AM - Version : [14.0]
12/18/2015 11:01:45 AM -
12/18/2015 11:01:45 AM - References :
12/18/2015 11:01:45 AM - -------------------------------------------------------
12/18/2015 11:01:45 AM - Identifier : Microsoft.VisualStudio.MPF.14.0
12/18/2015 11:01:45 AM - Name : Visual Studio MPF 14.0
12/18/2015 11:01:45 AM - Version : [14.0]
12/18/2015 11:01:45 AM - MoreInfoURL :
12/18/2015 11:01:45 AM - Nested : No
12/18/2015 11:01:45 AM -
12/18/2015 11:01:45 AM -
12/18/2015 11:01:45 AM - Searching for applicable products...
12/18/2015 11:01:45 AM - Found installed product - Microsoft Visual Studio Community 2015
12/18/2015 11:01:47 AM - The extension will be upgraded from version 0.4.20151216.
12/18/2015 11:01:47 AM - Found installed product - Microsoft Visual Studio 2015 Shell (Integrated)
12/18/2015 11:01:47 AM - Found installed product - Global Location
12/18/2015 11:01:47 AM - Uninstalling 'Google Cloud Platform Extension for Visual Studio', version 0.4.20151216.
12/18/2015 11:01:47 AM - Beginning to install extension to Microsoft Visual Studio Community 2015...
12/18/2015 11:01:48 AM - Install to Microsoft Visual Studio Community 2015 completed successfully. The extension has been installed to C:\USERS\CHRSMITH\APPDATA\LOCAL\MICROSOFT\VISUALSTUDIO\14.0\EXTENSIONS\CEOEGGGK.A3I\
This menu entry will show a dialog with information about publishing the project, offer a link to a page with more information about how to publish ASP.NET 4.x apps.
Some participants in our study wanted to also see some status about what was running on their IIS instance, in particular what build was currently running, when it was last published, etc.
Fix typos, grammar errors, etc...
Ensure that the zero state for the Cloud Explorer is meaningful. It should:
Currently the list of projects is empty, but the different data sources for the cloud explorer do show a meaningful message, although not the best.
It should show that there are no projects.
CURRENT
Google Cloud project templates are only offered in a Google Cloud node under Visual C#. most participants in our study missed it and went straight for the project templates in Web, Cloud or directly in Visual C# nodes.
The very first time an item is selected in the cloud explorer the properties window is not updated, after that it works every time.
REPRO
Install VS extension
Authenticate with GCP credentials
Spin up an ASP.NET instance from Cloud Console
In the Cloud Explorer, refresh the view, then right click on instance you just created and click on "reset..."
CURRENT
Error dialog appears telling the user he needs to install Cloud SDK to do this. Option is only to dismiss the dialog.
EXPECTED (options in order or preference)
Option 1. It just works
Option 2. It offers a wizard to install it, and then continues the flow
Option 3. The dialog offers a link to where the user can download the extension.
Ensure that the extension has the right analytics in place to track feature use, mainly concerned with:
REPRO
Create a new project called aaaaaaaaa and spin up an instance
Delete the aaaaaaaaa project
Install extension and authenticate
CURRENT
By default, the app shows the data for the deleted project, aaaaaaaaa
EXPECTED
Project aaaaaaaaa is not shown in the extensions
It seems that the project templates carry some dependencies from the machine in which they were created. Ensure that the templates can build everywhere.
It seems that sometimes the browser will fail to connect to the localhost HTTP server opened to receive the OAUTH code after the operation has completed.
Probably a race condition, the localhost server is shutdown before the browser has the chance to talk to it to get the page. This should hopefully go away once the we redirect to an actual HTTP address outside of the machine.
Should use the existing pages for IntelliJ until the VS pages are alive.
Many participants in our study expected to see a publish template wizard in the current "Publish" wizard of Visual Studio, similar to the Azure options.
Jon has a nice preconditions library up in his repo here, copy it in this repo for now and use it in the code when null
checks, and other conditions are required.
Currently the full name of the class is displayed in the properties window, we should have a proper implementation of the ToString()
method in all item classes displayed in the property window.
Ensure that the Cloud Explorer doesn't show deleted projects in the projects dropdown.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.