public async createProject()

in src/resourceExplorers/BlockchainDataManagerResourceExplorer.ts [83:126]


  public async createProject(
    consortiumResourceExplorer: ConsortiumResourceExplorer,
    createConsortiumCallback: (consortium: AzureBlockchainProject) => Promise<void>,
    azureClient?: AzureBlockchainServiceClient,
    subscriptionItem?: SubscriptionItem,
    resourceGroupItem?: ResourceGroupItem)
  : Promise<BlockchainDataManagerProject> {
    Telemetry.sendEvent('BlockchainDataManagerResourceExplorer.createProject');
    await this.waitForLogin();

    if (!azureClient || !subscriptionItem) {
      subscriptionItem = await this.getOrSelectSubscriptionItem();
      resourceGroupItem = await this.getOrCreateResourceGroupItem(subscriptionItem);
      azureClient = await this.getAzureClient(subscriptionItem, resourceGroupItem);
    }

    const eventGridClient = await this.getEventGridClient(subscriptionItem, resourceGroupItem as ResourceGroupItem);
    const selectedConsortium = await this.getSelectedConsortium(consortiumResourceExplorer, azureClient);

    if (!(selectedConsortium instanceof ConsortiumItem)) {
      const child = await consortiumResourceExplorer
        .createAzureConsortium(azureClient, subscriptionItem, Constants.availableBlockchainDataManagerLocations);
      await createConsortiumCallback(child);

      Telemetry.sendEvent('BlockchainDataManagerResourceExplorer.createProject.createAzureBlockchainProject');
      throw new CancellationEvent();
    }

    const selectedMember =
      await this.getSelectedMember(consortiumResourceExplorer, azureClient, selectedConsortium.memberName);
    const bdmItems = await azureClient.bdmResource.getBlockchainDataManagerList();
    const selectedTransactionNode =
      await this.getSelectedTransactionNode(azureClient, bdmItems, selectedMember.label, selectedConsortium.location);

    const selectedEventGrid = await this.getSelectedEventGrid(eventGridClient, selectedConsortium.location);

    return this.createBlockchainDataManagerInstance(
      azureClient,
      bdmItems,
      selectedConsortium.location,
      selectedMember.label,
      Constants.getTransactionNodeName(selectedMember.label, selectedTransactionNode.transactionNodeName),
      selectedEventGrid.url);
  }