self.saveImage = function()

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


  self.saveImage = function () {
    var model = self.image();
    var image = {
      deployTarget: model.deployTarget(),
      groupId: model.groupId(),
      region: model.region(),
      imageType: model.imageType(),
      imageUrl: model.imageUrl(),
      imageId: model.imageId(),
      instanceId: model.instanceId(),
      osType: model.osType(),
      networkId: model.networkId(),
      subnetId: model.subnetId(),
      maxInstances: model.maxInstances(),
      vmNamePrefix: model.vmNamePrefix(),
      vmPublicIp: model.vmPublicIp(),
      vmSize: model.vmSize(),
      numberCores: model.numberCores(),
      memory: model.memory(),
      registryUsername: model.registryUsername(),
      vmUsername: model.vmUsername(),
      reuseVm: model.reuseVm(),
      storageAccount: model.storageAccount(),
      storageAccountType: model.storageAccountType(),
      template: model.template(),
      agentPoolId: model.agentPoolId(),
      profileId: model.profileId(),
      customEnvironmentVariables: model.customEnvironmentVariables(),
      customTags: model.customTags(),
      spotVm: model.spotVm(),
      enableSpotPrice: model.enableSpotPrice(),
      spotPrice: model.spotPrice() != null ? Math.trunc(parseFloat(model.spotPrice())*priceDivider) : undefined,
      enableAcceleratedNetworking: model.enableAcceleratedNetworking(),
      disableTemplateModification: model.disableTemplateModification(),
      userAssignedIdentity: model.userAssignedIdentity(),
      enableSystemAssignedIdentity: model.enableSystemAssignedIdentity(),
    };

    let pass;
    if (image.imageType === imageTypes.container) {
      pass = model.registryPassword();
    } else {
      pass = model.vmPassword();
    }

    const finishImageModification = () => {
      var originalImage = self.originalImage;
      if (originalImage) {
        self.images.replace(originalImage, image);
        self.vmNamePrefixes.delete(originalImage.vmNamePrefix);
      } else {
        self.images.push(image);
      }

      self.images_data(JSON.stringify(self.images()));
      self.vmNamePrefixes.add(image.vmNamePrefix);

      dialog.close();
    };

    if (pass !== azurePassStub) {
      $.post(config.updateImageRequestPath, {
        "prop:vmNamePrefix": self.image().vmNamePrefix,
        "prop:encrypted:secure:password": encryptData(pass),
        "prop:imageUpdateType": "upsert",
        "prop:encrypted:secure:passwords_data": self.passwords_data()
      }).then(function (response) {
        const $response = $j(response);
        const data = $response.find("passwords_data").text();
        self.passwords_data(data);

        const errors = getErrors($response);
        if (errors) {
          alert("Failed to update image data: " + errors);
          return;
        }

        finishImageModification();
      });
    } else {
      finishImageModification();
    }

    return false;
  };