func()

in pkg/infrastructure/authorizationCheckers/ARMTemplateWhatIf/armTemplateWhatIfAuthorizationChecker.go [74:128]


func (a *armWhatIfConfig) CreateEmptyDeployment(client *http.Client, deploymentName string, bearerToken string, mpfConfig domain.MPFConfig) error {
	var deploymentUri string
	if a.armConfig.SubscriptionScoped {
		deploymentUri = fmt.Sprintf("https://management.azure.com/subscriptions/%s/providers/Microsoft.Resources/deployments/%s?api-version=2021-04-01", mpfConfig.SubscriptionID, deploymentName)
	} else {
		deploymentUri = fmt.Sprintf("https://management.azure.com/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Resources/deployments/%s?api-version=2020-10-01", mpfConfig.SubscriptionID, mpfConfig.ResourceGroup.ResourceGroupName, deploymentName)
	}

	log.Info("Creating empty deployment...")
	log.Debug(deploymentUri)

	emptyTempl, err := mpfSharedUtils.ReadJson("../samples/templates/empty.json")
	if err != nil {
		return err
	}

	emptyTemplStdFmtMap := map[string]interface{}{
		"properties": map[string]interface{}{
			"mode":       "Incremental",
			"template":   emptyTempl,
			"parameters": map[string]interface{}{},
		},
	}

	// convert bodyJSON to string
	emptyTemplJSONBytes, err := json.Marshal(emptyTemplStdFmtMap)
	if err != nil {
		return err
	}

	emptyDeploymentJSONString := string(emptyTemplJSONBytes)

	deploymentReq, err := http.NewRequest("PUT", deploymentUri, bytes.NewBufferString(emptyDeploymentJSONString))
	if err != nil {
		return err
	}
	deploymentReq.Header.Set("Content-Type", "application/json")
	deploymentReq.Header.Set("Accept", "application/json")
	deploymentReq.Header.Set("User-Agent", "Go HTTP Client")

	// add bearer token to header
	deploymentReq.Header.Add("Authorization", "Bearer "+bearerToken)

	log.Debugf("%v", deploymentReq)

	// make deploymentReq
	deploymentResp, err := client.Do(deploymentReq)
	if err != nil {
		return err
	}
	log.Debugf("%v", deploymentResp)
	defer deploymentResp.Body.Close()

	return nil
}