Skip to content

Commit

Permalink
support azapi on terraform-plugin-framework
Browse files Browse the repository at this point in the history
  • Loading branch information
ms-henglu committed Mar 12, 2024
1 parent 9e9cb37 commit 43b2ca7
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 3 deletions.
10 changes: 7 additions & 3 deletions provider/azapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ import (

var _ Provider = AzAPIProvider{}

var r = regexp.MustCompile(`Live traffic: (.+): timestamp`)
var r1 = regexp.MustCompile(`Live traffic: (.+): timestamp`)
var r2 = regexp.MustCompile(`Live traffic: (.+)`)

type AzAPIProvider struct {
}
Expand All @@ -23,9 +24,12 @@ func (a AzAPIProvider) IsTrafficTrace(l rawlog.RawLog) bool {
}

func (a AzAPIProvider) ParseTraffic(l rawlog.RawLog) (*types.RequestTrace, error) {
matches := r.FindAllStringSubmatch(l.Message, -1)
matches := r1.FindAllStringSubmatch(l.Message, -1)
if len(matches) == 0 || len(matches[0]) != 2 {
return nil, fmt.Errorf("failed to parse request trace, no matches found")
matches = r2.FindAllStringSubmatch(l.Message, -1)
if len(matches) == 0 || len(matches[0]) != 2 {
return nil, fmt.Errorf("failed to parse request trace, no matches found")
}
}
trafficJson := matches[0][1]
var liveTraffic traffic
Expand Down
36 changes: 36 additions & 0 deletions provider/azapi_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,42 @@ func TestAzAPIProvider_ParseTraffic(t *testing.T) {
log string
want types.RequestTrace
}{
{
name: "azapi GET request trace",
log: `2023-09-15T13:40:31.447+0800 [DEBUG] provider.terraform-provider-azapi: Live traffic: {"request":{"headers":{"Accept":"application/json","User-Agent":"HashiCorp Terraform/1.5.2 (+https://www.terraform.io) Terraform Plugin SDK/2.8.0 terraform-provider-azapi/dev pid-222c6c49-1b0a-5959-a213-6608f9eb8820","X-Ms-Correlation-Request-Id":"ea90befd-41e6-0f04-a1e5-3be4d56632cc"},"method":"GET","url":"https://management.azure.com/subscriptions/******/resourceGroups/henglu915?api-version=2023-07-01","body":""},"response":{"statusCode":200,"headers":{"Cache-Control":"no-cache","Content-Type":"application/json; charset=utf-8","Date":"Fri, 15 Sep 2023 05:40:30 GMT","Expires":"-1","Pragma":"no-cache","Strict-Transport-Security":"max-age=31536000; includeSubDomains","Vary":"Accept-Encoding","X-Content-Type-Options":"nosniff","X-Ms-Correlation-Request-Id":"ea90befd-41e6-0f04-a1e5-3be4d56632cc","X-Ms-Ratelimit-Remaining-Subscription-Reads":"11999","X-Ms-Request-Id":"04ae0566-5067-4114-816c-1dace25a7b65","X-Ms-Routing-Request-Id":"SOUTHEASTASIA:20230915T054031Z:04ae0566-5067-4114-816c-1dace25a7b65"},"body":"{\"id\":\"/subscriptions/******/resourceGroups/henglu915\",\"name\":\"henglu915\",\"type\":\"Microsoft.Resources/resourceGroups\",\"location\":\"westus\",\"properties\":{\"provisioningState\":\"Succeeded\"}}"}}`,
want: types.RequestTrace{
Provider: "azapi",
Method: "GET",
Host: "management.azure.com",
Url: "/subscriptions/******/resourceGroups/henglu915?api-version=2023-07-01",
StatusCode: 200,
Request: &types.HttpRequest{
Headers: map[string]string{
"Accept": "application/json",
"User-Agent": "HashiCorp Terraform/1.5.2 (+https://www.terraform.io) Terraform Plugin SDK/2.8.0 terraform-provider-azapi/dev pid-222c6c49-1b0a-5959-a213-6608f9eb8820",
"X-Ms-Correlation-Request-Id": "ea90befd-41e6-0f04-a1e5-3be4d56632cc",
},
Body: "",
},
Response: &types.HttpResponse{
Headers: map[string]string{
"Cache-Control": "no-cache",
"Content-Type": "application/json; charset=utf-8",
"Date": "Fri, 15 Sep 2023 05:40:30 GMT",
"Expires": "-1",
"Pragma": "no-cache",
"Strict-Transport-Security": "max-age=31536000; includeSubDomains",
"Vary": "Accept-Encoding",
"X-Content-Type-Options": "nosniff",
"X-Ms-Correlation-Request-Id": "ea90befd-41e6-0f04-a1e5-3be4d56632cc",
"X-Ms-Ratelimit-Remaining-Subscription-Reads": "11999",
"X-Ms-Request-Id": "04ae0566-5067-4114-816c-1dace25a7b65",
"X-Ms-Routing-Request-Id": "SOUTHEASTASIA:20230915T054031Z:04ae0566-5067-4114-816c-1dace25a7b65",
},
Body: "{\"id\":\"/subscriptions/******/resourceGroups/henglu915\",\"name\":\"henglu915\",\"type\":\"Microsoft.Resources/resourceGroups\",\"location\":\"westus\",\"properties\":{\"provisioningState\":\"Succeeded\"}}",
},
},
},
{
name: "azapi GET request trace",
log: `2023-09-15T13:40:31.447+0800 [DEBUG] provider.terraform-provider-azapi: Live traffic: {"request":{"headers":{"Accept":"application/json","User-Agent":"HashiCorp Terraform/1.5.2 (+https://www.terraform.io) Terraform Plugin SDK/2.8.0 terraform-provider-azapi/dev pid-222c6c49-1b0a-5959-a213-6608f9eb8820","X-Ms-Correlation-Request-Id":"ea90befd-41e6-0f04-a1e5-3be4d56632cc"},"method":"GET","url":"https://management.azure.com/subscriptions/******/resourceGroups/henglu915?api-version=2023-07-01","body":""},"response":{"statusCode":200,"headers":{"Cache-Control":"no-cache","Content-Type":"application/json; charset=utf-8","Date":"Fri, 15 Sep 2023 05:40:30 GMT","Expires":"-1","Pragma":"no-cache","Strict-Transport-Security":"max-age=31536000; includeSubDomains","Vary":"Accept-Encoding","X-Content-Type-Options":"nosniff","X-Ms-Correlation-Request-Id":"ea90befd-41e6-0f04-a1e5-3be4d56632cc","X-Ms-Ratelimit-Remaining-Subscription-Reads":"11999","X-Ms-Request-Id":"04ae0566-5067-4114-816c-1dace25a7b65","X-Ms-Routing-Request-Id":"SOUTHEASTASIA:20230915T054031Z:04ae0566-5067-4114-816c-1dace25a7b65"},"body":"{\"id\":\"/subscriptions/******/resourceGroups/henglu915\",\"name\":\"henglu915\",\"type\":\"Microsoft.Resources/resourceGroups\",\"location\":\"westus\",\"properties\":{\"provisioningState\":\"Succeeded\"}}"}}: timestamp=2023-09-15T13:40:31.447+0800`,
Expand Down

0 comments on commit 43b2ca7

Please sign in to comment.