Git Product home page Git Product logo

mona-saas's Introduction

Mona SaaS

CI Build

Questions? Check out our FAQ!

Mona SaaS is a [M]arketplace [On]boarding [A]ccelerator designed to make it easier for Microsoft's ISV partners to rapidly onboard transactable SaaS solutions to Azure Marketplace and AppSource. It includes lightweight, reusable code modules that ISVs deploy in their own Azure subscription, and low/no-code integration templates featuring Azure Logic Apps.

How does Mona SaaS work?

Mona SaaS implements all of the various customer and publisher (you, the ISV) flows that are required by Microsoft's SaaS fulfillment APIs including both the landing page that customers will see when purchasing your SaaS offer and the webhook that Azure Marketplace uses to notify you of subscription changes like cancellations and suspensions.

Mona Architecture Overview

Each of these operations is exposed to your SaaS application by Mona SaaS through events published to a custom Event Grid topic automatically provisioned during setup. By default, Mona SaaS deploys a set of "stub" Logic Apps into your Azure subscription that are enabled by default and configured to be triggered by these subscription events.

Since Mona SaaS exposes these subscription-related events to your SaaS application through an Event Grid topic, you have lots of options for handling them. Because Mona SaaS is using Event Grid, multiple event subscribers can handle the same events simultaneously. These flows can be easily modified in production with no downtime.

How do I get started with Mona SaaS?

1. Prerequisites

First, ensure that the following prerequisites are met.

  • You have an active Azure subscription. If you don't already have one, get one free here.
  • You have the ability to create new app registrations within your Azure Active Directory (AAD) tenant. In order to create app registrations, you must be a directory administrator. For more information, see this article.
  • You have the ability to create resources and resource groups within the target Azure subscription. Typically, this requires at least contributor-level access to the subscription.
  • You have a Workplace or School account. Guest account or personal accounts will not work.

2. Clone the Mona SaaS GitHub repository

Navigate to the Azure portal and launch the Bash cloud shell.

If this is the first time that you've used the cloud shell, you will be prompted to create or choose an existing an Azure Files share.

Run this command from the cloud shell to clone the Mona SaaS repository —

git clone https://github.com/microsoft/mona-saas

By default, the Mona SaaS repository will be cloned to a local directory named mona-saas. Navigate to the setup folder by running the following command —

cd ./mona-saas/Mona.SaaS/Mona.SaaS.Setup

Finally, enable the setup script to be executed locally by running —

chmod +x ./basic-deploy.sh

3. Set up Mona SaaS

At a minimum, you need this information before running the setup script —

  • The Azure region in which you wish to deploy Mona SaaS.
    • For a complete list of available regions, run az account list-locations -o table from the cloud shell. Be sure to use the region's Name, not DisplayName or RegionalDisplayName.
  • An arbitrary, globally-unique name for this Mona deployment.
    • This identifier must consist of lowercase alphanumeric characters (a-z, 0-9) only.
    • It must also be between 3 and 13 characters in length.
  • A friendly display name for your Mona deployment which your customers will see when authenticating to the landing page that Mona SaaS deploys. Although a display name isn't technically required, it's highly recommended.

Setup script examples

To deploy a Mona instance named monaex01 to the West Europe (westeurope) Azure region, you would run the following command from the cloud shell. Note that, since you didn't explicitly provide a display name, Mona will default to using monaex01 as the display name.

./basic-deploy.sh -r "westeurope" -n "monaex01"

To include the display name Mona Example 01 explicitly, your would run —

./basic-deploy.sh -r "westeurope" -n "monaex01" -d "Mona Example 01"

The setup script supports additional optional parameters detailed in the table below. For example, if you wish to deploy Mona into a specific Azure subscription (9897b07c-86fa-4779-92e3-6273664ec722) and resource group (monaex01group), you can run —

# Broken down into multiple lines for readability...

./basic-deploy.sh \
   -r "westeurope" \
   -n "monaex01" \
   -d "Mona Example 01" \
   -g "monaex01group" \
   -s "9897b07c-86fa-4779-92e3-6273664ec722"

