Git Product home page Git Product logo

cloudadoptionframework's Introduction

Microsoft Cloud Adoption Framework for Azure

This repo contains code samples which support and accelerate the adoption guidance found in the Cloud Adoption Framework.

Cloud Adoption Framework is the One Microsoft voice for cloud adoption, consolidating and sharing best practices from Microsoft employees, partners, and customers. In this framework, customers will find tools, guidance, and narratives to help shape technology, business, and people strategies in an effort to drive desired business outcomes during each adoption effort. This lifecycle "product" aligns guidance to various phases and iterations of the typical cloud adoption lifecycle to ensure easy access to the right guidance at the right time.

Documentation repository

If you're looking to contribute to or report an issue regarding the Cloud Adoption Framework documentation found on Microsoft Docs, please visit the Cloud Adoption Framework documentation repository on GitHub.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Legal Notices

Microsoft and any contributors grant you a license to the Microsoft documentation and other content in this repository under the Creative Commons Attribution 4.0 International Public License, see the LICENSE file, and grant you a license to any code in the repository under the MIT License, see the LICENSE-CODE file.

Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries. The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks. Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.

Privacy information can be found at https://privacy.microsoft.com/en-us/

Microsoft and any contributors reserve all other rights, whether under their respective copyrights, patents, or trademarks, whether by implication, estoppel or otherwise.

cloudadoptionframework's People

Contributors

alexbuckgit avatar arnaudlh avatar brianblanchard avatar bryanla avatar bryansoltis avatar ckittel avatar cmcclister avatar dominicallen avatar jamasten avatar janetcthomas avatar jkirsch1 avatar jocontr avatar jtracey93 avatar julianhayward avatar lizcasey1 avatar microsoft-github-policy-service[bot] avatar microsoftopensource avatar mikebazmsft avatar msftgits avatar naomioooo avatar pabrus avatar rkuehfus avatar sblair01 avatar slapointe avatar stephen-sumner avatar v-thepet avatar weeyin83 avatar zimmergren avatar zjalexander avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloudadoptionframework's Issues

AzNamingTool - Feature Request: Filter and examples of lower-level scope resources.

When using Jump To, both in Reference and in Configuration, let it be a filter displaying only the resources of the selected provider or even the only resource selecting and not a "Go To". This makes the display cleaner.

And in reference, that even resources that are lower-level scope, have examples of names displayed.

Thank you very much.

Cannot access blob storage in azure-virtual-machine-cost-estimator.pbix

This Power BI report is using https://cloudpricing.blob.core.windows.net/azurespecs/APIData/ResourceSkus.json. However, this blob is not public. When you download this pbix file and open it, you will get the following error.

AzureBlobs failed to get contents from 'https://cloudpricing.blob.core.windows.net/azurespecs/APIData/ResourceSkus.json'. Status code: 409, description: 'Public access is not permitted on this storage account.'.

Please enable public access for ResourceSkus.json blob.

Azure Naming Tool - Custom ResourceComponents

The projects/apps/services resource component requires all projects to be created beforehand, and doesn't allow user to input their own project name. This is also a risk because if we add all project names, we risk users seeing confidential project names.

Would be nice if we could create additional resource components, that accepts input during naming generation.

failed installing in AKS

We are installing the Azure naming tool in AKS. But we failed when inputting admin password. Could you help check this?
image

