self.showDialog = function()

in plugin-azure-server/src/main/resources/buildServerResources/images.vm.js [715:834]


  self.showDialog = function (data) {
    if (!self.isValidCredentials() || self.loadingSubscriptions() || self.loadingRegions()) {
      return false;
    }

    self.originalImage = data;

    var model = self.image();
    var image = data || {
      deployTarget: deployTargets.specificGroup,
      groupId: self.getResourceGroup(),
      imageType: imageTypes.container,
      imageId: "jetbrains/teamcity-agent",
      vmNamePrefix: "tc-agent",
      osType: osTypes.linux,
      maxInstances: 1,
      numberCores: 2,
      memory: 2,
      customEnvironmentVariables: "",
      customTags: "",
      spotVm: false,
      enableSpotPrice: false,
      spotPrice: spotPriceDefault * priceDivider,
      userAssignedIdentity: "",
      systemAssignedIdentity: false,
    };

    // Pre-fill collections while loading resources
    var imageId = image.imageId;
    if (imageId
      && (image.imageType === imageTypes.image || image.imageType === imageTypes.galleryImage)
      && !ko.utils.arrayFirst(self.sourceImages(), function (item) {
        return item.id === imageId;
      })) {
      self.sourceImages([{
        id: imageId,
        text: image.imageType === imageTypes.image ? self.getFileName(imageId) : self.getGalleryImageName(imageId),
        osType: image.osType,
        isGalleryImage: image.imageType === imageTypes.galleryImage
      }]);
    }

    var instanceId = image.instanceId;
    if (instanceId && !ko.utils.arrayFirst(self.instances(), function (item) {
        return item.id === instanceId;
      })) {
      self.instances([{id: instanceId, text: self.getFileName(instanceId)}]);
    }

    var vmSize = image.vmSize;
    if (vmSize && self.vmSizes.indexOf(vmSize) < 0) {
      self.vmSizes([vmSize]);
    }

    var networkId = image.networkId;
    if (networkId && self.networks.indexOf(networkId) < 0) {
      self.networks([networkId]);
      var subNetworks = [image.subnetId];
      self.nets[networkId] = subNetworks;
      self.subNetworks(subNetworks);
    }

    var storageAccount = image.storageAccount;
    if (storageAccount && self.storageAccounts.indexOf(storageAccount) < 0) {
      self.storageAccounts([storageAccount]);
    }

    model.deployTarget(image.deployTarget || deployTargets.newGroup);
    model.region(image.region);
    model.groupId(image.groupId);
    model.imageType(image.imageType || imageTypes.vhd);
    model.imageUrl(image.imageUrl);
    model.imageId(imageId);
    model.instanceId(instanceId);
    model.osType(image.osType);
    model.networkId(networkId);
    model.subnetId(image.subnetId);
    model.vmSize(vmSize);
    model.numberCores(image.numberCores);
    model.memory(image.memory);
    model.registryUsername(image.registryUsername);
    model.maxInstances(image.maxInstances);
    model.vmNamePrefix(image.vmNamePrefix);
    model.vmPublicIp(image.vmPublicIp);
    model.vmUsername(image.vmUsername);
    model.reuseVm(image.reuseVm);
    model.storageAccount(storageAccount);
    model.storageAccountType(image.storageAccountType);
    model.template(image.template);
    model.agentPoolId(image.agentPoolId);
    model.profileId(image.profileId);
    model.customEnvironmentVariables(image.customEnvironmentVariables);
    model.customTags(image.customTags);
    model.spotVm(image.spotVm);
    model.enableSpotPrice(image.enableSpotPrice);
    model.spotPrice(image.spotPrice != null ? image.spotPrice/priceDivider : undefined);
    model.enableAcceleratedNetworking(image.enableAcceleratedNetworking);
    model.disableTemplateModification(image.disableTemplateModification);
    model.userAssignedIdentity(image.userAssignedIdentity);
    model.enableSystemAssignedIdentity(image.enableSystemAssignedIdentity);

    model.registryPassword("");
    model.vmPassword("");
    if (image.deployTarget !== deployTargets.instance) {
      if (image.groupId !== null) {
        if (image.imageType === imageTypes.container) {
          model.registryPassword(azurePassStub);
        } else {
          model.vmPassword(azurePassStub);
        }
      }
    }

    self.image.errors.showAllMessages(false);
    ko.validation.group(self.image().vmNamePrefix).showAllMessages();

    dialog.showDialog(!self.originalImage);

    return false;
  };