Migration Guide - Resource Management¶
Guide for migrating to the next generation of Azure Python SDK for Management Libraries¶
This document is intended for users that are familiar with an older version of the Python SDK for managment libraries and wish to migrate their application to the next version of Azure resource management libraries
For users new to the Python SDK for resource management libraries, please see the quickstart guide
Table of contents¶
Prerequisites¶
Active Azure subscription
Python 2.7 or 3.5+
Updated Python Packages¶
You can refer to the this site to see all the new Python packages.
For packages that are already generally available (GA), you can directly install the package using pip. Take Azure Compute
service for example, simply do:
pip install azure-mgmt-compute
The release history for azure-mgmt-compute can be found at https://pypi.org/project/azure-mgmt-compute/#history
You will notice that there was a beta release in release history, and the changelog for this version mentioned that “this version uses a next-generation code generator that introduces important breaking changes”. This indicates the package is based on the new generator.
In addition, some next-generation Python SDK management client libraries might still in Public Preview. The preview version SDK will be contain a b
in its version to number to indicate that it’s a beta release (e.g.``10.0.0b1``).
For those beta releases, please install the package based on the beta version number, for
example, to install the latest preview package for BetaServiceExample, please use:
pip install azure-mgmt-beta-service-example==10.0.0b1
General Changes¶
The latest Azure Python SDK for management libraries is a result of our efforts to create a resource management client library that is user-friendly and idiomatic to the Python ecosystem.
While conforming to the new Azure SDK Design Guidelines for Python, we have tried our best to minimize the breaking changes. Most of the API signatures have stayed the same to offer user an easier migration experience.
The important breaking changes are listed in the following sections:
Authentication¶
In old version, ServicePrincipalCredentials
in azure.common
is
used for authenticating to Azure and creating a service client
In new version, in order to provide an unified authentication based on
Azure Identity for all Azure SDKs, the authentication mechanism has been
re-designed and replaced by azure-identity
library
To use the new azure-identity
authentication mechanism, please use
pip install azure-identity
to install the package
To the show the code snippets for the change:
In old version
import azure.mgmt.compute
from azure.common.credentials import ServicePrincipalCredentials
credentials = ServicePrincipalCredentials(
client_id=client_id,
secret=client_secret,
tenant=tenant_id
)
compute_client = azure.mgmt.compute.ComputeManagementClient(credentials=credentials, subscription_id=self.subscription_id)
Equivalent in new version
import azure.mgmt.compute
from azure.identity import ClientSecretCredential
credential = ClientSecretCredential(
client_secret=client_secret,
client_id=client_id,
client_secret=client_secret
)
compute_client = azure.mgmt.compute.ComputeManagementClient(credential=credential, subscription_id=self.subscription_id)
For detailed information on the benefits of using the new authentication classes as well as all available authentication options, please refer to this page
Client API Changes¶
Most of the API has stayed the same to provide an easier migration experience. There is a minor change regarding the async operations
Async Operations Change¶
To differentiate between asynchronous and synchronous API operations in
the new version, an explicit begin_
prefix is added for all the
async APIs operations (this includes operations where the user gets a
202
response code or needs to call .result()
explicitly to get
the response)
To show an example (creating virtual machine):
In old version
result = self.compute_client.virtual_machines.create_or_update(
group_name,
vm_name,
parameters
)
result = result.result()
Equivalent in new version
result = self.compute_client.virtual_machines.begin_create_or_update(
group_name,
vm_name,
parameters
)
vm = result.result()
Additional Samples¶
More samples can be found at :
Need help?¶
If you have encountered an issue during migration, please file an issue via Github Issues and make sure you add the “Preview” label to the issue