Microsoft Azure Policy Insights Client Library for Python providing comprehensive Azure Policy services management.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Remediations operations enable creating, managing, and monitoring policy remediations to automatically fix non-compliant resources. Remediations can be created at management group, subscription, resource group, and individual resource scopes.
def list_deployments_at_management_group(
management_group_id: str,
remediation_name: str,
query_options: Optional[QueryOptions] = None,
**kwargs
) -> ItemPaged[RemediationDeploymentsListResult]{ .api }
List remediation deployments at management group scope.
Parameters:
management_group_id: Management group IDremediation_name: Name of the remediationquery_options: Optional query parametersReturns: Paginated collection of RemediationDeploymentsListResult objects
def cancel_at_management_group(
management_group_id: str,
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Cancel a remediation at management group scope.
Parameters:
management_group_id: Management group IDremediation_name: Name of the remediationReturns: Updated Remediation object
def list_for_management_group(
management_group_id: str,
query_options: Optional[QueryOptions] = None,
**kwargs
) -> ItemPaged[RemediationListResult]{ .api }
List remediations for a management group.
Parameters:
management_group_id: Management group IDquery_options: Optional query parametersReturns: Paginated collection of Remediation objects
def create_or_update_at_management_group(
management_group_id: str,
remediation_name: str,
parameters: Remediation,
**kwargs
) -> Remediation{ .api }
Create or update a remediation at management group scope.
Parameters:
management_group_id: Management group IDremediation_name: Name of the remediationparameters: Remediation parametersReturns: Created or updated Remediation object
def get_at_management_group(
management_group_id: str,
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Get a remediation at management group scope.
Parameters:
management_group_id: Management group IDremediation_name: Name of the remediationReturns: Remediation object
def delete_at_management_group(
management_group_id: str,
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Delete a remediation at management group scope.
Parameters:
management_group_id: Management group IDremediation_name: Name of the remediationReturns: Deleted Remediation object
def list_deployments_at_subscription(
remediation_name: str,
query_options: Optional[QueryOptions] = None,
**kwargs
) -> ItemPaged[RemediationDeploymentsListResult]{ .api }
List remediation deployments at subscription scope.
Parameters:
remediation_name: Name of the remediationquery_options: Optional query parametersReturns: Paginated collection of RemediationDeploymentsListResult objects
def cancel_at_subscription(
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Cancel a remediation at subscription scope.
Parameters:
remediation_name: Name of the remediationReturns: Updated Remediation object
def list_for_subscription(
query_options: Optional[QueryOptions] = None,
**kwargs
) -> ItemPaged[RemediationListResult]{ .api }
List remediations for a subscription.
Parameters:
query_options: Optional query parametersReturns: Paginated collection of RemediationListResult objects
def create_or_update_at_subscription(
remediation_name: str,
parameters: Remediation,
**kwargs
) -> Remediation{ .api }
Create or update a remediation at subscription scope.
Parameters:
remediation_name: Name of the remediationparameters: Remediation parametersReturns: Created or updated Remediation object
def get_at_subscription(
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Get a remediation at subscription scope.
Parameters:
remediation_name: Name of the remediationReturns: Remediation object
def delete_at_subscription(
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Delete a remediation at subscription scope.
Parameters:
remediation_name: Name of the remediationReturns: Deleted Remediation object
def list_deployments_at_resource_group(
subscription_id: str,
resource_group_name: str,
remediation_name: str,
query_options: Optional[QueryOptions] = None,
**kwargs
) -> ItemPaged[RemediationDeploymentsListResult]{ .api }
List remediation deployments at resource group scope.
Parameters:
subscription_id: Azure subscription IDresource_group_name: Resource group nameremediation_name: Name of the remediationquery_options: Optional query parametersReturns: Paginated collection of RemediationDeploymentsListResult objects
def cancel_at_resource_group(
subscription_id: str,
resource_group_name: str,
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Cancel a remediation at resource group scope.
Parameters:
subscription_id: Azure subscription IDresource_group_name: Resource group nameremediation_name: Name of the remediationReturns: Updated Remediation object
def list_for_resource_group(
subscription_id: str,
resource_group_name: str,
query_options: Optional[QueryOptions] = None,
**kwargs
) -> ItemPaged[RemediationListResult]{ .api }
List remediations for a resource group.
Parameters:
subscription_id: Azure subscription IDresource_group_name: Resource group namequery_options: Optional query parametersReturns: Paginated collection of Remediation objects
def create_or_update_at_resource_group(
subscription_id: str,
resource_group_name: str,
remediation_name: str,
parameters: Remediation,
**kwargs
) -> Remediation{ .api }
Create or update a remediation at resource group scope.
Parameters:
subscription_id: Azure subscription IDresource_group_name: Resource group nameremediation_name: Name of the remediationparameters: Remediation parametersReturns: Created or updated Remediation object
def get_at_resource_group(
subscription_id: str,
resource_group_name: str,
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Get a remediation at resource group scope.
Parameters:
subscription_id: Azure subscription IDresource_group_name: Resource group nameremediation_name: Name of the remediationReturns: Remediation object
def delete_at_resource_group(
subscription_id: str,
resource_group_name: str,
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Delete a remediation at resource group scope.
Parameters:
subscription_id: Azure subscription IDresource_group_name: Resource group nameremediation_name: Name of the remediationReturns: Deleted Remediation object
def list_deployments_at_resource(
resource_id: str,
remediation_name: str,
query_options: Optional[QueryOptions] = None,
**kwargs
) -> ItemPaged[RemediationDeploymentsListResult]{ .api }
List remediation deployments at individual resource scope.
Parameters:
resource_id: Full Azure resource IDremediation_name: Name of the remediationquery_options: Optional query parametersReturns: Paginated collection of RemediationDeploymentsListResult objects
def cancel_at_resource(
resource_id: str,
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Cancel a remediation at individual resource scope.
Parameters:
resource_id: Full Azure resource IDremediation_name: Name of the remediationReturns: Updated Remediation object
def list_for_resource(
resource_id: str,
query_options: Optional[QueryOptions] = None,
**kwargs
) -> ItemPaged[RemediationListResult]{ .api }
List remediations for an individual resource.
Parameters:
resource_id: Full Azure resource IDquery_options: Optional query parametersReturns: Paginated collection of Remediation objects
def create_or_update_at_resource(
resource_id: str,
remediation_name: str,
parameters: Remediation,
**kwargs
) -> Remediation{ .api }
Create or update a remediation at individual resource scope.
Parameters:
resource_id: Full Azure resource IDremediation_name: Name of the remediationparameters: Remediation parametersReturns: Created or updated Remediation object
def get_at_resource(
resource_id: str,
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Get a remediation at individual resource scope.
Parameters:
resource_id: Full Azure resource IDremediation_name: Name of the remediationReturns: Remediation object
def delete_at_resource(
resource_id: str,
remediation_name: str,
**kwargs
) -> Remediation{ .api }
Delete a remediation at individual resource scope.
Parameters:
resource_id: Full Azure resource IDremediation_name: Name of the remediationReturns: Deleted Remediation object
class Remediation:
id: Optional[str]
type: Optional[str]
name: Optional[str]
system_data: Optional[SystemData]
policy_assignment_id: Optional[str]
policy_definition_reference_id: Optional[str]
resource_discovery_mode: Optional[Union[str, ResourceDiscoveryMode]]
provisioning_state: Optional[str]
created_on: Optional[datetime.datetime]
last_updated_on: Optional[datetime.datetime]
filters: Optional[RemediationFilters]
deployment_status: Optional[RemediationDeploymentSummary]
status_message: Optional[str]
correlation_id: Optional[str]
resource_count: Optional[int]
parallel_deployments: Optional[int]
failure_threshold: Optional[RemediationPropertiesFailureThreshold]{ .api }
class RemediationDeployment:
remediated_resource_id: Optional[str]
deployment_id: Optional[str]
status: Optional[str]
resource_location: Optional[str]
error: Optional[ErrorDefinition]
created_on: Optional[datetime.datetime]
last_updated_on: Optional[datetime.datetime]{ .api }
class RemediationFilters:
locations: Optional[List[str]]{ .api }
class RemediationDeploymentSummary:
total_deployments: Optional[int]
successful_deployments: Optional[int]
failed_deployments: Optional[int]{ .api }
class ResourceDiscoveryMode(str, Enum):
EXISTING_NON_COMPLIANT = "ExistingNonCompliant"
RE_EVALUATE_COMPLIANCE = "ReEvaluateCompliance"{ .api }
from azure.mgmt.policyinsights.models import Remediation, ResourceDiscoveryMode
# Create a remediation for non-compliant resources
remediation_params = Remediation(
policy_assignment_id="/subscriptions/{subscription-id}/providers/Microsoft.Authorization/policyAssignments/my-policy-assignment",
resource_discovery_mode=ResourceDiscoveryMode.EXISTING_NON_COMPLIANT,
parallel_deployments=5,
failure_threshold={"percentage": 0.1} # Allow 10% failure rate
)
remediation = client.remediations.create_or_update_at_subscription(
remediation_name="fix-non-compliant-storage-accounts",
parameters=remediation_params
)
print(f"Created remediation: {remediation.name}")
print(f"Status: {remediation.provisioning_state}")# Get remediation status
remediation = client.remediations.get_at_subscription(
remediation_name="fix-non-compliant-storage-accounts"
)
print(f"Remediation status: {remediation.provisioning_state}")
print(f"Resources to remediate: {remediation.resource_count}")
if remediation.deployment_status:
status = remediation.deployment_status
print(f"Total deployments: {status.total_deployments}")
print(f"Successful: {status.successful_deployments}")
print(f"Failed: {status.failed_deployments}")
# List deployment details
deployments = client.remediations.list_deployments_at_subscription(
remediation_name="fix-non-compliant-storage-accounts"
)
for deployment in deployments:
print(f"Resource: {deployment.remediated_resource_id}")
print(f"Status: {deployment.status}")
if deployment.error:
print(f"Error: {deployment.error.message}")# Cancel a running remediation
cancelled_remediation = client.remediations.cancel_at_subscription(
remediation_name="fix-non-compliant-storage-accounts"
)
print(f"Remediation cancelled: {cancelled_remediation.provisioning_state}")from azure.mgmt.policyinsights.models import RemediationFilters
# Create remediation with location filter
remediation_params = Remediation(
policy_assignment_id="/subscriptions/{subscription-id}/providers/Microsoft.Authorization/policyAssignments/my-policy-assignment",
resource_discovery_mode=ResourceDiscoveryMode.RE_EVALUATE_COMPLIANCE,
filters=RemediationFilters(
locations=["eastus", "westus2"] # Only remediate resources in these regions
)
)
remediation = client.remediations.create_or_update_at_resource_group(
subscription_id=subscription_id,
resource_group_name="production-rg",
remediation_name="fix-location-specific-issues",
parameters=remediation_params
)# List all remediations for a subscription
remediations = client.remediations.list_for_subscription(
query_options=QueryOptions(top=50)
)
for remediation in remediations:
print(f"Name: {remediation.name}")
print(f"Policy Assignment: {remediation.policy_assignment_id}")
print(f"Status: {remediation.provisioning_state}")
print(f"Resource Count: {remediation.resource_count}")
print("---")Install with Tessl CLI
npx tessl i tessl/pypi-azure-mgmt-policyinsights