Source code for saltext.azurerm.modules.azurerm_compute_availability_set
"""Azure Resource Manager (ARM) Compute Availability Set Execution Module.. versionadded:: 2.1.0:maintainer: <devops@eitr.tech>:configuration: This module requires Azure Resource Manager credentials to be passed as keyword arguments to every function in order to work properly. Required provider parameters: if using username and password: * ``subscription_id`` * ``username`` * ``password`` if using a service principal: * ``subscription_id`` * ``tenant`` * ``client_id`` * ``secret`` if using managed identity: * ``subscription_id`` Optional provider parameters: **cloud_environment**: Used to point the cloud driver to different API endpoints, such as Azure GovCloud. Possible values: * ``AZURE_PUBLIC_CLOUD`` (default) * ``AZURE_CHINA_CLOUD`` * ``AZURE_US_GOV_CLOUD`` * ``AZURE_GERMAN_CLOUD``"""# Python libsimportloggingimportsaltext.azurerm.utils.azurerm# Azure libsHAS_LIBS=Falsetry:importazure.mgmt.compute.models# pylint: disable=unused-importfromazure.core.exceptionsimportHttpResponseErrorfromazure.core.exceptionsimportResourceNotFoundErrorfromazure.core.exceptionsimportSerializationErrorHAS_LIBS=TrueexceptImportError:pass__func_alias__={"list_":"list"}log=logging.getLogger(__name__)
[docs]defcreate_or_update(name,resource_group,**kwargs):""" .. versionadded:: 2.1.0 Create or update an availability set. :param name: The availability set to create. :param resource_group: The resource group name assigned to the availability set. CLI Example: .. code-block:: bash salt-call azurerm_compute_availability_set.create_or_update testset testgroup """if"location"notinkwargs:rg_props=__salt__["azurerm_resource.resource_group_get"](resource_group,**kwargs)if"error"inrg_props:log.error("Unable to determine location from resource group specified.")returnFalsekwargs["location"]=rg_props["location"]result={}compconn=saltext.azurerm.utils.azurerm.get_client("compute",**kwargs)# Use VM names to link to the IDs of existing VMs.ifisinstance(kwargs.get("virtual_machines"),list):vm_list=[]forvm_nameinkwargs.get("virtual_machines"):vm_instance=__salt__["azurerm_compute_virtual_machine.get"](name=vm_name,resource_group=resource_group,**kwargs)if"error"notinvm_instance:vm_list.append({"id":str(vm_instance["id"])})kwargs["virtual_machines"]=vm_listtry:setmodel=saltext.azurerm.utils.azurerm.create_object_model("compute","AvailabilitySet",**kwargs)exceptTypeErrorasexc:result={"error":f"The object model could not be built. ({str(exc)})"}returnresulttry:av_set=compconn.availability_sets.create_or_update(resource_group_name=resource_group,availability_set_name=name,parameters=setmodel,)result=av_set.as_dict()exceptHttpResponseErrorasexc:saltext.azurerm.utils.azurerm.log_cloud_error("compute",str(exc),**kwargs)result={"error":str(exc)}exceptSerializationErrorasexc:result={"error":f"The object model could not be parsed. ({str(exc)})"}returnresult
[docs]defdelete(name,resource_group,**kwargs):""" .. versionadded:: 2.1.0 Delete an availability set. :param name: The availability set to delete. :param resource_group: The resource group name assigned to the availability set. CLI Example: .. code-block:: bash salt-call azurerm_compute_availability_set.delete testset testgroup """result=Falsecompconn=saltext.azurerm.utils.azurerm.get_client("compute",**kwargs)try:compconn.availability_sets.delete(resource_group_name=resource_group,availability_set_name=name)result=TrueexceptHttpResponseErrorasexc:saltext.azurerm.utils.azurerm.log_cloud_error("compute",str(exc),**kwargs)result={"error":str(exc)}returnresult
[docs]defget(name,resource_group,**kwargs):""" .. versionadded:: 2.1.0 Get a dictionary representing an availability set's properties. :param name: The availability set to get. :param resource_group: The resource group name assigned to the availability set. CLI Example: .. code-block:: bash salt-call azurerm_compute_availability_set.get testset testgroup """result={}compconn=saltext.azurerm.utils.azurerm.get_client("compute",**kwargs)try:av_set=compconn.availability_sets.get(resource_group_name=resource_group,availability_set_name=name)result=av_set.as_dict()except(HttpResponseError,ResourceNotFoundError)asexc:saltext.azurerm.utils.azurerm.log_cloud_error("compute",str(exc),**kwargs)result={"error":str(exc)}returnresult
[docs]deflist_(resource_group=None,**kwargs):""" .. versionadded:: 2.1.0 Lists all availability sets in a subscription. :param resource_group: The name of the resource group to limit the results. CLI Example: .. code-block:: bash salt-call azurerm_compute_availability_set.list testgroup """result={}compconn=saltext.azurerm.utils.azurerm.get_client("compute",**kwargs)try:ifresource_group:avail_sets=saltext.azurerm.utils.azurerm.paged_object_to_list(compconn.availability_sets.list(resource_group_name=resource_group))else:avail_sets=saltext.azurerm.utils.azurerm.paged_object_to_list(compconn.availability_sets.list_by_subscription())foravail_setinavail_sets:result[avail_set["name"]]=avail_setexceptHttpResponseErrorasexc:saltext.azurerm.utils.azurerm.log_cloud_error("compute",str(exc),**kwargs)result={"error":str(exc)}returnresult
[docs]deflist_available_sizes(name,resource_group,**kwargs):""" .. versionadded:: 2.1.0 List all available virtual machine sizes that can be used to create a new virtual machine in an existing availability set. :param name: The availability set name to list available virtual machine sizes within. :param resource_group: The resource group name to list available availability set sizes within. CLI Example: .. code-block:: bash salt-call azurerm_compute_availability_set.list_available_sizes testset testgroup """result={}compconn=saltext.azurerm.utils.azurerm.get_client("compute",**kwargs)try:sizes=saltext.azurerm.utils.azurerm.paged_object_to_list(compconn.availability_sets.list_available_sizes(resource_group_name=resource_group,availability_set_name=name))forsizeinsizes:result[size["name"]]=sizeexcept(HttpResponseError,ResourceNotFoundError)asexc:saltext.azurerm.utils.azurerm.log_cloud_error("compute",str(exc),**kwargs)result={"error":str(exc)}returnresult