projectkudu / azureresourceexplorer Goto Github PK
View Code? Open in Web Editor NEWAzure Resource Explorer - a site to explore and manage your ARM resources in style
Home Page: https://resources.azure.com
License: Apache License 2.0
Azure Resource Explorer - a site to explore and manage your ARM resources in style
Home Page: https://resources.azure.com
License: Apache License 2.0
e.g. the ARM path is:
https://management.azure.com/subscriptions/{sub}/resourceGroups/Default-Web-WestUS/providers/Microsoft.Insights/alertrules/CPUHigh%20TmpCloudDeploy?api-version=2014-04
The Explorer browser path is:
https://{explorer domain}/manage/subscriptions/{sub}/resourceGroups/Default-Web-WestUS/providers/Microsoft.Insights/alertrules/CPUHigh%2520TmpCloudDeploy
But trying to request this ails with a 404. It looks like the encoded space is confusing it.
If I look under https://management.azure.com/subscriptions/MySubID/resourceGroups/StreamAnalytics-Default-Central-US and list providers I would expect to see Microsoft.StreamAnalytics. But it isn't listed. Any idea what's going on there? Can you test this on your subscription after creating a Stream Analytics job? Is that because Stream Analytics is in public preview at this moment?
Some user accounts have multiple resources, and drilling through can be time consuming. This'll be a quick way to narrow the set of things to work with
Calling /subscriptions/{sub}/resources?api-version=2014-04-01
returns a list of all registered resources in the sub. e.g. entries look like:
/subscriptions/{sub}/resourceGroups/Default-Web-NorthEurope/providers/microsoft.insights/components/MvcApp
/subscriptions/{sub}/resourceGroups/Default-Web-NorthEurope/providers/Microsoft.Web/serverFarms/DefaultServerFarm
/subscriptions/{sub}/resourceGroups/Default-Web-NorthEurope/providers/Microsoft.Web/sites/MySite
This can be used as follows:
/subscriptions/{sub}/resourceGroups/Default-Web-NorthEurope: {
"microsoft.insights": [
"components"
],
"Microsoft.Web": [
"serverFarms",
"sites"
]
}
Then in the UI, when a specific RG is expanded, we use this data to populate the list of providers, instead of the 'global' list.
Note that in addition to this, we'll need to query the list of registered resource types so that we can get the correct API version. That part can be done as part of the global metadata on the first request.
When doing a long-running operation like resourceGroups/X/providers/Microsoft.Web/sites/Y/slots/Z/slotsswap
that has a x-ms-request-id
, it'd be nice to automatically have the route to get its current status
e.g. VMs support:
/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{mv}?api-version=2015-05-01-preview&$expand=instanceView
expand=instanceView
means include the optional instanceView
property in the response payload.
Potentially, explorer could turn that into a checkbox that turns on or off expand=instanceView
in the path.
Though we don't know whether PUT will try, it very well might, and in the absence of spec, we should let the user try it if they think it should work. At worst, they'll get a 404.
e.g. you make a PUT call, and some pane shows you exactly what the code would look like in C# or Java (or whatever language we have SDKs for). Possibly even PowerShell using the low level CmdLets (high level would be hard as there is no metadata for the flags, ...).
Any list, when it has more than a few elements, is a pain to use if it's not sorted alphabetically.
e.g. a link in the top right corner that says "give feedback" and goes to https://github.com/projectkudu/ARMExplorer/issues/new
Totally busted. Like the templates are not expanding, and it's displaying things like {{ treeControl.get_selected_branch().label }}
.
Currently if the content in the text editor is long, the whole right part of the page scrolls. this is happening because I am setting the editor maxLines to Infinity.
Issues with that:
Benefits:
The alternative is to have the editor itself scrollable, that pretty much the opposite of what's above.
Thoughts?
We can the metadata from the first user. If the second user has additional providers they're registered with, we don't have the metadata for them.
We have GET and PUT, so we may as well support DELETE! e.g. I created a JobsCollection, but couldn't delete it.
e.g. can be some toggle to show all providers/resource types, allowing for example to create a Webfarm in a new RG.
Support setting the whole portal in a ReadOnlyMode where no PUT, POST, or DELETE operations are allowed.
Would be really cool if we could stand at either a Resource Group or a specific resource and export it as a ARM template.
It should just open what it needs, and leave what's already open.
Retrieve a storage account, i.e., /resourceGroups/my-group/providers/Microsoft.ClassicStorage/storageAccounts/mystorage
, works fine. Trying to drill down into the services, i.e., /resourceGroups/my-group/providers/Microsoft.ClassicStorage/storageAccounts/mystorage/services
, spins forever. Fiddler shows a 400 Bad Request coming back.
So it gets to the DB list GET and that works fine:
https://management.azure.com/subscriptions/{sub}/resourceGroups/Default-SQL-WestUS/providers/Microsoft.Sql/servers/qfhzpobzl2/databases?api-version=2014-04-01
returns
{
"value": [
{
"id": "/subscriptions/{sub}/resourceGroups/Default-SQL-WestUS/providers/Microsoft.Sql/servers/qfhzpobzl2/databases/master",
"name": "master",
"type": "Microsoft.Sql/servers/databases",
etc...
But when I click on a specific DB, it gets really confused and queries this path:
https://management.azure.com/subscriptions/{sub}/resourceGroups/Default-SQL-WestUS/providers/Microsoft.Sql/servers/master/databases/qfhzpobzl2?api-version=2014-04-01
Notice how it has /servers/master/databases/qfhzpobzl2
, reversing the server name and db name! The ID that got returned from the list GET is actually correct.
Wondering if that would feel more 'right'. i.e. horizontal panel taking up either the entire space, or maybe only below the right pane (i.e. not under the tree). Thoughts?
Make sure to confirm on delete. Also special case deleting a resourceGroup to indicate that it might contain more resources than currently shown in ARMExplorer
All requests fail with a variant of this:
{
"data": "",
"status": 0,
"config": {
"method": "GET",
"transformRequest": [
null
],
"transformResponse": [
null
],
"url": "api/subscriptions/9033bcf4-c3c2-4f82-9e98-1cc531f1a8a8/resourceGroups",
"headers": {
"Accept": "application/json, text/plain, */*"
}
},
"statusText": ""
}
I'm guessing the token needs a refresh or something like that. Not a huge deal, as refreshing page fixes it.
e.g. things like slot swap require params (other the slot).
e.g. it could support https://resources.azure.com/microsoft.com/subscriptions/etc...
to make the directory explicit.
Could be as simple as changing the string to 'Azure Resource Explorer (beta)', or maybe throw in a 'beta' png.
I have 2 subscriptions under 2 different live id, having a log-out button would help switch between accounts without having to open in-private browsers etc...
As I understand, for Swagger, we just get a JSON file that describes the API. Then the idea is that the same model we use today can be produced from that JSON. Then the rest is identical.
Often time I need to copy content and paste somewhere else, it is not easy to do so. Ctrl-A doesn't work as I want - it selects everything. If we could support Ctrl-A, Ctrl-C and Ctrl-V, that would do too.
This is a phenomenal product. Well done.
Is there a similar experience for the Service Management API (original portal)? E.g. the https://{bla}.blob.core.windows.net/ API documented at https://msdn.microsoft.com/en-us/library/azure/ee460799.aspx ? I can't seem to discover how to start up / shut down VMs in the Microsoft.ClassicCompute/virtualMachines nodes in the same way I see at https://msdn.microsoft.com/library/azure/jj157189.aspx.
If I delete a resource group, it immediately is removed from the tree view on the left pane (even if the deletion fails). Should it track if the deletion was successful? (by following 202?)
It seems to think that it's already there and does nothing.
I think it's because after clicking on 'show all', we end up in a state where no node is selected.
We can either make sure 'show all' select a node after refreshing the tree or make search handle that condition. I prefer the former.
Would reduce the annoyance for users who don't want readonly.
To make things a bit less confusing, it could work like this:
Steps:
Result: when the delete completes, rg2 gets yanked from tree instead of rg1. Closing and reopening resourceGroups node restores things.
Seems it assumes that whatever node you're on when the deletion completes is the one that was deleted, which is not always the case.
Today, if a resource group contains thousands of sites, the UI will not behave well. We should find a way to handle this, e.g. by only showing the first 200 items by default.
Paging support in the underlying API can play a part there, though it's not yet implemented for Websites.
I think we need to come up with a list of what's expected to find in analytics or telemetry for both client and server scenarios.
If I have a RG with only websites in it, I cant browse to say the "clasic.storage" RP to create a new storage resource within that RG.
This limits discoverability of features/functionality
Steps:
Result: you're still looking at the Delete button for the RG you just asked to delete, so it feels like something went wrong.
Wondering if trying to preserve tab is more trouble than it's worth...
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.