public async Task CreateDeploymentsUsingJsonElement() { #region Snippet:Managing_Deployments_CreateADeploymentUsingJsonElement // First we need to get the deployment collection from the resource group ArmDeploymentCollection ArmDeploymentCollection = resourceGroup.GetArmDeployments(); // Use the same location as the resource group string deploymentName = "myDeployment"; // Create a parameter object var parametersObject = new { storageAccountType = new { value = "Standard_GRS" } }; //convert this object to JsonElement var parametersString = JsonSerializer.Serialize(parametersObject); var parameters = JsonDocument.Parse(parametersString).RootElement; var input = new ArmDeploymentContent(new ArmDeploymentProperties(ArmDeploymentMode.Incremental) { TemplateLink = new ArmDeploymentTemplateLink() { Uri = new Uri("https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json") }, Parameters = BinaryData.FromString(parameters.GetRawText()) }); ArmOperation <ArmDeploymentResource> lro = await ArmDeploymentCollection.CreateOrUpdateAsync(WaitUntil.Completed, deploymentName, input); ArmDeploymentResource deployment = lro.Value; #endregion Snippet:Managing_Deployments_CreateADeployment }
public async Task CreateDeployments() { #region Snippet:Managing_Deployments_CreateADeployment // First we need to get the deployment collection from the resource group ArmDeploymentCollection ArmDeploymentCollection = resourceGroup.GetArmDeployments(); // Use the same location as the resource group string deploymentName = "myDeployment"; var input = new ArmDeploymentContent(new ArmDeploymentProperties(ArmDeploymentMode.Incremental) { TemplateLink = new ArmDeploymentTemplateLink() { Uri = new Uri("https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json") }, Parameters = BinaryData.FromObjectAsJson(new JsonObject() { { "storageAccountType", new JsonObject() { { "value", "Standard_GRS" } } } }) }); ArmOperation <ArmDeploymentResource> lro = await ArmDeploymentCollection.CreateOrUpdateAsync(WaitUntil.Completed, deploymentName, input); ArmDeploymentResource deployment = lro.Value; #endregion Snippet:Managing_Deployments_CreateADeployment }
public async Task CreateDeploymentsUsingString() { #region Snippet:Managing_Deployments_CreateADeploymentUsingString // First we need to get the deployment collection from the resource group ArmDeploymentCollection ArmDeploymentCollection = resourceGroup.GetArmDeployments(); // Use the same location as the resource group string deploymentName = "myDeployment"; // Passing string to template and parameters var input = new ArmDeploymentContent(new ArmDeploymentProperties(ArmDeploymentMode.Incremental) { Template = BinaryData.FromString(File.ReadAllText("storage-template.json")), Parameters = BinaryData.FromString(File.ReadAllText("storage-parameters.json")) }); ArmOperation <ArmDeploymentResource> lro = await ArmDeploymentCollection.CreateOrUpdateAsync(WaitUntil.Completed, deploymentName, input); ArmDeploymentResource deployment = lro.Value; #endregion Snippet:Managing_Deployments_CreateADeployment }
public static async Task <bool> SubmitDeployment(string subscriptionId, string resourceGroupName, string templateFileContents, string parameters, string deploymentName) { try { var sub = GetSubscriptionResource(subscriptionId); var rg = GetResourceGroup(sub, resourceGroupName); var deployments = rg.GetArmDeployments(); var input = new ArmDeploymentContent(new ArmDeploymentProperties(ArmDeploymentMode.Incremental) { Template = BinaryData.FromString(templateFileContents), Parameters = BinaryData.FromString(parameters) }); ArmOperation <ArmDeploymentResource> lro = await deployments.CreateOrUpdateAsync(WaitUntil.Completed, deploymentName, input); ArmDeploymentResource dep = lro.Value; return(true); } catch (Exception exe) { log.LogError($"Deployment '{deploymentName}' failed. {exe.Message}"); return(false); } }
public virtual ArmOperation <ArmDeploymentResource> CreateOrUpdate(WaitUntil waitUntil, string deploymentName, ArmDeploymentContent content, CancellationToken cancellationToken = default) { Argument.AssertNotNullOrEmpty(deploymentName, nameof(deploymentName)); Argument.AssertNotNull(content, nameof(content)); using var scope = _armDeploymentDeploymentsClientDiagnostics.CreateScope("ArmDeploymentCollection.CreateOrUpdate"); scope.Start(); try { var response = _armDeploymentDeploymentsRestClient.CreateOrUpdateAtScope(Id, deploymentName, content, cancellationToken); var operation = new ResourcesArmOperation <ArmDeploymentResource>(new ArmDeploymentOperationSource(Client), _armDeploymentDeploymentsClientDiagnostics, Pipeline, _armDeploymentDeploymentsRestClient.CreateCreateOrUpdateAtScopeRequest(Id, deploymentName, content).Request, response, OperationFinalStateVia.Location); if (waitUntil == WaitUntil.Completed) { operation.WaitForCompletion(cancellationToken); } return(operation); } catch (Exception e) { scope.Failed(e); throw; } }
/// <summary> /// Starts a deployment at provided target scope and returns <see cref="BicepDeploymentStartResponse"/>. /// </summary> /// <param name="deploymentCollectionProvider">deployment collection provider</param> /// <param name="armClient">arm client</param> /// <param name="documentPath">path to bicep file used in deployment</param> /// <param name="template">template used in deployment</param> /// <param name="parametersFilePath">path to parameter file used in deployment</param> /// <param name="id">id string to create the ResourceIdentifier from</param> /// <param name="scope">target scope</param> /// <param name="location">location to store the deployment data</param> /// <param name="deploymentId">deployment id</param> /// <param name="parametersFileName">parameters file name</param> /// <param name="parametersFileUpdateOption"><see cref="ParametersFileUpdateOption"/>update, create or overwrite parameters file</param> /// <param name="updatedDeploymentParameters">parameters that were updated during deployment flow</param> /// <param name="portalUrl">azure management portal URL</param> /// <param name="deploymentName">deployment name</param> /// <param name="deploymentOperationsCache">deployment operations cache that needs to be updated</param> /// <returns><see cref="BicepDeploymentStartResponse"/></returns> public static async Task <BicepDeploymentStartResponse> StartDeploymentAsync( IDeploymentCollectionProvider deploymentCollectionProvider, ArmClient armClient, string documentPath, string template, string parametersFilePath, string id, string scope, string location, string deploymentId, string parametersFileName, ParametersFileUpdateOption parametersFileUpdateOption, List <BicepUpdatedDeploymentParameter> updatedDeploymentParameters, string portalUrl, string deploymentName, IDeploymentOperationsCache deploymentOperationsCache) { if ((scope == LanguageConstants.TargetScopeTypeSubscription || scope == LanguageConstants.TargetScopeTypeManagementGroup) && string.IsNullOrWhiteSpace(location)) { return(new BicepDeploymentStartResponse(false, string.Format(LangServerResources.MissingLocationDeploymentFailedMessage, documentPath), null)); } ArmDeploymentCollection?deploymentCollection; var resourceIdentifier = new ResourceIdentifier(id); try { deploymentCollection = deploymentCollectionProvider.GetDeploymentCollection(armClient, resourceIdentifier, scope); } catch (Exception e) { return(new BicepDeploymentStartResponse(false, string.Format(LangServerResources.DeploymentFailedWithExceptionMessage, documentPath, e.Message), null)); } if (deploymentCollection is not null) { JsonElement parameters; try { var updatedParametersFileContents = DeploymentParametersHelper.GetUpdatedParametersFileContents(documentPath, parametersFileName, parametersFilePath, parametersFileUpdateOption, updatedDeploymentParameters); parameters = JsonElementFactory.CreateElement(updatedParametersFileContents); } catch (Exception e) { return(new BicepDeploymentStartResponse(false, e.Message, null)); } var deploymentProperties = new ArmDeploymentProperties(ArmDeploymentMode.Incremental) { Template = new BinaryData(JsonDocument.Parse(template).RootElement), Parameters = new BinaryData(parameters) }; var armDeploymentContent = new ArmDeploymentContent(deploymentProperties) { Location = location, }; try { var deploymentOperation = await deploymentCollection.CreateOrUpdateAsync(WaitUntil.Started, deploymentName, armDeploymentContent); if (deploymentOperation is null) { return(new BicepDeploymentStartResponse(false, string.Format(LangServerResources.DeploymentFailedMessage, documentPath), null)); } deploymentOperationsCache.CacheDeploymentOperation(deploymentId, deploymentOperation); var linkToDeploymentInAzurePortal = GetLinkToDeploymentInAzurePortal(portalUrl, id, deploymentName); return(new BicepDeploymentStartResponse( true, string.Format(LangServerResources.DeploymentStartedMessage, documentPath), string.Format(LangServerResources.ViewDeploymentInPortalMessage, linkToDeploymentInAzurePortal))); } catch (Exception e) { return(new BicepDeploymentStartResponse(false, string.Format(LangServerResources.DeploymentFailedWithExceptionMessage, documentPath, e.Message), null)); } } return(new BicepDeploymentStartResponse(false, string.Format(LangServerResources.DeploymentFailedMessage, documentPath), null)); }