AzurePyProxy 1.1b0
This package provides proxy class for calling azure commands directly from Python.
License: MIT License
Keywords: azure platform azure python proxy

# az-pyproxy

This Python package provides a proxy class for calling az commands directly from Python.

## Requirements

- [azure cli](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest)
- Python 3.x

## Installation

## Via PIP

```console
pip3 install azpyproxy
```

or

```console
python3 -m pip install azpyproxy
```

## Building from source

```console
wget https://github.com/tomasvotava/az-pyproxy/archive/master.zip
unzip master.zip
cd az-pyproxy-master
python setup.py build
python setup.py install
```

## Usage

```python
from azure_pyproxy import Azure
az = Azure()

# command: az vm start virtual
az.vm_start("virtual")

# additional flags and parameters
# next method call expands like this:
# az resource list --resource-group="YOUR_RESOURCE_GROUP"
az.resource_list(resource_group="YOUR_RESOURCE_GROUP")

# positional arguments are simply concatenated after the command call, so commands can be also passed as arguments
az.vm("deallocate", name="virtual", resource_group="YOUR_RESOURCE_GROUP")
# expands as:
# az vm deallocate --name="virtual" --resource_group="YOUR_RESOURCE_GROUP"

# by default, underscores in flag names are replaced with dashes
az.vm_deallocate(name="virtual", resource_group="YOUR_RESOURCE_GROUP")
# az vm deallocate --name="virtual" --resource_group="YOUR_RESOURCE_GROUP"

# however, this can be overriden by specifying replace_underscore=False
az.vm_deallocate(name="virtual", resource_group="YOUR_RESOURCE_GROUP", replace_underscore=False)
# az vm deallocate --name="virtual" --resource_group="YOUR_RESOURCE_GROUP"

# the command returns json output from the commands, if you would like to redirect stdout/stderr/stdin instead, just pass keep_output=True
az.vm_deallocate(name="virtual", resource_group="YOUR_RESOURCE_GROUP", keep_stdout=True)
# Returns True/False based on errorcode of the command, prints all output
```

## Default subscription and resource group

If you do not want to specify subscription/resource_group in each call and you did not set your defaults using az command or Azure web UI, you can use classmethods designed to deal with it for you.

```python
from azure_pyproxy import Azure

az = Azure()

# Shows your default subscription
az.account_show()

az.account_show(subscription="another_subscription")
# Shows your "another_subscription"

Azure.set_subscription("another_subscription")
az.account_show()
# Shows your "another_subscription"

# If you have set your subscription using Azure.set_subscription
# and you need to use few calls using another one,
# you can always specify your subscription as a parameter (this overrides default setting)
Azure.set_subscription("another_subscription")
az.account_show(subscription="yet_another_one")
# Shows info for "yet_another_one"

# In case you want to switch back to your az default, you can reset your subscription:
Azure.reset_subscription()
```

All of the above works with resource groups as well:

```python
from azure_pyproxy import Azure
az = Azure()

Azure.set_resource_group("resource-group")

az.vm_start(name="virtual")
```

Code above starts VM named `virtual` in resource group `resource-group`. Following code resets the setting for you:

```python
Azure.reset_resource_group()
```