public override async Task <string> GetInputFormSchemaAsync()
    {
        var json = await TeamCloudForm.GetFormSchemaAsync <AzureResourceManagerData>()
                   .ConfigureAwait(false);

        return(json.ToString(Newtonsoft.Json.Formatting.None));
    }
    public async Task GetFormJsonAsync()
    {
        var formJson = await TeamCloudForm
                       .GetFormSchemaAsync <SimpleFormData>()
                       .ConfigureAwait(false);

        Assert.NotNull(formJson);
    }
    public override async Task <string> GetInputDataSchemaAsync()
    {
        var json = await TeamCloudForm.GetDataSchemaAsync <AzureResourceManagerData>(true)
                   .ConfigureAwait(false);

        await Task.WhenAll
        (
            EnhanceSubscriptionIdsAsync(),
            EnhanceManagementGroupIdAsync()

        ).ConfigureAwait(false);

        return(json.ToString(Newtonsoft.Json.Formatting.None));

        async Task EnhanceSubscriptionIdsAsync()
        {
            var session = await azureResourceService.AzureSessionService
                          .CreateSessionAsync()
                          .ConfigureAwait(false);

            var subscriptions = await session.Subscriptions
                                .ListAsync(loadAllPages : true)
                                .ConfigureAwait(false);

            if (subscriptions.Any() && json.TrySelectToken("$..properties.subscriptionIds.items", out var subscriptionIdsToken))
            {
                subscriptionIdsToken["enum"]      = new JArray(subscriptions.OrderBy(s => s.DisplayName).Select(s => s.SubscriptionId));
                subscriptionIdsToken["enumNames"] = new JArray(subscriptions.OrderBy(s => s.DisplayName).Select(s => s.DisplayName));
                ((JToken)subscriptionIdsToken.Parent.Parent)["uniqueItems"] = new JValue(true);
            }
        }

        async Task EnhanceManagementGroupIdAsync()
        {
            var client = await azureResourceService.AzureSessionService
                         .CreateClientAsync <ManagementGroupsAPIClient>()
                         .ConfigureAwait(false);

            var managementGroupPage = await client.ManagementGroups
                                      .ListAsync()
                                      .ConfigureAwait(false);

            var managementGroups = await managementGroupPage
                                   .AsContinuousCollectionAsync(nextPageLink => client.ManagementGroups.ListNextAsync(nextPageLink))
                                   .ToListAsync()
                                   .ConfigureAwait(false);

            if (managementGroups.Any() && json.TrySelectToken("$..properties.managementGroupId", out var managementGroupToken))
            {
                managementGroupToken["enum"]      = new JArray(managementGroups.OrderBy(mg => mg.DisplayName).Select(mg => mg.Id));
                managementGroupToken["enumNames"] = new JArray(managementGroups.OrderBy(mg => mg.DisplayName).Select(mg => mg.DisplayName));
            }
        }
    }
Example #4
0
 public override Task <string> GetInputFormSchemaAsync()
 => TeamCloudForm.GetFormSchemaAsync <GitHubData>()
 .ContinueWith(t => t.Result.ToString(), TaskContinuationOptions.OnlyOnRanToCompletion);