by checking trace log
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111] Unhandled exception in circuit 'ZBqkfabWaFBr11MunFgu4v9w0VvkMOvJzzgu99inNMI'. System.IO.InvalidDataException: Failed to load configuration from file '/app/settings/appsettings.json'. ---> System.FormatException: Could not parse the JSON file. ---> System.Text.Json.JsonReaderException: 'c' is invalid after a single JSON value. Expected end of data. LineNumber: 5 | BytePositionInLine: 1. at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan1 bytes)
at System.Text.Json.Utf8JsonReader.ConsumeNextTokenUntilAfterAllCommentsAreSkipped(Byte marker)
at System.Text.Json.Utf8JsonReader.ConsumeNextToken(Byte marker)
at System.Text.Json.Utf8JsonReader.ReadSingleSegment()
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.JsonDocument.Parse(ReadOnlySpan1 utf8JsonSpan, JsonReaderOptions readerOptions, MetadataDb& database, StackRowStack& stack) at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory1 utf8Json, JsonReaderOptions readerOptions, Byte[] extraRentedArrayPoolBytes, PooledByteBufferWriter extraPooledByteBufferWriter)
at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory1 json, JsonDocumentOptions options) at System.Text.Json.JsonDocument.Parse(String json, JsonDocumentOptions options) at Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser.ParseStream(Stream input) at Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(Stream stream) --- End of inner exception stack trace --- at Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(Stream stream) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload) --- End of inner exception stack trace --- at Microsoft.Extensions.Configuration.FileConfigurationProvider.HandleException(ExceptionDispatchInfo info) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload) at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load() at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList1 providers)
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at AzureNamingTool.Helpers.GeneralHelper.GetConfigurationData() in /src/Helpers/GeneralHelper.cs:line 17
at AzureNamingTool.Shared.PasswordModal.ModalSave() in /src/Shared/PasswordModal.razor:line 61
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
`

by checking appsettings.json, don't know why there is a ck" in it.
image

'Instance' cannot be typed into, 'Generate' greyed out

Install of the Docker application as per instructions. Set Admin password, update Configuration of Resource Types and Locations, as advised. Exported base Configuration.

Selecting any combination of options in 'Generate' will not allow typing into the 'Instance' field. The 'Generate' button will remain greyed out (un-clickable). No errors appear in the Console, tested in Firefox, Edge and Chrome. There's no utility in the app without this fundamental.

Wrong Regex for some resource types

In the file: https://github.com/microsoft/CloudAdoptionFramework/blob/master/ready/AzNamingTool/repository/resourcetypes.json

The following resource types have wrong regex syntax.

"Id": 192,"Id": 194,"Id": 195,"Id": 196,"Id": 197,"Id": 198,"Id": 199,

Wrong one: "Regx": "^[a-zA-Z0-9_-\.()]{1,80}$", as if you try to generate a name you will get:

{ "resourceName": "***RESOURCE NAME NOT GENERATED***", "message": "There was a problem validating the name.", "success": false }

And in the admin log you will see:

ERROR Invalid pattern '^[a-zA-Z0-9_-\.()]{1,80}$' at offset 15. [x-y] range in reverse order.

Right one should be:
"Regx": "^[a-zA-Z0-9_\.()-]{1,80}$",

"Id": 311,

Wrong one: "Regx": "^(?!.*[\\.]$)(?!.* $)[a-zA-Z0-9_\\.- ]{1,260}$",
Error log: Invalid pattern '^(?!.*[\.]$)(?!.* $)[a-zA-Z0-9_\.- ]{1,260}$' at offset 35. [x-y] range in reverse order.
Right one: "Regx": "^(?!.*[\\.]$)(?!.* $)[a-zA-Z0-9_\\. -]{1,260}$",

"Id": 134,"Id": 148,"Id": 149,"Id": 151,"Id": 201,
Error log: Invalid pattern '^[a-zA-Z0-9_-\.]{1,80}$' at offset 15. [x-y] range in reverse order.
Wrong one: "Regx": "^[a-zA-Z0-9_-\\.]{2,57}$",
Right one: "Regx": "^[a-zA-Z0-9_\\.-]{2,57}$",

"Id": 154,
Error log: Invalid pattern '^[a-zA-Z0-9_-()]{1,80}$' at offset 14. [x-y] range in reverse order.
Wrong one: "Regx": "^[a-zA-Z0-9_-()]{1,80}$",
Right one: "Regx": "^[a-zA-Z0-9_()-]{1,80}$",

"Id": 36,
Error log: Invalid pattern '^[a-zA-Z0-9_\.-()]{0,89}[a-zA-Z0-9_-()]$' at offset 16. [x-y] range in reverse order.
Wrong one: "Regx": "^[a-zA-Z0-9_\.-()]{0,89}[a-zA-Z0-9_-()]$",
Right one: "Regx": "^[a-zA-Z0-9_\\.()-]{0,89}[a-zA-Z0-9_()-]$",

"Id": 153,
Error log: Invalid pattern '^[a-zA-Z0-9_-()]{1,80}$' at offset 14. [x-y] range in reverse order.
Wrong one: "Regx": "^[a-zA-Z0-9_-()]{1,80}$",
Right one: "Regx": "^[a-zA-Z0-9_()-]{1,80}$",

"id": 155 needs to swap "Regx" with "Id": 156,

AZNamingTool - uniquestring as optional component

Hi
It would be great if you could add uniquestring (like the function you have in arm and bicep) as optional component.
You already mention it multiple times in the docs, ie https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/bicep-functions-string#uniquestring
That way the resources can have unique names between ie environments, regions, etc without having to add all those components. And since "everyone" relies on the same components in their naming strategies it doesnt take long before you end up with a conflict (like kv-myapp-eus-dev). Uniquestring would help solve both.

Resource not appearing in Generate TAB

Hello,

i'm looking to generate a route table name.
In the Reference Tab, i well see Microsoft.Network/routeTables
image

But when i go to Generate, i don't get it in the list :
image

AzNamingTool - suggestion for override logic

Hi,

If I wanted to implement the tool as part of a build system, I would like to receive the newest version of resourcetypes.json & resourcelocations.json (i.e. from mcr.microsoft.com).
At the same time, I would like to be able to override a subset of resourcetypes.json and resourcelocations.json with values from my own settings.

Would it be possible to enhance the application to allow this kind of behaviour?
Maybe with files like resourcetypes_ovveride.json resourcelocations_override.json where my changes are saved?

Thanks

No resource type for Microsoft.Network/privateEndpoints

wanted to generate a name for a private endpoint that I am creating with bicep.
Couldn't see the resource type anywhere: Microsoft.Network/privateEndpoints, wondering if I am missing something or could this be added in future?

Is it possible to add an extra custom component to the Naming Tool? - i.e. Function

Would it be possible to create an additional component to the Azure Naming Tool for the purpose of adding the function of the resource? After a discussion with the team it was identified that an additional component would be necessary to identify the function of the named resource.

After trying to alter one of the other components to try and fit this purpose, it was clear they were locked down to their purpose and therefore I was unable to create a different component.

Azure Naming Tool - Org Component Required

Hi, previously in version 1.0 of the naming tool, I opened an issue as I wanted to make the Org component compulsory for all resources. Now I am using version 2.0, how do I apply the same change? -

you can remove the Org component from the "exclude" column in the resources.csv file before you run the tool. If you've already run the tool, you can re-run it and it will pull in your changes to any of the files in the "data" folder.

Feature Request: Add / Rename Components

Currently it's only possible to remove or add preconfigured components. It would be a nice feature to be able to add custom components to this list or rename the existing components to align with our company policy.

AZNamingTool not aligned with Azure resources

Hi,

Thanks for the tool. Is very useful!
I was setting some names for my environment and found that is not aligned to what Azure asks for.
IE. I created a storage account with dashes as delimiter and the generated name is with dashes.
image
If I change the delimiter to period, it will eliminate the period.
image

Any guidance on this?
Thanks!

AzNamingTool - Generate multiple resource names

A couple of ways that this could be done:

Add an 'add' button to the Generate tool to accumulate a list of names based on the selected component values but a different resource type (and remember a list of the previously generated names).

Compile of a list of resource types that you need names for first and then ask the tool to generate a name for all of them. I guess this would be a bit like the example names in the Reference tool but for a list of 'favourite' resource types only.

New CISO Workshop PowerPoint File

Hello Microsoft Team,

I'm working as a Cybersecurity Consultant and I do CISO Workshops with my customers to make them understand the security advantages of moving to the Cloud and help them with strategic guidance as well.

In the past I used the old Workshop as a Reference and I included some of the slides, because they are really informative.
I wonder why you only provide the new CISO Workshop in a PDF format.

It would be awesome if you could also upload a Powerpoint file, so we can include your guidance in our Workshop to help your customers to understand what the Strategy of Microsoft is and how your products can help them to become more secure.

As I understand it, the Workshop is published under the MIT License, but without the right of using any Microsoft Logos and Trademarks, but with the PDF we can't remove those.

AZNamingTool - publish to mcr.microsoft.com

Hi
I think the title says it all :)
It would be great if you could publish the Azure Naming Tool image to your public registry to ease the deployment for everybody.

Regards
Jonatan

aznamingtool, custom naming implementation?

We just deployed landing zones (using custom deployment tool). We have generated the naming convention we want with aznamingtool. I can't find any instructions on how to enforce the naming convention. Azure policy?

Option to make the Org component required for all resources

By design the Org component is excluded for most resources and only optional for high level resources, but would it be possible to make the Org component required for all resources so that it becomes a prefix in the naming convention?

The first step in the AzNamingTool script first prompt doesn't seem to work properly

I've cloned the repo and tried running Set-AzureNamingConfiguration.ps1 and following the prompts. When asked on the first prompt to enter the numbers for UNDESIRED components I entered 23 and then pressed ENTER but based on the next prompt it seems that my input was completely ignored.

Reproduction steps:

  1. Run Set-AzureNamingConfiguration.ps1 from Powershell.
  2. Type 23 and then press ENTER when prompted with the first prompt.

Expected results:

Components 2 and 3 should not be shown but all other components 1, 4, 5, 6, 7, 8 should show in the next prompt which is supposed to confirm the set of desired components.

Actual results:

Components 2 and 3 still remain in the list of desired components in the next prompt even though they were provided by following the instruction as UNDESIRED components. Additionally, component 8 does not appear in the next prompt even though it wasn't entered in as UNDSIRED.

Ex.

STEP 01: REMOVE THE UNDESIRED AZURE RESOURCE NAMING COMPONENTS

You have selected the following components:

    (1) ResourceType
    (2) Org
    (3) ProjAppSvc
    (4) VmRole
    (5) Environment
    (6) Location
    (7) Instance

Is this correct? Type Y for Yes or N for No

I've tried using two different versions of PowerShell ( 7.2.1 and 5.1.22000.282) and Windows 11.

AzNamingTool - Application is crashing because of logfiles?

I have the app running in a Web App for container running in Azure.
After a period of time, while you use the application, and you generate some names for your resources, application is crashing, with the following error in the logs:

`2022-11-22T13:16:18.981924037Z �[40m�[1m�[33mwarn�[39m�[22m�[49m: Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100]

2022-11-22T13:16:18.981974937Z Unhandled exception rendering component: Object reference not set to an instance of an object.

2022-11-22T13:16:18.986191553Z System.NullReferenceException: Object reference not set to an instance of an object.

2022-11-22T13:16:18.986258153Z at AzureNamingTool.Pages.Generate.b__0_2(RenderTreeBuilder __builder2) in /src/Pages/Generate.razor:line 51

2022-11-22T13:16:18.987751559Z at Microsoft.AspNetCore.Components.CascadingValue`1.Render(RenderTreeBuilder builder)

2022-11-22T13:16:18.987771959Z at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)

2022-11-22T13:16:18.995392088Z �[41m�[30mfail�[39m�[22m�[49m: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]

2022-11-22T13:16:18.995411488Z Unhandled exception in circuit 'oxQ_b7CYUxOGTM_tNLhnMp3yEgo1tB9rEyTJR77pVis'.

2022-11-22T13:16:18.996416992Z System.NullReferenceException: Object reference not set to an instance of an object.

2022-11-22T13:16:18.996460292Z at AzureNamingTool.Pages.Generate.b__0_2(RenderTreeBuilder __builder2) in /src/Pages/Generate.razor:line 51

2022-11-22T13:16:18.996466892Z at Microsoft.AspNetCore.Components.CascadingValue`1.Render(RenderTreeBuilder builder)

2022-11-22T13:16:18.997848997Z at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)

2022-11-22T13:16:19.205078882Z �[40m�[32minfo�[39m�[22m�[49m: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]

2022-11-22T13:16:19.205128082Z Executed endpoint '/_blazor'

2022-11-22T13:16:19.206160786Z �[40m�[32minfo�[39m�[22m�[49m: Microsoft.AspNetCore.Hosting.Diagnostics[2]`

or

`2022-11-22T13:46:40.396486506Z �[41m�[30mfail�[39m�[22m�[49m: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]

2022-11-22T13:46:40.396514007Z An unhandled exception has occurred while executing the request.

2022-11-22T13:46:40.396520307Z System.NullReferenceException: Object reference not set to an instance of an object.

2022-11-22T13:46:40.396524807Z at AzureNamingTool.Pages.Reference.GenerateName(ResourceType type, String shortName, String staticvalues) in /src/Pages/Reference.razor:line 389

2022-11-22T13:46:40.396529107Z at AzureNamingTool.Pages.Reference.BuildRenderTree(RenderTreeBuilder __builder) in /src/Pages/Reference.razor:line 92

2022-11-22T13:46:40.396533407Z at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)

2022-11-22T13:46:40.396537907Z --- End of stack trace from previous location ---

2022-11-22T13:46:40.396541807Z at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)

2022-11-22T13:46:40.396545907Z at Microsoft.AspNetCore.Components.RenderTree.Renderer.HandleExceptionViaErrorBoundary(Exception error, ComponentState errorSourceOrNull)

2022-11-22T13:46:40.396549707Z at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

2022-11-22T13:46:40.396553607Z --- End of stack trace from previous location ---

2022-11-22T13:46:40.396557407Z at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)

2022-11-22T13:46:40.396561307Z at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

2022-11-22T13:46:40.396582707Z at Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToRenderQueue(Int32 componentId, RenderFragment renderFragment)

2022-11-22T13:46:40.396587407Z at Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged()

2022-11-22T13:46:40.396591207Z at Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()

2022-11-22T13:46:40.396595007Z at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()

2022-11-22T13:46:40.396599307Z at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)

2022-11-22T13:46:40.396603407Z at Microsoft.AspNetCore.Components.RenderTree.Renderer.HandleExceptionViaErrorBoundary(Exception error, ComponentState errorSourceOrNull)

2022-11-22T13:46:40.396608307Z at Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(ParameterView parameters)

2022-11-22T13:46:40.396612707Z at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(Int32 componentId, ParameterView initialParameters)

2022-11-22T13:46:40.396616707Z at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.CreateInitialRenderAsync(Type componentType, ParameterView initialParameters)

2022-11-22T13:46:40.396620607Z at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.RenderComponentAsync(Type componentType, ParameterView initialParameters)

2022-11-22T13:46:40.396624507Z at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<>c__11`1.<b__11_0>d.MoveNext()

2022-11-22T13:46:40.396628907Z --- End of stack trace from previous location ---

2022-11-22T13:46:40.396632807Z at Microsoft.AspNetCore.Mvc.ViewFeatures.StaticComponentRenderer.PrerenderComponentAsync(ParameterView parameters, HttpContext httpContext, Type componentType)

2022-11-22T13:46:40.396636707Z at Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.PrerenderedServerComponentAsync(HttpContext context, ServerComponentInvocationSequence invocationId, Type type, ParameterView parametersCollection)

2022-11-22T13:46:40.396640807Z at Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.RenderComponentAsync(ViewContext viewContext, Type componentType, RenderMode renderMode, Object parameters)

2022-11-22T13:46:40.396644807Z at Microsoft.AspNetCore.Mvc.TagHelpers.ComponentTagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output)

2022-11-22T13:46:40.396648707Z at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, Int32 i, Int32 count)

2022-11-22T13:46:40.396653207Z at AzureNamingTool.Pages.Pages__Host.ExecuteAsync() in /src/Pages/_Host.cshtml:line 10

2022-11-22T13:46:40.396657007Z at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)

2022-11-22T13:46:40.396661007Z at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)

2022-11-22T13:46:40.396664908Z at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)

2022-11-22T13:46:40.396672608Z at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode)

2022-11-22T13:46:40.396677308Z at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode)

2022-11-22T13:46:40.396681408Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

2022-11-22T13:46:40.396685708Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)

2022-11-22T13:46:40.396689608Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)

2022-11-22T13:46:40.396694008Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()

2022-11-22T13:46:40.396697808Z --- End of stack trace from previous location ---

2022-11-22T13:46:40.396701608Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

2022-11-22T13:46:40.396705808Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)

2022-11-22T13:46:40.396709708Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)

2022-11-22T13:46:40.396714308Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()

2022-11-22T13:46:40.396718308Z --- End of stack trace from previous location ---

2022-11-22T13:46:40.396724208Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)

2022-11-22T13:46:40.396728308Z at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Logged|17_1(ResourceInvoker invoker)

2022-11-22T13:46:40.396732408Z at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)

2022-11-22T13:46:40.396736608Z at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)

2022-11-22T13:46:40.396741008Z at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)

2022-11-22T13:46:40.396745308Z at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)

2022-11-22T13:46:40.396750008Z �[40m�[32minfo�[39m�[22m�[49m: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]

2022-11-22T13:46:40.396754208Z Executing endpoint '/Error'`

image

If i go and delete generatednames.json and adminlogmessages.json, and then restart web app, application is working fine again.

In case you don't delete the log files i receive a stack overflow error which is attached, and application is crashing constantly.
stackOverFlowIssue.txt

How i use application?
I'm having a function that calls the api to generate names for azure resources, using this api call /api/ResourceNamingRequests/RequestName

How you can replicate?

Just create a function to generate a name for all resource types using the following api call /api/ResourceNamingRequests/RequestName

"as","apim","apivs","apis","apii","apiia","apiic","apio","apiot","apir","apiss","apitd","apitg","apias","apib","apic","apid","apig","apigu","apiip","apil","apin","recem","apioi","apipo","apipr","api","grp","aspt","prop","subsr","ast","temp","user","appcs","lock","pasm","pasr","pasd","policyr","policyd","initm","initr","initd","aa","aacert","aaconn","cred","runbk","sched","var","watch","wbhk","ba","appl","bbcert","pool","blchm","bpas","bp","bpa","bpv","botsvc","chan","bbconn","botec","redis","crrule","cdnp","cdne","cerco","cog","avail","cld","des","osdisk","disk","gal","cgap","apver","gimg","ver","cimg","snap","slc","smc","vmssl","vmssw","ci","cr","btsk","step","rep","scmap","task","tokn","webhk","aks","osmc","cihub","authp","conn","chcmap","int","kpi","link","pred","prof","rlink","rel","role","view","cpas","cprep","dbjob","dbw","adf","flow","dset","run","lksvc","pipe","trig","rerun","dla","cmpol","dlsta","dlarule","dlasa","dls","dlsrule","dlsrulev","dms","proj","mdbsv","mdbdb","dmdsfrule","dmdsvrule","mysql","dbmysql","dmsfrule","dmsvrule","psql","dbpsql","dpsfrule","dpsvrule","iot","dicert","congp","provs","pcert","dtlab","img","form","vml","vmw","dbact","cosmos","evgd","evgt","evgs","egtp","evhcl","evhns","enarule","drcfg","evh","enearule","cgrp","mls","spark","storm","hadoop","hbase","kafka","arcs","iejob","ag","inala","appi","inma","insqr","iotapp","kv","kvs","arck","dec","dedb","dcon","ehcon","ia","assem","bconf","cert","limap","part","rpcnf","schem","ses","lise","mapi","logic","mlcp","mlweb","mlws","mlw","mlswc","id","mg","macc","mms","lievt","liout","strep","migr","sac","asg","afw","bas","con","dnsz","erc","waf","wafrg","fd","fdfp","sac","sac","nlirule","lgw","nic","nsg","nsgsr","nw","pdnsz","pdnsv","pl","pip","ippre","rf","nrfrr","rt","udr","se","traf","vgw","vnet","snet","peer","vwan","vpng","vcn","vpn","ntfns","nnarule","ntf","nnnarule","opic","log","opms","pdash","pbiwc","pbi","pview","rsv","rsvbp","rns","rnarule","hycon","rnharule","wcfr","wcfra","deloy","rg","rtn","rtnv","tspec","srch","sb","snarule","sbndc","migc","sbq","snqarule","sbt","sntarule","tsub","sntsrule","sf","sigr","sqlmi","sqldw","sql","sqlsa","sqldb","sqlsg","sqlep","sqlfg","sqlfw","sbl","squ","stvm","st","stbl","stblc","stfs","stfss","stmp","sta","sss","sgrp","ssimp","asa","sasj","sjf","sjin","sjout","sjtrf","subcr","synw","synsp","syndp","tsi","tsiea","tsiee","tsier","wbcer","plan","stapp","app","func","ase","aswba","slot"

Api call json body :

{"resourceType": "shortNameFromTheList","resourceUnitDept": "sud","resourceProjAppSvc": "spa","resourceEnvironment": "dev","resourceLocation": "we","resourceInstance": "001"}

Exclusion of component not working

Under windows VM resource type i have excluded some components like Environment, location, Project. But when i try to generate name it throws an error that such components are required.

Error Message: You must supply the required components. ResourceProjAppSvc value was not provided. ResourceInstance value was not provided.

Two CAF repos on GitHub is one too many which makes it unclear which is which

There are two Cloud Adoption Frameworks on GitHub. The on under Microsoft/CAF and the one under MicrosoftDocs/CAF. In small print one refers to the other, but it is not clear enough. Additionally, if you Google with Bing for “github cloud adoption framework” you get the one you are least likely to want to find first, and the second one is the docs one. Ask me how I know that someone can make that mistake!

https://github.com/microsoft/CloudAdoptionFramework
https://github.com/MicrosoftDocs/cloud-adoption-framework

I propose you make very clear in block letters that this is the supporting act and that people are likely looking for the other one!

AzNamingTool - Update resourceType config using api call gives error

When you update the resource type config file using post method from the api /api/ResourceTypes/PostConfig it give you some validation errors:

{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-4db0bd302c23a01a53c7a4730fadb151-9cf0687d72cf2130-00",
"errors": {
"[300].ShortName": [
"The ShortName field is required."
],
"[304].ShortName": [
"The ShortName field is required."
],
"[305].ShortName": [
"The ShortName field is required."
],
"[306].ShortName": [
"The ShortName field is required."
],
"[307].ShortName": [
"The ShortName field is required."
],
"[308].ShortName": [
"The ShortName field is required."
]
}
}

When you update the same json config file through the webinterface, error is not given back:

image

image

Even if the errors are present using api post method, configuration is updated.

Renaming of json files to work

I had some issues running the Import-Export-Blueprints.ps1 to import the blueprint, what I found was that the json files needed renaming from CAF.json to Blueprint.json (Case sensitive) and Governance.json to Blueprint.json and this managed to import the Blueprints.

Q about updates to ESLZ visio

@jtracey93, I noticed that you updated the ESLZ sample architecture visio on June 15 & added a number of new tabs, but I couldn't find any related documentation or changelog describing the purpose of these additional examples.
https://github.com/microsoft/CloudAdoptionFramework/commits/master/ready/enterprise-scale-architecture.vsdx

Could you provide any additional info or context? (the new examples look quite useful & I'm anxious to share with my customers, but was hoping to have some context.) Thanks!

AzNamingTool Feature Request: Tags

The AzNamingTool v2 is brilliant. I would want this to be a go to point in a business to get azure resource naming conventions and also Tagging conventions/mandatory tags

Is it possible to add a section for mandatory tags? We have tags enforced via Policy and it would be nice if we had a central tool, where resource names and tags can be referenced.

Another feature which would be handy, but I appreciate it may be out of scope here is, AAD Security Group Naming convention, where users can reference how they should be naming AAD Groups as per business naming convention.

AzNamingTool - missing elements in resourcetypes.json

Hi,

I am evaluating your great tool and I have noticed discrepancies between https://github.com/microsoft/CloudAdoptionFramework/blob/master/ready/AzNamingTool/repository/resourcetypes.json and https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations

In some cases, the entry is missing in resourcetypes.json (i.e. appi- , plan-) in other it's different (i.e. app- vs wapp- for Web app)
Will your tool be the official list from Microsoft?

/Andrea

Input string was not in a correct format.

Hi, I have just installed the Azure Naming Tool. I am finding that when generating a subscription name from the vanilla install, I get "Input string was not in a correct format." error. This has happened for the local installation and Azure installation having followed your installation guidelines.

Any help would be very much appreciated.

AzNamingTool - Resource types for Virtual Desktop

Unfortunately, I could not find any resource types for Azure Virtual Desktop. However, in some VDI projects this would be mandatory for the naming convention.
It would be great if these could be built in.

Virtual desktop host pool | Microsoft.DesktopVirtualization/hostPools | vdpool
Virtual desktop application group | Microsoft.DesktopVirtualization/applicationGroups | vdag
Virtual desktop workspace | Microsoft.DesktopVirtualization/workspaces | vdws
Virtual desktop scaling plan | Microsoft.DesktopVirtualization/scalingPlans | vdscaling

BR - Florian

Issue with PBIX azure-virtual-machine-cost-estimator.pbix

The PBIX makes calls to the pricing api that currently do not function

image

This is occurring for all the Pricing API calls within the PBIX.

Error:
DataSource.Error: Web.Contents failed to get contents from 'https://prices.azure.com/api/retail/prices?currencyCode='GBP%E2%80%8B'&$filter=%0A(indexof(location,%20'%20')%20ne%20-1%20or%20location%20eq%20'Global'%20or%20location%20eq%20'')%20%0Aand%20indexof(serviceName,%20'Virtual%20Machines')%20ne%20-1%20%0Aand%20indexof(productName,%20'%20Series')%20ne%20-1%0Aand%20indexof(productName,%20'%20Dedicated')%20eq%20-1%0Aand%20priceType%20eq%20'Consumption'%20%0Aand%20indexof(skuName,%20'Spot')%20eq%20-1%20%0Aand%20indexof(meterName,'Expired')%20eq%20-1%20%0Aand%20indexof(meterName,'Low%20Priority')%20eq%20-1%20%0Aand%20indexof(meterName,%20'Promo')%20eq%20-1' (400): Bad Request
Details:
DataSourceKind=Web
DataSourcePath=https://prices.azure.com/api/retail/prices
Url=https://prices.azure.com/api/retail/prices?currencyCode='GBP%E2%80%8B'&$filter=%0A(indexof(location,%20'%20')%20ne%20-1%20or%20location%20eq%20'Global'%20or%20location%20eq%20'')%20%0Aand%20indexof(serviceName,%20'Virtual%20Machines')%20ne%20-1%20%0Aand%20indexof(productName,%20'%20Series')%20ne%20-1%0Aand%20indexof(productName,%20'%20Dedicated')%20eq%20-1%0Aand%20priceType%20eq%20'Consumption'%20%0Aand%20indexof(skuName,%20'Spot')%20eq%20-1%20%0Aand%20indexof(meterName,'Expired')%20eq%20-1%20%0Aand%20indexof(meterName,'Low%20Priority')%20eq%20-1%20%0Aand%20indexof(meterName,%20'Promo')%20eq%20-1

Example failing URL:

https://prices.azure.com/api/retail/prices?currencyCode='GBP%E2%80%8B'&$filter=%0A(indexof(location,%20'%20')%20ne%20-1%20or%20location%20eq%20'Global'%20or%20location%20eq%20'')%20%0Aand%20indexof(serviceName,%20'Virtual%20Machines')%20ne%20-1%20%0Aand%20indexof(productName,%20'%20Series')%20ne%20-1%0Aand%20indexof(productName,%20'%20Dedicated')%20eq%20-1%0Aand%20priceType%20eq%20'Consumption'%20%0Aand%20indexof(skuName,%20'Spot')%20eq%20-1%20%0Aand%20indexof(meterName,'Expired')%20eq%20-1%20%0Aand%20indexof(meterName,'Low%20Priority')%20eq%20-1%20%0Aand%20indexof(meterName,%20'Promo')%20eq%20-1

it looks like based on the error, the ODATA call is wrong, all Pricing API calls fail with the same error

Feature Request: Custom fields for end user

Unless I just haven't figured out how to do this, but can we have capability to allow the end user of the tool to enter text into part of the name. Maybe limiting that text to x amount of characters.

e.g. rg-eu-prd-(custom text)-01

Error in admin button and configuration area

Hi.

The tool has been deployed in an Azure Container App.
After a some minutes, i'm unable to enter admin mode or to the configuration section.

The website stop responding and throw the following message
"An error has occurred. This application may no longer respond until reloaded. Reload"

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.