Setup script parameters

Switch Name Required Default Notes
-n Deployment name Yes N/A A user-defined, globally-unique name for this Mona SaaS deployment. The deployment name must contain only alphanumeric characters and be 13 characters in length or less.
-r Deployment region Yes N/A The Azure region to which Mona SaaS should be deployed. For a complete list of available regions, run az account list-locations -o table from the Azure CLI (Bash cloud shell). Be sure to use the region's Name, not DisplayName or RegionalDisplayName.
-d Display name No Same as deployment name (-n) A "friendly" display name for this Mona SaaS deployment. If provided, this is also the name of the Azure Active Directory (AAD) app created during setup. While providing this parameter isn't required, it's highly recommended.
-a Existing App Service plan ID No N/A The complete resource ID (i.e., /subscriptions/{subscriptionId}/...) of an existing App Service plan to publish the Mona web app to. If provided, the App Service plan must exist in the same region (see -l) and Azure subscription (see -s) where Mona is being deployed. If not provided, the setup script will automatically provision a new App Service plan (S1) within the same resource group (see -r) where Mona is being deployed. It must also be a Windows-based App Service plan.
-g Deployment Azure resource group name No mona-[deployment name (-n)] The Azure resource group to deploy Mona SaaS into. If the resource group already exists, it must be empty. If the group doesn't exist, it will be automatically created during setup.
-s Deployment Azure subscription ID No The current subscription The ID of the Azure subscription to deploy Mona SaaS into.
-e Subscription event version identifier No Current (2021-10-01) When set, specifies the version of subscription events Mona should publish. Learn more here.
-m Flag - Enable passthrough mode. No N/A When set, configures this Mona deployment to use passthrough mode.
-h Flag - Don't show script splash screen. No N/A When set, the setup script will not display the standard Mona setup splash screen.
-p Flag - Don't publish the web app. No N/A When set, the setup script will provision all Azure and Azure Active Directory reources as usual but won't actually publish the Mona web app.

4. Complete Mona SaaS setup

Once the script is finished, note the information provided in the Mona Deployment Summary. It's strongly recommended to save these values somewhere safe and convenient as you will likely need to refer to them again later.

Locate the setup URL at the very bottom of the script output. It will look similiar to this —

https://mona-web-monaex01.azurewebsites.net/setup

# Where "monaex01" is the Mona deployment name.

