1
1
import requests
2
2
import pandas as pd
3
- from utils .azure_auth import get_token
4
3
from utils .pub_service import send_slack_message
4
+ from utils .azure_auth import get_sps_token_and_subscriptions
5
5
6
+ pd .set_option ('future.no_silent_downcasting' , True )
6
7
7
- def get_data (token , skip_token , retry = 3 ):
8
+ def get_data (sps_token , skip_token , retry = 3 ):
8
9
try :
10
+ headers = {
11
+ "Authorization" : f"Bearer { sps_token } " ,
12
+ }
9
13
data = requests .post (
10
- "https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2021-03 -01" , headers = {
11
- "Authorization" : "Bearer " + token
12
- }, json = {
14
+ "https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2024-04 -01" ,
15
+ headers = headers ,
16
+ json = {
13
17
"query" : """spotresources\n
14
18
| where type =~ \" microsoft.compute/skuspotevictionrate/location\" \n
15
19
| project location = location, props = parse_json(properties)\n
@@ -29,29 +33,28 @@ def get_data(token, skip_token, retry=3):
29
33
return data
30
34
else :
31
35
return None
36
+
32
37
except :
33
38
if retry == 1 :
34
39
raise
35
- return get_data (token , skip_token , retry - 1 )
40
+ return get_data (sps_token , skip_token , retry - 1 )
36
41
37
42
38
43
def load_if ():
39
44
try :
40
- token = get_token ()
41
-
45
+ sps_token , _ = get_sps_token_and_subscriptions ()
42
46
datas = []
43
47
skip_token = ""
44
48
45
49
while True :
46
- data = get_data (token , skip_token )
47
- if data :
48
- datas += data [ "data" ]
50
+ data = get_data (sps_token , skip_token )
51
+ if not data :
52
+ break
49
53
50
- if not "$skipToken" in data :
51
- break
52
- skip_token = data ["$skipToken" ]
54
+ datas += data ["data" ]
55
+ skip_token = data .get ("$skipToken" , None )
53
56
54
- else :
57
+ if skip_token is None :
55
58
break
56
59
57
60
if not datas :
0 commit comments