Skip to content

Commit fb86d5a

Browse files
authored
Merge pull request #41 from Azure-Samples/t2-consumption-2020-10-28
[T2] consumption wave3
2 parents 2606831 + 0c6d692 commit fb86d5a

File tree

3 files changed

+174
-0
lines changed

3 files changed

+174
-0
lines changed

samples/consumption/README.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
page_type: sample
3+
languages:
4+
- python
5+
products:
6+
- azure
7+
description: "These code samples will show you how to manage consumption using Azure SDK for Python."
8+
urlFragment: consumption
9+
---
10+
11+
# Getting started - Managing consumption using Azure Python SDK
12+
13+
These code samples will show you how to manage consumption using Azure SDK for Python.
14+
15+
## Features
16+
17+
This project framework provides examples for the following services:
18+
19+
### consumption
20+
* [] Using the Azure SDK for Python - consumption Management Library [azure-mgmt-consumption](https://pypi.org/project/azure-mgmt-consumption/) for the [consumption API](https://docs.microsoft.com/en-us/rest/api/consumption/)
21+
22+
## Getting Started
23+
24+
### Prerequisites
25+
26+
1. Before we run the samples, we need to make sure we have setup the credentials. Follow the instructions in [register a new application using Azure portal](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal) to obtain `subscription id`,`client id`,`client secret`, and `application id`
27+
28+
2. Store your credentials an environment variables.
29+
For example, in Linux-based OS, you can do
30+
```bash
31+
export AZURE_TENANT_ID="xxx"
32+
export AZURE_CLIENT_ID="xxx"
33+
export AZURE_CLIENT_SECRET="xxx"
34+
export SUBSCRIPTION_ID="xxx"
35+
```
36+
37+
### Installation
38+
39+
1. If you don't already have it, [install Python](https://www.python.org/downloads/).
40+
41+
This sample (and the SDK) is compatible with Python 2.7, 3.3, 3.4, 3.5 and 3.6.
42+
43+
2. General recommendation for Python development is to use a Virtual Environment.
44+
For more information, see https://docs.python.org/3/tutorial/venv.html
45+
46+
Install and initialize the virtual environment with the "venv" module on Python 3 (you must install [virtualenv](https://pypi.python.org/pypi/virtualenv) for Python 2.7):
47+
48+
```
49+
python -m venv mytestenv # Might be "python3" or "py -3.6" depending on your Python installation
50+
cd mytestenv
51+
source bin/activate # Linux shell (Bash, ZSH, etc.) only
52+
./scripts/activate # PowerShell only
53+
./scripts/activate.bat # Windows CMD only
54+
```
55+
56+
### Quickstart
57+
58+
1. Clone the repository.
59+
60+
```
61+
git clone https://github.com/Azure-Samples/azure-samples-python-management.git
62+
```
63+
64+
2. Install the dependencies using pip.
65+
66+
```
67+
cd azure-samples-python-management/samples/consumption
68+
pip install -r requirements.txt
69+
```
70+
71+
## Demo
72+
73+
A demo app is included to show how to use the project.
74+
75+
To run the complete demo, execute `python example.py`
76+
77+
To run each individual demo, point directly to the file. For example (i.e. not complete list):
78+
79+
1. `python manage_consumption.py`
80+
81+
If the script starts with `disable_***.py`, it means that it is unavailable now.
82+
83+
The sample files do not have dependency each other and each file represents an individual end-to-end scenario. Please look at the sample that contains the scenario you are interested in
84+
85+
## Resources
86+
87+
- https://github.com/Azure/azure-sdk-for-python
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# --------------------------------------------------------------------------
2+
# Copyright (c) Microsoft Corporation. All rights reserved.
3+
# Licensed under the MIT License. See License.txt in the project root for
4+
# license information.
5+
# --------------------------------------------------------------------------
6+
7+
import os
8+
import time
9+
from azure.identity import DefaultAzureCredential
10+
from azure.mgmt.consumption import ConsumptionManagementClient
11+
from azure.mgmt.resource import ResourceManagementClient
12+
13+
# - other dependence -
14+
# - end -
15+
16+
17+
def main():
18+
19+
SUBSCRIPTION_ID = os.environ.get("SUBSCRIPTION_ID", None)
20+
TIME = str(time.time()).replace('.','')
21+
GROUP_NAME = "testconsumption" + TIME
22+
CONSUMPTION = "consumption" + TIME
23+
24+
# Create client
25+
# # For other authentication approaches, please see: https://pypi.org/project/azure-identity/
26+
resource_client = ResourceManagementClient(
27+
credential=DefaultAzureCredential(),
28+
subscription_id=SUBSCRIPTION_ID
29+
)
30+
consumption_client = ConsumptionManagementClient(
31+
credential=DefaultAzureCredential(),
32+
subscription_id=SUBSCRIPTION_ID
33+
)
34+
# - init depended client -
35+
# - end -
36+
37+
# Create resource group
38+
resource_client.resource_groups.create_or_update(
39+
GROUP_NAME,
40+
{"location": "eastus"}
41+
)
42+
43+
# - init depended resources -
44+
# - end -
45+
46+
# Create consumption
47+
SCOPE = '/subscriptions/{}/resourceGroups/{}'.format(SUBSCRIPTION_ID, GROUP_NAME)
48+
consumption = consumption_client.budgets.create_or_update(
49+
SCOPE,
50+
CONSUMPTION,
51+
{
52+
"category": "Cost",
53+
"amount": '100',
54+
"timeGrain": "Monthly",
55+
"timePeriod": {
56+
"startDate": "2020-10-01T00:00:00Z",
57+
"endDate": "2021-10-31T00:00:00Z"
58+
}
59+
}
60+
)
61+
print("Create consumption:\n{}\n".format(consumption))
62+
63+
# Get consumption
64+
consumption = consumption_client.budgets.get(
65+
SCOPE,
66+
CONSUMPTION
67+
)
68+
print("Get consumption:\n{}\n".format(consumption))
69+
70+
# Delete consumption
71+
consumption_client.budgets.delete(
72+
SCOPE,
73+
CONSUMPTION
74+
)
75+
print("Delete consumption.\n")
76+
77+
# Delete Group
78+
resource_client.resource_groups.begin_delete(
79+
GROUP_NAME
80+
).result()
81+
82+
83+
if __name__ == "__main__":
84+
main()

samples/consumption/requirements.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
azure-identity
2+
azure-mgmt-resource==15.0.0
3+
azure-mgmt-consumption==8.0.0b1

0 commit comments

Comments
 (0)