Click the URL (it's automatically linked within the cloud shell) to navigate to that site and complete the Mona SaaS setup wizard.

The setup wizard is hosted entirely within your own Mona SaaS deployment so you're aren't sharing any information with Microsoft (or anyone else) at this point.

During your initial setup you may receive a warning indicating that your sign-in is unverified and needs admin approval. If you'd like to resolve this warning please see this section of the FAQ for more info.

5. Finish setting up your offer(s) in Partner Center

Use the Partner Center to configure your offer(s) and begin transacting with Microsoft!

How much does Mona SaaS cost?

Mona SaaS is open source (see our license) and free to use.

Since Mona SaaS is deployed into your Azure environment, the only costs that you're responsible for are those of hosting its supporting Azure resources. These resources include —

Note that free services are not included in this list.

Your actual costs may vary based on the following —

Use the Azure pricing calculator to better understand your unique costs.

For help in forecasting your Mona SaaS costs see this article.

Dependencies

Mona SaaS takes a dependency on the open source Commercial Marketplace .NET Client (commercial-marketplace-client-dotnet). This library's DLL is conveniently included in the Mona SaaS repository.

All other dependencies are automatically satisfied using Nuget during the Mona SaaS setup process. For more information on Mona SaaS' dependencies, check out our dependency graph.

Who supports Mona SaaS?

Please see our support docs for more information.

Security

Please see our security docs for more information.

Considerations and limitations

  • The deployment name (-n setup script switch) mentioned in this section must be globally unique.

How can I contribute?

Please refer to these docs for more information.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

mona-saas's People

Contributors

arsenvlad avatar caseywatson avatar cherchyk avatar dan-leanix avatar dependabot[bot] avatar dickdijkstra1980 avatar halaam avatar jomarvel avatar sopacifi avatar stevek101 avatar tfsjohan 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

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

mona-saas's Issues

[BUG] Setup scripts fails if the resource group already exists

Describe the bug
The setup script fails if the resource group already exists. This is due to a wrong comparison operator here https://github.com/microsoft/mona-saas/blob/main/Mona.SaaS/Mona.SaaS.Setup/basic-deploy.sh#L228

Instead of using -eq it must be ==.

To Reproduce
Steps to reproduce the behavior:

Pre-create a resource group and then run the setup script as described in the README.md.

Expected behavior

Setup script does not fail if the resource group already exists.

User ID is empty when running basic-deploy.sh locally

When running the basic-deploy.sh script locally I get stuck in an infinite loop of login prompt. I discovered that the "id" property does not exists in the Azure CLI (tried both Windows and macOS). The same value is present in a property named "objectId".

current_user_oid=$(az ad signed-in-user show --query id --output tsv 2>/dev/null);

If we decide to allow running the script locally and harden check for dependencies, I think we need to check for both id and objectId to get the user id.

I do not yet know what, if anything, breaks as a result. Just making a note that the property name for user id is different in Cloud Shell and local Azure CLI.

Custom Domain

I want to configure a custom domain en Azure App Services, After I did it, when I am redirect to login page I get this error
Message: AADSTS50011: The redirect URI 'https://XXXXXX/signin-oidc' specified in the request does not match the redirect URIs configured for the application 'YYYYYYYYY'. Is this posible?

[BUG] Bash command depoly Error on: "🏗️ Building Mona web app for deployment to..."

Describe the bug
Trying to deploy mona using de Bash Command ./basic-deploy.sh

To Reproduce
Steps to reproduce the behavior:

  1. Open Cloud Shell on Azure Portal

  2. Run this sequence of commands

    git clone https://github.com/microsoft/mona-saas
    cd ./mona-saas/Mona.SaaS/Mona.SaaS.Setup
    chmod +x ./basic-deploy.sh

  3. Run this command:
    ./basic-deploy.sh -r "eastus" -n "ycareqamona" -d "Azure Marketplace Saas Application Connection - YCare (QA)" -g "ycareqamona" -s "032e2561-xxxx-yyyy-8aef-dde43deec485"

  4. Got this error:
    ....
    ....
    Building Mona web app for deployment to [mona-web-ycaremonaqa]...
    System.IO.IOException: Structure needs cleaning : '/home/luiz/.dotnet'
    at System.IO.FileSystem.CreateDirectory(String fullPath)
    at System.IO.Directory.CreateDirectory(String path)
    at Microsoft.Extensions.EnvironmentAbstractions.DirectoryWrapper.CreateDirectory(String path)
    at Microsoft.DotNet.Configurer.FileSystemExtensions.<>c__DisplayClass0_0.b__0()
    at Microsoft.DotNet.Cli.Utils.FileAccessRetrier.RetryOnIOException(Action action)
    at Microsoft.DotNet.Configurer.FileSystemExtensions.CreateIfNotExists(IFileSystem fileSystem, String filePath)
    at Microsoft.DotNet.Configurer.FileSentinel.Create()
    at Microsoft.DotNet.Configurer.DotnetFirstTimeUseConfigurer.Configure()
    at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(IFirstTimeUseNoticeSentinel firstTimeUseNoticeSentinel, IAspNetCertificateSentinel aspNetCertificateSentinel, IFileSentinel toolPathSentinel, Boolean isDotnetBeingInvokedFromNativeInstaller, DotnetFirstRunConfiguration dotnetFirstRunConfiguration, IEnvironmentProvider environmentProvider, Dictionary`2 performanceMeasurements)
    at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
    at Microsoft.DotNet.Cli.Program.Main(String[] args)
    ./basic-deploy.sh: line 503: cd: ./topublish: No such file or directory

Expected behavior
The deployment should be completed with no errors.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Win10
  • Browser: chrome
  • Version 111.0.5563.111

Additional context
This is a brand new subscription (Microsoft Sponsorship).
Captura de tela 2023-03-27 162127
Captura de tela 2023-03-27 162200
Captura de tela 2023-03-27 162127

[BUG]

Describe the bug
Getting an error in Logic Apps when NumberOfSeats parameter is null. The parse action of the subscription object fails

To Reproduce
Steps to reproduce the behavior:

  1. Create a standard from with a flat fee pricing model
  2. Run the live purchase or cancellation flow (not in test mode)

Expected behavior
The Logic App should run normally and perform any added action

Desktop

  • OS: Windows
  • Browser: Edge

[FEATURE] Cleanup resources on failed install

If setup fails, it would be nice if resources was deleted to make setup more of an atomic operation. It might not be obvious to everyone that you need to remove both the resource groups and the app registration.

[BUG]: Getting 403 when trying to activate subscription in test mode

Describe the bug
I was testing the mona saas framework and while trying to activate the test subscription was getting 403.

To Reproduce
Steps to reproduce the behavior:

  1. In test mode click on "complete the setup" button.
  2. Redirects to configured landing page
  3. Try to call microsoft activate api to activate this subscription:
  4. curl --location --request POST 'https://login.microsoftonline.com/$TENANT_ID/oauth2/token' --form 'grant_type=client_credentials' --form 'resource=20e940b3-4c77-4b0b-9a53-9e16a1b010a7' --form 'client_id=$CLIENT_ID' --form 'client_secret=$CLIENT_SECRET' --form 'scope=20e940b3-4c77-4b0b-9a53-9e16a1b010a7/.default'

I get an access_token as well. But when I use it in my request I get a 403.

curl -X 'POST' -H 'Authorization: $AUTHORIZATION' -H 'X-Ms-Marketplace-Token: '$'X-Ms-Marketplace-Token' 'https://marketplaceapi.microsoft.com/api/saas/subscriptions/${subcriptionId}/activate?api-version=2018-08-31'
5. See error: "The authorization token is invalid, expired, missing or this request is attempting to access a SaaS subscription for an offer that was published with a different Azure AD App ID from the one used to create the authorization token. Please make sure the authorization token is created using the same Azure AD App ID as the Azure AD App ID Id set for the offer in Technical Details tab in Partner Center."

Expected behavior
The activate request in test mode should be successful

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

How use /webhook/test endpoint

I am testing Mona solution and I want to test /webhook/test
I created subscription by test landing page.
Next I want to test one of webhook for example:
Cancel subscription:
https://learn.microsoft.com/en-us/partner-center/marketplace/partner-center-portal/pc-saas-fulfillment-subscription-api#cancel-a-subscription
Url should looks like:
https://[MY MONA DNS]/webhook/test/saas/subscriptions/[SUBSCRIPTION_ID]?api-version=2018-08-31
I try add header "authorization" with "Bearer [ACCESS_TOKEN]" but I still got
image

I am using Postman for requests

[FEATURE] Deployment:IsPassthroughModeEnabled in App Settings

Passthrough Mode is an awesome feature. Even if we're not yet ready to make it the default, I think it should be included in the App Settings of the App Service by default, but has it's value set to false.

That would make it easier to discover and change without having to look up the exact name in the docs.

Deployment:IsPassthroughModeEnabled

[FEATURE] Serverless deployment options

Is your feature request related to a problem? Please describe.
For smaller projects the costs of running an app service and sql server could be more than you'll probably earn from Marketplace in the startup phase. I think it would be useful to use services that can scale to zero.

We might not target small startups, but as someone who has done a lot of zero-budget-projects and sold apps on Apple AppStore, I know that marketplaces can be a super useful service, but I also know that paying minimum $50-$100 / month for something that might not work is too much.

Describe the solution you'd like
An option to deploy to Container Apps or to use Static Web Apps with Azure Function.

Describe alternatives you've considered
Write custom solution with containers or Next Js.

[FEATURE] Deploy MONA from Azure Marketplace

What if we use Azure Marketplace and a Solution Template offer to deploy MONA in the clients subscription?

I do not have a complete plan on how to do this, this this post is a mix of ideas and questions.

Collect information from the user

A createUiDefinition.json file can be used to collect more information from the user, such as options we have both as required and optional in the basic-deploy.sh script.

Deploy ARM template

How much of the CLI commands in basic-deploy.sh can be created with ARM templates and the variables from createUiDefinition?
Is it possible to run a script during deployment of a Marketplace solution, and if so, could we use basic-deploy.sh in a headless mode with arguments collection from createUiDefinition?

Why would it be worth the time?

When I speak to customers, partners and actually even Microsoft employees, they don't see a clear and easy path to get their solutions to Azure Marketplace. If we could make it as simple as a couple of clicks in the Marketplace I believe we can improve the number of solutions in the marketplace, and also show that we eat our own dog food.

– How do you get started with Azure Marketplace?
– Just install it from Azure Marketplace. :)

Let's discuss if this is a good idea and possible for us to achieve.

Issues with running basic-deploy.sh locally

When running in cloud shell, are prereqesuites (zip, az, etc.) are always available but, when running locally, the user may run into problem when running the script if prerequisites are not installed.

We need to harden the setup script that it checks for all prerequisites before attempting to set up Mona.

[BUG] Stuck in Login loop

Describe the bug
When running ./basic-deploy I'm stuck in a loop where I need to login. First I got this message:

A web browser has been opened at https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize. Please continue the login in the web browser. If no web browser is available or if the web browser fails to open, use device code flow with `az login --use-device-code`.
The following tenants don't contain accessible subscriptions. Use 'az login --allow-no-subscriptions' to have tenant level access.
b89759cb-5739-4d4f-aba7-d8c17cbc2d9d 'Aktieguiden'
d4411231-0e72-43bc-9fa7-21b96e017c35 'Aktieguiden'

How ever, none of these are my set tenant when using az account show. I tried to delete these from Azure Portal since they're not used anymore. But, this did not fix the problem. I'm still stuck in the same loop of logins.

To Reproduce
Steps to reproduce the behavior:
I get the error when running ./basic-deploy.sh -r "swedencentral" -n "superuniquename" -d "My super good name" -s "xxxxxx"

Desktop (please complete the following information):
macOS

Output from script

[cloudqrmona  ]> Checking Mona setup prerequisites...
[cloudqrmona  ]> ✔   Azure CLI installed.
[cloudqrmona  ]> ✔   .NET installed.
[cloudqrmona  ]> ✔   All Mona setup prerequisites installed.
[cloudqrmona  ]> ✔   [swedencentral] is a valid Azure region (Sweden Central).
[cloudqrmona  ]> ✔   [2021-10-01] subscription event version is supported.
[cloudqrmona  ]> ✔   [en] language is supported.
A web browser has been opened at https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize. Please continue the login in the web browser. If no web browser is available or if the web browser fails to open, use device code flow with `az login --use-device-code`.
[
  {
    "cloudName": "AzureCloud",
    "homeTenantId": "xxxxx",
    "id": "xxxxx",
    "isDefault": true,
    "managedByTenants": [],
    "name": "Visual Studio Enterprise Subscription",
    "state": "Enabled",
    "tenantId": "xxxxx",
    "user": {
      "name": "[email protected]",
      "type": "user"
    }
  }
]

[BUG] Acess denied when accessing /Setup

I have successfully ran basic-deploy.sh and got the URL's for the landing page. I visit the /setup url and login with the same account that ran basic-deploy.sh.

I still get the Access Denied page.

image

I've no tried this with to completely different Microsoft account.

Any ideas why I get this error?

[FEATURE] Multiple Azure AD App Registration instead of one

As far as I understand, Mona is using only one Azure AD App Registration for multiple purposes:

  • Communication with Marketplace APIs
  • Single-tenant SSO for admin(s)

Wouldn't it make sense to separate that in several Azure AD App Registrations and to allow the use of existing App Registration during setup instead of creating new one?

[BUG] Access denied for guest users

Describe the bug
A clear and concise description of what the bug is.
If you have a guest account and try to access any page , returns an Access Denied.

To Reproduce
Steps to reproduce the behavior:

  1. Create a guest account in your tenant
  2. Add the Mona Administrator role to the user
  3. Log in with your guest email credentials
  4. Receives Access Denied page

Expected behavior
A clear and concise description of what you expected to happen.
Expected to be able to access the page
Screenshots
image

Desktop (please complete the following information):

  • OS: windows 10
  • Browser Chrome
  • Version 106.0.5249.119

Additional context
Add any other context about the problem here.

[BUG] : We were unable to get your subscription information

When purchasing a solution the confirmation page of mona cannot find subscription information anymore.

Mona version 1.0.3.

We had are running the clean version in production.

To Reproduce
Steps to reproduce the behavior:
buy the solution
click on configure the account.
An error page is showed

Expected behavior
Go the the confirmation page

the Test page of mona is working well.

this

Screenshots
image

[BUG] lp=$1 breaks if condition checking for requirements

Describe the bug
The lp=$1 assignment in the checks breaks the if statement that follows afterwards. For instance, https://github.com/microsoft/mona-saas/blob/main/Mona.SaaS/Mona.SaaS.Setup/basic-deploy.sh#L29-L35

The if statement always returns 0 for the latest status code as lp=$1 directly runs after dotnet --version >/dev/null 2>&1 and always succeeds with exit code 0.

Hence, my initial setup failed to compile and upload the .NET application to the Azure Web App as .NET is missing on my MacBook.

To Reproduce
Have a MacBook without .NET installed. The pre-check will return true that .NET is installed instead of aborting the setup.

Expected behavior
That the setup script fails if I do not meet the prerequisites.

[BUG] AAD Application publisher verification

Describe the bug
AAD App registration multi tenant authentication not working without publisher verification of the automatically created AAD app. Had to find this through trial and error no where in the documentation this is mentioned.
Screenshot 2023-03-03 at 11 36 31

[BUG] Azure resources created by MONA not showing up on web control panel

Describe the bug
We're doing some tests to deploy a solution on Azure Marketplace and followed the instructions for setting up MONA SaaS.

We checked via the command line interface that the MONA resources (resource groups, app plans, app service, storage account etc.) were deployed correctly and the solution is working. However, those same resources do not show up when you access the Azure control panel via web.

To Reproduce
Steps to reproduce the behavior:

  1. Follow the MONA setup instructions on https://github.com/microsoft/mona-saas
  2. Check via Azure CLI that resources were deployed
  3. Access the Azure subscription control panel via web
  4. Deployed resources do not appear on the control panel

Expected behavior
Resources deployed by MONA should appear on the web control panel.

Desktop (please complete the following information):

  • OS: Windows 11 (build 22621.1848)
  • Browser: Chrome (114.0.5735.198)
  • Azure CLI: 2.41.0

[FEATURE] Check valid region before setup

Mona cannot be installed in all regions. For instance, when trying to install in Sweden Central you get this error:

{"status":"Failed","error":{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"BadRequest","message":"{\r\n \"error\": {\r\n \"code\": \"BadRequest\",\r\n \"message\": \"Region doesn't support Classic resource mode for Application Insights resources. Please use Workspace-based mode.\",\r\n \"innererror\": {\r\n \"trace\": [\r\n \"System.ArgumentException\"\r\n ]\r\n }\r\n }\r\n}"}]}}

Would it be possible to either check before setup starts if the region support required Classic Resource Mode, or avoid this Classic Mode?

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.