Skip to content

Commit dee491e

Browse files
authored
[Storage]Make key in conn_str case insensitive (#17670)
1 parent 0aa924a commit dee491e

File tree

7 files changed

+51
-54
lines changed

7 files changed

+51
-54
lines changed

sdk/storage/azure-storage-blob/azure/storage/blob/_shared/base_client.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@
5656

5757
_LOGGER = logging.getLogger(__name__)
5858
_SERVICE_PARAMS = {
59-
"blob": {"primary": "BlobEndpoint", "secondary": "BlobSecondaryEndpoint"},
60-
"queue": {"primary": "QueueEndpoint", "secondary": "QueueSecondaryEndpoint"},
61-
"file": {"primary": "FileEndpoint", "secondary": "FileSecondaryEndpoint"},
62-
"dfs": {"primary": "BlobEndpoint", "secondary": "BlobEndpoint"},
59+
"blob": {"primary": "BLOBENDPOINT", "secondary": "BLOBSECONDARYENDPOINT"},
60+
"queue": {"primary": "QUEUEENDPOINT", "secondary": "QUEUESECONDARYENDPOINT"},
61+
"file": {"primary": "FILEENDPOINT", "secondary": "FILESECONDARYENDPOINT"},
62+
"dfs": {"primary": "BLOBENDPOINT", "secondary": "BLOBENDPOINT"},
6363
}
6464

6565

@@ -364,15 +364,15 @@ def parse_connection_str(conn_str, credential, service):
364364
conn_settings = [s.split("=", 1) for s in conn_str.split(";")]
365365
if any(len(tup) != 2 for tup in conn_settings):
366366
raise ValueError("Connection string is either blank or malformed.")
367-
conn_settings = dict(conn_settings)
367+
conn_settings = dict((key.upper(), val) for key, val in conn_settings)
368368
endpoints = _SERVICE_PARAMS[service]
369369
primary = None
370370
secondary = None
371371
if not credential:
372372
try:
373-
credential = {"account_name": conn_settings["AccountName"], "account_key": conn_settings["AccountKey"]}
373+
credential = {"account_name": conn_settings["ACCOUNTNAME"], "account_key": conn_settings["ACCOUNTKEY"]}
374374
except KeyError:
375-
credential = conn_settings.get("SharedAccessSignature")
375+
credential = conn_settings.get("SHAREDACCESSSIGNATURE")
376376
if endpoints["primary"] in conn_settings:
377377
primary = conn_settings[endpoints["primary"]]
378378
if endpoints["secondary"] in conn_settings:
@@ -382,21 +382,21 @@ def parse_connection_str(conn_str, credential, service):
382382
raise ValueError("Connection string specifies only secondary endpoint.")
383383
try:
384384
primary = "{}://{}.{}.{}".format(
385-
conn_settings["DefaultEndpointsProtocol"],
386-
conn_settings["AccountName"],
385+
conn_settings["DEFAULTENDPOINTSPROTOCOL"],
386+
conn_settings["ACCOUNTNAME"],
387387
service,
388-
conn_settings["EndpointSuffix"],
388+
conn_settings["ENDPOINTSUFFIX"],
389389
)
390390
secondary = "{}-secondary.{}.{}".format(
391-
conn_settings["AccountName"], service, conn_settings["EndpointSuffix"]
391+
conn_settings["ACCOUNTNAME"], service, conn_settings["ENDPOINTSUFFIX"]
392392
)
393393
except KeyError:
394394
pass
395395

396396
if not primary:
397397
try:
398398
primary = "https://{}.{}.{}".format(
399-
conn_settings["AccountName"], service, conn_settings.get("EndpointSuffix", SERVICE_HOST_BASE)
399+
conn_settings["ACCOUNTNAME"], service, conn_settings.get("ENDPOINTSUFFIX", SERVICE_HOST_BASE)
400400
)
401401
except KeyError:
402402
raise ValueError("Connection string missing required connection details.")

sdk/storage/azure-storage-blob/tests/_shared/testcase.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ def __init__(self, *args, **kwargs):
159159
self.configure_logging()
160160

161161
def connection_string(self, account, key):
162-
return "DefaultEndpointsProtocol=https;AccountName=" + account.name + ";AccountKey=" + str(key) + ";EndpointSuffix=core.windows.net"
162+
return "DefaultEndpointsProtocol=https;AcCounTName=" + account.name + ";AccOuntKey=" + str(key) + ";EndpoIntSuffix=core.windows.net"
163163

164164
def account_url(self, storage_account, storage_type):
165165
"""Return an url of storage account.

sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_shared/base_client.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,12 @@
5656

5757
_LOGGER = logging.getLogger(__name__)
5858
_SERVICE_PARAMS = {
59-
"blob": {"primary": "BlobEndpoint", "secondary": "BlobSecondaryEndpoint"},
60-
"queue": {"primary": "QueueEndpoint", "secondary": "QueueSecondaryEndpoint"},
61-
"file": {"primary": "FileEndpoint", "secondary": "FileSecondaryEndpoint"},
62-
"dfs": {"primary": "BlobEndpoint", "secondary": "BlobEndpoint"},
59+
"blob": {"primary": "BLOBENDPOINT", "secondary": "BLOBSECONDARYENDPOINT"},
60+
"queue": {"primary": "QUEUEENDPOINT", "secondary": "QUEUESECONDARYENDPOINT"},
61+
"file": {"primary": "FILEENDPOINT", "secondary": "FILESECONDARYENDPOINT"},
62+
"dfs": {"primary": "BLOBENDPOINT", "secondary": "BLOBENDPOINT"},
6363
}
6464

65-
6665
class StorageAccountHostsMixin(object): # pylint: disable=too-many-instance-attributes
6766
def __init__(
6867
self,
@@ -364,15 +363,15 @@ def parse_connection_str(conn_str, credential, service):
364363
conn_settings = [s.split("=", 1) for s in conn_str.split(";")]
365364
if any(len(tup) != 2 for tup in conn_settings):
366365
raise ValueError("Connection string is either blank or malformed.")
367-
conn_settings = dict(conn_settings)
366+
conn_settings = dict((key.upper(), val) for key, val in conn_settings)
368367
endpoints = _SERVICE_PARAMS[service]
369368
primary = None
370369
secondary = None
371370
if not credential:
372371
try:
373-
credential = {"account_name": conn_settings["AccountName"], "account_key": conn_settings["AccountKey"]}
372+
credential = {"account_name": conn_settings["ACCOUNTNAME"], "account_key": conn_settings["ACCOUNTKEY"]}
374373
except KeyError:
375-
credential = conn_settings.get("SharedAccessSignature")
374+
credential = conn_settings.get("SHAREDACCESSSIGNATURE")
376375
if endpoints["primary"] in conn_settings:
377376
primary = conn_settings[endpoints["primary"]]
378377
if endpoints["secondary"] in conn_settings:
@@ -382,21 +381,21 @@ def parse_connection_str(conn_str, credential, service):
382381
raise ValueError("Connection string specifies only secondary endpoint.")
383382
try:
384383
primary = "{}://{}.{}.{}".format(
385-
conn_settings["DefaultEndpointsProtocol"],
386-
conn_settings["AccountName"],
384+
conn_settings["DEFAULTENDPOINTSPROTOCOL"],
385+
conn_settings["ACCOUNTNAME"],
387386
service,
388-
conn_settings["EndpointSuffix"],
387+
conn_settings["ENDPOINTSUFFIX"],
389388
)
390389
secondary = "{}-secondary.{}.{}".format(
391-
conn_settings["AccountName"], service, conn_settings["EndpointSuffix"]
390+
conn_settings["ACCOUNTNAME"], service, conn_settings["ENDPOINTSUFFIX"]
392391
)
393392
except KeyError:
394393
pass
395394

396395
if not primary:
397396
try:
398397
primary = "https://{}.{}.{}".format(
399-
conn_settings["AccountName"], service, conn_settings.get("EndpointSuffix", SERVICE_HOST_BASE)
398+
conn_settings["ACCOUNTNAME"], service, conn_settings.get("ENDPOINTSUFFIX", SERVICE_HOST_BASE)
400399
)
401400
except KeyError:
402401
raise ValueError("Connection string missing required connection details.")

sdk/storage/azure-storage-file-share/azure/storage/fileshare/_shared/base_client.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,12 @@
5656

5757
_LOGGER = logging.getLogger(__name__)
5858
_SERVICE_PARAMS = {
59-
"blob": {"primary": "BlobEndpoint", "secondary": "BlobSecondaryEndpoint"},
60-
"queue": {"primary": "QueueEndpoint", "secondary": "QueueSecondaryEndpoint"},
61-
"file": {"primary": "FileEndpoint", "secondary": "FileSecondaryEndpoint"},
62-
"dfs": {"primary": "BlobEndpoint", "secondary": "BlobEndpoint"},
59+
"blob": {"primary": "BLOBENDPOINT", "secondary": "BLOBSECONDARYENDPOINT"},
60+
"queue": {"primary": "QUEUEENDPOINT", "secondary": "QUEUESECONDARYENDPOINT"},
61+
"file": {"primary": "FILEENDPOINT", "secondary": "FILESECONDARYENDPOINT"},
62+
"dfs": {"primary": "BLOBENDPOINT", "secondary": "BLOBENDPOINT"},
6363
}
6464

65-
6665
class StorageAccountHostsMixin(object): # pylint: disable=too-many-instance-attributes
6766
def __init__(
6867
self,
@@ -364,15 +363,15 @@ def parse_connection_str(conn_str, credential, service):
364363
conn_settings = [s.split("=", 1) for s in conn_str.split(";")]
365364
if any(len(tup) != 2 for tup in conn_settings):
366365
raise ValueError("Connection string is either blank or malformed.")
367-
conn_settings = dict(conn_settings)
366+
conn_settings = dict((key.upper(), val) for key, val in conn_settings)
368367
endpoints = _SERVICE_PARAMS[service]
369368
primary = None
370369
secondary = None
371370
if not credential:
372371
try:
373-
credential = {"account_name": conn_settings["AccountName"], "account_key": conn_settings["AccountKey"]}
372+
credential = {"account_name": conn_settings["ACCOUNTNAME"], "account_key": conn_settings["ACCOUNTKEY"]}
374373
except KeyError:
375-
credential = conn_settings.get("SharedAccessSignature")
374+
credential = conn_settings.get("SHAREDACCESSSIGNATURE")
376375
if endpoints["primary"] in conn_settings:
377376
primary = conn_settings[endpoints["primary"]]
378377
if endpoints["secondary"] in conn_settings:
@@ -382,21 +381,21 @@ def parse_connection_str(conn_str, credential, service):
382381
raise ValueError("Connection string specifies only secondary endpoint.")
383382
try:
384383
primary = "{}://{}.{}.{}".format(
385-
conn_settings["DefaultEndpointsProtocol"],
386-
conn_settings["AccountName"],
384+
conn_settings["DEFAULTENDPOINTSPROTOCOL"],
385+
conn_settings["ACCOUNTNAME"],
387386
service,
388-
conn_settings["EndpointSuffix"],
387+
conn_settings["ENDPOINTSUFFIX"],
389388
)
390389
secondary = "{}-secondary.{}.{}".format(
391-
conn_settings["AccountName"], service, conn_settings["EndpointSuffix"]
390+
conn_settings["ACCOUNTNAME"], service, conn_settings["ENDPOINTSUFFIX"]
392391
)
393392
except KeyError:
394393
pass
395394

396395
if not primary:
397396
try:
398397
primary = "https://{}.{}.{}".format(
399-
conn_settings["AccountName"], service, conn_settings.get("EndpointSuffix", SERVICE_HOST_BASE)
398+
conn_settings["ACCOUNTNAME"], service, conn_settings.get("ENDPOINTSUFFIX", SERVICE_HOST_BASE)
400399
)
401400
except KeyError:
402401
raise ValueError("Connection string missing required connection details.")

sdk/storage/azure-storage-file-share/tests/_shared/testcase.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def __init__(self, *args, **kwargs):
142142
self.replay_processors.append(XMSRequestIDBody())
143143

144144
def connection_string(self, account, key):
145-
return "DefaultEndpointsProtocol=https;AccountName=" + account.name + ";AccountKey=" + str(key) + ";EndpointSuffix=core.windows.net"
145+
return "DefaultEndpointsProtocol=https;AcCounTName=" + account.name + ";AccOuntKey=" + str(key) + ";EndpoIntSuffix=core.windows.net"
146146

147147
def account_url(self, storage_account, storage_type):
148148
"""Return an url of storage account.

sdk/storage/azure-storage-queue/azure/storage/queue/_shared/base_client.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,12 @@
5656

5757
_LOGGER = logging.getLogger(__name__)
5858
_SERVICE_PARAMS = {
59-
"blob": {"primary": "BlobEndpoint", "secondary": "BlobSecondaryEndpoint"},
60-
"queue": {"primary": "QueueEndpoint", "secondary": "QueueSecondaryEndpoint"},
61-
"file": {"primary": "FileEndpoint", "secondary": "FileSecondaryEndpoint"},
62-
"dfs": {"primary": "BlobEndpoint", "secondary": "BlobEndpoint"},
59+
"blob": {"primary": "BLOBENDPOINT", "secondary": "BLOBSECONDARYENDPOINT"},
60+
"queue": {"primary": "QUEUEENDPOINT", "secondary": "QUEUESECONDARYENDPOINT"},
61+
"file": {"primary": "FILEENDPOINT", "secondary": "FILESECONDARYENDPOINT"},
62+
"dfs": {"primary": "BLOBENDPOINT", "secondary": "BLOBENDPOINT"},
6363
}
6464

65-
6665
class StorageAccountHostsMixin(object): # pylint: disable=too-many-instance-attributes
6766
def __init__(
6867
self,
@@ -364,15 +363,15 @@ def parse_connection_str(conn_str, credential, service):
364363
conn_settings = [s.split("=", 1) for s in conn_str.split(";")]
365364
if any(len(tup) != 2 for tup in conn_settings):
366365
raise ValueError("Connection string is either blank or malformed.")
367-
conn_settings = dict(conn_settings)
366+
conn_settings = dict((key.upper(), val) for key, val in conn_settings)
368367
endpoints = _SERVICE_PARAMS[service]
369368
primary = None
370369
secondary = None
371370
if not credential:
372371
try:
373-
credential = {"account_name": conn_settings["AccountName"], "account_key": conn_settings["AccountKey"]}
372+
credential = {"account_name": conn_settings["ACCOUNTNAME"], "account_key": conn_settings["ACCOUNTKEY"]}
374373
except KeyError:
375-
credential = conn_settings.get("SharedAccessSignature")
374+
credential = conn_settings.get("SHAREDACCESSSIGNATURE")
376375
if endpoints["primary"] in conn_settings:
377376
primary = conn_settings[endpoints["primary"]]
378377
if endpoints["secondary"] in conn_settings:
@@ -382,21 +381,21 @@ def parse_connection_str(conn_str, credential, service):
382381
raise ValueError("Connection string specifies only secondary endpoint.")
383382
try:
384383
primary = "{}://{}.{}.{}".format(
385-
conn_settings["DefaultEndpointsProtocol"],
386-
conn_settings["AccountName"],
384+
conn_settings["DEFAULTENDPOINTSPROTOCOL"],
385+
conn_settings["ACCOUNTNAME"],
387386
service,
388-
conn_settings["EndpointSuffix"],
387+
conn_settings["ENDPOINTSUFFIX"],
389388
)
390389
secondary = "{}-secondary.{}.{}".format(
391-
conn_settings["AccountName"], service, conn_settings["EndpointSuffix"]
390+
conn_settings["ACCOUNTNAME"], service, conn_settings["ENDPOINTSUFFIX"]
392391
)
393392
except KeyError:
394393
pass
395394

396395
if not primary:
397396
try:
398397
primary = "https://{}.{}.{}".format(
399-
conn_settings["AccountName"], service, conn_settings.get("EndpointSuffix", SERVICE_HOST_BASE)
398+
conn_settings["ACCOUNTNAME"], service, conn_settings.get("ENDPOINTSUFFIX", SERVICE_HOST_BASE)
400399
)
401400
except KeyError:
402401
raise ValueError("Connection string missing required connection details.")

sdk/storage/azure-storage-queue/tests/_shared/testcase.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def __init__(self, *args, **kwargs):
142142
self.replay_processors.append(XMSRequestIDBody())
143143

144144
def connection_string(self, account, key):
145-
return "DefaultEndpointsProtocol=https;AccountName=" + account.name + ";AccountKey=" + str(key) + ";EndpointSuffix=core.windows.net"
145+
return "DefaultEndpointsProtocol=https;AcCounTName=" + account.name + ";AccOuntKey=" + str(key) + ";EndpoIntSuffix=core.windows.net"
146146

147147
def account_url(self, storage_account, storage_type):
148148
"""Return an url of storage account.

0 commit comments

Comments
 (0)