Last active
August 24, 2021 15:47
-
-
Save danield137/2d2c10c1dacb33fdfe2f4361b98e16c3 to your computer and use it in GitHub Desktop.
Create multiple storage accounts
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
from typing import List, Tuple | |
from azure.cli.core import get_default_cli # requires `pip install azure-cli-core` | |
from tqdm import trange # requires `pip install tqdm`, can be removed | |
DEFAULT_RG = "resource_group" | |
NAME_FORMAT = "app0storage{0}" | |
SA_PREFIX_ARGS = ["storage", "account"] | |
GENERATE_SAS_DEFAULT_ARGS = ["--expiry", "2023-01-01", "--services", "ftqb", "--resource-types", "sco" ,"--permissions" ,"cdlruwap"] | |
class StorageAccountCreator: | |
def __init__(self, az_cli) -> None: | |
self.az_cli = az_cli | |
def exists(self, name: str) -> bool: | |
self.az_cli.invoke(SA_PREFIX_ARGS + ["check-name", "--name", name]) | |
result = self.az_cli.result.result | |
return result["nameAvailable"] == False and result["reason"] == "AlreadyExists"; | |
def _create_storage_account(self, name): | |
self.az_cli.invoke(SA_PREFIX_ARGS + ["create", "--name", name, "-g", DEFAULT_RG]) | |
def get_sas(self, name): | |
self.az_cli.invoke(SA_PREFIX_ARGS + ["generate-sas", "--account-name", name] + GENERATE_SAS_DEFAULT_ARGS) | |
r = self.az_cli.result.result | |
return r | |
def get_connection_string(self, name): | |
self.az_cli.invoke(SA_PREFIX_ARGS + ["show-connection-string", "--name", name]) | |
r = self.az_cli.result.result | |
return r["connectionString"] | |
def create(self, name) -> Tuple[str, str]: | |
if not self.exists(name): | |
self._create_storage_account(name) | |
sas = self.get_sas(name) | |
conn_str = self.get_connection_string(name) | |
return sas, conn_str # assuming blob uri is `https://{name}.blob.storage.windows.net` | |
def create_many(self, n, start_idx = 0) -> List[Tuple[str,str]]: | |
results = [] | |
for idx in trange(start_idx, n + start_idx): | |
results.append(self.create(NAME_FORMAT.format(idx + 1))) | |
return results | |
def main(): | |
sa_creator = StorageAccountCreator(get_default_cli()) | |
results = sa_creator.create_many(50) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment