Last active
June 11, 2019 14:16
-
-
Save pharaujo/43c110e68cf381dca9b731bd0715b7e9 to your computer and use it in GitHub Desktop.
azure-mgmt-resourcegraph/msrest 429 test case
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
DEBUG:msrest.http_logger:Request URL: 'https://management.azure.com/providers/Microsoft.ResourceGraph/resources?api-version=2019-04-01' | |
DEBUG:msrest.http_logger:Request method: 'POST' | |
DEBUG:msrest.http_logger:Request headers: | |
DEBUG:msrest.http_logger: 'accept-language': 'en-US' | |
DEBUG:msrest.http_logger: 'Content-Type': 'application/json; charset=utf-8' | |
DEBUG:msrest.http_logger: 'x-ms-client-request-id': '<REDACTED>' | |
DEBUG:msrest.http_logger: 'Accept': 'application/json' | |
DEBUG:msrest.http_logger: 'Content-Length': '451' | |
DEBUG:msrest.http_logger: 'User-Agent': 'python/2.7.16 (Darwin-18.6.0-x86_64-i386-64bit) msrest/0.6.6 msrest_azure/0.6.0 azure-mgmt-resourcegraph/1.0.0 Azure-SDK-For-Python' | |
DEBUG:msrest.http_logger:Request body: | |
DEBUG:msrest.http_logger:{"query": "where type =~ 'Microsoft.Network/networkInterfaces'| project name, id, properties.virtualMachine, properties.macAddress, properties.ipConfigur | |
ations", "options": {"$skipToken": "<REDACTED>"}, "subscriptions": ["<REDACTED>"]} | |
DEBUG:msrest.universal_http:Configuring redirects: allow=True, max=30 | |
DEBUG:msrest.universal_http:Configuring request: timeout=100, verify=True, cert=None | |
DEBUG:msrest.universal_http:Configuring proxies: '' | |
DEBUG:msrest.universal_http:Evaluate proxies against ENV settings: True | |
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): management.azure.com:443 | |
DEBUG:urllib3.connectionpool:https://management.azure.com:443 "POST /providers/Microsoft.ResourceGraph/resources?api-version=2019-04-01 HTTP/1.1" 429 2 | |
DEBUG:msrest.http_logger:Response status: 429 | |
DEBUG:msrest.http_logger:Response headers: | |
DEBUG:msrest.http_logger: 'Cache-Control': 'no-cache' | |
DEBUG:msrest.http_logger: 'Pragma': 'no-cache' | |
DEBUG:msrest.http_logger: 'Content-Length': '2' | |
DEBUG:msrest.http_logger: 'Content-Type': 'application/json; charset=utf-8' | |
DEBUG:msrest.http_logger: 'Expires': '-1' | |
DEBUG:msrest.http_logger: 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains' | |
DEBUG:msrest.http_logger: 'x-ms-user-quota-resets-after': '00:00:05' | |
DEBUG:msrest.http_logger: 'x-ms-user-quota-remaining': '0' | |
DEBUG:msrest.http_logger: 'x-ms-ratelimit-remaining-tenant-resource-requests': '0' | |
DEBUG:msrest.http_logger: 'Server': 'Microsoft-HTTPAPI/2.0' | |
DEBUG:msrest.http_logger: 'x-ms-ratelimit-remaining-tenant-reads': '11991' | |
DEBUG:msrest.http_logger: 'x-ms-request-id': '656e909a-1aea-400a-8a19-108060883623' | |
DEBUG:msrest.http_logger: 'x-ms-correlation-request-id': '656e909a-1aea-400a-8a19-108060883623' | |
DEBUG:msrest.http_logger: 'x-ms-routing-request-id': 'FRANCESOUTH:20190606T143814Z:656e909a-1aea-400a-8a19-108060883623' | |
DEBUG:msrest.http_logger: 'X-Content-Type-Options': 'nosniff' | |
DEBUG:msrest.http_logger: 'Date': 'Thu, 06 Jun 2019 14:38:14 GMT' | |
DEBUG:msrest.http_logger: 'Connection': 'close' | |
DEBUG:msrest.http_logger:Response content: | |
DEBUG:msrest.http_logger:"" | |
DEBUG:msrest.exceptions:Unable to deserialize to object: type, AttributeError: 'unicode' object has no attribute 'get' | |
DEBUG:msrest.exceptions:Operation returned an invalid status code '' | |
Traceback (most recent call last): | |
File "./arg.py", line 57, in <module> | |
arg.instances() | |
File "./arg.py", line 42, in instances | |
nics = self._resources('where type =~ \'Microsoft.Network/' | |
File "./arg.py", line 34, in _resources | |
query_response = self.arg.resources(query_request) | |
File ".../.env/lib/python2.7/site-packages/azure/mgmt/resourcegraph/resource_graph_client.py", line 123, in resources | |
raise models.ErrorResponseException(self._deserialize, response) | |
azure.mgmt.resourcegraph.models.error_response.ErrorResponseException: Operation returned an invalid status code '' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# Run this in parallel to hit the rate limit | |
# $ time (for i in {1..10}; do (python ./arg.py 2>${i}.log)& done ; wait) | |
import logging | |
import sys | |
from azure.common.credentials import ServicePrincipalCredentials | |
from azure.mgmt.resourcegraph import ResourceGraphClient | |
from azure.mgmt.resourcegraph.models import QueryRequest | |
from azure.mgmt.resourcegraph.models import QueryRequestOptions | |
import config | |
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG) | |
class ARG(object): | |
def __init__(self, subscription_id, credentials): | |
self.subscription_id = subscription_id | |
self.arg = ResourceGraphClient(credentials=credentials) | |
self.arg.config.enable_http_logger = True | |
def _resources(self, query): | |
query_request = QueryRequest( | |
query=query, | |
subscriptions=[self.subscription_id] | |
) | |
query_response = self.arg.resources(query_request) | |
while query_response.skip_token: | |
token = query_response.skip_token | |
query_request.options = QueryRequestOptions(skip_token=token) | |
query_response = self.arg.resources(query_request) | |
def instances(self): | |
vms = self._resources('where type =~ ' | |
'\'Microsoft.Compute/virtualMachines\' | ' | |
'project name, id, location, tags, ' | |
'properties.storageProfile.osDisk.osType,' | |
'properties.availabilitySet.id') | |
nics = self._resources('where type =~ \'Microsoft.Network/' | |
'networkInterfaces\'| ' | |
'project name, ' | |
'id, ' | |
'properties.virtualMachine, ' | |
'properties.macAddress, ' | |
'properties.ipConfigurations') | |
cred = ServicePrincipalCredentials( | |
tenant=config.TENANT_ID, | |
client_id=config.CLIENT_ID, | |
secret=config.SECRET) | |
arg = ARG(subscription_id=config.SUBSCRIPTION_ID, | |
credentials=cred) | |
arg.instances() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TENANT_ID = "" | |
CLIENT_ID = "" | |
SECRET = "" | |
SUBSCRIPTION_ID = "" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
adal==1.2.1 | |
asn1crypto==0.24.0 | |
azure-common==1.1.21 | |
azure-mgmt-nspkg==3.0.2 | |
azure-mgmt-resourcegraph==1.0.0 | |
azure-nspkg==3.0.2 | |
certifi==2019.3.9 | |
cffi==1.12.3 | |
chardet==3.0.4 | |
cryptography==2.7 | |
enum34==1.1.6 | |
idna==2.8 | |
ipaddress==1.0.22 | |
isodate==0.6.0 | |
msrest==0.6.6 | |
msrestazure==0.6.0 | |
oauthlib==3.0.1 | |
pycparser==2.19 | |
PyJWT==1.7.1 | |
python-dateutil==2.8.0 | |
requests==2.22.0 | |
requests-oauthlib==1.2.0 | |
six==1.12.0 | |
typing==3.6.6 | |
urllib3==1.25.3 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment