From 3000b8f2414dd3086288d8ce1b4dc69b7f6d7cc6 Mon Sep 17 00:00:00 2001 From: SDKAuto Date: Fri, 18 Oct 2024 19:17:52 +0000 Subject: [PATCH] CodeGen from PR 30475 in Azure/azure-rest-api-specs Merge 9b8e94dc078a0fea3f51a1506accc9dfc03001dd into cfe318beba82c1e5bda6a600f91de32cba814364 --- .../azure-mgmt-costmanagement/README.md | 7 +- .../azure-mgmt-costmanagement/_meta.json | 10 +- .../mgmt/costmanagement/_configuration.py | 11 +- .../costmanagement/_cost_management_client.py | 118 +- .../mgmt/costmanagement/_serialization.py | 118 +- .../azure/mgmt/costmanagement/_vendor.py | 30 - .../azure/mgmt/costmanagement/_version.py | 2 +- .../mgmt/costmanagement/aio/_configuration.py | 11 +- .../aio/_cost_management_client.py | 120 +- .../costmanagement/aio/operations/__init__.py | 40 +- .../aio/operations/_alerts_operations.py | 106 +- .../_benefit_recommendations_operations.py | 37 +- ...enefit_utilization_summaries_operations.py | 117 +- .../aio/operations/_budgets_operations.py | 697 +++++ .../_cost_allocation_rules_operations.py | 513 ++++ .../aio/operations/_dimensions_operations.py | 63 +- .../aio/operations/_exports_operations.py | 142 +- .../aio/operations/_forecast_operations.py | 87 +- ...utilization_summaries_report_operations.py | 1326 +++++++++ ...generate_cost_details_report_operations.py | 190 +- ...ost_report_operation_results_operations.py | 73 +- ...cost_report_operation_status_operations.py | 34 +- ...enerate_detailed_cost_report_operations.py | 105 +- ...e_reservation_details_report_operations.py | 137 +- .../aio/operations/_operations.py | 37 +- .../aio/operations/_price_sheet_operations.py | 303 +- .../aio/operations/_query_operations.py | 83 +- .../_scheduled_actions_operations.py | 302 +- .../aio/operations/_settings_operations.py | 377 +++ .../aio/operations/_views_operations.py | 203 +- .../mgmt/costmanagement/models/__init__.py | 102 + .../models/_cost_management_client_enums.py | 280 +- .../mgmt/costmanagement/models/_models_py3.py | 2548 +++++++++++++++-- .../costmanagement/operations/__init__.py | 40 +- .../operations/_alerts_operations.py | 122 +- .../_benefit_recommendations_operations.py | 41 +- ...enefit_utilization_summaries_operations.py | 133 +- .../operations/_budgets_operations.py | 804 ++++++ .../_cost_allocation_rules_operations.py | 653 +++++ .../operations/_dimensions_operations.py | 73 +- .../operations/_exports_operations.py | 166 +- .../operations/_forecast_operations.py | 97 +- ...utilization_summaries_report_operations.py | 1517 ++++++++++ ...generate_cost_details_report_operations.py | 200 +- ...ost_report_operation_results_operations.py | 77 +- ...cost_report_operation_status_operations.py | 38 +- ...enerate_detailed_cost_report_operations.py | 109 +- ...e_reservation_details_report_operations.py | 145 +- .../costmanagement/operations/_operations.py | 39 +- .../operations/_price_sheet_operations.py | 339 ++- .../operations/_query_operations.py | 93 +- .../_scheduled_actions_operations.py | 350 +-- .../operations/_settings_operations.py | 479 ++++ .../operations/_views_operations.py | 235 +- ...efit_recommendations_by_billing_account.py | 3 +- ...ion_summaries_report_by_billing_account.py | 46 + ...ion_summaries_report_by_billing_profile.py | 47 + ...ization_summaries_report_by_reservation.py | 46 + ...n_summaries_report_by_reservation_order.py | 45 + ...zation_summaries_report_by_savings_plan.py | 46 + ..._summaries_report_by_savings_plan_order.py | 45 + .../savings_plan_billing_account.py | 3 +- .../savings_plan_billing_profile.py | 3 +- .../savings_plan_savings_plan_id_monthly.py | 3 +- ...avings_plan_savings_plan_order_id_daily.py | 3 +- .../billing_account_alerts.py | 3 +- .../billing_account_dimensions_list.py | 3 +- ..._account_dimensions_list_expand_and_top.py | 3 +- ...ing_account_dimensions_list_with_filter.py | 3 +- .../billing_account_forecast.py | 3 +- .../billing_account_query.py | 3 +- .../billing_account_query_grouping.py | 3 +- .../billing_profile_alerts.py | 3 +- .../billing_profile_forecast.py | 3 +- ...eate_or_update_cost_subscription_budget.py | 80 + .../ea/billing_account_ea_alert_rule.py | 60 + ...unt_ea_alert_rule_reservation_id_filter.py | 70 + ...lert_rule_reserved_resource_type_filter.py | 66 + .../mca/billing_profile_alert_rule.py | 60 + ...rofile_alert_rule_reservation_id_filter.py | 70 + ...lert_rule_reserved_resource_type_filter.py | 66 + .../mca/customer_alert_rule.py | 60 + ...stomer_alert_rule_reservation_id_filter.py | 70 + ...lert_rule_reserved_resource_type_filter.py | 66 + .../budgets/delete/delete_budget.py | 40 + .../budgets/get/cost/get_cost_budget.py | 41 + .../get_reservation_utilization_alert_rule.py | 41 + .../ea/billing_account_budgets_list_ea.py | 41 + ...nt_budgets_list_ea_category_type_filter.py | 41 + .../list/ea/department_budgets_list.py | 41 + .../ea/enrollment_account_budgets_list.py | 41 + .../mca/billing_account_budgets_list_mca.py | 41 + ...t_budgets_list_mca_category_type_filter.py | 41 + .../list/mca/billing_profile_budgets_list.py | 41 + ...ofile_budgets_list_category_type_filter.py | 41 + .../budgets/list/mca/customer_budgets_list.py | 41 + ...tomer_budgets_list_category_type_filter.py | 41 + .../list/mca/invoice_section_budgets_list.py | 41 + .../rbac/management_group_budgets_list.py | 41 + .../list/rbac/resource_group_budgets_list.py | 41 + .../list/rbac/subscription_budgets_list.py | 41 + ...allocation_rule_check_name_availability.py | 44 + .../cost_allocation_rule_create.py | 63 + .../cost_allocation_rule_create_tag.py | 62 + .../cost_allocation_rule_delete.py | 40 + .../cost_allocation_rule_get.py | 41 + .../cost_allocation_rules_list.py | 41 + ...operation_results_by_subscription_scope.py | 3 +- .../generated_samples/department_alerts.py | 3 +- .../department_dimensions_list.py | 3 +- ...partment_dimensions_list_expand_and_top.py | 3 +- .../department_dimensions_list_with_filter.py | 3 +- .../generated_samples/department_forecast.py | 3 +- .../generated_samples/department_query.py | 3 +- .../department_query_grouping.py | 3 +- .../dismiss_resource_group_alerts.py | 3 +- .../dismiss_subscription_alerts.py | 3 +- .../ea_price_sheet_for_billing_period.py | 41 + .../enrollment_account_alerts.py | 3 +- .../enrollment_account_dimensions_list.py | 3 +- ..._account_dimensions_list_expand_and_top.py | 3 +- ...ent_account_dimensions_list_with_filter.py | 3 +- .../enrollment_account_forecast.py | 3 +- .../enrollment_account_query.py | 3 +- .../enrollment_account_query_grouping.py | 3 +- ...ort_create_or_update_by_billing_account.py | 7 +- .../export_create_or_update_by_department.py | 7 +- ..._create_or_update_by_enrollment_account.py | 7 +- ...rt_create_or_update_by_management_group.py | 7 +- ...port_create_or_update_by_resource_group.py | 7 +- ...export_create_or_update_by_subscription.py | 7 +- .../export_delete_by_billing_account.py | 3 +- .../export_delete_by_department.py | 3 +- .../export_delete_by_enrollment_account.py | 3 +- .../export_delete_by_management_group.py | 3 +- .../export_delete_by_resource_group.py | 3 +- .../export_delete_by_subscription.py | 3 +- .../export_get_by_billing_account.py | 3 +- .../export_get_by_department.py | 3 +- .../export_get_by_enrollment_account.py | 3 +- .../export_get_by_management_group.py | 3 +- .../export_get_by_resource_group.py | 3 +- .../export_get_by_subscription.py | 3 +- .../export_run_by_billing_account.py | 3 +- .../export_run_by_department.py | 3 +- .../export_run_by_enrollment_account.py | 3 +- .../export_run_by_management_group.py | 3 +- .../export_run_by_resource_group.py | 3 +- .../export_run_by_subscription.py | 3 +- ...port_run_history_get_by_billing_account.py | 3 +- .../export_run_history_get_by_department.py | 3 +- ...t_run_history_get_by_enrollment_account.py | 3 +- ...ort_run_history_get_by_management_group.py | 3 +- ...xport_run_history_get_by_resource_group.py | 3 +- .../export_run_history_get_by_subscription.py | 3 +- .../exports_get_by_billing_account.py | 3 +- .../exports_get_by_department.py | 3 +- .../exports_get_by_enrollment_account.py | 3 +- .../exports_get_by_management_group.py | 3 +- .../exports_get_by_resource_group.py | 3 +- .../exports_get_by_subscription.py | 3 +- .../external_billing_account_alerts.py | 3 +- .../external_billing_account_forecast.py | 3 +- .../external_billing_accounts_dimensions.py | 3 +- .../external_billing_accounts_query.py | 3 +- .../external_subscription_alerts.py | 3 +- .../external_subscription_forecast.py | 3 +- .../external_subscriptions_dimensions.py | 3 +- .../external_subscriptions_query.py | 3 +- ...e_agreement_customer_and_billing_period.py | 3 +- ...eport_by_billing_profile_and_invoice_id.py | 3 +- ..._profile_and_invoice_id_and_customer_id.py | 3 +- ...ails_report_by_customer_and_time_period.py | 3 +- ...s_report_by_departments_and_time_period.py | 3 +- ..._by_enrollment_accounts_and_time_period.py | 3 +- ..._report_by_subscription_and_time_period.py | 3 +- ...lling_account_legacy_and_billing_period.py | 3 +- ...eport_by_billing_profile_and_invoice_id.py | 3 +- ..._profile_and_invoice_id_and_customer_id.py | 3 +- ...cost_report_by_customer_and_time_period.py | 3 +- ..._report_by_subscription_and_time_period.py | 3 +- ...operation_results_by_subscription_scope.py | 3 +- ..._operation_status_by_subscription_scope.py | 3 +- ...ation_details_report_by_billing_account.py | 3 +- ...ation_details_report_by_billing_profile.py | 3 +- .../invoice_section_alerts.py | 3 +- .../invoice_section_forecast.py | 3 +- .../management_group_dimensions_list.py | 3 +- ...nt_group_dimensions_list_expand_and_top.py | 3 +- ...ement_group_dimensions_list_with_filter.py | 3 +- .../management_group_query.py | 3 +- .../management_group_query_grouping.py | 3 +- .../mca_billing_account_dimensions_list.py | 3 +- ..._account_dimensions_list_expand_and_top.py | 3 +- ...ing_account_dimensions_list_with_filter.py | 3 +- .../mca_billing_account_query.py | 3 +- .../mca_billing_account_query_grouping.py | 3 +- .../mca_billing_profile_dimensions_list.py | 3 +- ..._profile_dimensions_list_expand_and_top.py | 3 +- ...ing_profile_dimensions_list_with_filter.py | 3 +- .../mca_billing_profile_query.py | 3 +- .../mca_billing_profile_query_grouping.py | 3 +- .../mca_customer_dimensions_list.py | 3 +- ...customer_dimensions_list_expand_and_top.py | 3 +- ...ca_customer_dimensions_list_with_filter.py | 3 +- .../generated_samples/mca_customer_query.py | 3 +- .../mca_customer_query_grouping.py | 3 +- .../mca_invoice_section_dimensions_list.py | 3 +- ..._section_dimensions_list_expand_and_top.py | 3 +- ...ice_section_dimensions_list_with_filter.py | 3 +- .../mca_invoice_section_query.py | 3 +- .../mca_invoice_section_query_grouping.py | 3 +- .../generated_samples/operation_list.py | 3 +- .../generated_samples/pricesheet_download.py | 5 +- .../pricesheet_download_by_billing_profile.py | 3 +- .../generated_samples/private_view.py | 3 +- .../private_view_create_or_update.py | 3 +- .../generated_samples/private_view_delete.py | 3 +- .../generated_samples/private_view_list.py | 3 +- .../resource_group_alerts.py | 3 +- .../resource_group_dimensions_list.py | 3 +- .../resource_group_forecast.py | 3 +- .../generated_samples/resource_group_query.py | 3 +- .../resource_group_query_grouping.py | 3 +- ...ame_availabilityprivatescheduled_action.py | 3 +- ...name_availabilitysharedscheduled_action.py | 3 +- ...scheduled_actioncreate_or_updateprivate.py | 3 +- .../scheduled_actioncreate_or_updateshared.py | 3 +- .../scheduled_actiondeleteprivate.py | 3 +- .../scheduled_actiondeleteshared.py | 3 +- .../scheduled_actiongetprivate.py | 3 +- .../scheduled_actiongetshared.py | 3 +- ...tioninsight_alertcreate_or_updateshared.py | 3 +- .../scheduled_actionsend_nowprivate.py | 3 +- .../scheduled_actionsend_nowshared.py | 3 +- ...cheduled_actionslist_with_filterprivate.py | 3 +- ...scheduled_actionslist_with_filtershared.py | 3 +- .../scheduled_actionslistprivate.py | 3 +- .../scheduled_actionslistshared.py | 3 +- .../generated_samples/settingdelete.py | 40 + .../generated_samples/settingget.py | 41 + .../generated_samples/settings_list.py | 40 + .../settingscreate_or_update.py | 42 + .../single_resource_group_alert.py | 3 +- .../single_subscription_alert.py | 3 +- .../generated_samples/subscription_alerts.py | 3 +- .../subscription_dimensions_list.py | 3 +- .../subscription_forecast.py | 3 +- .../generated_samples/subscription_query.py | 3 +- .../subscription_query_grouping.py | 3 +- .../view_by_resource_group.py | 3 +- ...view_create_or_update_by_resource_group.py | 3 +- .../view_delete_by_resource_group.py | 3 +- .../view_list_by_resource_group.py | 3 +- .../generated_tests/conftest.py | 35 + .../test_cost_management_alerts_operations.py | 102 + ...cost_management_alerts_operations_async.py | 103 + ...ment_benefit_recommendations_operations.py | 30 + ...enefit_recommendations_operations_async.py | 31 + ...enefit_utilization_summaries_operations.py | 65 + ..._utilization_summaries_operations_async.py | 66 + ...test_cost_management_budgets_operations.py | 101 + ...ost_management_budgets_operations_async.py | 102 + ...gement_cost_allocation_rules_operations.py | 100 + ..._cost_allocation_rules_operations_async.py | 101 + ...t_cost_management_dimensions_operations.py | 42 + ..._management_dimensions_operations_async.py | 43 + ...test_cost_management_exports_operations.py | 160 ++ ...ost_management_exports_operations_async.py | 161 ++ ...est_cost_management_forecast_operations.py | 78 + ...st_management_forecast_operations_async.py | 79 + ...utilization_summaries_report_operations.py | 148 + ...ation_summaries_report_operations_async.py | 161 ++ ...generate_cost_details_report_operations.py | 48 + ...te_cost_details_report_operations_async.py | 53 + ...ost_report_operation_results_operations.py | 31 + ...port_operation_results_operations_async.py | 34 + ...cost_report_operation_status_operations.py | 31 + ...eport_operation_status_operations_async.py | 32 + ...enerate_detailed_cost_report_operations.py | 37 + ...e_detailed_cost_report_operations_async.py | 40 + ...e_reservation_details_report_operations.py | 46 + ...rvation_details_report_operations_async.py | 51 + .../test_cost_management_operations.py | 29 + .../test_cost_management_operations_async.py | 30 + ..._cost_management_price_sheet_operations.py | 56 + ...management_price_sheet_operations_async.py | 63 + .../test_cost_management_query_operations.py | 76 + ..._cost_management_query_operations_async.py | 77 + ...management_scheduled_actions_operations.py | 229 ++ ...ment_scheduled_actions_operations_async.py | 230 ++ ...est_cost_management_settings_operations.py | 73 + ...st_management_settings_operations_async.py | 74 + .../test_cost_management_views_operations.py | 175 ++ ..._cost_management_views_operations_async.py | 176 ++ .../azure-mgmt-costmanagement/setup.py | 12 +- 296 files changed, 17191 insertions(+), 2927 deletions(-) delete mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_vendor.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_budgets_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_cost_allocation_rules_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_benefit_utilization_summaries_report_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_settings_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_budgets_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_cost_allocation_rules_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_benefit_utilization_summaries_report_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_settings_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_billing_account.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_billing_profile.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_reservation.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_reservation_order.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_savings_plan.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_savings_plan_order.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/cost/create_or_update_cost_subscription_budget.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule_reservation_id_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule_reserved_resource_type_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule_reservation_id_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule_reserved_resource_type_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule_reservation_id_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule_reserved_resource_type_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/delete/delete_budget.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/get/cost/get_cost_budget.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/get/reservation_utilization/get_reservation_utilization_alert_rule.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/billing_account_budgets_list_ea.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/billing_account_budgets_list_ea_category_type_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/department_budgets_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/enrollment_account_budgets_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_account_budgets_list_mca.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_account_budgets_list_mca_category_type_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_profile_budgets_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_profile_budgets_list_category_type_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/customer_budgets_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/customer_budgets_list_category_type_filter.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/invoice_section_budgets_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/management_group_budgets_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/resource_group_budgets_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/subscription_budgets_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_check_name_availability.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_create.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_create_tag.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_delete.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_get.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rules_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/ea_price_sheet_for_billing_period.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingdelete.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingget.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settings_list.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingscreate_or_update.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/conftest.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_alerts_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_alerts_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_recommendations_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_recommendations_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_utilization_summaries_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_utilization_summaries_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_budgets_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_budgets_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_cost_allocation_rules_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_cost_allocation_rules_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_dimensions_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_dimensions_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_exports_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_exports_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_forecast_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_forecast_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_benefit_utilization_summaries_report_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_benefit_utilization_summaries_report_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_cost_details_report_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_cost_details_report_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_results_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_results_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_status_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_status_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_reservation_details_report_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_reservation_details_report_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_price_sheet_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_price_sheet_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_query_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_query_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_scheduled_actions_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_scheduled_actions_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_settings_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_settings_operations_async.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_views_operations.py create mode 100644 sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_views_operations_async.py diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/README.md b/sdk/costmanagement/azure-mgmt-costmanagement/README.md index 10ebab77fce9..74ca3d56fb6b 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/README.md +++ b/sdk/costmanagement/azure-mgmt-costmanagement/README.md @@ -1,7 +1,7 @@ # Microsoft Azure SDK for Python This is the Microsoft Azure Cost Management Client Library. -This package has been tested with Python 3.7+. +This package has been tested with Python 3.8+. For a more complete view of Azure libraries, see the [azure sdk python release](https://aka.ms/azsdk/python/all). ## _Disclaimer_ @@ -12,7 +12,7 @@ _Azure SDK Python packages support for Python 2.7 has ended 01 January 2022. For ### Prerequisites -- Python 3.7+ is required to use this package. +- Python 3.8+ is required to use this package. - [Azure subscription](https://azure.microsoft.com/free/) ### Install the package @@ -55,6 +55,3 @@ Code samples for this package can be found at: If you encounter any bugs or have suggestions, please file an issue in the [Issues](https://github.com/Azure/azure-sdk-for-python/issues) section of the project. - - -![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-python%2Fazure-mgmt-costmanagement%2FREADME.png) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/_meta.json b/sdk/costmanagement/azure-mgmt-costmanagement/_meta.json index 7c83f312205c..4219186106ab 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/_meta.json +++ b/sdk/costmanagement/azure-mgmt-costmanagement/_meta.json @@ -1,11 +1,11 @@ { - "commit": "493aa7224fd65fe1e5b4cff59bcae5c6cdf4525e", + "commit": "1965fc2bc3d768ba68c90b4c4f888fdae298d357", "repository_url": "https://github.com/Azure/azure-rest-api-specs", - "autorest": "3.9.2", + "autorest": "3.10.2", "use": [ - "@autorest/python@6.6.0", - "@autorest/modelerfour@4.24.3" + "@autorest/python@6.19.0", + "@autorest/modelerfour@4.27.0" ], - "autorest_command": "autorest specification/cost-management/resource-manager/readme.md --generate-sample=True --include-x-ms-examples-original-file=True --python --python-sdks-folder=/home/vsts/work/1/azure-sdk-for-python/sdk --tag=package-2022-10 --use=@autorest/python@6.6.0 --use=@autorest/modelerfour@4.24.3 --version=3.9.2 --version-tolerant=False", + "autorest_command": "autorest specification/cost-management/resource-manager/readme.md --generate-sample=True --generate-test=True --include-x-ms-examples-original-file=True --python --python-sdks-folder=/mnt/vss/_work/1/s/azure-sdk-for-python/sdk --use=@autorest/python@6.19.0 --use=@autorest/modelerfour@4.27.0 --version=3.10.2 --version-tolerant=False", "readme": "specification/cost-management/resource-manager/readme.md" } \ No newline at end of file diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_configuration.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_configuration.py index 8087ca9f9c1f..5d85ab34c43c 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_configuration.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_configuration.py @@ -8,7 +8,6 @@ from typing import Any, TYPE_CHECKING -from azure.core.configuration import Configuration from azure.core.pipeline import policies from azure.mgmt.core.policies import ARMChallengeAuthenticationPolicy, ARMHttpLoggingPolicy @@ -19,7 +18,7 @@ from azure.core.credentials import TokenCredential -class CostManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes +class CostManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long """Configuration for CostManagementClient. Note that all parameters used to create this instance are saved as instance @@ -27,14 +26,13 @@ class CostManagementClientConfiguration(Configuration): # pylint: disable=too-m :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials.TokenCredential - :keyword api_version: Api Version. Default value is "2022-10-01". Note that overriding this + :keyword api_version: Api Version. Default value is "2024-08-01". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str """ def __init__(self, credential: "TokenCredential", **kwargs: Any) -> None: - super(CostManagementClientConfiguration, self).__init__(**kwargs) - api_version: str = kwargs.pop("api_version", "2022-10-01") + api_version: str = kwargs.pop("api_version", "2024-08-01") if credential is None: raise ValueError("Parameter 'credential' must not be None.") @@ -43,6 +41,7 @@ def __init__(self, credential: "TokenCredential", **kwargs: Any) -> None: self.api_version = api_version self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-costmanagement/{}".format(VERSION)) + self.polling_interval = kwargs.get("polling_interval", 30) self._configure(**kwargs) def _configure(self, **kwargs: Any) -> None: @@ -51,9 +50,9 @@ def _configure(self, **kwargs: Any) -> None: self.proxy_policy = kwargs.get("proxy_policy") or policies.ProxyPolicy(**kwargs) self.logging_policy = kwargs.get("logging_policy") or policies.NetworkTraceLoggingPolicy(**kwargs) self.http_logging_policy = kwargs.get("http_logging_policy") or ARMHttpLoggingPolicy(**kwargs) - self.retry_policy = kwargs.get("retry_policy") or policies.RetryPolicy(**kwargs) self.custom_hook_policy = kwargs.get("custom_hook_policy") or policies.CustomHookPolicy(**kwargs) self.redirect_policy = kwargs.get("redirect_policy") or policies.RedirectPolicy(**kwargs) + self.retry_policy = kwargs.get("retry_policy") or policies.RetryPolicy(**kwargs) self.authentication_policy = kwargs.get("authentication_policy") if self.credential and not self.authentication_policy: self.authentication_policy = ARMChallengeAuthenticationPolicy( diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_cost_management_client.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_cost_management_client.py index 0e26e2fa3291..7aa7bca5fcb6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_cost_management_client.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_cost_management_client.py @@ -8,9 +8,12 @@ from copy import deepcopy from typing import Any, TYPE_CHECKING +from typing_extensions import Self +from azure.core.pipeline import policies from azure.core.rest import HttpRequest, HttpResponse from azure.mgmt.core import ARMPipelineClient +from azure.mgmt.core.policies import ARMAutoResourceProviderRegistrationPolicy from . import models as _models from ._configuration import CostManagementClientConfiguration @@ -19,9 +22,12 @@ AlertsOperations, BenefitRecommendationsOperations, BenefitUtilizationSummariesOperations, + BudgetsOperations, + CostAllocationRulesOperations, DimensionsOperations, ExportsOperations, ForecastOperations, + GenerateBenefitUtilizationSummariesReportOperations, GenerateCostDetailsReportOperations, GenerateDetailedCostReportOperationResultsOperations, GenerateDetailedCostReportOperationStatusOperations, @@ -31,6 +37,7 @@ PriceSheetOperations, QueryOperations, ScheduledActionsOperations, + SettingsOperations, ViewsOperations, ) @@ -45,20 +52,21 @@ class CostManagementClient: # pylint: disable=client-accepts-api-version-keywor :ivar operations: Operations operations :vartype operations: azure.mgmt.costmanagement.operations.Operations - :ivar views: ViewsOperations operations - :vartype views: azure.mgmt.costmanagement.operations.ViewsOperations - :ivar alerts: AlertsOperations operations - :vartype alerts: azure.mgmt.costmanagement.operations.AlertsOperations - :ivar forecast: ForecastOperations operations - :vartype forecast: azure.mgmt.costmanagement.operations.ForecastOperations - :ivar dimensions: DimensionsOperations operations - :vartype dimensions: azure.mgmt.costmanagement.operations.DimensionsOperations - :ivar query: QueryOperations operations - :vartype query: azure.mgmt.costmanagement.operations.QueryOperations - :ivar generate_reservation_details_report: GenerateReservationDetailsReportOperations - operations - :vartype generate_reservation_details_report: - azure.mgmt.costmanagement.operations.GenerateReservationDetailsReportOperations + :ivar cost_allocation_rules: CostAllocationRulesOperations operations + :vartype cost_allocation_rules: + azure.mgmt.costmanagement.operations.CostAllocationRulesOperations + :ivar benefit_recommendations: BenefitRecommendationsOperations operations + :vartype benefit_recommendations: + azure.mgmt.costmanagement.operations.BenefitRecommendationsOperations + :ivar benefit_utilization_summaries: BenefitUtilizationSummariesOperations operations + :vartype benefit_utilization_summaries: + azure.mgmt.costmanagement.operations.BenefitUtilizationSummariesOperations + :ivar generate_benefit_utilization_summaries_report: + GenerateBenefitUtilizationSummariesReportOperations operations + :vartype generate_benefit_utilization_summaries_report: + azure.mgmt.costmanagement.operations.GenerateBenefitUtilizationSummariesReportOperations + :ivar budgets: BudgetsOperations operations + :vartype budgets: azure.mgmt.costmanagement.operations.BudgetsOperations :ivar exports: ExportsOperations operations :vartype exports: azure.mgmt.costmanagement.operations.ExportsOperations :ivar generate_cost_details_report: GenerateCostDetailsReportOperations operations @@ -75,21 +83,31 @@ class CostManagementClient: # pylint: disable=client-accepts-api-version-keywor GenerateDetailedCostReportOperationStatusOperations operations :vartype generate_detailed_cost_report_operation_status: azure.mgmt.costmanagement.operations.GenerateDetailedCostReportOperationStatusOperations + :ivar views: ViewsOperations operations + :vartype views: azure.mgmt.costmanagement.operations.ViewsOperations + :ivar alerts: AlertsOperations operations + :vartype alerts: azure.mgmt.costmanagement.operations.AlertsOperations + :ivar forecast: ForecastOperations operations + :vartype forecast: azure.mgmt.costmanagement.operations.ForecastOperations + :ivar dimensions: DimensionsOperations operations + :vartype dimensions: azure.mgmt.costmanagement.operations.DimensionsOperations + :ivar query: QueryOperations operations + :vartype query: azure.mgmt.costmanagement.operations.QueryOperations + :ivar generate_reservation_details_report: GenerateReservationDetailsReportOperations + operations + :vartype generate_reservation_details_report: + azure.mgmt.costmanagement.operations.GenerateReservationDetailsReportOperations :ivar price_sheet: PriceSheetOperations operations :vartype price_sheet: azure.mgmt.costmanagement.operations.PriceSheetOperations :ivar scheduled_actions: ScheduledActionsOperations operations :vartype scheduled_actions: azure.mgmt.costmanagement.operations.ScheduledActionsOperations - :ivar benefit_recommendations: BenefitRecommendationsOperations operations - :vartype benefit_recommendations: - azure.mgmt.costmanagement.operations.BenefitRecommendationsOperations - :ivar benefit_utilization_summaries: BenefitUtilizationSummariesOperations operations - :vartype benefit_utilization_summaries: - azure.mgmt.costmanagement.operations.BenefitUtilizationSummariesOperations + :ivar settings: SettingsOperations operations + :vartype settings: azure.mgmt.costmanagement.operations.SettingsOperations :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials.TokenCredential :param base_url: Service URL. Default value is "https://management.azure.com". :type base_url: str - :keyword api_version: Api Version. Default value is "2022-10-01". Note that overriding this + :keyword api_version: Api Version. Default value is "2024-08-01". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no @@ -100,21 +118,44 @@ def __init__( self, credential: "TokenCredential", base_url: str = "https://management.azure.com", **kwargs: Any ) -> None: self._config = CostManagementClientConfiguration(credential=credential, **kwargs) - self._client: ARMPipelineClient = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) + _policies = kwargs.pop("policies", None) + if _policies is None: + _policies = [ + policies.RequestIdPolicy(**kwargs), + self._config.headers_policy, + self._config.user_agent_policy, + self._config.proxy_policy, + policies.ContentDecodePolicy(**kwargs), + ARMAutoResourceProviderRegistrationPolicy(), + self._config.redirect_policy, + self._config.retry_policy, + self._config.authentication_policy, + self._config.custom_hook_policy, + self._config.logging_policy, + policies.DistributedTracingPolicy(**kwargs), + policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None, + self._config.http_logging_policy, + ] + self._client: ARMPipelineClient = ARMPipelineClient(base_url=base_url, policies=_policies, **kwargs) client_models = {k: v for k, v in _models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) self._serialize.client_side_validation = False self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) - self.views = ViewsOperations(self._client, self._config, self._serialize, self._deserialize) - self.alerts = AlertsOperations(self._client, self._config, self._serialize, self._deserialize) - self.forecast = ForecastOperations(self._client, self._config, self._serialize, self._deserialize) - self.dimensions = DimensionsOperations(self._client, self._config, self._serialize, self._deserialize) - self.query = QueryOperations(self._client, self._config, self._serialize, self._deserialize) - self.generate_reservation_details_report = GenerateReservationDetailsReportOperations( + self.cost_allocation_rules = CostAllocationRulesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.benefit_recommendations = BenefitRecommendationsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.benefit_utilization_summaries = BenefitUtilizationSummariesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.generate_benefit_utilization_summaries_report = GenerateBenefitUtilizationSummariesReportOperations( self._client, self._config, self._serialize, self._deserialize ) + self.budgets = BudgetsOperations(self._client, self._config, self._serialize, self._deserialize) self.exports = ExportsOperations(self._client, self._config, self._serialize, self._deserialize) self.generate_cost_details_report = GenerateCostDetailsReportOperations( self._client, self._config, self._serialize, self._deserialize @@ -128,18 +169,21 @@ def __init__( self.generate_detailed_cost_report_operation_status = GenerateDetailedCostReportOperationStatusOperations( self._client, self._config, self._serialize, self._deserialize ) - self.price_sheet = PriceSheetOperations(self._client, self._config, self._serialize, self._deserialize) - self.scheduled_actions = ScheduledActionsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.benefit_recommendations = BenefitRecommendationsOperations( + self.views = ViewsOperations(self._client, self._config, self._serialize, self._deserialize) + self.alerts = AlertsOperations(self._client, self._config, self._serialize, self._deserialize) + self.forecast = ForecastOperations(self._client, self._config, self._serialize, self._deserialize) + self.dimensions = DimensionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.query = QueryOperations(self._client, self._config, self._serialize, self._deserialize) + self.generate_reservation_details_report = GenerateReservationDetailsReportOperations( self._client, self._config, self._serialize, self._deserialize ) - self.benefit_utilization_summaries = BenefitUtilizationSummariesOperations( + self.price_sheet = PriceSheetOperations(self._client, self._config, self._serialize, self._deserialize) + self.scheduled_actions = ScheduledActionsOperations( self._client, self._config, self._serialize, self._deserialize ) + self.settings = SettingsOperations(self._client, self._config, self._serialize, self._deserialize) - def _send_request(self, request: HttpRequest, **kwargs: Any) -> HttpResponse: + def _send_request(self, request: HttpRequest, *, stream: bool = False, **kwargs: Any) -> HttpResponse: """Runs the network request through the client's chained policies. >>> from azure.core.rest import HttpRequest @@ -159,12 +203,12 @@ def _send_request(self, request: HttpRequest, **kwargs: Any) -> HttpResponse: request_copy = deepcopy(request) request_copy.url = self._client.format_url(request_copy.url) - return self._client.send_request(request_copy, **kwargs) + return self._client.send_request(request_copy, stream=stream, **kwargs) # type: ignore def close(self) -> None: self._client.close() - def __enter__(self) -> "CostManagementClient": + def __enter__(self) -> Self: self._client.__enter__() return self diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_serialization.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_serialization.py index 842ae727fbbc..8139854b97bb 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_serialization.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_serialization.py @@ -63,8 +63,8 @@ import isodate # type: ignore -from azure.core.exceptions import DeserializationError, SerializationError, raise_with_traceback -from azure.core.serialization import NULL as AzureCoreNull +from azure.core.exceptions import DeserializationError, SerializationError +from azure.core.serialization import NULL as CoreNull _BOM = codecs.BOM_UTF8.decode(encoding="utf-8") @@ -124,7 +124,7 @@ def deserialize_from_text(cls, data: Optional[Union[AnyStr, IO]], content_type: pass return ET.fromstring(data_as_str) # nosec - except ET.ParseError: + except ET.ParseError as err: # It might be because the server has an issue, and returned JSON with # content-type XML.... # So let's try a JSON load, and if it's still broken @@ -143,7 +143,9 @@ def _json_attemp(data): # The function hack is because Py2.7 messes up with exception # context otherwise. _LOGGER.critical("Wasn't XML not JSON, failing") - raise_with_traceback(DeserializationError, "XML is invalid") + raise DeserializationError("XML is invalid") from err + elif content_type.startswith("text/"): + return data_as_str raise DeserializationError("Cannot deserialize content-type: {}".format(content_type)) @classmethod @@ -170,13 +172,6 @@ def deserialize_from_http_generics(cls, body_bytes: Optional[Union[AnyStr, IO]], return None -try: - basestring # type: ignore - unicode_str = unicode # type: ignore -except NameError: - basestring = str - unicode_str = str - _LOGGER = logging.getLogger(__name__) try: @@ -295,7 +290,7 @@ class Model(object): _validation: Dict[str, Dict[str, Any]] = {} def __init__(self, **kwargs: Any) -> None: - self.additional_properties: Dict[str, Any] = {} + self.additional_properties: Optional[Dict[str, Any]] = {} for k in kwargs: if k not in self._attribute_map: _LOGGER.warning("%s is not a known attribute of class %s and will be ignored", k, self.__class__) @@ -340,7 +335,7 @@ def _create_xml_node(cls): return _create_xml_node(xml_map.get("name", cls.__name__), xml_map.get("prefix", None), xml_map.get("ns", None)) def serialize(self, keep_readonly: bool = False, **kwargs: Any) -> JSON: - """Return the JSON that would be sent to azure from this model. + """Return the JSON that would be sent to server from this model. This is an alias to `as_dict(full_restapi_key_transformer, keep_readonly=False)`. @@ -351,7 +346,7 @@ def serialize(self, keep_readonly: bool = False, **kwargs: Any) -> JSON: :rtype: dict """ serializer = Serializer(self._infer_class_models()) - return serializer._serialize(self, keep_readonly=keep_readonly, **kwargs) + return serializer._serialize(self, keep_readonly=keep_readonly, **kwargs) # type: ignore def as_dict( self, @@ -390,7 +385,7 @@ def my_key_transformer(key, attr_desc, value): :rtype: dict """ serializer = Serializer(self._infer_class_models()) - return serializer._serialize(self, key_transformer=key_transformer, keep_readonly=keep_readonly, **kwargs) + return serializer._serialize(self, key_transformer=key_transformer, keep_readonly=keep_readonly, **kwargs) # type: ignore @classmethod def _infer_class_models(cls): @@ -415,7 +410,7 @@ def deserialize(cls: Type[ModelType], data: Any, content_type: Optional[str] = N :raises: DeserializationError if something went wrong """ deserializer = Deserializer(cls._infer_class_models()) - return deserializer(cls.__name__, data, content_type=content_type) + return deserializer(cls.__name__, data, content_type=content_type) # type: ignore @classmethod def from_dict( @@ -445,7 +440,7 @@ def from_dict( if key_extractors is None else key_extractors ) - return deserializer(cls.__name__, data, content_type=content_type) + return deserializer(cls.__name__, data, content_type=content_type) # type: ignore @classmethod def _flatten_subtype(cls, key, objects): @@ -545,7 +540,7 @@ class Serializer(object): "multiple": lambda x, y: x % y != 0, } - def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None): + def __init__(self, classes: Optional[Mapping[str, type]] = None): self.serialize_type = { "iso-8601": Serializer.serialize_iso, "rfc-1123": Serializer.serialize_rfc, @@ -561,7 +556,7 @@ def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None): "[]": self.serialize_iter, "{}": self.serialize_dict, } - self.dependencies: Dict[str, Type[ModelType]] = dict(classes) if classes else {} + self.dependencies: Dict[str, type] = dict(classes) if classes else {} self.key_transformer = full_restapi_key_transformer self.client_side_validation = True @@ -649,7 +644,7 @@ def _serialize(self, target_obj, data_type=None, **kwargs): else: # That's a basic type # Integrate namespace if necessary local_node = _create_xml_node(xml_name, xml_prefix, xml_ns) - local_node.text = unicode_str(new_attr) + local_node.text = str(new_attr) serialized.append(local_node) # type: ignore else: # JSON for k in reversed(keys): # type: ignore @@ -662,12 +657,13 @@ def _serialize(self, target_obj, data_type=None, **kwargs): _serialized.update(_new_attr) # type: ignore _new_attr = _new_attr[k] # type: ignore _serialized = _serialized[k] - except ValueError: - continue + except ValueError as err: + if isinstance(err, SerializationError): + raise except (AttributeError, KeyError, TypeError) as err: msg = "Attribute {} in object {} cannot be serialized.\n{}".format(attr_name, class_name, str(target_obj)) - raise_with_traceback(SerializationError, msg, err) + raise SerializationError(msg) from err else: return serialized @@ -709,7 +705,7 @@ def body(self, data, data_type, **kwargs): ] data = deserializer._deserialize(data_type, data) except DeserializationError as err: - raise_with_traceback(SerializationError, "Unable to build a model: " + str(err), err) + raise SerializationError("Unable to build a model: " + str(err)) from err return self._serialize(data, data_type, **kwargs) @@ -729,6 +725,7 @@ def url(self, name, data, data_type, **kwargs): if kwargs.get("skip_quote") is True: output = str(output) + output = output.replace("{", quote("{")).replace("}", quote("}")) else: output = quote(str(output), safe="") except SerializationError: @@ -741,7 +738,9 @@ def query(self, name, data, data_type, **kwargs): :param data: The data to be serialized. :param str data_type: The type to be serialized from. - :rtype: str + :keyword bool skip_quote: Whether to skip quote the serialized result. + Defaults to False. + :rtype: str, list :raises: TypeError if serialization fails. :raises: ValueError if data is None """ @@ -749,10 +748,8 @@ def query(self, name, data, data_type, **kwargs): # Treat the list aside, since we don't want to encode the div separator if data_type.startswith("["): internal_data_type = data_type[1:-1] - data = [self.serialize_data(d, internal_data_type, **kwargs) if d is not None else "" for d in data] - if not kwargs.get("skip_quote", False): - data = [quote(str(d), safe="") for d in data] - return str(self.serialize_iter(data, internal_data_type, **kwargs)) + do_quote = not kwargs.get("skip_quote", False) + return self.serialize_iter(data, internal_data_type, do_quote=do_quote, **kwargs) # Not a list, regular serialization output = self.serialize_data(data, data_type, **kwargs) @@ -803,7 +800,7 @@ def serialize_data(self, data, data_type, **kwargs): raise ValueError("No value for given attribute") try: - if data is AzureCoreNull: + if data is CoreNull: return None if data_type in self.basic_types.values(): return self.serialize_basic(data, data_type, **kwargs) @@ -823,7 +820,7 @@ def serialize_data(self, data, data_type, **kwargs): except (ValueError, TypeError) as err: msg = "Unable to serialize value: {!r} as type: {!r}." - raise_with_traceback(SerializationError, msg.format(data, data_type), err) + raise SerializationError(msg.format(data, data_type)) from err else: return self._serialize(data, **kwargs) @@ -891,6 +888,8 @@ def serialize_iter(self, data, iter_type, div=None, **kwargs): not be None or empty. :param str div: If set, this str will be used to combine the elements in the iterable into a combined string. Default is 'None'. + :keyword bool do_quote: Whether to quote the serialized result of each iterable element. + Defaults to False. :rtype: list, str """ if isinstance(data, str): @@ -903,9 +902,14 @@ def serialize_iter(self, data, iter_type, div=None, **kwargs): for d in data: try: serialized.append(self.serialize_data(d, iter_type, **kwargs)) - except ValueError: + except ValueError as err: + if isinstance(err, SerializationError): + raise serialized.append(None) + if kwargs.get("do_quote", False): + serialized = ["" if s is None else quote(str(s), safe="") for s in serialized] + if div: serialized = ["" if s is None else str(s) for s in serialized] serialized = div.join(serialized) @@ -950,7 +954,9 @@ def serialize_dict(self, attr, dict_type, **kwargs): for key, value in attr.items(): try: serialized[self.serialize_unicode(key)] = self.serialize_data(value, dict_type, **kwargs) - except ValueError: + except ValueError as err: + if isinstance(err, SerializationError): + raise serialized[self.serialize_unicode(key)] = None if "xml" in serialization_ctxt: @@ -983,7 +989,7 @@ def serialize_object(self, attr, **kwargs): return self.serialize_basic(attr, self.basic_types[obj_type], **kwargs) if obj_type is _long_type: return self.serialize_long(attr) - if obj_type is unicode_str: + if obj_type is str: return self.serialize_unicode(attr) if obj_type is datetime.datetime: return self.serialize_iso(attr) @@ -1160,10 +1166,10 @@ def serialize_iso(attr, **kwargs): return date + microseconds + "Z" except (ValueError, OverflowError) as err: msg = "Unable to serialize datetime object." - raise_with_traceback(SerializationError, msg, err) + raise SerializationError(msg) from err except AttributeError as err: msg = "ISO-8601 object must be valid Datetime object." - raise_with_traceback(TypeError, msg, err) + raise TypeError(msg) from err @staticmethod def serialize_unix(attr, **kwargs): @@ -1199,7 +1205,6 @@ def rest_key_extractor(attr, attr_desc, data): if working_data is None: # If at any point while following flatten JSON path see None, it means # that all properties under are None as well - # https://github.com/Azure/msrest-for-python/issues/197 return None key = ".".join(dict_keys[1:]) @@ -1220,7 +1225,6 @@ def rest_key_case_insensitive_extractor(attr, attr_desc, data): if working_data is None: # If at any point while following flatten JSON path see None, it means # that all properties under are None as well - # https://github.com/Azure/msrest-for-python/issues/197 return None key = ".".join(dict_keys[1:]) @@ -1361,7 +1365,7 @@ class Deserializer(object): valid_date = re.compile(r"\d{4}[-]\d{2}[-]\d{2}T\d{2}:\d{2}:\d{2}" r"\.?\d*Z?[-+]?[\d{2}]?:?[\d{2}]?") - def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None): + def __init__(self, classes: Optional[Mapping[str, type]] = None): self.deserialize_type = { "iso-8601": Deserializer.deserialize_iso, "rfc-1123": Deserializer.deserialize_rfc, @@ -1381,7 +1385,7 @@ def __init__(self, classes: Optional[Mapping[str, Type[ModelType]]] = None): "duration": (isodate.Duration, datetime.timedelta), "iso-8601": (datetime.datetime), } - self.dependencies: Dict[str, Type[ModelType]] = dict(classes) if classes else {} + self.dependencies: Dict[str, type] = dict(classes) if classes else {} self.key_extractors = [rest_key_extractor, xml_key_extractor] # Additional properties only works if the "rest_key_extractor" is used to # extract the keys. Making it to work whatever the key extractor is too much @@ -1434,12 +1438,12 @@ def _deserialize(self, target_obj, data): response, class_name = self._classify_target(target_obj, data) - if isinstance(response, basestring): + if isinstance(response, str): return self.deserialize_data(data, response) elif isinstance(response, type) and issubclass(response, Enum): return self.deserialize_enum(data, response) - if data is None: + if data is None or data is CoreNull: return data try: attributes = response._attribute_map # type: ignore @@ -1471,7 +1475,7 @@ def _deserialize(self, target_obj, data): d_attrs[attr] = value except (AttributeError, TypeError, KeyError) as err: msg = "Unable to deserialize to object: " + class_name # type: ignore - raise_with_traceback(DeserializationError, msg, err) + raise DeserializationError(msg) from err else: additional_properties = self._build_additional_properties(attributes, data) return self._instantiate_model(response, d_attrs, additional_properties) @@ -1505,14 +1509,14 @@ def _classify_target(self, target, data): if target is None: return None, None - if isinstance(target, basestring): + if isinstance(target, str): try: target = self.dependencies[target] except KeyError: return target, target try: - target = target._classify(data, self.dependencies) + target = target._classify(data, self.dependencies) # type: ignore except AttributeError: pass # Target is not a Model, no classify return target, target.__class__.__name__ # type: ignore @@ -1568,7 +1572,7 @@ def _unpack_content(raw_data, content_type=None): if hasattr(raw_data, "_content_consumed"): return RawDeserializer.deserialize_from_http_generics(raw_data.text, raw_data.headers) - if isinstance(raw_data, (basestring, bytes)) or hasattr(raw_data, "read"): + if isinstance(raw_data, (str, bytes)) or hasattr(raw_data, "read"): return RawDeserializer.deserialize_from_text(raw_data, content_type) # type: ignore return raw_data @@ -1642,7 +1646,7 @@ def deserialize_data(self, data, data_type): except (ValueError, TypeError, AttributeError) as err: msg = "Unable to deserialize response data." msg += " Data: {}, {}".format(data, data_type) - raise_with_traceback(DeserializationError, msg, err) + raise DeserializationError(msg) from err else: return self._deserialize(obj_type, data) @@ -1690,7 +1694,7 @@ def deserialize_object(self, attr, **kwargs): if isinstance(attr, ET.Element): # Do no recurse on XML, just return the tree as-is return attr - if isinstance(attr, basestring): + if isinstance(attr, str): return self.deserialize_basic(attr, "str") obj_type = type(attr) if obj_type in self.basic_types: @@ -1747,7 +1751,7 @@ def deserialize_basic(self, attr, data_type): if data_type == "bool": if attr in [True, False, 1, 0]: return bool(attr) - elif isinstance(attr, basestring): + elif isinstance(attr, str): if attr.lower() in ["true", "1"]: return True elif attr.lower() in ["false", "0"]: @@ -1798,7 +1802,6 @@ def deserialize_enum(data, enum_obj): data = data.value if isinstance(data, int): # Workaround. We might consider remove it in the future. - # https://github.com/Azure/azure-rest-api-specs/issues/141 try: return list(enum_obj.__members__.values())[data] except IndexError: @@ -1852,10 +1855,10 @@ def deserialize_decimal(attr): if isinstance(attr, ET.Element): attr = attr.text try: - return decimal.Decimal(attr) # type: ignore + return decimal.Decimal(str(attr)) # type: ignore except decimal.DecimalException as err: msg = "Invalid decimal {}".format(attr) - raise_with_traceback(DeserializationError, msg, err) + raise DeserializationError(msg) from err @staticmethod def deserialize_long(attr): @@ -1883,7 +1886,7 @@ def deserialize_duration(attr): duration = isodate.parse_duration(attr) except (ValueError, OverflowError, AttributeError) as err: msg = "Cannot deserialize duration object." - raise_with_traceback(DeserializationError, msg, err) + raise DeserializationError(msg) from err else: return duration @@ -1900,7 +1903,7 @@ def deserialize_date(attr): if re.search(r"[^\W\d_]", attr, re.I + re.U): # type: ignore raise DeserializationError("Date must have only digits and -. Received: %s" % attr) # This must NOT use defaultmonth/defaultday. Using None ensure this raises an exception. - return isodate.parse_date(attr, defaultmonth=None, defaultday=None) + return isodate.parse_date(attr, defaultmonth=0, defaultday=0) @staticmethod def deserialize_time(attr): @@ -1935,7 +1938,7 @@ def deserialize_rfc(attr): date_obj = date_obj.astimezone(tz=TZ_UTC) except ValueError as err: msg = "Cannot deserialize to rfc datetime object." - raise_with_traceback(DeserializationError, msg, err) + raise DeserializationError(msg) from err else: return date_obj @@ -1972,7 +1975,7 @@ def deserialize_iso(attr): raise OverflowError("Hit max or min date") except (ValueError, OverflowError, AttributeError) as err: msg = "Cannot deserialize datetime object." - raise_with_traceback(DeserializationError, msg, err) + raise DeserializationError(msg) from err else: return date_obj @@ -1988,9 +1991,10 @@ def deserialize_unix(attr): if isinstance(attr, ET.Element): attr = int(attr.text) # type: ignore try: + attr = int(attr) date_obj = datetime.datetime.fromtimestamp(attr, TZ_UTC) except ValueError as err: msg = "Cannot deserialize to unix datetime object." - raise_with_traceback(DeserializationError, msg, err) + raise DeserializationError(msg) from err else: return date_obj diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_vendor.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_vendor.py deleted file mode 100644 index bd0df84f5319..000000000000 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_vendor.py +++ /dev/null @@ -1,30 +0,0 @@ -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) AutoRest Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from typing import List, cast - -from azure.core.pipeline.transport import HttpRequest - - -def _convert_request(request, files=None): - data = request.content if not files else None - request = HttpRequest(method=request.method, url=request.url, headers=request.headers, data=data) - if files: - request.set_formdata_body(files) - return request - - -def _format_url_section(template, **kwargs): - components = template.split("/") - while components: - try: - return template.format(**kwargs) - except KeyError as key: - # Need the cast, as for some reasons "split" is typed as list[str | Any] - formatted_components = cast(List[str], template.split("/")) - components = [c for c in formatted_components if "{}".format(key.args[0]) not in c] - template = "/".join(components) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_version.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_version.py index f4674910a502..e5754a47ce68 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_version.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/_version.py @@ -6,4 +6,4 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -VERSION = "4.0.1" +VERSION = "1.0.0b1" diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/_configuration.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/_configuration.py index 55e6f4190aa5..8c2d789a48e5 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/_configuration.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/_configuration.py @@ -8,7 +8,6 @@ from typing import Any, TYPE_CHECKING -from azure.core.configuration import Configuration from azure.core.pipeline import policies from azure.mgmt.core.policies import ARMHttpLoggingPolicy, AsyncARMChallengeAuthenticationPolicy @@ -19,7 +18,7 @@ from azure.core.credentials_async import AsyncTokenCredential -class CostManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes +class CostManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long """Configuration for CostManagementClient. Note that all parameters used to create this instance are saved as instance @@ -27,14 +26,13 @@ class CostManagementClientConfiguration(Configuration): # pylint: disable=too-m :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials_async.AsyncTokenCredential - :keyword api_version: Api Version. Default value is "2022-10-01". Note that overriding this + :keyword api_version: Api Version. Default value is "2024-08-01". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str """ def __init__(self, credential: "AsyncTokenCredential", **kwargs: Any) -> None: - super(CostManagementClientConfiguration, self).__init__(**kwargs) - api_version: str = kwargs.pop("api_version", "2022-10-01") + api_version: str = kwargs.pop("api_version", "2024-08-01") if credential is None: raise ValueError("Parameter 'credential' must not be None.") @@ -43,6 +41,7 @@ def __init__(self, credential: "AsyncTokenCredential", **kwargs: Any) -> None: self.api_version = api_version self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-costmanagement/{}".format(VERSION)) + self.polling_interval = kwargs.get("polling_interval", 30) self._configure(**kwargs) def _configure(self, **kwargs: Any) -> None: @@ -51,9 +50,9 @@ def _configure(self, **kwargs: Any) -> None: self.proxy_policy = kwargs.get("proxy_policy") or policies.ProxyPolicy(**kwargs) self.logging_policy = kwargs.get("logging_policy") or policies.NetworkTraceLoggingPolicy(**kwargs) self.http_logging_policy = kwargs.get("http_logging_policy") or ARMHttpLoggingPolicy(**kwargs) - self.retry_policy = kwargs.get("retry_policy") or policies.AsyncRetryPolicy(**kwargs) self.custom_hook_policy = kwargs.get("custom_hook_policy") or policies.CustomHookPolicy(**kwargs) self.redirect_policy = kwargs.get("redirect_policy") or policies.AsyncRedirectPolicy(**kwargs) + self.retry_policy = kwargs.get("retry_policy") or policies.AsyncRetryPolicy(**kwargs) self.authentication_policy = kwargs.get("authentication_policy") if self.credential and not self.authentication_policy: self.authentication_policy = AsyncARMChallengeAuthenticationPolicy( diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/_cost_management_client.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/_cost_management_client.py index daa9e01ede33..d08400cd7bf8 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/_cost_management_client.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/_cost_management_client.py @@ -8,9 +8,12 @@ from copy import deepcopy from typing import Any, Awaitable, TYPE_CHECKING +from typing_extensions import Self +from azure.core.pipeline import policies from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.mgmt.core import AsyncARMPipelineClient +from azure.mgmt.core.policies import AsyncARMAutoResourceProviderRegistrationPolicy from .. import models as _models from .._serialization import Deserializer, Serializer @@ -19,9 +22,12 @@ AlertsOperations, BenefitRecommendationsOperations, BenefitUtilizationSummariesOperations, + BudgetsOperations, + CostAllocationRulesOperations, DimensionsOperations, ExportsOperations, ForecastOperations, + GenerateBenefitUtilizationSummariesReportOperations, GenerateCostDetailsReportOperations, GenerateDetailedCostReportOperationResultsOperations, GenerateDetailedCostReportOperationStatusOperations, @@ -31,6 +37,7 @@ PriceSheetOperations, QueryOperations, ScheduledActionsOperations, + SettingsOperations, ViewsOperations, ) @@ -45,20 +52,21 @@ class CostManagementClient: # pylint: disable=client-accepts-api-version-keywor :ivar operations: Operations operations :vartype operations: azure.mgmt.costmanagement.aio.operations.Operations - :ivar views: ViewsOperations operations - :vartype views: azure.mgmt.costmanagement.aio.operations.ViewsOperations - :ivar alerts: AlertsOperations operations - :vartype alerts: azure.mgmt.costmanagement.aio.operations.AlertsOperations - :ivar forecast: ForecastOperations operations - :vartype forecast: azure.mgmt.costmanagement.aio.operations.ForecastOperations - :ivar dimensions: DimensionsOperations operations - :vartype dimensions: azure.mgmt.costmanagement.aio.operations.DimensionsOperations - :ivar query: QueryOperations operations - :vartype query: azure.mgmt.costmanagement.aio.operations.QueryOperations - :ivar generate_reservation_details_report: GenerateReservationDetailsReportOperations - operations - :vartype generate_reservation_details_report: - azure.mgmt.costmanagement.aio.operations.GenerateReservationDetailsReportOperations + :ivar cost_allocation_rules: CostAllocationRulesOperations operations + :vartype cost_allocation_rules: + azure.mgmt.costmanagement.aio.operations.CostAllocationRulesOperations + :ivar benefit_recommendations: BenefitRecommendationsOperations operations + :vartype benefit_recommendations: + azure.mgmt.costmanagement.aio.operations.BenefitRecommendationsOperations + :ivar benefit_utilization_summaries: BenefitUtilizationSummariesOperations operations + :vartype benefit_utilization_summaries: + azure.mgmt.costmanagement.aio.operations.BenefitUtilizationSummariesOperations + :ivar generate_benefit_utilization_summaries_report: + GenerateBenefitUtilizationSummariesReportOperations operations + :vartype generate_benefit_utilization_summaries_report: + azure.mgmt.costmanagement.aio.operations.GenerateBenefitUtilizationSummariesReportOperations + :ivar budgets: BudgetsOperations operations + :vartype budgets: azure.mgmt.costmanagement.aio.operations.BudgetsOperations :ivar exports: ExportsOperations operations :vartype exports: azure.mgmt.costmanagement.aio.operations.ExportsOperations :ivar generate_cost_details_report: GenerateCostDetailsReportOperations operations @@ -75,21 +83,31 @@ class CostManagementClient: # pylint: disable=client-accepts-api-version-keywor GenerateDetailedCostReportOperationStatusOperations operations :vartype generate_detailed_cost_report_operation_status: azure.mgmt.costmanagement.aio.operations.GenerateDetailedCostReportOperationStatusOperations + :ivar views: ViewsOperations operations + :vartype views: azure.mgmt.costmanagement.aio.operations.ViewsOperations + :ivar alerts: AlertsOperations operations + :vartype alerts: azure.mgmt.costmanagement.aio.operations.AlertsOperations + :ivar forecast: ForecastOperations operations + :vartype forecast: azure.mgmt.costmanagement.aio.operations.ForecastOperations + :ivar dimensions: DimensionsOperations operations + :vartype dimensions: azure.mgmt.costmanagement.aio.operations.DimensionsOperations + :ivar query: QueryOperations operations + :vartype query: azure.mgmt.costmanagement.aio.operations.QueryOperations + :ivar generate_reservation_details_report: GenerateReservationDetailsReportOperations + operations + :vartype generate_reservation_details_report: + azure.mgmt.costmanagement.aio.operations.GenerateReservationDetailsReportOperations :ivar price_sheet: PriceSheetOperations operations :vartype price_sheet: azure.mgmt.costmanagement.aio.operations.PriceSheetOperations :ivar scheduled_actions: ScheduledActionsOperations operations :vartype scheduled_actions: azure.mgmt.costmanagement.aio.operations.ScheduledActionsOperations - :ivar benefit_recommendations: BenefitRecommendationsOperations operations - :vartype benefit_recommendations: - azure.mgmt.costmanagement.aio.operations.BenefitRecommendationsOperations - :ivar benefit_utilization_summaries: BenefitUtilizationSummariesOperations operations - :vartype benefit_utilization_summaries: - azure.mgmt.costmanagement.aio.operations.BenefitUtilizationSummariesOperations + :ivar settings: SettingsOperations operations + :vartype settings: azure.mgmt.costmanagement.aio.operations.SettingsOperations :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param base_url: Service URL. Default value is "https://management.azure.com". :type base_url: str - :keyword api_version: Api Version. Default value is "2022-10-01". Note that overriding this + :keyword api_version: Api Version. Default value is "2024-08-01". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no @@ -100,21 +118,44 @@ def __init__( self, credential: "AsyncTokenCredential", base_url: str = "https://management.azure.com", **kwargs: Any ) -> None: self._config = CostManagementClientConfiguration(credential=credential, **kwargs) - self._client: AsyncARMPipelineClient = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) + _policies = kwargs.pop("policies", None) + if _policies is None: + _policies = [ + policies.RequestIdPolicy(**kwargs), + self._config.headers_policy, + self._config.user_agent_policy, + self._config.proxy_policy, + policies.ContentDecodePolicy(**kwargs), + AsyncARMAutoResourceProviderRegistrationPolicy(), + self._config.redirect_policy, + self._config.retry_policy, + self._config.authentication_policy, + self._config.custom_hook_policy, + self._config.logging_policy, + policies.DistributedTracingPolicy(**kwargs), + policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None, + self._config.http_logging_policy, + ] + self._client: AsyncARMPipelineClient = AsyncARMPipelineClient(base_url=base_url, policies=_policies, **kwargs) client_models = {k: v for k, v in _models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) self._deserialize = Deserializer(client_models) self._serialize.client_side_validation = False self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) - self.views = ViewsOperations(self._client, self._config, self._serialize, self._deserialize) - self.alerts = AlertsOperations(self._client, self._config, self._serialize, self._deserialize) - self.forecast = ForecastOperations(self._client, self._config, self._serialize, self._deserialize) - self.dimensions = DimensionsOperations(self._client, self._config, self._serialize, self._deserialize) - self.query = QueryOperations(self._client, self._config, self._serialize, self._deserialize) - self.generate_reservation_details_report = GenerateReservationDetailsReportOperations( + self.cost_allocation_rules = CostAllocationRulesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.benefit_recommendations = BenefitRecommendationsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.benefit_utilization_summaries = BenefitUtilizationSummariesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.generate_benefit_utilization_summaries_report = GenerateBenefitUtilizationSummariesReportOperations( self._client, self._config, self._serialize, self._deserialize ) + self.budgets = BudgetsOperations(self._client, self._config, self._serialize, self._deserialize) self.exports = ExportsOperations(self._client, self._config, self._serialize, self._deserialize) self.generate_cost_details_report = GenerateCostDetailsReportOperations( self._client, self._config, self._serialize, self._deserialize @@ -128,18 +169,23 @@ def __init__( self.generate_detailed_cost_report_operation_status = GenerateDetailedCostReportOperationStatusOperations( self._client, self._config, self._serialize, self._deserialize ) - self.price_sheet = PriceSheetOperations(self._client, self._config, self._serialize, self._deserialize) - self.scheduled_actions = ScheduledActionsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.benefit_recommendations = BenefitRecommendationsOperations( + self.views = ViewsOperations(self._client, self._config, self._serialize, self._deserialize) + self.alerts = AlertsOperations(self._client, self._config, self._serialize, self._deserialize) + self.forecast = ForecastOperations(self._client, self._config, self._serialize, self._deserialize) + self.dimensions = DimensionsOperations(self._client, self._config, self._serialize, self._deserialize) + self.query = QueryOperations(self._client, self._config, self._serialize, self._deserialize) + self.generate_reservation_details_report = GenerateReservationDetailsReportOperations( self._client, self._config, self._serialize, self._deserialize ) - self.benefit_utilization_summaries = BenefitUtilizationSummariesOperations( + self.price_sheet = PriceSheetOperations(self._client, self._config, self._serialize, self._deserialize) + self.scheduled_actions = ScheduledActionsOperations( self._client, self._config, self._serialize, self._deserialize ) + self.settings = SettingsOperations(self._client, self._config, self._serialize, self._deserialize) - def _send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncHttpResponse]: + def _send_request( + self, request: HttpRequest, *, stream: bool = False, **kwargs: Any + ) -> Awaitable[AsyncHttpResponse]: """Runs the network request through the client's chained policies. >>> from azure.core.rest import HttpRequest @@ -159,12 +205,12 @@ def _send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncH request_copy = deepcopy(request) request_copy.url = self._client.format_url(request_copy.url) - return self._client.send_request(request_copy, **kwargs) + return self._client.send_request(request_copy, stream=stream, **kwargs) # type: ignore async def close(self) -> None: await self._client.close() - async def __aenter__(self) -> "CostManagementClient": + async def __aenter__(self) -> Self: await self._client.__aenter__() return self diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/__init__.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/__init__.py index ba3f6355c103..643bcbdd80f7 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/__init__.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/__init__.py @@ -7,12 +7,13 @@ # -------------------------------------------------------------------------- from ._operations import Operations -from ._views_operations import ViewsOperations -from ._alerts_operations import AlertsOperations -from ._forecast_operations import ForecastOperations -from ._dimensions_operations import DimensionsOperations -from ._query_operations import QueryOperations -from ._generate_reservation_details_report_operations import GenerateReservationDetailsReportOperations +from ._cost_allocation_rules_operations import CostAllocationRulesOperations +from ._benefit_recommendations_operations import BenefitRecommendationsOperations +from ._benefit_utilization_summaries_operations import BenefitUtilizationSummariesOperations +from ._generate_benefit_utilization_summaries_report_operations import ( + GenerateBenefitUtilizationSummariesReportOperations, +) +from ._budgets_operations import BudgetsOperations from ._exports_operations import ExportsOperations from ._generate_cost_details_report_operations import GenerateCostDetailsReportOperations from ._generate_detailed_cost_report_operations import GenerateDetailedCostReportOperations @@ -22,10 +23,15 @@ from ._generate_detailed_cost_report_operation_status_operations import ( GenerateDetailedCostReportOperationStatusOperations, ) +from ._views_operations import ViewsOperations +from ._alerts_operations import AlertsOperations +from ._forecast_operations import ForecastOperations +from ._dimensions_operations import DimensionsOperations +from ._query_operations import QueryOperations +from ._generate_reservation_details_report_operations import GenerateReservationDetailsReportOperations from ._price_sheet_operations import PriceSheetOperations from ._scheduled_actions_operations import ScheduledActionsOperations -from ._benefit_recommendations_operations import BenefitRecommendationsOperations -from ._benefit_utilization_summaries_operations import BenefitUtilizationSummariesOperations +from ._settings_operations import SettingsOperations from ._patch import __all__ as _patch_all from ._patch import * # pylint: disable=unused-wildcard-import @@ -33,21 +39,25 @@ __all__ = [ "Operations", + "CostAllocationRulesOperations", + "BenefitRecommendationsOperations", + "BenefitUtilizationSummariesOperations", + "GenerateBenefitUtilizationSummariesReportOperations", + "BudgetsOperations", + "ExportsOperations", + "GenerateCostDetailsReportOperations", + "GenerateDetailedCostReportOperations", + "GenerateDetailedCostReportOperationResultsOperations", + "GenerateDetailedCostReportOperationStatusOperations", "ViewsOperations", "AlertsOperations", "ForecastOperations", "DimensionsOperations", "QueryOperations", "GenerateReservationDetailsReportOperations", - "ExportsOperations", - "GenerateCostDetailsReportOperations", - "GenerateDetailedCostReportOperations", - "GenerateDetailedCostReportOperationResultsOperations", - "GenerateDetailedCostReportOperationStatusOperations", "PriceSheetOperations", "ScheduledActionsOperations", - "BenefitRecommendationsOperations", - "BenefitUtilizationSummariesOperations", + "SettingsOperations", ] __all__.extend([p for p in _patch_all if p not in __all__]) _patch_sdk() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_alerts_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_alerts_operations.py index aac3086e4d30..ffd365769a26 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_alerts_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_alerts_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -18,14 +19,12 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._alerts_operations import ( build_dismiss_request, build_get_request, @@ -33,6 +32,10 @@ build_list_request, ) +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -80,12 +83,11 @@ async def list(self, scope: str, **kwargs: Any) -> _models.AlertsResult: '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' specific for partners. Required. :type scope: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: AlertsResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.AlertsResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -99,19 +101,17 @@ async def list(self, scope: str, **kwargs: Any) -> _models.AlertsResult: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.AlertsResult] = kwargs.pop("cls", None) - request = build_list_request( + _request = build_list_request( scope=scope, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -121,14 +121,12 @@ async def list(self, scope: str, **kwargs: Any) -> _models.AlertsResult: error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("AlertsResult", pipeline_response) + deserialized = self._deserialize("AlertsResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - list.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/alerts"} + return deserialized # type: ignore @distributed_trace_async async def get(self, scope: str, alert_id: str, **kwargs: Any) -> _models.Alert: @@ -156,12 +154,11 @@ async def get(self, scope: str, alert_id: str, **kwargs: Any) -> _models.Alert: :type scope: str :param alert_id: Alert ID. Required. :type alert_id: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Alert or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Alert :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -175,20 +172,18 @@ async def get(self, scope: str, alert_id: str, **kwargs: Any) -> _models.Alert: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.Alert] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( scope=scope, alert_id=alert_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -198,14 +193,12 @@ async def get(self, scope: str, alert_id: str, **kwargs: Any) -> _models.Alert: error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("Alert", pipeline_response) + deserialized = self._deserialize("Alert", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/alerts/{alertId}"} + return deserialized # type: ignore @overload async def dismiss( @@ -246,7 +239,6 @@ async def dismiss( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Alert or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Alert :raises ~azure.core.exceptions.HttpResponseError: @@ -254,7 +246,7 @@ async def dismiss( @overload async def dismiss( - self, scope: str, alert_id: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, scope: str, alert_id: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> _models.Alert: """Dismisses the specified alert. @@ -281,11 +273,10 @@ async def dismiss( :param alert_id: Alert ID. Required. :type alert_id: str :param parameters: Parameters supplied to the Dismiss Alert operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Alert or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Alert :raises ~azure.core.exceptions.HttpResponseError: @@ -293,7 +284,7 @@ async def dismiss( @distributed_trace_async async def dismiss( - self, scope: str, alert_id: str, parameters: Union[_models.DismissAlertPayload, IO], **kwargs: Any + self, scope: str, alert_id: str, parameters: Union[_models.DismissAlertPayload, IO[bytes]], **kwargs: Any ) -> _models.Alert: """Dismisses the specified alert. @@ -320,17 +311,13 @@ async def dismiss( :param alert_id: Alert ID. Required. :type alert_id: str :param parameters: Parameters supplied to the Dismiss Alert operation. Is either a - DismissAlertPayload type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.DismissAlertPayload or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + DismissAlertPayload type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.DismissAlertPayload or IO[bytes] :return: Alert or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Alert :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -353,23 +340,21 @@ async def dismiss( else: _json = self._serialize.body(parameters, "DismissAlertPayload") - request = build_dismiss_request( + _request = build_dismiss_request( scope=scope, alert_id=alert_id, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.dismiss.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -379,14 +364,12 @@ async def dismiss( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("Alert", pipeline_response) + deserialized = self._deserialize("Alert", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - dismiss.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/alerts/{alertId}"} + return deserialized # type: ignore @distributed_trace_async async def list_external( @@ -410,12 +393,11 @@ async def list_external( '{externalBillingAccountId}' for consolidated account used with dimension/query operations. Required. :type external_cloud_provider_id: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: AlertsResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.AlertsResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -429,20 +411,18 @@ async def list_external( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.AlertsResult] = kwargs.pop("cls", None) - request = build_list_external_request( + _request = build_list_external_request( external_cloud_provider_type=external_cloud_provider_type, external_cloud_provider_id=external_cloud_provider_id, api_version=api_version, - template_url=self.list_external.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -452,13 +432,9 @@ async def list_external( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("AlertsResult", pipeline_response) + deserialized = self._deserialize("AlertsResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - list_external.metadata = { - "url": "/providers/Microsoft.CostManagement/{externalCloudProviderType}/{externalCloudProviderId}/alerts" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_benefit_recommendations_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_benefit_recommendations_operations.py index cafa32b3d00d..545ac73c104a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_benefit_recommendations_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_benefit_recommendations_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar +import sys +from typing import Any, AsyncIterable, Callable, Dict, Optional, Type, TypeVar import urllib.parse from azure.core.async_paging import AsyncItemPaged, AsyncList @@ -19,16 +20,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._benefit_recommendations_operations import build_list_request +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -87,7 +90,6 @@ def list( :param expand: May be used to expand the properties by: properties/usage, properties/allRecommendationDetails. Default value is None. :type expand: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitRecommendationModel or the result of cls(response) :rtype: @@ -100,7 +102,7 @@ def list( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitRecommendationsListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -111,18 +113,16 @@ def list( def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( billing_scope=billing_scope, filter=filter, orderby=orderby, expand=expand, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -134,13 +134,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("BenefitRecommendationsListResult", pipeline_response) @@ -150,11 +149,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -166,5 +165,3 @@ async def get_next(next_link=None): return pipeline_response return AsyncItemPaged(get_next, extract_data) - - list.metadata = {"url": "/{billingScope}/providers/Microsoft.CostManagement/benefitRecommendations"} diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_benefit_utilization_summaries_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_benefit_utilization_summaries_operations.py index 81caf0cefc6f..3122c50cb819 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_benefit_utilization_summaries_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_benefit_utilization_summaries_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union +import sys +from typing import Any, AsyncIterable, Callable, Dict, Optional, Type, TypeVar, Union import urllib.parse from azure.core.async_paging import AsyncItemPaged, AsyncList @@ -19,14 +20,12 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._benefit_utilization_summaries_operations import ( build_list_by_billing_account_id_request, build_list_by_billing_profile_id_request, @@ -34,6 +33,10 @@ build_list_by_savings_plan_order_request, ) +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -79,7 +82,6 @@ def list_by_billing_account_id( :param filter: Supports filtering by properties/benefitId, properties/benefitOrderId and properties/usageDate. Default value is None. :type filter: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitUtilizationSummary or the result of cls(response) :rtype: @@ -92,7 +94,7 @@ def list_by_billing_account_id( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitUtilizationSummariesListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -103,17 +105,15 @@ def list_by_billing_account_id( def prepare_request(next_link=None): if not next_link: - request = build_list_by_billing_account_id_request( + _request = build_list_by_billing_account_id_request( billing_account_id=billing_account_id, grain_parameter=grain_parameter, filter=filter, api_version=api_version, - template_url=self.list_by_billing_account_id.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -125,13 +125,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("BenefitUtilizationSummariesListResult", pipeline_response) @@ -141,11 +140,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -158,10 +157,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_by_billing_account_id.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/benefitUtilizationSummaries" - } - @distributed_trace def list_by_billing_profile_id( self, @@ -187,7 +182,6 @@ def list_by_billing_profile_id( :param filter: Supports filtering by properties/benefitId, properties/benefitOrderId and properties/usageDate. Default value is None. :type filter: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitUtilizationSummary or the result of cls(response) :rtype: @@ -200,7 +194,7 @@ def list_by_billing_profile_id( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitUtilizationSummariesListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -211,18 +205,16 @@ def list_by_billing_profile_id( def prepare_request(next_link=None): if not next_link: - request = build_list_by_billing_profile_id_request( + _request = build_list_by_billing_profile_id_request( billing_account_id=billing_account_id, billing_profile_id=billing_profile_id, grain_parameter=grain_parameter, filter=filter, api_version=api_version, - template_url=self.list_by_billing_profile_id.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -234,13 +226,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("BenefitUtilizationSummariesListResult", pipeline_response) @@ -250,11 +241,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -267,10 +258,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_by_billing_profile_id.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/providers/Microsoft.CostManagement/benefitUtilizationSummaries" - } - @distributed_trace def list_by_savings_plan_order( self, @@ -291,7 +278,6 @@ def list_by_savings_plan_order( :param grain_parameter: Grain. Known values are: "Hourly", "Daily", and "Monthly". Default value is None. :type grain_parameter: str or ~azure.mgmt.costmanagement.models.GrainParameter - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitUtilizationSummary or the result of cls(response) :rtype: @@ -304,7 +290,7 @@ def list_by_savings_plan_order( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitUtilizationSummariesListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -315,17 +301,15 @@ def list_by_savings_plan_order( def prepare_request(next_link=None): if not next_link: - request = build_list_by_savings_plan_order_request( + _request = build_list_by_savings_plan_order_request( savings_plan_order_id=savings_plan_order_id, filter=filter, grain_parameter=grain_parameter, api_version=api_version, - template_url=self.list_by_savings_plan_order.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -337,13 +321,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("BenefitUtilizationSummariesListResult", pipeline_response) @@ -353,11 +336,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -370,10 +353,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_by_savings_plan_order.metadata = { - "url": "/providers/Microsoft.BillingBenefits/savingsPlanOrders/{savingsPlanOrderId}/providers/Microsoft.CostManagement/benefitUtilizationSummaries" - } - @distributed_trace def list_by_savings_plan_id( self, @@ -397,7 +376,6 @@ def list_by_savings_plan_id( :param grain_parameter: Grain. Known values are: "Hourly", "Daily", and "Monthly". Default value is None. :type grain_parameter: str or ~azure.mgmt.costmanagement.models.GrainParameter - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitUtilizationSummary or the result of cls(response) :rtype: @@ -410,7 +388,7 @@ def list_by_savings_plan_id( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitUtilizationSummariesListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -421,18 +399,16 @@ def list_by_savings_plan_id( def prepare_request(next_link=None): if not next_link: - request = build_list_by_savings_plan_id_request( + _request = build_list_by_savings_plan_id_request( savings_plan_order_id=savings_plan_order_id, savings_plan_id=savings_plan_id, filter=filter, grain_parameter=grain_parameter, api_version=api_version, - template_url=self.list_by_savings_plan_id.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -444,13 +420,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("BenefitUtilizationSummariesListResult", pipeline_response) @@ -460,11 +435,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -476,7 +451,3 @@ async def get_next(next_link=None): return pipeline_response return AsyncItemPaged(get_next, extract_data) - - list_by_savings_plan_id.metadata = { - "url": "/providers/Microsoft.BillingBenefits/savingsPlanOrders/{savingsPlanOrderId}/savingsPlans/{savingsPlanId}/providers/Microsoft.CostManagement/benefitUtilizationSummaries" - } diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_budgets_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_budgets_operations.py new file mode 100644 index 000000000000..b644bb780e73 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_budgets_operations.py @@ -0,0 +1,697 @@ +# pylint: disable=too-many-lines,too-many-statements +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from io import IOBase +import sys +from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload +import urllib.parse + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models as _models +from ...operations._budgets_operations import ( + build_create_or_update_request, + build_delete_request, + build_get_request, + build_list_request, +) + +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class BudgetsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.costmanagement.aio.CostManagementClient`'s + :attr:`budgets` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, scope: str, filter: Optional[str] = None, **kwargs: Any) -> AsyncIterable["_models.Budget"]: + """Lists all budgets for the defined scope. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param filter: OData filter option. May be used to filter budgets by properties/category. The + filter supports 'eq' only. Default value is None. + :type filter: str + :return: An iterator like instance of either Budget or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.costmanagement.models.Budget] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.BudgetsListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + scope=scope, + filter=filter, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("BudgetsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @distributed_trace_async + async def get(self, scope: str, budget_name: str, **kwargs: Any) -> _models.Budget: + """Gets the budget for the scope by budget name. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :return: Budget or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Budget + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.Budget] = kwargs.pop("cls", None) + + _request = build_get_request( + scope=scope, + budget_name=budget_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Budget", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def create_or_update( + self, + scope: str, + budget_name: str, + parameters: _models.Budget, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Budget: + """The operation to create or update a budget. You can optionally provide an eTag if desired as a + form of concurrency control. To obtain the latest eTag for a given budget, perform a get + operation prior to your put operation. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :param parameters: Parameters supplied to the Create Budget operation. Required. + :type parameters: ~azure.mgmt.costmanagement.models.Budget + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: Budget or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Budget + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update( + self, + scope: str, + budget_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Budget: + """The operation to create or update a budget. You can optionally provide an eTag if desired as a + form of concurrency control. To obtain the latest eTag for a given budget, perform a get + operation prior to your put operation. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :param parameters: Parameters supplied to the Create Budget operation. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: Budget or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Budget + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create_or_update( + self, scope: str, budget_name: str, parameters: Union[_models.Budget, IO[bytes]], **kwargs: Any + ) -> _models.Budget: + """The operation to create or update a budget. You can optionally provide an eTag if desired as a + form of concurrency control. To obtain the latest eTag for a given budget, perform a get + operation prior to your put operation. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :param parameters: Parameters supplied to the Create Budget operation. Is either a Budget type + or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.Budget or IO[bytes] + :return: Budget or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Budget + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.Budget] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _json = self._serialize.body(parameters, "Budget") + + _request = build_create_or_update_request( + scope=scope, + budget_name=budget_name, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Budget", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def delete( # pylint: disable=inconsistent-return-statements + self, scope: str, budget_name: str, **kwargs: Any + ) -> None: + """The operation to delete a budget. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_request( + scope=scope, + budget_name=budget_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_cost_allocation_rules_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_cost_allocation_rules_operations.py new file mode 100644 index 000000000000..e9447745ce1a --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_cost_allocation_rules_operations.py @@ -0,0 +1,513 @@ +# pylint: disable=too-many-lines,too-many-statements +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from io import IOBase +import sys +from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload +import urllib.parse + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models as _models +from ...operations._cost_allocation_rules_operations import ( + build_check_name_availability_request, + build_create_or_update_request, + build_delete_request, + build_get_request, + build_list_request, +) + +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class CostAllocationRulesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.costmanagement.aio.CostManagementClient`'s + :attr:`cost_allocation_rules` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, billing_account_id: str, **kwargs: Any) -> AsyncIterable["_models.CostAllocationRuleDefinition"]: + """Get the list of all cost allocation rules for a billing account or enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :return: An iterator like instance of either CostAllocationRuleDefinition or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.CostAllocationRuleList] = kwargs.pop("cls", None) + + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + billing_account_id=billing_account_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("CostAllocationRuleList", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @overload + async def check_name_availability( + self, + billing_account_id: str, + cost_allocation_rule_check_name_availability_request: _models.CostAllocationRuleCheckNameAvailabilityRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CostAllocationRuleCheckNameAvailabilityResponse: + """Checks availability and correctness of a name for a cost allocation rule. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param cost_allocation_rule_check_name_availability_request: Cost allocation rule to be created + or updated. Required. + :type cost_allocation_rule_check_name_availability_request: + ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: CostAllocationRuleCheckNameAvailabilityResponse or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def check_name_availability( + self, + billing_account_id: str, + cost_allocation_rule_check_name_availability_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CostAllocationRuleCheckNameAvailabilityResponse: + """Checks availability and correctness of a name for a cost allocation rule. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param cost_allocation_rule_check_name_availability_request: Cost allocation rule to be created + or updated. Required. + :type cost_allocation_rule_check_name_availability_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: CostAllocationRuleCheckNameAvailabilityResponse or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def check_name_availability( + self, + billing_account_id: str, + cost_allocation_rule_check_name_availability_request: Union[ + _models.CostAllocationRuleCheckNameAvailabilityRequest, IO[bytes] + ], + **kwargs: Any + ) -> _models.CostAllocationRuleCheckNameAvailabilityResponse: + """Checks availability and correctness of a name for a cost allocation rule. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param cost_allocation_rule_check_name_availability_request: Cost allocation rule to be created + or updated. Is either a CostAllocationRuleCheckNameAvailabilityRequest type or a IO[bytes] + type. Required. + :type cost_allocation_rule_check_name_availability_request: + ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityRequest or IO[bytes] + :return: CostAllocationRuleCheckNameAvailabilityResponse or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.CostAllocationRuleCheckNameAvailabilityResponse] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(cost_allocation_rule_check_name_availability_request, (IOBase, bytes)): + _content = cost_allocation_rule_check_name_availability_request + else: + _json = self._serialize.body( + cost_allocation_rule_check_name_availability_request, "CostAllocationRuleCheckNameAvailabilityRequest" + ) + + _request = build_check_name_availability_request( + billing_account_id=billing_account_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize( + "CostAllocationRuleCheckNameAvailabilityResponse", pipeline_response.http_response + ) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def get(self, billing_account_id: str, rule_name: str, **kwargs: Any) -> _models.CostAllocationRuleDefinition: + """Get a cost allocation rule by rule name and billing account or enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :return: CostAllocationRuleDefinition or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.CostAllocationRuleDefinition] = kwargs.pop("cls", None) + + _request = build_get_request( + billing_account_id=billing_account_id, + rule_name=rule_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("CostAllocationRuleDefinition", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def create_or_update( + self, + billing_account_id: str, + rule_name: str, + cost_allocation_rule: _models.CostAllocationRuleDefinition, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CostAllocationRuleDefinition: + """Create/Update a rule to allocate cost between different resources within a billing account or + enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :param cost_allocation_rule: Cost allocation rule to be created or updated. Required. + :type cost_allocation_rule: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: CostAllocationRuleDefinition or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update( + self, + billing_account_id: str, + rule_name: str, + cost_allocation_rule: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CostAllocationRuleDefinition: + """Create/Update a rule to allocate cost between different resources within a billing account or + enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :param cost_allocation_rule: Cost allocation rule to be created or updated. Required. + :type cost_allocation_rule: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: CostAllocationRuleDefinition or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create_or_update( + self, + billing_account_id: str, + rule_name: str, + cost_allocation_rule: Union[_models.CostAllocationRuleDefinition, IO[bytes]], + **kwargs: Any + ) -> _models.CostAllocationRuleDefinition: + """Create/Update a rule to allocate cost between different resources within a billing account or + enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :param cost_allocation_rule: Cost allocation rule to be created or updated. Is either a + CostAllocationRuleDefinition type or a IO[bytes] type. Required. + :type cost_allocation_rule: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition or + IO[bytes] + :return: CostAllocationRuleDefinition or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.CostAllocationRuleDefinition] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(cost_allocation_rule, (IOBase, bytes)): + _content = cost_allocation_rule + else: + _json = self._serialize.body(cost_allocation_rule, "CostAllocationRuleDefinition") + + _request = build_create_or_update_request( + billing_account_id=billing_account_id, + rule_name=rule_name, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("CostAllocationRuleDefinition", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def delete( # pylint: disable=inconsistent-return-statements + self, billing_account_id: str, rule_name: str, **kwargs: Any + ) -> None: + """Delete cost allocation rule for billing account or enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_request( + billing_account_id=billing_account_id, + rule_name=rule_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_dimensions_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_dimensions_operations.py index 1f64b263a6b0..bf46cd7e8045 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_dimensions_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_dimensions_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union +import sys +from typing import Any, AsyncIterable, Callable, Dict, Optional, Type, TypeVar, Union import urllib.parse from azure.core.async_paging import AsyncItemPaged, AsyncList @@ -19,16 +20,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._dimensions_operations import build_by_external_cloud_provider_type_request, build_list_request +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -99,7 +102,6 @@ def list( :param top: May be used to limit the number of results to the most recent N dimension data. Default value is None. :type top: int - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either Dimension or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.costmanagement.models.Dimension] :raises ~azure.core.exceptions.HttpResponseError: @@ -110,7 +112,7 @@ def list( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.DimensionsListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -121,19 +123,17 @@ def list( def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( scope=scope, filter=filter, expand=expand, skiptoken=skiptoken, top=top, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -145,13 +145,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("DimensionsListResult", pipeline_response) @@ -161,11 +160,11 @@ async def extract_data(pipeline_response): return None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -178,8 +177,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/dimensions"} - @distributed_trace def by_external_cloud_provider_type( self, @@ -221,7 +218,6 @@ def by_external_cloud_provider_type( :param top: May be used to limit the number of results to the most recent N dimension data. Default value is None. :type top: int - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either Dimension or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.costmanagement.models.Dimension] :raises ~azure.core.exceptions.HttpResponseError: @@ -232,7 +228,7 @@ def by_external_cloud_provider_type( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.DimensionsListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -243,7 +239,7 @@ def by_external_cloud_provider_type( def prepare_request(next_link=None): if not next_link: - request = build_by_external_cloud_provider_type_request( + _request = build_by_external_cloud_provider_type_request( external_cloud_provider_type=external_cloud_provider_type, external_cloud_provider_id=external_cloud_provider_id, filter=filter, @@ -251,12 +247,10 @@ def prepare_request(next_link=None): skiptoken=skiptoken, top=top, api_version=api_version, - template_url=self.by_external_cloud_provider_type.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -268,13 +262,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("DimensionsListResult", pipeline_response) @@ -284,11 +277,11 @@ async def extract_data(pipeline_response): return None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -300,7 +293,3 @@ async def get_next(next_link=None): return pipeline_response return AsyncItemPaged(get_next, extract_data) - - by_external_cloud_provider_type.metadata = { - "url": "/providers/Microsoft.CostManagement/{externalCloudProviderType}/{externalCloudProviderId}/dimensions" - } diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_exports_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_exports_operations.py index bfa77ebf03d9..043f2f8852b4 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_exports_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_exports_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -18,14 +19,12 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._exports_operations import ( build_create_or_update_request, build_delete_request, @@ -35,6 +34,10 @@ build_list_request, ) +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -86,12 +89,11 @@ async def list(self, scope: str, expand: Optional[str] = None, **kwargs: Any) -> 'runHistory' is supported and will return information for the last run of each export. Default value is None. :type expand: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ExportListResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ExportListResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -105,20 +107,18 @@ async def list(self, scope: str, expand: Optional[str] = None, **kwargs: Any) -> api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ExportListResult] = kwargs.pop("cls", None) - request = build_list_request( + _request = build_list_request( scope=scope, expand=expand, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -128,14 +128,12 @@ async def list(self, scope: str, expand: Optional[str] = None, **kwargs: Any) -> error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ExportListResult", pipeline_response) + deserialized = self._deserialize("ExportListResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - list.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports"} + return deserialized # type: ignore @distributed_trace_async async def get(self, scope: str, export_name: str, expand: Optional[str] = None, **kwargs: Any) -> _models.Export: @@ -167,12 +165,11 @@ async def get(self, scope: str, export_name: str, expand: Optional[str] = None, 'runHistory' is supported and will return information for the last 10 runs of the export. Default value is None. :type expand: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Export or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Export :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -186,21 +183,19 @@ async def get(self, scope: str, export_name: str, expand: Optional[str] = None, api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.Export] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( scope=scope, export_name=export_name, expand=expand, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -210,14 +205,12 @@ async def get(self, scope: str, export_name: str, expand: Optional[str] = None, error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("Export", pipeline_response) + deserialized = self._deserialize("Export", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}"} + return deserialized # type: ignore @overload async def create_or_update( @@ -260,7 +253,6 @@ async def create_or_update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Export or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Export :raises ~azure.core.exceptions.HttpResponseError: @@ -268,7 +260,13 @@ async def create_or_update( @overload async def create_or_update( - self, scope: str, export_name: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, + scope: str, + export_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any ) -> _models.Export: """The operation to create or update a export. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -297,11 +295,10 @@ async def create_or_update( :param export_name: Export Name. Required. :type export_name: str :param parameters: Parameters supplied to the CreateOrUpdate Export operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Export or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Export :raises ~azure.core.exceptions.HttpResponseError: @@ -309,7 +306,7 @@ async def create_or_update( @distributed_trace_async async def create_or_update( - self, scope: str, export_name: str, parameters: Union[_models.Export, IO], **kwargs: Any + self, scope: str, export_name: str, parameters: Union[_models.Export, IO[bytes]], **kwargs: Any ) -> _models.Export: """The operation to create or update a export. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -338,17 +335,13 @@ async def create_or_update( :param export_name: Export Name. Required. :type export_name: str :param parameters: Parameters supplied to the CreateOrUpdate Export operation. Is either a - Export type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.Export or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + Export type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.Export or IO[bytes] :return: Export or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Export :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -371,23 +364,21 @@ async def create_or_update( else: _json = self._serialize.body(parameters, "Export") - request = build_create_or_update_request( + _request = build_create_or_update_request( scope=scope, export_name=export_name, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -397,19 +388,13 @@ async def create_or_update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("Export", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("Export", pipeline_response) + deserialized = self._deserialize("Export", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}"} - @distributed_trace_async async def delete( # pylint: disable=inconsistent-return-statements self, scope: str, export_name: str, **kwargs: Any @@ -438,12 +423,11 @@ async def delete( # pylint: disable=inconsistent-return-statements :type scope: str :param export_name: Export Name. Required. :type export_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -457,20 +441,18 @@ async def delete( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( scope=scope, export_name=export_name, api_version=api_version, - template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -481,9 +463,7 @@ async def delete( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace_async async def execute( # pylint: disable=inconsistent-return-statements @@ -513,12 +493,11 @@ async def execute( # pylint: disable=inconsistent-return-statements :type scope: str :param export_name: Export Name. Required. :type export_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -532,20 +511,18 @@ async def execute( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_execute_request( + _request = build_execute_request( scope=scope, export_name=export_name, api_version=api_version, - template_url=self.execute.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -556,9 +533,7 @@ async def execute( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - execute.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}/run"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace_async async def get_execution_history( @@ -588,12 +563,11 @@ async def get_execution_history( :type scope: str :param export_name: Export Name. Required. :type export_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ExportExecutionListResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ExportExecutionListResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -607,20 +581,18 @@ async def get_execution_history( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ExportExecutionListResult] = kwargs.pop("cls", None) - request = build_get_execution_history_request( + _request = build_get_execution_history_request( scope=scope, export_name=export_name, api_version=api_version, - template_url=self.get_execution_history.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -630,13 +602,9 @@ async def get_execution_history( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ExportExecutionListResult", pipeline_response) + deserialized = self._deserialize("ExportExecutionListResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get_execution_history.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}/runHistory" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_forecast_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_forecast_operations.py index 45ae7f6285bc..f9b9764bd5ed 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_forecast_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_forecast_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -18,16 +19,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._forecast_operations import build_external_cloud_provider_usage_request, build_usage_request +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -93,7 +96,6 @@ async def usage( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult or None :raises ~azure.core.exceptions.HttpResponseError: @@ -103,7 +105,7 @@ async def usage( async def usage( self, scope: str, - parameters: IO, + parameters: IO[bytes], filter: Optional[str] = None, *, content_type: str = "application/json", @@ -133,7 +135,7 @@ async def usage( :type scope: str :param parameters: Parameters supplied to the CreateOrUpdate Forecast Config operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :param filter: May be used to filter forecasts by properties/usageDate (Utc time), properties/chargeType or properties/grain. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Default value is None. @@ -141,7 +143,6 @@ async def usage( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult or None :raises ~azure.core.exceptions.HttpResponseError: @@ -149,7 +150,11 @@ async def usage( @distributed_trace_async async def usage( - self, scope: str, parameters: Union[_models.ForecastDefinition, IO], filter: Optional[str] = None, **kwargs: Any + self, + scope: str, + parameters: Union[_models.ForecastDefinition, IO[bytes]], + filter: Optional[str] = None, + **kwargs: Any ) -> Optional[_models.ForecastResult]: """Lists the forecast charges for scope defined. @@ -174,21 +179,17 @@ async def usage( specific for partners. Required. :type scope: str :param parameters: Parameters supplied to the CreateOrUpdate Forecast Config operation. Is - either a ForecastDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.ForecastDefinition or IO + either a ForecastDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.ForecastDefinition or IO[bytes] :param filter: May be used to filter forecasts by properties/usageDate (Utc time), properties/chargeType or properties/grain. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Default value is None. :type filter: str - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult or None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -211,23 +212,21 @@ async def usage( else: _json = self._serialize.body(parameters, "ForecastDefinition") - request = build_usage_request( + _request = build_usage_request( scope=scope, filter=filter, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.usage.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -239,14 +238,12 @@ async def usage( deserialized = None if response.status_code == 200: - deserialized = self._deserialize("ForecastResult", pipeline_response) + deserialized = self._deserialize("ForecastResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - usage.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/forecast"} + return deserialized # type: ignore @overload async def external_cloud_provider_usage( @@ -284,7 +281,6 @@ async def external_cloud_provider_usage( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult :raises ~azure.core.exceptions.HttpResponseError: @@ -295,7 +291,7 @@ async def external_cloud_provider_usage( self, external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, - parameters: IO, + parameters: IO[bytes], filter: Optional[str] = None, *, content_type: str = "application/json", @@ -318,7 +314,7 @@ async def external_cloud_provider_usage( :type external_cloud_provider_id: str :param parameters: Parameters supplied to the CreateOrUpdate Forecast Config operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :param filter: May be used to filter forecasts by properties/usageDate (Utc time), properties/chargeType or properties/grain. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Default value is None. @@ -326,7 +322,6 @@ async def external_cloud_provider_usage( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult :raises ~azure.core.exceptions.HttpResponseError: @@ -337,7 +332,7 @@ async def external_cloud_provider_usage( self, external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, - parameters: Union[_models.ForecastDefinition, IO], + parameters: Union[_models.ForecastDefinition, IO[bytes]], filter: Optional[str] = None, **kwargs: Any ) -> _models.ForecastResult: @@ -357,21 +352,17 @@ async def external_cloud_provider_usage( Required. :type external_cloud_provider_id: str :param parameters: Parameters supplied to the CreateOrUpdate Forecast Config operation. Is - either a ForecastDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.ForecastDefinition or IO + either a ForecastDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.ForecastDefinition or IO[bytes] :param filter: May be used to filter forecasts by properties/usageDate (Utc time), properties/chargeType or properties/grain. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Default value is None. :type filter: str - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -394,7 +385,7 @@ async def external_cloud_provider_usage( else: _json = self._serialize.body(parameters, "ForecastDefinition") - request = build_external_cloud_provider_usage_request( + _request = build_external_cloud_provider_usage_request( external_cloud_provider_type=external_cloud_provider_type, external_cloud_provider_id=external_cloud_provider_id, filter=filter, @@ -402,16 +393,14 @@ async def external_cloud_provider_usage( content_type=content_type, json=_json, content=_content, - template_url=self.external_cloud_provider_usage.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -421,13 +410,9 @@ async def external_cloud_provider_usage( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ForecastResult", pipeline_response) + deserialized = self._deserialize("ForecastResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - external_cloud_provider_usage.metadata = { - "url": "/providers/Microsoft.CostManagement/{externalCloudProviderType}/{externalCloudProviderId}/forecast" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_benefit_utilization_summaries_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_benefit_utilization_summaries_report_operations.py new file mode 100644 index 000000000000..4bc42de824c3 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_benefit_utilization_summaries_report_operations.py @@ -0,0 +1,1326 @@ +# pylint: disable=too-many-lines,too-many-statements +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from io import IOBase +import sys +from typing import Any, AsyncIterator, Callable, Dict, IO, Optional, Type, TypeVar, Union, cast, overload + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling + +from ... import models as _models +from ...operations._generate_benefit_utilization_summaries_report_operations import ( + build_generate_by_billing_account_request, + build_generate_by_billing_profile_request, + build_generate_by_reservation_id_request, + build_generate_by_reservation_order_id_request, + build_generate_by_savings_plan_id_request, + build_generate_by_savings_plan_order_id_request, +) + +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class GenerateBenefitUtilizationSummariesReportOperations: # pylint: disable=name-too-long + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.costmanagement.aio.CostManagementClient`'s + :attr:`generate_benefit_utilization_summaries_report` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + async def _generate_by_billing_account_initial( + self, + billing_account_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_billing_account_request( + billing_account_id=billing_account_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_generate_by_billing_account( + self, + billing_account_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account. + This API supports only enrollment accounts. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_generate_by_billing_account( + self, + billing_account_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account. + This API supports only enrollment accounts. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_generate_by_billing_account( + self, + billing_account_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account. + This API supports only enrollment accounts. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._generate_by_billing_account_initial( + billing_account_id=billing_account_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _generate_by_billing_profile_initial( + self, + billing_account_id: str, + billing_profile_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_billing_profile_request( + billing_account_id=billing_account_id, + billing_profile_id=billing_profile_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_generate_by_billing_profile( + self, + billing_account_id: str, + billing_profile_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account + and billing profile. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param billing_profile_id: Billing profile ID. Required. + :type billing_profile_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_generate_by_billing_profile( + self, + billing_account_id: str, + billing_profile_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account + and billing profile. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param billing_profile_id: Billing profile ID. Required. + :type billing_profile_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_generate_by_billing_profile( + self, + billing_account_id: str, + billing_profile_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account + and billing profile. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param billing_profile_id: Billing profile ID. Required. + :type billing_profile_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._generate_by_billing_profile_initial( + billing_account_id=billing_account_id, + billing_profile_id=billing_profile_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _generate_by_reservation_order_id_initial( # pylint: disable=name-too-long + self, + reservation_order_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_reservation_order_id_request( + reservation_order_id=reservation_order_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_generate_by_reservation_order_id( + self, + reservation_order_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_generate_by_reservation_order_id( + self, + reservation_order_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_generate_by_reservation_order_id( + self, + reservation_order_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._generate_by_reservation_order_id_initial( + reservation_order_id=reservation_order_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _generate_by_reservation_id_initial( + self, + reservation_order_id: str, + reservation_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_reservation_id_request( + reservation_order_id=reservation_order_id, + reservation_id=reservation_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_generate_by_reservation_id( + self, + reservation_order_id: str, + reservation_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param reservation_id: Reservation ID. Required. + :type reservation_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_generate_by_reservation_id( + self, + reservation_order_id: str, + reservation_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param reservation_id: Reservation ID. Required. + :type reservation_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_generate_by_reservation_id( + self, + reservation_order_id: str, + reservation_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param reservation_id: Reservation ID. Required. + :type reservation_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._generate_by_reservation_id_initial( + reservation_order_id=reservation_order_id, + reservation_id=reservation_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _generate_by_savings_plan_order_id_initial( # pylint: disable=name-too-long + self, + savings_plan_order_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_savings_plan_order_id_request( + savings_plan_order_id=savings_plan_order_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_generate_by_savings_plan_order_id( + self, + savings_plan_order_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_generate_by_savings_plan_order_id( + self, + savings_plan_order_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_generate_by_savings_plan_order_id( + self, + savings_plan_order_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._generate_by_savings_plan_order_id_initial( + savings_plan_order_id=savings_plan_order_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _generate_by_savings_plan_id_initial( + self, + savings_plan_order_id: str, + savings_plan_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_savings_plan_id_request( + savings_plan_order_id=savings_plan_order_id, + savings_plan_id=savings_plan_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_generate_by_savings_plan_id( + self, + savings_plan_order_id: str, + savings_plan_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param savings_plan_id: Savings plan ID. Required. + :type savings_plan_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_generate_by_savings_plan_id( + self, + savings_plan_order_id: str, + savings_plan_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param savings_plan_id: Savings plan ID. Required. + :type savings_plan_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_generate_by_savings_plan_id( + self, + savings_plan_order_id: str, + savings_plan_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param savings_plan_id: Savings plan ID. Required. + :type savings_plan_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of AsyncLROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._generate_by_savings_plan_id_initial( + savings_plan_order_id=savings_plan_order_id, + savings_plan_id=savings_plan_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_cost_details_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_cost_details_report_operations.py index 0c905cc94df4..17d68bd3a558 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_cost_details_report_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_cost_details_report_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +import sys +from typing import Any, AsyncIterator, Callable, Dict, IO, Optional, Type, TypeVar, Union, cast, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -15,24 +16,28 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request from ...operations._generate_cost_details_report_operations import ( build_create_operation_request, build_get_operation_results_request, ) +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -57,9 +62,12 @@ def __init__(self, *args, **kwargs) -> None: self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") async def _create_operation_initial( - self, scope: str, parameters: Union[_models.GenerateCostDetailsReportRequestDefinition, IO], **kwargs: Any - ) -> Optional[_models.CostDetailsOperationResults]: - error_map = { + self, + scope: str, + parameters: Union[_models.GenerateCostDetailsReportRequestDefinition, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -72,7 +80,7 @@ async def _create_operation_initial( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Optional[_models.CostDetailsOperationResults]] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None @@ -82,50 +90,47 @@ async def _create_operation_initial( else: _json = self._serialize.body(parameters, "GenerateCostDetailsReportRequestDefinition") - request = build_create_operation_request( + _request = build_create_operation_request( scope=scope, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self._create_operation_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize( _models.GenerateCostDetailsReportErrorResponse, pipeline_response ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _create_operation_initial.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport" - } + return deserialized # type: ignore @overload async def begin_create_operation( @@ -147,27 +152,20 @@ async def begin_create_operation( response along with details on the report blob(s) that are available for download. The details on the file(s) available for download will be available in the polling response body. To Understand cost details (formerly known as usage details) fields found in files ,see - https://learn.microsoft.com/azure/cost-management-billing/automate/understand-usage-details-fields. + https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ - :param scope: The ARM Resource ID for subscription, resource group, billing account, or other - billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. + :param scope: The ARM Resource ID for subscription, billing account, or other billing + scopes.Currently Resource Group and Management Group are not supported. For details, see + https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create cost details operation. Required. :type parameters: ~azure.mgmt.costmanagement.models.GenerateCostDetailsReportRequestDefinition :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of AsyncLROPoller that returns either CostDetailsOperationResults or the result of cls(response) :rtype: @@ -177,7 +175,7 @@ async def begin_create_operation( @overload async def begin_create_operation( - self, scope: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, scope: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> AsyncLROPoller[_models.CostDetailsOperationResults]: """This API is the replacement for all previously release Usage Details APIs. Request to generate a cost details report for the provided date range, billing period (Only enterprise customers) @@ -190,27 +188,20 @@ async def begin_create_operation( response along with details on the report blob(s) that are available for download. The details on the file(s) available for download will be available in the polling response body. To Understand cost details (formerly known as usage details) fields found in files ,see - https://learn.microsoft.com/azure/cost-management-billing/automate/understand-usage-details-fields. + https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ - :param scope: The ARM Resource ID for subscription, resource group, billing account, or other - billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. + :param scope: The ARM Resource ID for subscription, billing account, or other billing + scopes.Currently Resource Group and Management Group are not supported. For details, see + https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create cost details operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of AsyncLROPoller that returns either CostDetailsOperationResults or the result of cls(response) :rtype: @@ -220,7 +211,10 @@ async def begin_create_operation( @distributed_trace_async async def begin_create_operation( - self, scope: str, parameters: Union[_models.GenerateCostDetailsReportRequestDefinition, IO], **kwargs: Any + self, + scope: str, + parameters: Union[_models.GenerateCostDetailsReportRequestDefinition, IO[bytes]], + **kwargs: Any ) -> AsyncLROPoller[_models.CostDetailsOperationResults]: """This API is the replacement for all previously release Usage Details APIs. Request to generate a cost details report for the provided date range, billing period (Only enterprise customers) @@ -233,29 +227,19 @@ async def begin_create_operation( response along with details on the report blob(s) that are available for download. The details on the file(s) available for download will be available in the polling response body. To Understand cost details (formerly known as usage details) fields found in files ,see - https://learn.microsoft.com/azure/cost-management-billing/automate/understand-usage-details-fields. + https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ - :param scope: The ARM Resource ID for subscription, resource group, billing account, or other - billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. + :param scope: The ARM Resource ID for subscription, billing account, or other billing + scopes.Currently Resource Group and Management Group are not supported. For details, see + https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create cost details operation. Is either a - GenerateCostDetailsReportRequestDefinition type or a IO type. Required. + GenerateCostDetailsReportRequestDefinition type or a IO[bytes] type. Required. :type parameters: ~azure.mgmt.costmanagement.models.GenerateCostDetailsReportRequestDefinition - or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. + or IO[bytes] :return: An instance of AsyncLROPoller that returns either CostDetailsOperationResults or the result of cls(response) :rtype: @@ -282,12 +266,13 @@ async def begin_create_operation( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response) + deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -299,20 +284,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.CostDetailsOperationResults].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create_operation.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport"} + return AsyncLROPoller[_models.CostDetailsOperationResults]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) async def _get_operation_results_initial( self, scope: str, operation_id: str, **kwargs: Any - ) -> Optional[_models.CostDetailsOperationResults]: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -324,43 +309,40 @@ async def _get_operation_results_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.CostDetailsOperationResults]] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_get_operation_results_request( + _request = build_get_operation_results_request( scope=scope, operation_id=operation_id, api_version=api_version, - template_url=self._get_operation_results_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None - if response.status_code == 200: - deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - _get_operation_results_initial.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/costDetailsOperationResults/{operationId}" - } + return deserialized # type: ignore @distributed_trace_async async def begin_get_operation_results( @@ -369,19 +351,12 @@ async def begin_get_operation_results( """Get the result of the specified operation. This link is provided in the CostDetails creation request response Location header. - :param scope: The ARM Resource ID for subscription, resource group, billing account, or other - billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. + :param scope: The ARM Resource ID for subscription, billing account, or other billing + scopes.Currently Resource Group and Management Group are not supported. For details, see + https://aka.ms/costmgmt/scopes. Required. :type scope: str :param operation_id: The target operation Id. Required. :type operation_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of AsyncLROPoller that returns either CostDetailsOperationResults or the result of cls(response) :rtype: @@ -406,12 +381,13 @@ async def begin_get_operation_results( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response) + deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -423,14 +399,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.CostDetailsOperationResults].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_get_operation_results.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/costDetailsOperationResults/{operationId}" - } + return AsyncLROPoller[_models.CostDetailsOperationResults]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operation_results_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operation_results_operations.py index f1fa361658d2..8db47318d9da 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operation_results_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operation_results_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar, Union, cast +import sys +from typing import Any, AsyncIterator, Callable, Dict, Optional, Type, TypeVar, Union, cast from azure.core.exceptions import ( ClientAuthenticationError, @@ -14,26 +15,30 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request from ...operations._generate_detailed_cost_report_operation_results_operations import build_get_request +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] -class GenerateDetailedCostReportOperationResultsOperations: +class GenerateDetailedCostReportOperationResultsOperations: # pylint: disable=name-too-long """ .. warning:: **DO NOT** instantiate this class directly. @@ -52,10 +57,8 @@ def __init__(self, *args, **kwargs) -> None: self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") - async def _get_initial( - self, operation_id: str, scope: str, **kwargs: Any - ) -> Optional[_models.GenerateDetailedCostReportOperationResult]: - error_map = { + async def _get_initial(self, operation_id: str, scope: str, **kwargs: Any) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -67,41 +70,40 @@ async def _get_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.GenerateDetailedCostReportOperationResult]] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( operation_id=operation_id, scope=scope, api_version=api_version, - template_url=self._get_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None - if response.status_code == 200: - deserialized = self._deserialize("GenerateDetailedCostReportOperationResult", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - _get_initial.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/operationResults/{operationId}"} + return deserialized # type: ignore @distributed_trace_async async def begin_get( @@ -115,14 +117,6 @@ async def begin_get( :param scope: The ARM Resource ID for subscription, resource group, billing account, or other billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. :type scope: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of AsyncLROPoller that returns either GenerateDetailedCostReportOperationResult or the result of cls(response) :rtype: @@ -147,12 +141,15 @@ async def begin_get( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("GenerateDetailedCostReportOperationResult", pipeline_response) + deserialized = self._deserialize( + "GenerateDetailedCostReportOperationResult", pipeline_response.http_response + ) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -162,12 +159,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.GenerateDetailedCostReportOperationResult].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_get.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/operationResults/{operationId}"} + return AsyncLROPoller[_models.GenerateDetailedCostReportOperationResult]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operation_status_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operation_status_operations.py index 241b5a5598cf..09c4d23996ed 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operation_status_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operation_status_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar +import sys +from typing import Any, Callable, Dict, Optional, Type, TypeVar from azure.core.exceptions import ( ClientAuthenticationError, @@ -17,21 +18,23 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._generate_detailed_cost_report_operation_status_operations import build_get_request +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] -class GenerateDetailedCostReportOperationStatusOperations: +class GenerateDetailedCostReportOperationStatusOperations: # pylint: disable=name-too-long """ .. warning:: **DO NOT** instantiate this class directly. @@ -62,12 +65,11 @@ async def get( :param scope: The ARM Resource ID for subscription, resource group, billing account, or other billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. :type scope: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: GenerateDetailedCostReportOperationStatuses or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.GenerateDetailedCostReportOperationStatuses :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -81,20 +83,18 @@ async def get( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.GenerateDetailedCostReportOperationStatuses] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( operation_id=operation_id, scope=scope, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -104,11 +104,9 @@ async def get( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("GenerateDetailedCostReportOperationStatuses", pipeline_response) + deserialized = self._deserialize("GenerateDetailedCostReportOperationStatuses", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - get.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/operationStatus/{operationId}"} + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operations.py index 407343cd8e4b..e4dd2d3b3e9e 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_detailed_cost_report_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +import sys +from typing import Any, AsyncIterator, Callable, Dict, IO, Optional, Type, TypeVar, Union, cast, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -15,21 +16,25 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request from ...operations._generate_detailed_cost_report_operations import build_create_operation_request +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -54,9 +59,9 @@ def __init__(self, *args, **kwargs) -> None: self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") async def _create_operation_initial( - self, scope: str, parameters: Union[_models.GenerateDetailedCostReportDefinition, IO], **kwargs: Any - ) -> Optional[_models.GenerateDetailedCostReportOperationResult]: - error_map = { + self, scope: str, parameters: Union[_models.GenerateDetailedCostReportDefinition, IO[bytes]], **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -69,7 +74,7 @@ async def _create_operation_initial( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Optional[_models.GenerateDetailedCostReportOperationResult]] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None @@ -79,38 +84,37 @@ async def _create_operation_initial( else: _json = self._serialize.body(parameters, "GenerateDetailedCostReportDefinition") - request = build_create_operation_request( + _request = build_create_operation_request( scope=scope, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self._create_operation_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize( _models.GenerateDetailedCostReportErrorResponse, pipeline_response ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("GenerateDetailedCostReportOperationResult", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Azure-Consumption-AsyncOperation"] = self._deserialize( @@ -121,14 +125,12 @@ async def _create_operation_initial( ) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _create_operation_initial.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/generateDetailedCostReport" - } + return deserialized # type: ignore @overload async def begin_create_operation( @@ -156,14 +158,6 @@ async def begin_create_operation( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of AsyncLROPoller that returns either GenerateDetailedCostReportOperationResult or the result of cls(response) :rtype: @@ -173,7 +167,7 @@ async def begin_create_operation( @overload async def begin_create_operation( - self, scope: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, scope: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> AsyncLROPoller[_models.GenerateDetailedCostReportOperationResult]: """Generates the detailed cost report for provided date range, billing period(only enterprise customers) or Invoice ID asynchronously at a certain scope. Call returns a 202 with header @@ -188,18 +182,10 @@ async def begin_create_operation( billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create detailed cost report operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of AsyncLROPoller that returns either GenerateDetailedCostReportOperationResult or the result of cls(response) :rtype: @@ -209,7 +195,7 @@ async def begin_create_operation( @distributed_trace_async async def begin_create_operation( - self, scope: str, parameters: Union[_models.GenerateDetailedCostReportDefinition, IO], **kwargs: Any + self, scope: str, parameters: Union[_models.GenerateDetailedCostReportDefinition, IO[bytes]], **kwargs: Any ) -> AsyncLROPoller[_models.GenerateDetailedCostReportOperationResult]: """Generates the detailed cost report for provided date range, billing period(only enterprise customers) or Invoice ID asynchronously at a certain scope. Call returns a 202 with header @@ -224,19 +210,9 @@ async def begin_create_operation( billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create detailed cost report operation. Is either - a GenerateDetailedCostReportDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.GenerateDetailedCostReportDefinition or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. + a GenerateDetailedCostReportDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.GenerateDetailedCostReportDefinition or + IO[bytes] :return: An instance of AsyncLROPoller that returns either GenerateDetailedCostReportOperationResult or the result of cls(response) :rtype: @@ -263,12 +239,15 @@ async def begin_create_operation( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("GenerateDetailedCostReportOperationResult", pipeline_response) + deserialized = self._deserialize( + "GenerateDetailedCostReportOperationResult", pipeline_response.http_response + ) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -280,12 +259,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.GenerateDetailedCostReportOperationResult].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create_operation.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/generateDetailedCostReport"} + return AsyncLROPoller[_models.GenerateDetailedCostReportOperationResult]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_reservation_details_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_reservation_details_report_operations.py index f9da4d617b6a..c2bf6bc3896e 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_reservation_details_report_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_generate_reservation_details_report_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar, Union, cast +import sys +from typing import Any, AsyncIterator, Callable, Dict, Optional, Type, TypeVar, Union, cast from azure.core.exceptions import ( ClientAuthenticationError, @@ -14,29 +15,33 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request from ...operations._generate_reservation_details_report_operations import ( build_by_billing_account_id_request, build_by_billing_profile_id_request, ) +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] -class GenerateReservationDetailsReportOperations: +class GenerateReservationDetailsReportOperations: # pylint: disable=name-too-long """ .. warning:: **DO NOT** instantiate this class directly. @@ -57,8 +62,8 @@ def __init__(self, *args, **kwargs) -> None: async def _by_billing_account_id_initial( self, billing_account_id: str, start_date: str, end_date: str, **kwargs: Any - ) -> Optional[_models.OperationStatus]: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -70,49 +75,46 @@ async def _by_billing_account_id_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.OperationStatus]] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_by_billing_account_id_request( + _request = build_by_billing_account_id_request( billing_account_id=billing_account_id, start_date=start_date, end_date=end_date, api_version=api_version, - template_url=self._by_billing_account_id_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("OperationStatus", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _by_billing_account_id_initial.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/generateReservationDetailsReport" - } + return deserialized # type: ignore @distributed_trace_async async def begin_by_billing_account_id( @@ -121,7 +123,7 @@ async def begin_by_billing_account_id( """Generates the reservations details report for provided date range asynchronously based on enrollment id. The Reservation usage details can be viewed only by certain enterprise roles. For more details on the roles see, - https://docs.microsoft.com/azure/cost-management-billing/manage/understand-ea-roles#usage-and-costs-access-by-role. + https://docs.microsoft.com/en-us/azure/cost-management-billing/manage/understand-ea-roles#usage-and-costs-access-by-role. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ @@ -132,14 +134,6 @@ async def begin_by_billing_account_id( :type start_date: str :param end_date: End Date. Required. :type end_date: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of AsyncLROPoller that returns either OperationStatus or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.OperationStatus] @@ -164,12 +158,13 @@ async def begin_by_billing_account_id( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("OperationStatus", pipeline_response) + deserialized = self._deserialize("OperationStatus", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -181,22 +176,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.OperationStatus].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_by_billing_account_id.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/generateReservationDetailsReport" - } + return AsyncLROPoller[_models.OperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) async def _by_billing_profile_id_initial( self, billing_account_id: str, billing_profile_id: str, start_date: str, end_date: str, **kwargs: Any - ) -> Optional[_models.OperationStatus]: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -208,50 +201,47 @@ async def _by_billing_profile_id_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.OperationStatus]] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_by_billing_profile_id_request( + _request = build_by_billing_profile_id_request( billing_account_id=billing_account_id, billing_profile_id=billing_profile_id, start_date=start_date, end_date=end_date, api_version=api_version, - template_url=self._by_billing_profile_id_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("OperationStatus", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _by_billing_profile_id_initial.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/providers/Microsoft.CostManagement/generateReservationDetailsReport" - } + return deserialized # type: ignore @distributed_trace_async async def begin_by_billing_profile_id( @@ -260,7 +250,7 @@ async def begin_by_billing_profile_id( """Generates the reservations details report for provided date range asynchronously by billing profile. The Reservation usage details can be viewed by only certain enterprise roles by default. For more details on the roles see, - https://docs.microsoft.com/azure/cost-management-billing/reservations/reservation-utilization#view-utilization-in-the-azure-portal-with-azure-rbac-access. + https://docs.microsoft.com/en-us/azure/cost-management-billing/reservations/reservation-utilization#view-utilization-in-the-azure-portal-with-azure-rbac-access. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ @@ -273,14 +263,6 @@ async def begin_by_billing_profile_id( :type start_date: str :param end_date: End Date. Required. :type end_date: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of AsyncLROPoller that returns either OperationStatus or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.OperationStatus] @@ -306,12 +288,13 @@ async def begin_by_billing_profile_id( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("OperationStatus", pipeline_response) + deserialized = self._deserialize("OperationStatus", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -323,14 +306,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.OperationStatus].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_by_billing_profile_id.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/providers/Microsoft.CostManagement/generateReservationDetailsReport" - } + return AsyncLROPoller[_models.OperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_operations.py index 9ea97535fb12..eb124d0673ca 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar +import sys +from typing import Any, AsyncIterable, Callable, Dict, Optional, Type, TypeVar import urllib.parse from azure.core.async_paging import AsyncItemPaged, AsyncList @@ -19,16 +20,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._operations import build_list_request +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -56,7 +59,6 @@ def __init__(self, *args, **kwargs) -> None: def list(self, **kwargs: Any) -> AsyncIterable["_models.CostManagementOperation"]: """Lists all of the available cost management REST API operations. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either CostManagementOperation or the result of cls(response) :rtype: @@ -69,7 +71,7 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.CostManagementOperation" api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.OperationListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -80,14 +82,12 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.CostManagementOperation" def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -99,13 +99,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("OperationListResult", pipeline_response) @@ -115,11 +114,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -131,5 +130,3 @@ async def get_next(next_link=None): return pipeline_response return AsyncItemPaged(get_next, extract_data) - - list.metadata = {"url": "/providers/Microsoft.CostManagement/operations"} diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_price_sheet_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_price_sheet_operations.py index ee61643df312..7cead282f599 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_price_sheet_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_price_sheet_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar, Union, cast +import sys +from typing import Any, AsyncIterator, Callable, Dict, Optional, Type, TypeVar, Union, cast from azure.core.exceptions import ( ClientAuthenticationError, @@ -14,21 +15,29 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request -from ...operations._price_sheet_operations import build_download_by_billing_profile_request, build_download_request +from ...operations._price_sheet_operations import ( + build_download_by_billing_account_request, + build_download_by_billing_profile_request, + build_download_by_invoice_request, +) +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -52,10 +61,10 @@ def __init__(self, *args, **kwargs) -> None: self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") - async def _download_initial( + async def _download_by_invoice_initial( self, billing_account_name: str, billing_profile_name: str, invoice_name: str, **kwargs: Any - ) -> Optional[_models.DownloadURL]: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -67,53 +76,50 @@ async def _download_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.DownloadURL]] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_download_request( + _request = build_download_by_invoice_request( billing_account_name=billing_account_name, billing_profile_name=billing_profile_name, invoice_name=invoice_name, api_version=api_version, - template_url=self._download_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("DownloadURL", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) response_headers["OData-EntityId"] = self._deserialize("str", response.headers.get("OData-EntityId")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _download_initial.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/invoices/{invoiceName}/providers/Microsoft.CostManagement/pricesheets/default/download" - } + return deserialized # type: ignore @distributed_trace_async - async def begin_download( + async def begin_download_by_invoice( self, billing_account_name: str, billing_profile_name: str, invoice_name: str, **kwargs: Any ) -> AsyncLROPoller[_models.DownloadURL]: """Gets a URL to download the pricesheet for an invoice. The operation is supported for billing @@ -125,14 +131,6 @@ async def begin_download( :type billing_profile_name: str :param invoice_name: The ID that uniquely identifies an invoice. Required. :type invoice_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of AsyncLROPoller that returns either DownloadURL or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.DownloadURL] @@ -147,7 +145,7 @@ async def begin_download( lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = await self._download_initial( + raw_result = await self._download_by_invoice_initial( billing_account_name=billing_account_name, billing_profile_name=billing_profile_name, invoice_name=invoice_name, @@ -157,12 +155,13 @@ async def begin_download( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("DownloadURL", pipeline_response) + deserialized = self._deserialize("DownloadURL", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -174,22 +173,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.DownloadURL].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_download.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/invoices/{invoiceName}/providers/Microsoft.CostManagement/pricesheets/default/download" - } + return AsyncLROPoller[_models.DownloadURL]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) async def _download_by_billing_profile_initial( self, billing_account_name: str, billing_profile_name: str, **kwargs: Any - ) -> Optional[_models.DownloadURL]: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -201,82 +198,77 @@ async def _download_by_billing_profile_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.DownloadURL]] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_download_by_billing_profile_request( + _request = build_download_by_billing_profile_request( billing_account_name=billing_account_name, billing_profile_name=billing_profile_name, api_version=api_version, - template_url=self._download_by_billing_profile_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("DownloadURL", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) response_headers["OData-EntityId"] = self._deserialize("str", response.headers.get("OData-EntityId")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _download_by_billing_profile_initial.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/providers/Microsoft.CostManagement/pricesheets/default/download" - } + return deserialized # type: ignore @distributed_trace_async async def begin_download_by_billing_profile( self, billing_account_name: str, billing_profile_name: str, **kwargs: Any - ) -> AsyncLROPoller[_models.DownloadURL]: + ) -> AsyncLROPoller[_models.PricesheetDownloadProperties]: """Gets a URL to download the current month's pricesheet for a billing profile. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft - Customer Agreement.Due to Azure product growth, the Azure price sheet download experience in - this preview version will be updated from a single csv file to a Zip file containing multiple - csv files, each with max 200k records. + Customer Agreement. + + You can use the new 2023-09-01 API version for billing periods January 2023 onwards. Azure + Reserved Instance (RI) pricing is only available through the new version of the API. + + Due to Azure product growth, the Azure price sheet download experience in this preview version + will be updated from a single csv/json file to a Zip file containing multiple csv/json files, + each with max size of 75MB. :param billing_account_name: The ID that uniquely identifies a billing account. Required. :type billing_account_name: str :param billing_profile_name: The ID that uniquely identifies a billing profile. Required. :type billing_profile_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a personal - polling strategy. - :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. - :return: An instance of AsyncLROPoller that returns either DownloadURL or the result of - cls(response) - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.DownloadURL] + :return: An instance of AsyncLROPoller that returns either PricesheetDownloadProperties or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.PricesheetDownloadProperties] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[_models.DownloadURL] = kwargs.pop("cls", None) + cls: ClsType[_models.PricesheetDownloadProperties] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) @@ -290,12 +282,13 @@ async def begin_download_by_billing_profile( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("DownloadURL", pipeline_response) + deserialized = self._deserialize("PricesheetDownloadProperties", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -307,14 +300,152 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.PricesheetDownloadProperties].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore + return AsyncLROPoller[_models.PricesheetDownloadProperties]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _download_by_billing_account_initial( + self, billing_account_id: str, billing_period_name: str, **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + _request = build_download_by_billing_account_request( + billing_account_id=billing_account_id, + billing_period_name=billing_period_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated2, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def begin_download_by_billing_account( + self, billing_account_id: str, billing_period_name: str, **kwargs: Any + ) -> AsyncLROPoller[_models.OperationStatusAutoGenerated]: + """Generates the pricesheet for the provided billing period asynchronously based on the Enrollment + ID. This is for Enterprise Agreement customers. + + **Migrate to version 2024-08-01** + + You can use the 2024-08-01 API version with the new URI: + + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingPeriods/{billingPeriodName}/providers/Microsoft.CostManagement/pricesheets/default/download' + + With a new schema detailed below, the new version of the price sheet provides additional + information and includes prices for Azure Reserved Instances (RI) for the current billing + period. We recommend downloading an Azure Price Sheet for when entering a new billing period if + you would maintain an ongoing record of past Azure Reserved Instance (RI) pricing. + + The EA Azure price sheet is available for billing periods in the past 13 months. To request a + price sheet for a billing period older than 13 months, please contact support. + + The Azure price sheet download experience has been updated from a single .csv file to a zip + file containing multiple .csv files, each with max size of 75MB. The 2023-11-01 version has + been upgraded to use http POST method; details can be found below. + + All versions of the Microsoft.Consumption Azure Price Sheet - Download by Billing Account + (including 2022-06-01, 2021-10-01, 2020-01-01-preview, 2019-10-01, 2019-05-01) are scheduled to + be retired on 01 June 2026 and will no longer be supported after this date. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param billing_period_name: Billing Period Name. Required. + :type billing_period_name: str + :return: An instance of AsyncLROPoller that returns either OperationStatusAutoGenerated or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.costmanagement.models.OperationStatusAutoGenerated] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.OperationStatusAutoGenerated] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._download_by_billing_account_initial( + billing_account_id=billing_account_id, + billing_period_name=billing_period_name, + api_version=api_version, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) - begin_download_by_billing_profile.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/providers/Microsoft.CostManagement/pricesheets/default/download" - } + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("OperationStatusAutoGenerated", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.OperationStatusAutoGenerated].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.OperationStatusAutoGenerated]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_query_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_query_operations.py index 21f90c26efe1..adff92ddacad 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_query_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_query_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -18,16 +19,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._query_operations import build_usage_by_external_cloud_provider_type_request, build_usage_request +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -82,7 +85,6 @@ async def usage( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: QueryResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult or None :raises ~azure.core.exceptions.HttpResponseError: @@ -90,7 +92,7 @@ async def usage( @overload async def usage( - self, scope: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, scope: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> Optional[_models.QueryResult]: """Query the usage data for scope defined. @@ -115,11 +117,10 @@ async def usage( specific for partners. Required. :type scope: str :param parameters: Parameters supplied to the CreateOrUpdate Query Config operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: QueryResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult or None :raises ~azure.core.exceptions.HttpResponseError: @@ -127,7 +128,7 @@ async def usage( @distributed_trace_async async def usage( - self, scope: str, parameters: Union[_models.QueryDefinition, IO], **kwargs: Any + self, scope: str, parameters: Union[_models.QueryDefinition, IO[bytes]], **kwargs: Any ) -> Optional[_models.QueryResult]: """Query the usage data for scope defined. @@ -152,17 +153,13 @@ async def usage( specific for partners. Required. :type scope: str :param parameters: Parameters supplied to the CreateOrUpdate Query Config operation. Is either - a QueryDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.QueryDefinition or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + a QueryDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.QueryDefinition or IO[bytes] :return: QueryResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult or None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -185,22 +182,20 @@ async def usage( else: _json = self._serialize.body(parameters, "QueryDefinition") - request = build_usage_request( + _request = build_usage_request( scope=scope, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.usage.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -212,14 +207,12 @@ async def usage( deserialized = None if response.status_code == 200: - deserialized = self._deserialize("QueryResult", pipeline_response) + deserialized = self._deserialize("QueryResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - usage.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/query"} + return deserialized # type: ignore @overload async def usage_by_external_cloud_provider_type( @@ -251,7 +244,6 @@ async def usage_by_external_cloud_provider_type( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: QueryResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult :raises ~azure.core.exceptions.HttpResponseError: @@ -262,7 +254,7 @@ async def usage_by_external_cloud_provider_type( self, external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, - parameters: IO, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -283,11 +275,10 @@ async def usage_by_external_cloud_provider_type( Required. :type external_cloud_provider_id: str :param parameters: Parameters supplied to the CreateOrUpdate Query Config operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: QueryResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult :raises ~azure.core.exceptions.HttpResponseError: @@ -298,7 +289,7 @@ async def usage_by_external_cloud_provider_type( self, external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, - parameters: Union[_models.QueryDefinition, IO], + parameters: Union[_models.QueryDefinition, IO[bytes]], **kwargs: Any ) -> _models.QueryResult: """Query the usage data for external cloud provider type defined. @@ -317,17 +308,13 @@ async def usage_by_external_cloud_provider_type( Required. :type external_cloud_provider_id: str :param parameters: Parameters supplied to the CreateOrUpdate Query Config operation. Is either - a QueryDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.QueryDefinition or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + a QueryDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.QueryDefinition or IO[bytes] :return: QueryResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -350,23 +337,21 @@ async def usage_by_external_cloud_provider_type( else: _json = self._serialize.body(parameters, "QueryDefinition") - request = build_usage_by_external_cloud_provider_type_request( + _request = build_usage_by_external_cloud_provider_type_request( external_cloud_provider_type=external_cloud_provider_type, external_cloud_provider_id=external_cloud_provider_id, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.usage_by_external_cloud_provider_type.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -376,13 +361,9 @@ async def usage_by_external_cloud_provider_type( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("QueryResult", pipeline_response) + deserialized = self._deserialize("QueryResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - usage_by_external_cloud_provider_type.metadata = { - "url": "/providers/Microsoft.CostManagement/{externalCloudProviderType}/{externalCloudProviderId}/query" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_scheduled_actions_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_scheduled_actions_operations.py index 9adf299e0b72..06c795356020 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_scheduled_actions_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_scheduled_actions_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload import urllib.parse from azure.core.async_paging import AsyncItemPaged, AsyncList @@ -20,15 +21,13 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._scheduled_actions_operations import ( build_check_name_availability_by_scope_request, build_check_name_availability_request, @@ -44,6 +43,10 @@ build_run_request, ) +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -77,7 +80,6 @@ def list(self, filter: Optional[str] = None, **kwargs: Any) -> AsyncIterable["_m :param filter: May be used to filter scheduled actions by properties/viewId. Supported operator is 'eq'. Default value is None. :type filter: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ScheduledAction or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.costmanagement.models.ScheduledAction] @@ -89,7 +91,7 @@ def list(self, filter: Optional[str] = None, **kwargs: Any) -> AsyncIterable["_m api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ScheduledActionListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -100,15 +102,13 @@ def list(self, filter: Optional[str] = None, **kwargs: Any) -> AsyncIterable["_m def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( filter=filter, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -120,13 +120,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("ScheduledActionListResult", pipeline_response) @@ -136,11 +135,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -155,8 +154,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions"} - @distributed_trace def list_by_scope( self, scope: str, filter: Optional[str] = None, **kwargs: Any @@ -187,7 +184,6 @@ def list_by_scope( :param filter: May be used to filter scheduled actions by properties/viewId. Supported operator is 'eq'. Default value is None. :type filter: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ScheduledAction or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.costmanagement.models.ScheduledAction] @@ -199,7 +195,7 @@ def list_by_scope( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ScheduledActionListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -210,16 +206,14 @@ def list_by_scope( def prepare_request(next_link=None): if not next_link: - request = build_list_by_scope_request( + _request = build_list_by_scope_request( scope=scope, filter=filter, api_version=api_version, - template_url=self.list_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -231,13 +225,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("ScheduledActionListResult", pipeline_response) @@ -247,11 +240,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -266,8 +259,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions"} - @overload async def create_or_update( self, @@ -291,7 +282,6 @@ async def create_or_update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: @@ -301,7 +291,7 @@ async def create_or_update( async def create_or_update( self, name: str, - scheduled_action: IO, + scheduled_action: IO[bytes], if_match: Optional[str] = None, *, content_type: str = "application/json", @@ -312,7 +302,7 @@ async def create_or_update( :param name: Scheduled action name. Required. :type name: str :param scheduled_action: Scheduled action to be created or updated. Required. - :type scheduled_action: IO + :type scheduled_action: IO[bytes] :param if_match: ETag of the Entity. Not required when creating an entity. Optional when updating an entity and can be specified to achieve optimistic concurrency. Default value is None. @@ -320,7 +310,6 @@ async def create_or_update( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: @@ -330,7 +319,7 @@ async def create_or_update( async def create_or_update( self, name: str, - scheduled_action: Union[_models.ScheduledAction, IO], + scheduled_action: Union[_models.ScheduledAction, IO[bytes]], if_match: Optional[str] = None, **kwargs: Any ) -> _models.ScheduledAction: @@ -339,21 +328,17 @@ async def create_or_update( :param name: Scheduled action name. Required. :type name: str :param scheduled_action: Scheduled action to be created or updated. Is either a ScheduledAction - type or a IO type. Required. - :type scheduled_action: ~azure.mgmt.costmanagement.models.ScheduledAction or IO + type or a IO[bytes] type. Required. + :type scheduled_action: ~azure.mgmt.costmanagement.models.ScheduledAction or IO[bytes] :param if_match: ETag of the Entity. Not required when creating an entity. Optional when updating an entity and can be specified to achieve optimistic concurrency. Default value is None. :type if_match: str - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -376,23 +361,21 @@ async def create_or_update( else: _json = self._serialize.body(scheduled_action, "ScheduledAction") - request = build_create_or_update_request( + _request = build_create_or_update_request( name=name, if_match=if_match, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -402,19 +385,13 @@ async def create_or_update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("ScheduledAction", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("ScheduledAction", pipeline_response) + deserialized = self._deserialize("ScheduledAction", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions/{name}"} - @distributed_trace_async async def get(self, name: str, **kwargs: Any) -> _models.ScheduledAction: """Get the private scheduled action by name. @@ -424,12 +401,11 @@ async def get(self, name: str, **kwargs: Any) -> _models.ScheduledAction: :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -443,19 +419,17 @@ async def get(self, name: str, **kwargs: Any) -> _models.ScheduledAction: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ScheduledAction] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( name=name, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -465,14 +439,12 @@ async def get(self, name: str, **kwargs: Any) -> _models.ScheduledAction: error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ScheduledAction", pipeline_response) + deserialized = self._deserialize("ScheduledAction", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions/{name}"} + return deserialized # type: ignore @distributed_trace_async async def delete(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements @@ -483,12 +455,11 @@ async def delete(self, name: str, **kwargs: Any) -> None: # pylint: disable=inc :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -502,19 +473,17 @@ async def delete(self, name: str, **kwargs: Any) -> None: # pylint: disable=inc api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( name=name, api_version=api_version, - template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -525,9 +494,7 @@ async def delete(self, name: str, **kwargs: Any) -> None: # pylint: disable=inc raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions/{name}"} + return cls(pipeline_response, None, {}) # type: ignore @overload async def create_or_update_by_scope( @@ -571,7 +538,6 @@ async def create_or_update_by_scope( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: @@ -582,7 +548,7 @@ async def create_or_update_by_scope( self, scope: str, name: str, - scheduled_action: IO, + scheduled_action: IO[bytes], if_match: Optional[str] = None, *, content_type: str = "application/json", @@ -611,7 +577,7 @@ async def create_or_update_by_scope( :param name: Scheduled action name. Required. :type name: str :param scheduled_action: Scheduled action to be created or updated. Required. - :type scheduled_action: IO + :type scheduled_action: IO[bytes] :param if_match: ETag of the Entity. Not required when creating an entity. Optional when updating an entity and can be specified to achieve optimistic concurrency. Default value is None. @@ -619,7 +585,6 @@ async def create_or_update_by_scope( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: @@ -630,7 +595,7 @@ async def create_or_update_by_scope( self, scope: str, name: str, - scheduled_action: Union[_models.ScheduledAction, IO], + scheduled_action: Union[_models.ScheduledAction, IO[bytes]], if_match: Optional[str] = None, **kwargs: Any ) -> _models.ScheduledAction: @@ -657,21 +622,17 @@ async def create_or_update_by_scope( :param name: Scheduled action name. Required. :type name: str :param scheduled_action: Scheduled action to be created or updated. Is either a ScheduledAction - type or a IO type. Required. - :type scheduled_action: ~azure.mgmt.costmanagement.models.ScheduledAction or IO + type or a IO[bytes] type. Required. + :type scheduled_action: ~azure.mgmt.costmanagement.models.ScheduledAction or IO[bytes] :param if_match: ETag of the Entity. Not required when creating an entity. Optional when updating an entity and can be specified to achieve optimistic concurrency. Default value is None. :type if_match: str - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -694,7 +655,7 @@ async def create_or_update_by_scope( else: _json = self._serialize.body(scheduled_action, "ScheduledAction") - request = build_create_or_update_by_scope_request( + _request = build_create_or_update_by_scope_request( scope=scope, name=name, if_match=if_match, @@ -702,16 +663,14 @@ async def create_or_update_by_scope( content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -721,19 +680,13 @@ async def create_or_update_by_scope( error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("ScheduledAction", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("ScheduledAction", pipeline_response) + deserialized = self._deserialize("ScheduledAction", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions/{name}"} - @distributed_trace_async async def get_by_scope(self, scope: str, name: str, **kwargs: Any) -> _models.ScheduledAction: """Get the shared scheduled action from the given scope by name. @@ -761,12 +714,11 @@ async def get_by_scope(self, scope: str, name: str, **kwargs: Any) -> _models.Sc :type scope: str :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -780,20 +732,18 @@ async def get_by_scope(self, scope: str, name: str, **kwargs: Any) -> _models.Sc api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ScheduledAction] = kwargs.pop("cls", None) - request = build_get_by_scope_request( + _request = build_get_by_scope_request( scope=scope, name=name, api_version=api_version, - template_url=self.get_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -803,14 +753,12 @@ async def get_by_scope(self, scope: str, name: str, **kwargs: Any) -> _models.Sc error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ScheduledAction", pipeline_response) + deserialized = self._deserialize("ScheduledAction", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions/{name}"} + return deserialized # type: ignore @distributed_trace_async async def delete_by_scope( # pylint: disable=inconsistent-return-statements @@ -841,12 +789,11 @@ async def delete_by_scope( # pylint: disable=inconsistent-return-statements :type scope: str :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -860,20 +807,18 @@ async def delete_by_scope( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_by_scope_request( + _request = build_delete_by_scope_request( scope=scope, name=name, api_version=api_version, - template_url=self.delete_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -884,9 +829,7 @@ async def delete_by_scope( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions/{name}"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace_async async def run(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements @@ -894,12 +837,11 @@ async def run(self, name: str, **kwargs: Any) -> None: # pylint: disable=incons :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -913,19 +855,17 @@ async def run(self, name: str, **kwargs: Any) -> None: # pylint: disable=incons api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_run_request( + _request = build_run_request( name=name, api_version=api_version, - template_url=self.run.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -936,9 +876,7 @@ async def run(self, name: str, **kwargs: Any) -> None: # pylint: disable=incons raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - run.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions/{name}/execute"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace_async async def run_by_scope( # pylint: disable=inconsistent-return-statements @@ -966,12 +904,11 @@ async def run_by_scope( # pylint: disable=inconsistent-return-statements :type scope: str :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -985,20 +922,18 @@ async def run_by_scope( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_run_by_scope_request( + _request = build_run_by_scope_request( scope=scope, name=name, api_version=api_version, - template_url=self.run_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1009,9 +944,7 @@ async def run_by_scope( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - run_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions/{name}/execute"} + return cls(pipeline_response, None, {}) # type: ignore @overload async def check_name_availability( @@ -1029,7 +962,6 @@ async def check_name_availability( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: @@ -1037,16 +969,15 @@ async def check_name_availability( @overload async def check_name_availability( - self, check_name_availability_request: IO, *, content_type: str = "application/json", **kwargs: Any + self, check_name_availability_request: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> _models.CheckNameAvailabilityResponse: """Checks availability and correctness of the name for a scheduled action. :param check_name_availability_request: Scheduled action to be created or updated. Required. - :type check_name_availability_request: IO + :type check_name_availability_request: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: @@ -1054,23 +985,19 @@ async def check_name_availability( @distributed_trace_async async def check_name_availability( - self, check_name_availability_request: Union[_models.CheckNameAvailabilityRequest, IO], **kwargs: Any + self, check_name_availability_request: Union[_models.CheckNameAvailabilityRequest, IO[bytes]], **kwargs: Any ) -> _models.CheckNameAvailabilityResponse: """Checks availability and correctness of the name for a scheduled action. :param check_name_availability_request: Scheduled action to be created or updated. Is either a - CheckNameAvailabilityRequest type or a IO type. Required. + CheckNameAvailabilityRequest type or a IO[bytes] type. Required. :type check_name_availability_request: - ~azure.mgmt.costmanagement.models.CheckNameAvailabilityRequest or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + ~azure.mgmt.costmanagement.models.CheckNameAvailabilityRequest or IO[bytes] :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -1093,21 +1020,19 @@ async def check_name_availability( else: _json = self._serialize.body(check_name_availability_request, "CheckNameAvailabilityRequest") - request = build_check_name_availability_request( + _request = build_check_name_availability_request( api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.check_name_availability.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1117,14 +1042,12 @@ async def check_name_availability( error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("CheckNameAvailabilityResponse", pipeline_response) + deserialized = self._deserialize("CheckNameAvailabilityResponse", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - check_name_availability.metadata = {"url": "/providers/Microsoft.CostManagement/checkNameAvailability"} + return deserialized # type: ignore @overload async def check_name_availability_by_scope( @@ -1161,7 +1084,6 @@ async def check_name_availability_by_scope( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: @@ -1169,7 +1091,12 @@ async def check_name_availability_by_scope( @overload async def check_name_availability_by_scope( - self, scope: str, check_name_availability_request: IO, *, content_type: str = "application/json", **kwargs: Any + self, + scope: str, + check_name_availability_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any ) -> _models.CheckNameAvailabilityResponse: """Checks availability and correctness of the name for a scheduled action within the given scope. @@ -1192,11 +1119,10 @@ async def check_name_availability_by_scope( Required. :type scope: str :param check_name_availability_request: Scheduled action to be created or updated. Required. - :type check_name_availability_request: IO + :type check_name_availability_request: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: @@ -1206,7 +1132,7 @@ async def check_name_availability_by_scope( async def check_name_availability_by_scope( self, scope: str, - check_name_availability_request: Union[_models.CheckNameAvailabilityRequest, IO], + check_name_availability_request: Union[_models.CheckNameAvailabilityRequest, IO[bytes]], **kwargs: Any ) -> _models.CheckNameAvailabilityResponse: """Checks availability and correctness of the name for a scheduled action within the given scope. @@ -1230,18 +1156,14 @@ async def check_name_availability_by_scope( Required. :type scope: str :param check_name_availability_request: Scheduled action to be created or updated. Is either a - CheckNameAvailabilityRequest type or a IO type. Required. + CheckNameAvailabilityRequest type or a IO[bytes] type. Required. :type check_name_availability_request: - ~azure.mgmt.costmanagement.models.CheckNameAvailabilityRequest or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + ~azure.mgmt.costmanagement.models.CheckNameAvailabilityRequest or IO[bytes] :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -1264,22 +1186,20 @@ async def check_name_availability_by_scope( else: _json = self._serialize.body(check_name_availability_request, "CheckNameAvailabilityRequest") - request = build_check_name_availability_by_scope_request( + _request = build_check_name_availability_by_scope_request( scope=scope, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.check_name_availability_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1289,13 +1209,9 @@ async def check_name_availability_by_scope( error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("CheckNameAvailabilityResponse", pipeline_response) + deserialized = self._deserialize("CheckNameAvailabilityResponse", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - check_name_availability_by_scope.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/checkNameAvailability" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_settings_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_settings_operations.py new file mode 100644 index 000000000000..9ec030e4148b --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_settings_operations.py @@ -0,0 +1,377 @@ +# pylint: disable=too-many-lines,too-many-statements +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from io import IOBase +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models as _models +from ...operations._settings_operations import ( + build_create_or_update_by_scope_request, + build_delete_by_scope_request, + build_get_by_scope_request, + build_list_request, +) + +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class SettingsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.costmanagement.aio.CostManagementClient`'s + :attr:`settings` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace_async + async def list(self, scope: str, **kwargs: Any) -> _models.SettingsListResult: + """List all cost management settings in the requested scope. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :return: SettingsListResult or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.SettingsListResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SettingsListResult] = kwargs.pop("cls", None) + + _request = build_list_request( + scope=scope, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SettingsListResult", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def create_or_update_by_scope( + self, + scope: str, + type: Union[str, _models.SettingType], + setting: _models.Setting, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Setting: + """Create or update a setting within the given scope. + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :param setting: Setting to be created or updated. Required. + :type setting: ~azure.mgmt.costmanagement.models.Setting + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: Setting or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Setting + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create_or_update_by_scope( + self, + scope: str, + type: Union[str, _models.SettingType], + setting: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Setting: + """Create or update a setting within the given scope. + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :param setting: Setting to be created or updated. Required. + :type setting: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: Setting or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Setting + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create_or_update_by_scope( + self, + scope: str, + type: Union[str, _models.SettingType], + setting: Union[_models.Setting, IO[bytes]], + **kwargs: Any + ) -> _models.Setting: + """Create or update a setting within the given scope. + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :param setting: Setting to be created or updated. Is either a Setting type or a IO[bytes] type. + Required. + :type setting: ~azure.mgmt.costmanagement.models.Setting or IO[bytes] + :return: Setting or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Setting + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.Setting] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(setting, (IOBase, bytes)): + _content = setting + else: + _json = self._serialize.body(setting, "Setting") + + _request = build_create_or_update_by_scope_request( + scope=scope, + type=type, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Setting", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def get_by_scope(self, scope: str, type: Union[str, _models.SettingType], **kwargs: Any) -> _models.Setting: + """Get the setting from the given scope by name. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :return: Setting or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Setting + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.Setting] = kwargs.pop("cls", None) + + _request = build_get_by_scope_request( + scope=scope, + type=type, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Setting", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def delete_by_scope( # pylint: disable=inconsistent-return-statements + self, scope: str, type: Union[str, _models.SettingType], **kwargs: Any + ) -> None: + """Delete a setting within the given scope. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_by_scope_request( + scope=scope, + type=type, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_views_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_views_operations.py index 28afc176547a..8e7efa052558 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_views_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/aio/operations/_views_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload import urllib.parse from azure.core.async_paging import AsyncItemPaged, AsyncList @@ -20,15 +21,13 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request from ...operations._views_operations import ( build_create_or_update_by_scope_request, build_create_or_update_request, @@ -40,6 +39,10 @@ build_list_request, ) +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -70,7 +73,6 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.View"]: .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either View or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.costmanagement.models.View] :raises ~azure.core.exceptions.HttpResponseError: @@ -81,7 +83,7 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.View"]: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ViewListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -92,14 +94,12 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.View"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -111,13 +111,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("ViewListResult", pipeline_response) @@ -127,11 +126,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -144,8 +143,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list.metadata = {"url": "/providers/Microsoft.CostManagement/views"} - @distributed_trace def list_by_scope(self, scope: str, **kwargs: Any) -> AsyncIterable["_models.View"]: """Lists all views at the given scope. @@ -171,7 +168,6 @@ def list_by_scope(self, scope: str, **kwargs: Any) -> AsyncIterable["_models.Vie 'providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}' for External Subscription scope. Required. :type scope: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either View or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.costmanagement.models.View] :raises ~azure.core.exceptions.HttpResponseError: @@ -182,7 +178,7 @@ def list_by_scope(self, scope: str, **kwargs: Any) -> AsyncIterable["_models.Vie api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ViewListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -193,15 +189,13 @@ def list_by_scope(self, scope: str, **kwargs: Any) -> AsyncIterable["_models.Vie def prepare_request(next_link=None): if not next_link: - request = build_list_by_scope_request( + _request = build_list_by_scope_request( scope=scope, api_version=api_version, - template_url=self.list_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -213,13 +207,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("ViewListResult", pipeline_response) @@ -229,11 +222,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -246,8 +239,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/views"} - @distributed_trace_async async def get(self, view_name: str, **kwargs: Any) -> _models.View: """Gets the view by view name. @@ -257,12 +248,11 @@ async def get(self, view_name: str, **kwargs: Any) -> _models.View: :param view_name: View name. Required. :type view_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -276,19 +266,17 @@ async def get(self, view_name: str, **kwargs: Any) -> _models.View: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.View] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( view_name=view_name, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -298,14 +286,12 @@ async def get(self, view_name: str, **kwargs: Any) -> _models.View: error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("View", pipeline_response) + deserialized = self._deserialize("View", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = {"url": "/providers/Microsoft.CostManagement/views/{viewName}"} + return deserialized # type: ignore @overload async def create_or_update( @@ -325,7 +311,6 @@ async def create_or_update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: @@ -333,7 +318,7 @@ async def create_or_update( @overload async def create_or_update( - self, view_name: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, view_name: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> _models.View: """The operation to create or update a view. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -345,11 +330,10 @@ async def create_or_update( :param view_name: View name. Required. :type view_name: str :param parameters: Parameters supplied to the CreateOrUpdate View operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: @@ -357,7 +341,7 @@ async def create_or_update( @distributed_trace_async async def create_or_update( - self, view_name: str, parameters: Union[_models.View, IO], **kwargs: Any + self, view_name: str, parameters: Union[_models.View, IO[bytes]], **kwargs: Any ) -> _models.View: """The operation to create or update a view. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -369,17 +353,13 @@ async def create_or_update( :param view_name: View name. Required. :type view_name: str :param parameters: Parameters supplied to the CreateOrUpdate View operation. Is either a View - type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.View or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.View or IO[bytes] :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -402,22 +382,20 @@ async def create_or_update( else: _json = self._serialize.body(parameters, "View") - request = build_create_or_update_request( + _request = build_create_or_update_request( view_name=view_name, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -427,19 +405,13 @@ async def create_or_update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("View", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("View", pipeline_response) + deserialized = self._deserialize("View", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update.metadata = {"url": "/providers/Microsoft.CostManagement/views/{viewName}"} - @distributed_trace_async async def delete(self, view_name: str, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements """The operation to delete a view. @@ -449,12 +421,11 @@ async def delete(self, view_name: str, **kwargs: Any) -> None: # pylint: disabl :param view_name: View name. Required. :type view_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -468,19 +439,17 @@ async def delete(self, view_name: str, **kwargs: Any) -> None: # pylint: disabl api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( view_name=view_name, api_version=api_version, - template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -491,9 +460,7 @@ async def delete(self, view_name: str, **kwargs: Any) -> None: # pylint: disabl raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {"url": "/providers/Microsoft.CostManagement/views/{viewName}"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace_async async def get_by_scope(self, scope: str, view_name: str, **kwargs: Any) -> _models.View: @@ -522,12 +489,11 @@ async def get_by_scope(self, scope: str, view_name: str, **kwargs: Any) -> _mode :type scope: str :param view_name: View name. Required. :type view_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -541,20 +507,18 @@ async def get_by_scope(self, scope: str, view_name: str, **kwargs: Any) -> _mode api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.View] = kwargs.pop("cls", None) - request = build_get_by_scope_request( + _request = build_get_by_scope_request( scope=scope, view_name=view_name, api_version=api_version, - template_url=self.get_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -564,14 +528,12 @@ async def get_by_scope(self, scope: str, view_name: str, **kwargs: Any) -> _mode error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("View", pipeline_response) + deserialized = self._deserialize("View", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/views/{viewName}"} + return deserialized # type: ignore @overload async def create_or_update_by_scope( @@ -615,7 +577,6 @@ async def create_or_update_by_scope( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: @@ -623,7 +584,13 @@ async def create_or_update_by_scope( @overload async def create_or_update_by_scope( - self, scope: str, view_name: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, + scope: str, + view_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any ) -> _models.View: """The operation to create or update a view. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -653,11 +620,10 @@ async def create_or_update_by_scope( :param view_name: View name. Required. :type view_name: str :param parameters: Parameters supplied to the CreateOrUpdate View operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: @@ -665,7 +631,7 @@ async def create_or_update_by_scope( @distributed_trace_async async def create_or_update_by_scope( - self, scope: str, view_name: str, parameters: Union[_models.View, IO], **kwargs: Any + self, scope: str, view_name: str, parameters: Union[_models.View, IO[bytes]], **kwargs: Any ) -> _models.View: """The operation to create or update a view. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -695,17 +661,13 @@ async def create_or_update_by_scope( :param view_name: View name. Required. :type view_name: str :param parameters: Parameters supplied to the CreateOrUpdate View operation. Is either a View - type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.View or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.View or IO[bytes] :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -728,23 +690,21 @@ async def create_or_update_by_scope( else: _json = self._serialize.body(parameters, "View") - request = build_create_or_update_by_scope_request( + _request = build_create_or_update_by_scope_request( scope=scope, view_name=view_name, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -754,19 +714,13 @@ async def create_or_update_by_scope( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("View", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("View", pipeline_response) + deserialized = self._deserialize("View", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/views/{viewName}"} - @distributed_trace_async async def delete_by_scope( # pylint: disable=inconsistent-return-statements self, scope: str, view_name: str, **kwargs: Any @@ -796,12 +750,11 @@ async def delete_by_scope( # pylint: disable=inconsistent-return-statements :type scope: str :param view_name: View name. Required. :type view_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -815,20 +768,18 @@ async def delete_by_scope( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_by_scope_request( + _request = build_delete_by_scope_request( scope=scope, view_name=view_name, api_version=api_version, - template_url=self.delete_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -839,6 +790,4 @@ async def delete_by_scope( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/views/{viewName}"} + return cls(pipeline_response, None, {}) # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/__init__.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/__init__.py index be704298e815..ab6aeaf05495 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/__init__.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/__init__.py @@ -12,29 +12,53 @@ from ._models_py3 import AlertsResult from ._models_py3 import AllSavingsBenefitDetails from ._models_py3 import AllSavingsList +from ._models_py3 import AsyncOperationStatusProperties from ._models_py3 import BenefitRecommendationModel from ._models_py3 import BenefitRecommendationProperties from ._models_py3 import BenefitRecommendationsListResult from ._models_py3 import BenefitResource from ._models_py3 import BenefitUtilizationSummariesListResult +from ._models_py3 import BenefitUtilizationSummariesOperationStatus +from ._models_py3 import BenefitUtilizationSummariesRequest from ._models_py3 import BenefitUtilizationSummary from ._models_py3 import BenefitUtilizationSummaryProperties from ._models_py3 import BlobInfo +from ._models_py3 import Budget +from ._models_py3 import BudgetComparisonExpression +from ._models_py3 import BudgetFilter +from ._models_py3 import BudgetFilterProperties +from ._models_py3 import BudgetTimePeriod +from ._models_py3 import BudgetsListResult from ._models_py3 import CheckNameAvailabilityRequest from ._models_py3 import CheckNameAvailabilityResponse from ._models_py3 import CommonExportProperties +from ._models_py3 import CostAllocationProportion +from ._models_py3 import CostAllocationResource +from ._models_py3 import CostAllocationRuleCheckNameAvailabilityRequest +from ._models_py3 import CostAllocationRuleCheckNameAvailabilityResponse +from ._models_py3 import CostAllocationRuleDefinition +from ._models_py3 import CostAllocationRuleDetails +from ._models_py3 import CostAllocationRuleList +from ._models_py3 import CostAllocationRuleProperties from ._models_py3 import CostDetailsOperationResults from ._models_py3 import CostDetailsTimePeriod from ._models_py3 import CostManagementOperation from ._models_py3 import CostManagementProxyResource from ._models_py3 import CostManagementResource +from ._models_py3 import CurrentSpend from ._models_py3 import Dimension from ._models_py3 import DimensionsListResult from ._models_py3 import DismissAlertPayload from ._models_py3 import DownloadURL +from ._models_py3 import EAPriceSheetProperties +from ._models_py3 import ErrorAdditionalInfo +from ._models_py3 import ErrorDetail +from ._models_py3 import ErrorDetailAutoGenerated from ._models_py3 import ErrorDetails from ._models_py3 import ErrorDetailsWithNestedDetails from ._models_py3 import ErrorResponse +from ._models_py3 import ErrorResponseAutoGenerated +from ._models_py3 import ErrorResponseAutoGenerated2 from ._models_py3 import ErrorResponseWithNestedDetails from ._models_py3 import Export from ._models_py3 import ExportDataset @@ -58,6 +82,7 @@ from ._models_py3 import ForecastDefinition from ._models_py3 import ForecastFilter from ._models_py3 import ForecastResult +from ._models_py3 import ForecastSpend from ._models_py3 import ForecastTimePeriod from ._models_py3 import GenerateCostDetailsReportErrorResponse from ._models_py3 import GenerateCostDetailsReportRequestDefinition @@ -69,12 +94,16 @@ from ._models_py3 import IncludedQuantityUtilizationSummary from ._models_py3 import IncludedQuantityUtilizationSummaryProperties from ._models_py3 import KpiProperties +from ._models_py3 import MCAPriceSheetProperties +from ._models_py3 import Notification from ._models_py3 import NotificationProperties from ._models_py3 import Operation from ._models_py3 import OperationDisplay from ._models_py3 import OperationListResult from ._models_py3 import OperationStatus +from ._models_py3 import OperationStatusAutoGenerated from ._models_py3 import PivotProperties +from ._models_py3 import PricesheetDownloadProperties from ._models_py3 import ProxyResource from ._models_py3 import QueryAggregation from ._models_py3 import QueryColumn @@ -102,10 +131,17 @@ from ._models_py3 import ScheduledAction from ._models_py3 import ScheduledActionListResult from ._models_py3 import ScheduledActionProxyResource +from ._models_py3 import Setting +from ._models_py3 import SettingsListResult from ._models_py3 import SharedScopeBenefitRecommendationProperties from ._models_py3 import SingleScopeBenefitRecommendationProperties +from ._models_py3 import SourceCostAllocationResource from ._models_py3 import Status +from ._models_py3 import SystemAssignedServiceIdentity from ._models_py3 import SystemData +from ._models_py3 import TagInheritanceProperties +from ._models_py3 import TagInheritanceSetting +from ._models_py3 import TargetCostAllocationResource from ._models_py3 import View from ._models_py3 import ViewListResult @@ -119,12 +155,19 @@ from ._cost_management_client_enums import AlertTimeGrainType from ._cost_management_client_enums import AlertType from ._cost_management_client_enums import BenefitKind +from ._cost_management_client_enums import BenefitUtilizationSummaryReportSchema +from ._cost_management_client_enums import BudgetNotificationOperatorType +from ._cost_management_client_enums import BudgetOperatorType +from ._cost_management_client_enums import CategoryType from ._cost_management_client_enums import ChartType from ._cost_management_client_enums import CheckNameAvailabilityReason +from ._cost_management_client_enums import CostAllocationPolicyType +from ._cost_management_client_enums import CostAllocationResourceType from ._cost_management_client_enums import CostDetailsDataFormat from ._cost_management_client_enums import CostDetailsMetricType from ._cost_management_client_enums import CostDetailsStatusType from ._cost_management_client_enums import CreatedByType +from ._cost_management_client_enums import CultureCode from ._cost_management_client_enums import DaysOfWeek from ._cost_management_client_enums import ExecutionStatus from ._cost_management_client_enums import ExecutionType @@ -135,6 +178,7 @@ from ._cost_management_client_enums import ForecastTimeframe from ._cost_management_client_enums import ForecastType from ._cost_management_client_enums import FormatType +from ._cost_management_client_enums import Frequency from ._cost_management_client_enums import FunctionName from ._cost_management_client_enums import FunctionType from ._cost_management_client_enums import GenerateDetailedCostReportMetricType @@ -150,6 +194,7 @@ from ._cost_management_client_enums import PivotType from ._cost_management_client_enums import QueryColumnType from ._cost_management_client_enums import QueryOperatorType +from ._cost_management_client_enums import Reason from ._cost_management_client_enums import RecurrenceType from ._cost_management_client_enums import ReportConfigSortingType from ._cost_management_client_enums import ReportGranularityType @@ -157,12 +202,18 @@ from ._cost_management_client_enums import ReportTimeframeType from ._cost_management_client_enums import ReportType from ._cost_management_client_enums import ReservationReportSchema +from ._cost_management_client_enums import RuleStatus from ._cost_management_client_enums import ScheduleFrequency from ._cost_management_client_enums import ScheduledActionKind from ._cost_management_client_enums import ScheduledActionStatus from ._cost_management_client_enums import Scope +from ._cost_management_client_enums import SettingType +from ._cost_management_client_enums import SettingsKind from ._cost_management_client_enums import StatusType +from ._cost_management_client_enums import SystemAssignedServiceIdentityType from ._cost_management_client_enums import Term +from ._cost_management_client_enums import ThresholdType +from ._cost_management_client_enums import TimeGrainType from ._cost_management_client_enums import TimeframeType from ._cost_management_client_enums import WeeksOfMonth from ._patch import __all__ as _patch_all @@ -176,29 +227,53 @@ "AlertsResult", "AllSavingsBenefitDetails", "AllSavingsList", + "AsyncOperationStatusProperties", "BenefitRecommendationModel", "BenefitRecommendationProperties", "BenefitRecommendationsListResult", "BenefitResource", "BenefitUtilizationSummariesListResult", + "BenefitUtilizationSummariesOperationStatus", + "BenefitUtilizationSummariesRequest", "BenefitUtilizationSummary", "BenefitUtilizationSummaryProperties", "BlobInfo", + "Budget", + "BudgetComparisonExpression", + "BudgetFilter", + "BudgetFilterProperties", + "BudgetTimePeriod", + "BudgetsListResult", "CheckNameAvailabilityRequest", "CheckNameAvailabilityResponse", "CommonExportProperties", + "CostAllocationProportion", + "CostAllocationResource", + "CostAllocationRuleCheckNameAvailabilityRequest", + "CostAllocationRuleCheckNameAvailabilityResponse", + "CostAllocationRuleDefinition", + "CostAllocationRuleDetails", + "CostAllocationRuleList", + "CostAllocationRuleProperties", "CostDetailsOperationResults", "CostDetailsTimePeriod", "CostManagementOperation", "CostManagementProxyResource", "CostManagementResource", + "CurrentSpend", "Dimension", "DimensionsListResult", "DismissAlertPayload", "DownloadURL", + "EAPriceSheetProperties", + "ErrorAdditionalInfo", + "ErrorDetail", + "ErrorDetailAutoGenerated", "ErrorDetails", "ErrorDetailsWithNestedDetails", "ErrorResponse", + "ErrorResponseAutoGenerated", + "ErrorResponseAutoGenerated2", "ErrorResponseWithNestedDetails", "Export", "ExportDataset", @@ -222,6 +297,7 @@ "ForecastDefinition", "ForecastFilter", "ForecastResult", + "ForecastSpend", "ForecastTimePeriod", "GenerateCostDetailsReportErrorResponse", "GenerateCostDetailsReportRequestDefinition", @@ -233,12 +309,16 @@ "IncludedQuantityUtilizationSummary", "IncludedQuantityUtilizationSummaryProperties", "KpiProperties", + "MCAPriceSheetProperties", + "Notification", "NotificationProperties", "Operation", "OperationDisplay", "OperationListResult", "OperationStatus", + "OperationStatusAutoGenerated", "PivotProperties", + "PricesheetDownloadProperties", "ProxyResource", "QueryAggregation", "QueryColumn", @@ -266,10 +346,17 @@ "ScheduledAction", "ScheduledActionListResult", "ScheduledActionProxyResource", + "Setting", + "SettingsListResult", "SharedScopeBenefitRecommendationProperties", "SingleScopeBenefitRecommendationProperties", + "SourceCostAllocationResource", "Status", + "SystemAssignedServiceIdentity", "SystemData", + "TagInheritanceProperties", + "TagInheritanceSetting", + "TargetCostAllocationResource", "View", "ViewListResult", "AccumulatedType", @@ -282,12 +369,19 @@ "AlertTimeGrainType", "AlertType", "BenefitKind", + "BenefitUtilizationSummaryReportSchema", + "BudgetNotificationOperatorType", + "BudgetOperatorType", + "CategoryType", "ChartType", "CheckNameAvailabilityReason", + "CostAllocationPolicyType", + "CostAllocationResourceType", "CostDetailsDataFormat", "CostDetailsMetricType", "CostDetailsStatusType", "CreatedByType", + "CultureCode", "DaysOfWeek", "ExecutionStatus", "ExecutionType", @@ -298,6 +392,7 @@ "ForecastTimeframe", "ForecastType", "FormatType", + "Frequency", "FunctionName", "FunctionType", "GenerateDetailedCostReportMetricType", @@ -313,6 +408,7 @@ "PivotType", "QueryColumnType", "QueryOperatorType", + "Reason", "RecurrenceType", "ReportConfigSortingType", "ReportGranularityType", @@ -320,12 +416,18 @@ "ReportTimeframeType", "ReportType", "ReservationReportSchema", + "RuleStatus", "ScheduleFrequency", "ScheduledActionKind", "ScheduledActionStatus", "Scope", + "SettingType", + "SettingsKind", "StatusType", + "SystemAssignedServiceIdentityType", "Term", + "ThresholdType", + "TimeGrainType", "TimeframeType", "WeeksOfMonth", ] diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/_cost_management_client_enums.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/_cost_management_client_enums.py index 400e59765fb6..374bf970b8c1 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/_cost_management_client_enums.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/_cost_management_client_enums.py @@ -114,6 +114,87 @@ class BenefitKind(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Benefit is SavingsPlan.""" +class BenefitUtilizationSummaryReportSchema(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The CSV file from the reportUrl and secondaryReportUrl blob link will consist of the following + columns of benefit utilization data. UtilizedPercentage will be 0 for savings plans reports and + non data bricks reservations. Utilization percentages will be 0 for data bricks reservations. + """ + + KIND = "Kind" + AVG_UTILIZATION_PERCENTAGE = "AvgUtilizationPercentage" + BENEFIT_ORDER_ID = "BenefitOrderId" + BENEFIT_ID = "BenefitId" + BENEFIT_TYPE = "BenefitType" + MAX_UTILIZATION_PERCENTAGE = "MaxUtilizationPercentage" + MIN_UTILIZATION_PERCENTAGE = "MinUtilizationPercentage" + USAGE_DATE = "UsageDate" + UTILIZED_PERCENTAGE = "UtilizedPercentage" + + +class BudgetNotificationOperatorType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The comparison operator. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported operators for **CategoryType: Cost** + + + * GreaterThan + * + GreaterThanOrEqualTo + + Supported operators for **CategoryType: ReservationUtilization** + + * LessThan. + """ + + EQUAL_TO = "EqualTo" + """Notification will be triggered if the evaluated cost is the same as threshold value. Note: It’s + not recommended to use this OperatorType as there’s low chance of cost being exactly the same + as threshold value, leading to missing of your alert. This OperatorType will be deprecated in + future. + + Supported for CategoryType(s): Cost.""" + GREATER_THAN = "GreaterThan" + """Notification will be triggered if the evaluated cost is greater than the threshold value. Note: + This is the recommended OperatorType while configuring Budget Alert. + + Supported for CategoryType(s): Cost.""" + GREATER_THAN_OR_EQUAL_TO = "GreaterThanOrEqualTo" + """Notification will be triggered if the evaluated cost is greater than or equal to the threshold + value. + + Supported for CategoryType(s): Cost.""" + LESS_THAN = "LessThan" + """Notification will be triggered if any Reservations in the scope of the Reservation Utilization + Alert Rule have a utilization less than the threshold percentage. + + Supported for CategoryType(s): ReservationUtilization.""" + + +class BudgetOperatorType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The operator to use for comparison.""" + + IN = "In" + IN_ENUM = "In" + + +class CategoryType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The category of the budget. + + + * 'Cost' defines a Budget. + * 'ReservationUtilization' defines a Reservation Utilization Alert Rule. + """ + + COST = "Cost" + """A Budget that evaluates monetary cost of Azure resources against an amount, and alerts based on + a configured notification threshold.""" + RESERVATION_UTILIZATION = "ReservationUtilization" + """An Alert Rule that evaluates the utilization percentage of Azure Reservations, and alerts based + on a configured notification threshold.""" + + class ChartType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Chart type of the main view in Cost Analysis. Required.""" @@ -131,6 +212,24 @@ class CheckNameAvailabilityReason(str, Enum, metaclass=CaseInsensitiveEnumMeta): ALREADY_EXISTS = "AlreadyExists" +class CostAllocationPolicyType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Method to use for allocating cost. FixedProportion indicates that cost will be split based on + specified percentage values. + """ + + FIXED_PROPORTION = "FixedProportion" + + +class CostAllocationResourceType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Category of resource to use for allocation.""" + + DIMENSION = "Dimension" + """Indicates an Azure dimension such as a subscription id or resource group name is being used for + allocation.""" + TAG = "Tag" + """Allocates cost based on Azure Tag key value pairs.""" + + class CostDetailsDataFormat(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The data format of the report.""" @@ -167,6 +266,35 @@ class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta): KEY = "Key" +class CultureCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Language in which the recipient will receive the notification, + + Supported for CategoryType(s): Cost, ReservationUtilization. + """ + + EN_US = "en-us" + JA_JP = "ja-jp" + ZH_CN = "zh-cn" + DE_DE = "de-de" + ES_ES = "es-es" + FR_FR = "fr-fr" + IT_IT = "it-it" + KO_KR = "ko-kr" + PT_BR = "pt-br" + RU_RU = "ru-ru" + ZH_TW = "zh-tw" + CS_CZ = "cs-cz" + PL_PL = "pl-pl" + TR_TR = "tr-tr" + DA_DK = "da-dk" + EN_GB = "en-gb" + HU_HU = "hu-hu" + NB_NO = "nb-no" + NL_NL = "nl-nl" + PT_PT = "pt-pt" + SV_SE = "sv-se" + + class DaysOfWeek(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Days of Week.""" @@ -199,7 +327,9 @@ class ExecutionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): class ExportType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The type of the query.""" + """The type of the export. Note that 'Usage' is equivalent to 'ActualCost' and is applicable to + exports that do not yet provide data for charges or amortization for service reservations. + """ USAGE = "Usage" ACTUAL_COST = "ActualCost" @@ -246,6 +376,26 @@ class FormatType(str, Enum, metaclass=CaseInsensitiveEnumMeta): CSV = "Csv" +class Frequency(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Frequency of a notification. Represents how long the notification will be silent after + triggering an alert for a threshold breach. If not specified, the frequency will be set by + default based on the timeGrain (Weekly when timeGrain: Last7Days, Monthly when timeGrain: + Last30Days). + + Supported for CategoryType(s): ReservationUtilization. + """ + + DAILY = "Daily" + """After the threshold breaches and an Alert is fired, no further alerts will be sent until the + next calendar day.""" + WEEKLY = "Weekly" + """After the threshold breaches and an Alert is fired, no further alerts will be sent for 7 + calendar days.""" + MONTHLY = "Monthly" + """After the threshold breaches and an Alert is fired, no further alerts will be sent for 30 + calendar days.""" + + class FunctionName(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The name of the column to aggregate.""" @@ -291,7 +441,7 @@ class GrainParameter(str, Enum, metaclass=CaseInsensitiveEnumMeta): class GranularityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The granularity of rows in the forecast.""" + """The granularity of rows in the export. Currently only 'Daily' is supported.""" DAILY = "Daily" @@ -323,11 +473,12 @@ class MetricType(str, Enum, metaclass=CaseInsensitiveEnumMeta): class OperationStatusType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The status of the long running operation.""" + """Enum representing the status of an async operation.""" RUNNING = "Running" - COMPLETED = "Completed" + COMPLETE = "Complete" FAILED = "Failed" + COMPLETED = "Completed" class OperatorType(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -371,6 +522,14 @@ class QueryOperatorType(str, Enum, metaclass=CaseInsensitiveEnumMeta): IN_ENUM = "In" +class Reason(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The reason this name is not available.""" + + INVALID = "Invalid" + ALREADY_EXISTS = "AlreadyExists" + VALID = "Valid" + + class RecurrenceType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The schedule recurrence.""" @@ -444,6 +603,18 @@ class ReservationReportSchema(str, Enum, metaclass=CaseInsensitiveEnumMeta): USED_HOURS = "UsedHours" +class RuleStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Current status of the rule.""" + + NOT_ACTIVE = "NotActive" + """Rule is saved but not used to allocate costs.""" + ACTIVE = "Active" + """Rule is saved and impacting cost allocation.""" + PROCESSING = "Processing" + """Rule is saved and cost allocation is being updated. Readonly value that cannot be submitted in + a put request.""" + + class ScheduledActionKind(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Kind of the scheduled action.""" @@ -451,7 +622,7 @@ class ScheduledActionKind(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Cost analysis data will be emailed.""" INSIGHT_ALERT = "InsightAlert" """Cost anomaly information will be emailed. Available only on subscription scope at daily - #: frequency. If no anomaly is detected on the resource, an email won't be sent.""" + frequency. If no anomaly is detected on the resource, an email won't be sent.""" class ScheduledActionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -485,6 +656,20 @@ class Scope(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Shared scope recommendation.""" +class SettingsKind(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Specifies the kind of settings.""" + + TAGINHERITANCE = "taginheritance" + + +class SettingType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """SettingType.""" + + TAGINHERITANCE = "taginheritance" + """This setting applies billing profile, invoice section, subscription and resource group tags to + current month's usage data of child resources.""" + + class StatusType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The status of the export's schedule. If 'Inactive', the export's schedule is paused.""" @@ -492,6 +677,13 @@ class StatusType(str, Enum, metaclass=CaseInsensitiveEnumMeta): INACTIVE = "Inactive" +class SystemAssignedServiceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Type of managed service identity (either system assigned, or none).""" + + NONE = "None" + SYSTEM_ASSIGNED = "SystemAssigned" + + class Term(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Grain which corresponds to value.""" @@ -501,8 +693,21 @@ class Term(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Benefit term is 3 years.""" +class ThresholdType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The type of threshold. + + Supported for CategoryType(s): Cost. + """ + + ACTUAL = "Actual" + """Actual costs budget alerts notify when the actual accrued cost exceeds the allocated budget.""" + FORECASTED = "Forecasted" + """Forecasted costs budget alerts provide advanced notification that your spending trends are + likely to exceed your allocated budget, as it relies on forecasted cost predictions.""" + + class TimeframeType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The time frame for pulling data for the query. If custom, then a specific time period must be + """The time frame for pulling data for the export. If custom, then a specific time period must be provided. """ @@ -514,6 +719,69 @@ class TimeframeType(str, Enum, metaclass=CaseInsensitiveEnumMeta): CUSTOM = "Custom" +class TimeGrainType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The time covered by a budget. Tracking of the amount will be reset based on the time grain. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported timeGrainTypes for **CategoryType: Cost** + + + * Monthly + * Quarterly + * Annually + * BillingMonth* + * BillingQuarter* + * + BillingAnnual* + + *only supported for Web Direct customers. + + Supported timeGrainTypes for **CategoryType: ReservationUtilization** + + * Last7Days + * + Last30Days + + Required for CategoryType(s): Cost, ReservationUtilization. + """ + + MONTHLY = "Monthly" + """The budget will track costs in the current calendar month against the amount. + + Supported for CategoryType: Cost only.""" + QUARTERLY = "Quarterly" + """The budget will track costs in the current calendar quarter against the amount. + + Supported for CategoryType: Cost only.""" + ANNUALLY = "Annually" + """The budget will track costs in the current calendar year against the amount. + + Supported for CategoryType: Cost only.""" + BILLING_MONTH = "BillingMonth" + """The budget will track costs in the current billing month against the amount. + + Supported for CategoryType: Cost and Web Direct customers only.""" + BILLING_QUARTER = "BillingQuarter" + """The budget will track costs in the current billing quarter against the amount. + + Supported for CategoryType: Cost and Web Direct customers only.""" + BILLING_ANNUAL = "BillingAnnual" + """The budget will track costs in the current billing year against the amount. + + Supported for CategoryType: Cost and Web Direct customers only.""" + LAST7_DAYS = "Last7Days" + """The Reservation Utilization Alert Rule will evaluate reservations based on their 7-Day + utilization percentage. + + Supported for CategoryType: ReservationUtilization only.""" + LAST30_DAYS = "Last30Days" + """The Reservation Utilization Alert Rule will evaluate reservations based on their 30-Day + utilization percentage. + + Supported for CategoryType: ReservationUtilization only.""" + + class WeeksOfMonth(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Weeks of month.""" diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/_models_py3.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/_models_py3.py index e4bc3e9da52b..cb97449ec878 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/_models_py3.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/models/_models_py3.py @@ -540,13 +540,70 @@ def __init__(self, **kwargs: Any) -> None: self.next_link = None +class AsyncOperationStatusProperties(_serialization.Model): + """Object representing the report url and valid until date of the async report generated. + + :ivar report_url: Sas url to the async benefit utilization summaries report. Will be empty if + the report is in Running or Failed state. Known values are: "Kind", "AvgUtilizationPercentage", + "BenefitOrderId", "BenefitId", "BenefitType", "MaxUtilizationPercentage", + "MinUtilizationPercentage", "UsageDate", and "UtilizedPercentage". + :vartype report_url: str or + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummaryReportSchema + :ivar secondary_report_url: Sas url to async benefit utilization summaries report in secondary + storage in case of primary outage. Will be empty if the report is in Running or Failed state. + Known values are: "Kind", "AvgUtilizationPercentage", "BenefitOrderId", "BenefitId", + "BenefitType", "MaxUtilizationPercentage", "MinUtilizationPercentage", "UsageDate", and + "UtilizedPercentage". + :vartype secondary_report_url: str or + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummaryReportSchema + :ivar valid_until: The date that the sas url provided in reportUrl expires. + :vartype valid_until: ~datetime.datetime + """ + + _attribute_map = { + "report_url": {"key": "reportUrl", "type": "str"}, + "secondary_report_url": {"key": "secondaryReportUrl", "type": "str"}, + "valid_until": {"key": "validUntil", "type": "iso-8601"}, + } + + def __init__( + self, + *, + report_url: Optional[Union[str, "_models.BenefitUtilizationSummaryReportSchema"]] = None, + secondary_report_url: Optional[Union[str, "_models.BenefitUtilizationSummaryReportSchema"]] = None, + valid_until: Optional[datetime.datetime] = None, + **kwargs: Any + ) -> None: + """ + :keyword report_url: Sas url to the async benefit utilization summaries report. Will be empty + if the report is in Running or Failed state. Known values are: "Kind", + "AvgUtilizationPercentage", "BenefitOrderId", "BenefitId", "BenefitType", + "MaxUtilizationPercentage", "MinUtilizationPercentage", "UsageDate", and "UtilizedPercentage". + :paramtype report_url: str or + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummaryReportSchema + :keyword secondary_report_url: Sas url to async benefit utilization summaries report in + secondary storage in case of primary outage. Will be empty if the report is in Running or + Failed state. Known values are: "Kind", "AvgUtilizationPercentage", "BenefitOrderId", + "BenefitId", "BenefitType", "MaxUtilizationPercentage", "MinUtilizationPercentage", + "UsageDate", and "UtilizedPercentage". + :paramtype secondary_report_url: str or + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummaryReportSchema + :keyword valid_until: The date that the sas url provided in reportUrl expires. + :paramtype valid_until: ~datetime.datetime + """ + super().__init__(**kwargs) + self.report_url = report_url + self.secondary_report_url = secondary_report_url + self.valid_until = valid_until + + class Resource(_serialization.Model): """Common fields that are returned in the response for all Azure Resource Manager resources. Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long :vartype id: str :ivar name: The name of the resource. :vartype name: str @@ -581,7 +638,7 @@ class BenefitResource(Resource): Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long :vartype id: str :ivar name: The name of the resource. :vartype name: str @@ -622,7 +679,7 @@ class BenefitRecommendationModel(BenefitResource): Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long :vartype id: str :ivar name: The name of the resource. :vartype name: str @@ -676,7 +733,7 @@ class BenefitRecommendationProperties(_serialization.Model): # pylint: disable= Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar first_consumption_date: The first usage date used for looking back for computing the recommendations. @@ -848,6 +905,154 @@ def __init__(self, **kwargs: Any) -> None: self.next_link = None +class BenefitUtilizationSummariesOperationStatus(_serialization.Model): # pylint: disable=name-too-long + """Status of a benefit utilization summaries report. Provides Async Benefit Utilization Summaries + Request input, status, and report sas url. + + :ivar input: Input given to create the benefit utilization summaries report. + :vartype input: ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :ivar status: The status of the creation of the benefit utilization summaries report. Known + values are: "Running", "Complete", "Failed", and "Completed". + :vartype status: str or ~azure.mgmt.costmanagement.models.OperationStatusType + :ivar properties: Contains sas url to the async benefit utilization summaries report and a date + that the url is valid until. These values will be empty if the report is in a Running or Failed + state. + :vartype properties: ~azure.mgmt.costmanagement.models.AsyncOperationStatusProperties + """ + + _attribute_map = { + "input": {"key": "input", "type": "BenefitUtilizationSummariesRequest"}, + "status": {"key": "status", "type": "str"}, + "properties": {"key": "properties", "type": "AsyncOperationStatusProperties"}, + } + + def __init__( + self, + *, + input: Optional["_models.BenefitUtilizationSummariesRequest"] = None, + status: Optional[Union[str, "_models.OperationStatusType"]] = None, + properties: Optional["_models.AsyncOperationStatusProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword input: Input given to create the benefit utilization summaries report. + :paramtype input: ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword status: The status of the creation of the benefit utilization summaries report. Known + values are: "Running", "Complete", "Failed", and "Completed". + :paramtype status: str or ~azure.mgmt.costmanagement.models.OperationStatusType + :keyword properties: Contains sas url to the async benefit utilization summaries report and a + date that the url is valid until. These values will be empty if the report is in a Running or + Failed state. + :paramtype properties: ~azure.mgmt.costmanagement.models.AsyncOperationStatusProperties + """ + super().__init__(**kwargs) + self.input = input + self.status = status + self.properties = properties + + +class BenefitUtilizationSummariesRequest(_serialization.Model): + """Properties of an async benefit utilization summaries request. + + All required parameters must be populated in order to send to server. + + :ivar billing_account_id: Billing account the benefit utilization summaries report is for. + Required for billing account and billing profile scopes. Not supported for any benefit scopes. + :vartype billing_account_id: str + :ivar billing_profile_id: Billing profile id the benefit utilization summaries report is for. + Required for billing profile scope. Not supported for billing account or any benefit scopes. + :vartype billing_profile_id: str + :ivar benefit_order_id: Benefit order id the benefit utilization summaries report is for. + Required for benefit order and benefit id scopes. Not supported for any billing scopes. + :vartype benefit_order_id: str + :ivar benefit_id: Benefit id the benefit utilization summaries report is for. Required for + benefit id scope. Not supported for benefit order or any billing scopes. + :vartype benefit_id: str + :ivar grain: The grain the summaries data is served at in the report. Accepted values are + 'Daily' or 'Monthly'. Required. Known values are: "Hourly", "Daily", and "Monthly". + :vartype grain: str or ~azure.mgmt.costmanagement.models.Grain + :ivar start_date: The start date of the summaries data that will be served in the report. + Required. + :vartype start_date: ~datetime.datetime + :ivar end_date: The end date of the summaries data that will be served in the report. Required. + :vartype end_date: ~datetime.datetime + :ivar kind: The type of benefit data requested. Required for billing account and billing + profile scopes. Implied and not to be passed at benefit scopes. Supported values are + Reservation and SavingsPlan. Known values are: "IncludedQuantity", "Reservation", and + "SavingsPlan". + :vartype kind: str or ~azure.mgmt.costmanagement.models.BenefitKind + """ + + _validation = { + "grain": {"required": True}, + "start_date": {"required": True}, + "end_date": {"required": True}, + } + + _attribute_map = { + "billing_account_id": {"key": "billingAccountId", "type": "str"}, + "billing_profile_id": {"key": "billingProfileId", "type": "str"}, + "benefit_order_id": {"key": "benefitOrderId", "type": "str"}, + "benefit_id": {"key": "benefitId", "type": "str"}, + "grain": {"key": "grain", "type": "str"}, + "start_date": {"key": "startDate", "type": "iso-8601"}, + "end_date": {"key": "endDate", "type": "iso-8601"}, + "kind": {"key": "kind", "type": "str"}, + } + + def __init__( + self, + *, + grain: Union[str, "_models.Grain"], + start_date: datetime.datetime, + end_date: datetime.datetime, + billing_account_id: Optional[str] = None, + billing_profile_id: Optional[str] = None, + benefit_order_id: Optional[str] = None, + benefit_id: Optional[str] = None, + kind: Optional[Union[str, "_models.BenefitKind"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword billing_account_id: Billing account the benefit utilization summaries report is for. + Required for billing account and billing profile scopes. Not supported for any benefit scopes. + :paramtype billing_account_id: str + :keyword billing_profile_id: Billing profile id the benefit utilization summaries report is + for. Required for billing profile scope. Not supported for billing account or any benefit + scopes. + :paramtype billing_profile_id: str + :keyword benefit_order_id: Benefit order id the benefit utilization summaries report is for. + Required for benefit order and benefit id scopes. Not supported for any billing scopes. + :paramtype benefit_order_id: str + :keyword benefit_id: Benefit id the benefit utilization summaries report is for. Required for + benefit id scope. Not supported for benefit order or any billing scopes. + :paramtype benefit_id: str + :keyword grain: The grain the summaries data is served at in the report. Accepted values are + 'Daily' or 'Monthly'. Required. Known values are: "Hourly", "Daily", and "Monthly". + :paramtype grain: str or ~azure.mgmt.costmanagement.models.Grain + :keyword start_date: The start date of the summaries data that will be served in the report. + Required. + :paramtype start_date: ~datetime.datetime + :keyword end_date: The end date of the summaries data that will be served in the report. + Required. + :paramtype end_date: ~datetime.datetime + :keyword kind: The type of benefit data requested. Required for billing account and billing + profile scopes. Implied and not to be passed at benefit scopes. Supported values are + Reservation and SavingsPlan. Known values are: "IncludedQuantity", "Reservation", and + "SavingsPlan". + :paramtype kind: str or ~azure.mgmt.costmanagement.models.BenefitKind + """ + super().__init__(**kwargs) + self.billing_account_id = billing_account_id + self.billing_profile_id = billing_profile_id + self.benefit_order_id = benefit_order_id + self.benefit_id = benefit_id + self.grain = grain + self.start_date = start_date + self.end_date = end_date + self.kind = kind + + class BenefitUtilizationSummary(Resource): """Benefit utilization summary resource. @@ -856,10 +1061,10 @@ class BenefitUtilizationSummary(Resource): Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long :vartype id: str :ivar name: The name of the resource. :vartype name: str @@ -972,12 +1177,696 @@ def __init__(self, *, blob_link: Optional[str] = None, byte_count: Optional[int] self.byte_count = byte_count -class CheckNameAvailabilityRequest(_serialization.Model): - """The check availability request body. +class Budget(CostManagementProxyResource): # pylint: disable=too-many-instance-attributes + """A budget resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource Id. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :ivar e_tag: eTag of the resource. To handle concurrent update scenario, this field will be + used to determine whether the user is updating the latest version or not. + :vartype e_tag: str + :ivar category: The category of the budget. + + + * 'Cost' defines a Budget. + * 'ReservationUtilization' defines a Reservation Utilization Alert Rule. Known values are: + "Cost" and "ReservationUtilization". + :vartype category: str or ~azure.mgmt.costmanagement.models.CategoryType + :ivar amount: The total amount of cost to track with the budget. + + Supported for CategoryType(s): Cost. + + Required for CategoryType(s): Cost. + :vartype amount: float + :ivar time_grain: The time covered by a budget. Tracking of the amount will be reset based on + the time grain. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported timeGrainTypes for **CategoryType: Cost** + + + * Monthly + * Quarterly + * Annually + * BillingMonth* + * BillingQuarter* + * + BillingAnnual* + + *only supported for Web Direct customers. + + Supported timeGrainTypes for **CategoryType: ReservationUtilization** + + * Last7Days + * + Last30Days + + Required for CategoryType(s): Cost, ReservationUtilization. Known values are: "Monthly", + "Quarterly", "Annually", "BillingMonth", "BillingQuarter", "BillingAnnual", "Last7Days", and + "Last30Days". + :vartype time_grain: str or ~azure.mgmt.costmanagement.models.TimeGrainType + :ivar time_period: The time period that defines the active period of the budget. The budget + will evaluate data on or after the startDate and will expire on the endDate. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Required for CategoryType(s): Cost, ReservationUtilization. + :vartype time_period: ~azure.mgmt.costmanagement.models.BudgetTimePeriod + :ivar filter: May be used to filter budgets by user-specified dimensions and/or tags. + + Supported for CategoryType(s): Cost, ReservationUtilization. + :vartype filter: ~azure.mgmt.costmanagement.models.BudgetFilter + :ivar current_spend: The current amount of cost which is being tracked for a budget. + + Supported for CategoryType(s): Cost. + :vartype current_spend: ~azure.mgmt.costmanagement.models.CurrentSpend + :ivar notifications: Dictionary of notifications associated with the budget. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + + * Constraints for **CategoryType: Cost** - Budget can have up to 5 notifications with + thresholdType: Actual and 5 notifications with thresholdType: Forecasted. + * Constraints for **CategoryType: ReservationUtilization** - Only one notification allowed. + thresholdType is not applicable. + :vartype notifications: dict[str, ~azure.mgmt.costmanagement.models.Notification] + :ivar forecast_spend: The forecasted cost which is being tracked for a budget. + + Supported for CategoryType(s): Cost. + :vartype forecast_spend: ~azure.mgmt.costmanagement.models.ForecastSpend + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "current_spend": {"readonly": True}, + "forecast_spend": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "e_tag": {"key": "eTag", "type": "str"}, + "category": {"key": "properties.category", "type": "str"}, + "amount": {"key": "properties.amount", "type": "float"}, + "time_grain": {"key": "properties.timeGrain", "type": "str"}, + "time_period": {"key": "properties.timePeriod", "type": "BudgetTimePeriod"}, + "filter": {"key": "properties.filter", "type": "BudgetFilter"}, + "current_spend": {"key": "properties.currentSpend", "type": "CurrentSpend"}, + "notifications": {"key": "properties.notifications", "type": "{Notification}"}, + "forecast_spend": {"key": "properties.forecastSpend", "type": "ForecastSpend"}, + } + + def __init__( + self, + *, + e_tag: Optional[str] = None, + category: Optional[Union[str, "_models.CategoryType"]] = None, + amount: Optional[float] = None, + time_grain: Optional[Union[str, "_models.TimeGrainType"]] = None, + time_period: Optional["_models.BudgetTimePeriod"] = None, + filter: Optional["_models.BudgetFilter"] = None, # pylint: disable=redefined-builtin + notifications: Optional[Dict[str, "_models.Notification"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword e_tag: eTag of the resource. To handle concurrent update scenario, this field will be + used to determine whether the user is updating the latest version or not. + :paramtype e_tag: str + :keyword category: The category of the budget. + + + * 'Cost' defines a Budget. + * 'ReservationUtilization' defines a Reservation Utilization Alert Rule. Known values are: + "Cost" and "ReservationUtilization". + :paramtype category: str or ~azure.mgmt.costmanagement.models.CategoryType + :keyword amount: The total amount of cost to track with the budget. + + Supported for CategoryType(s): Cost. + + Required for CategoryType(s): Cost. + :paramtype amount: float + :keyword time_grain: The time covered by a budget. Tracking of the amount will be reset based + on the time grain. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported timeGrainTypes for **CategoryType: Cost** + + + * Monthly + * Quarterly + * Annually + * BillingMonth* + * BillingQuarter* + * + BillingAnnual* + + *only supported for Web Direct customers. + + Supported timeGrainTypes for **CategoryType: ReservationUtilization** + + * Last7Days + * + Last30Days + + Required for CategoryType(s): Cost, ReservationUtilization. Known values are: "Monthly", + "Quarterly", "Annually", "BillingMonth", "BillingQuarter", "BillingAnnual", "Last7Days", and + "Last30Days". + :paramtype time_grain: str or ~azure.mgmt.costmanagement.models.TimeGrainType + :keyword time_period: The time period that defines the active period of the budget. The budget + will evaluate data on or after the startDate and will expire on the endDate. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Required for CategoryType(s): Cost, ReservationUtilization. + :paramtype time_period: ~azure.mgmt.costmanagement.models.BudgetTimePeriod + :keyword filter: May be used to filter budgets by user-specified dimensions and/or tags. + + Supported for CategoryType(s): Cost, ReservationUtilization. + :paramtype filter: ~azure.mgmt.costmanagement.models.BudgetFilter + :keyword notifications: Dictionary of notifications associated with the budget. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + + * Constraints for **CategoryType: Cost** - Budget can have up to 5 notifications with + thresholdType: Actual and 5 notifications with thresholdType: Forecasted. + * Constraints for **CategoryType: ReservationUtilization** - Only one notification allowed. + thresholdType is not applicable. + :paramtype notifications: dict[str, ~azure.mgmt.costmanagement.models.Notification] + """ + super().__init__(e_tag=e_tag, **kwargs) + self.category = category + self.amount = amount + self.time_grain = time_grain + self.time_period = time_period + self.filter = filter + self.current_spend = None + self.notifications = notifications + self.forecast_spend = None + + +class BudgetComparisonExpression(_serialization.Model): + """The comparison expression to be used in the budgets. + + All required parameters must be populated in order to send to server. + + :ivar name: The name of the column to use in comparison. Required. + :vartype name: str + :ivar operator: The operator to use for comparison. Required. Known values are: "In" and "In". + :vartype operator: str or ~azure.mgmt.costmanagement.models.BudgetOperatorType + :ivar values: Array of values to use for comparison. Required. + :vartype values: list[str] + """ + + _validation = { + "name": {"required": True}, + "operator": {"required": True}, + "values": {"required": True}, + } + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "operator": {"key": "operator", "type": "str"}, + "values": {"key": "values", "type": "[str]"}, + } + + def __init__( + self, *, name: str, operator: Union[str, "_models.BudgetOperatorType"], values: List[str], **kwargs: Any + ) -> None: + """ + :keyword name: The name of the column to use in comparison. Required. + :paramtype name: str + :keyword operator: The operator to use for comparison. Required. Known values are: "In" and + "In". + :paramtype operator: str or ~azure.mgmt.costmanagement.models.BudgetOperatorType + :keyword values: Array of values to use for comparison. Required. + :paramtype values: list[str] + """ + super().__init__(**kwargs) + self.name = name + self.operator = operator + self.values = values + + +class BudgetFilter(_serialization.Model): + """May be used to filter budgets by user-specified dimensions and/or tags. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + :ivar and_property: The logical "AND" expression. Must have at least 2 items. + + Supported for CategoryType(s): Cost. + :vartype and_property: list[~azure.mgmt.costmanagement.models.BudgetFilterProperties] + :ivar dimensions: Has comparison expression for a dimension. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported dimension names for **CategoryType: ReservationUtilization** + + + * ReservationId + * ReservedResourceType. + :vartype dimensions: ~azure.mgmt.costmanagement.models.BudgetComparisonExpression + :ivar tags: Has comparison expression for a tag. + + Supported for CategoryType(s): Cost. + :vartype tags: ~azure.mgmt.costmanagement.models.BudgetComparisonExpression + """ + + _attribute_map = { + "and_property": {"key": "and", "type": "[BudgetFilterProperties]"}, + "dimensions": {"key": "dimensions", "type": "BudgetComparisonExpression"}, + "tags": {"key": "tags", "type": "BudgetComparisonExpression"}, + } + + def __init__( + self, + *, + and_property: Optional[List["_models.BudgetFilterProperties"]] = None, + dimensions: Optional["_models.BudgetComparisonExpression"] = None, + tags: Optional["_models.BudgetComparisonExpression"] = None, + **kwargs: Any + ) -> None: + """ + :keyword and_property: The logical "AND" expression. Must have at least 2 items. + + Supported for CategoryType(s): Cost. + :paramtype and_property: list[~azure.mgmt.costmanagement.models.BudgetFilterProperties] + :keyword dimensions: Has comparison expression for a dimension. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported dimension names for **CategoryType: ReservationUtilization** + + + * ReservationId + * ReservedResourceType. + :paramtype dimensions: ~azure.mgmt.costmanagement.models.BudgetComparisonExpression + :keyword tags: Has comparison expression for a tag. + + Supported for CategoryType(s): Cost. + :paramtype tags: ~azure.mgmt.costmanagement.models.BudgetComparisonExpression + """ + super().__init__(**kwargs) + self.and_property = and_property + self.dimensions = dimensions + self.tags = tags + + +class BudgetFilterProperties(_serialization.Model): + """The Dimensions or Tags to filter a budget by. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + :ivar dimensions: Has comparison expression for a dimension. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported dimension names for **CategoryType: ReservationUtilization** + + + * ReservationId + * ReservedResourceType. + :vartype dimensions: ~azure.mgmt.costmanagement.models.BudgetComparisonExpression + :ivar tags: Has comparison expression for a tag. + + Supported for CategoryType(s): Cost. + :vartype tags: ~azure.mgmt.costmanagement.models.BudgetComparisonExpression + """ + + _attribute_map = { + "dimensions": {"key": "dimensions", "type": "BudgetComparisonExpression"}, + "tags": {"key": "tags", "type": "BudgetComparisonExpression"}, + } + + def __init__( + self, + *, + dimensions: Optional["_models.BudgetComparisonExpression"] = None, + tags: Optional["_models.BudgetComparisonExpression"] = None, + **kwargs: Any + ) -> None: + """ + :keyword dimensions: Has comparison expression for a dimension. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported dimension names for **CategoryType: ReservationUtilization** + + + * ReservationId + * ReservedResourceType. + :paramtype dimensions: ~azure.mgmt.costmanagement.models.BudgetComparisonExpression + :keyword tags: Has comparison expression for a tag. + + Supported for CategoryType(s): Cost. + :paramtype tags: ~azure.mgmt.costmanagement.models.BudgetComparisonExpression + """ + super().__init__(**kwargs) + self.dimensions = dimensions + self.tags = tags + + +class BudgetsListResult(_serialization.Model): + """Result of listing budgets. It contains a list of available budgets in the scope provided. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: The list of budgets. + :vartype value: list[~azure.mgmt.costmanagement.models.Budget] + :ivar next_link: The link (url) to the next page of results. + It's null for now, added for future use. + :vartype next_link: str + """ + + _validation = { + "value": {"readonly": True}, + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[Budget]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value = None + self.next_link = None + + +class BudgetTimePeriod(_serialization.Model): + """The time period that defines the active period of the budget. The budget will evaluate data on + or after the startDate and will expire on the endDate. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Required for CategoryType(s): Cost, ReservationUtilization. + + All required parameters must be populated in order to send to server. + + :ivar start_date: The start date for the budget. + + + * + Constraints for **CategoryType: Cost** - Must be first of the month and should be less than + the end date. Budget start date must be on or after June 1, 2017. Future start date should not + be more than twelve months. Past start date should be selected within the timegrain period. + + * + Constraints for **CategoryType: ReservationUtilization** - Must be on or after the current + date and less than the end date. Required. + :vartype start_date: ~datetime.datetime + :ivar end_date: The end date for the budget. + + + * + Constraints for **CategoryType: Cost** - No constraints. If not provided, we default this to + 10 years from the start date. + + * + Constraints for **CategoryType: ReservationUtilization** - End date cannot be more than 3 + years after the start date. + :vartype end_date: ~datetime.datetime + """ + + _validation = { + "start_date": {"required": True}, + } + + _attribute_map = { + "start_date": {"key": "startDate", "type": "iso-8601"}, + "end_date": {"key": "endDate", "type": "iso-8601"}, + } + + def __init__( + self, *, start_date: datetime.datetime, end_date: Optional[datetime.datetime] = None, **kwargs: Any + ) -> None: + """ + :keyword start_date: The start date for the budget. + + + * + Constraints for **CategoryType: Cost** - Must be first of the month and should be less than + the end date. Budget start date must be on or after June 1, 2017. Future start date should not + be more than twelve months. Past start date should be selected within the timegrain period. + + * + Constraints for **CategoryType: ReservationUtilization** - Must be on or after the current + date and less than the end date. Required. + :paramtype start_date: ~datetime.datetime + :keyword end_date: The end date for the budget. + + + * + Constraints for **CategoryType: Cost** - No constraints. If not provided, we default this to + 10 years from the start date. + + * + Constraints for **CategoryType: ReservationUtilization** - End date cannot be more than 3 + years after the start date. + :paramtype end_date: ~datetime.datetime + """ + super().__init__(**kwargs) + self.start_date = start_date + self.end_date = end_date + + +class CheckNameAvailabilityRequest(_serialization.Model): + """The check availability request body. + + :ivar name: The name of the resource for which availability needs to be checked. + :vartype name: str + :ivar type: The resource type. + :vartype type: str + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + } + + def __init__(self, *, name: Optional[str] = None, type: Optional[str] = None, **kwargs: Any) -> None: + """ + :keyword name: The name of the resource for which availability needs to be checked. + :paramtype name: str + :keyword type: The resource type. + :paramtype type: str + """ + super().__init__(**kwargs) + self.name = name + self.type = type + + +class CheckNameAvailabilityResponse(_serialization.Model): + """The check availability result. + + :ivar name_available: Indicates if the resource name is available. + :vartype name_available: bool + :ivar reason: The reason why the given name is not available. Known values are: "Invalid" and + "AlreadyExists". + :vartype reason: str or ~azure.mgmt.costmanagement.models.CheckNameAvailabilityReason + :ivar message: Detailed reason why the given name is available. + :vartype message: str + """ + + _attribute_map = { + "name_available": {"key": "nameAvailable", "type": "bool"}, + "reason": {"key": "reason", "type": "str"}, + "message": {"key": "message", "type": "str"}, + } + + def __init__( + self, + *, + name_available: Optional[bool] = None, + reason: Optional[Union[str, "_models.CheckNameAvailabilityReason"]] = None, + message: Optional[str] = None, + **kwargs: Any + ) -> None: + """ + :keyword name_available: Indicates if the resource name is available. + :paramtype name_available: bool + :keyword reason: The reason why the given name is not available. Known values are: "Invalid" + and "AlreadyExists". + :paramtype reason: str or ~azure.mgmt.costmanagement.models.CheckNameAvailabilityReason + :keyword message: Detailed reason why the given name is available. + :paramtype message: str + """ + super().__init__(**kwargs) + self.name_available = name_available + self.reason = reason + self.message = message + + +class CommonExportProperties(_serialization.Model): + """The common properties of the export. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to server. + + :ivar format: The format of the export being delivered. Currently only 'Csv' is supported. + "Csv" + :vartype format: str or ~azure.mgmt.costmanagement.models.FormatType + :ivar delivery_info: Has delivery information for the export. Required. + :vartype delivery_info: ~azure.mgmt.costmanagement.models.ExportDeliveryInfo + :ivar definition: Has the definition for the export. Required. + :vartype definition: ~azure.mgmt.costmanagement.models.ExportDefinition + :ivar run_history: If requested, has the most recent run history for the export. + :vartype run_history: ~azure.mgmt.costmanagement.models.ExportExecutionListResult + :ivar partition_data: If set to true, exported data will be partitioned by size and placed in a + blob directory together with a manifest file. Note: this option is currently available only for + Microsoft Customer Agreement commerce scopes. + :vartype partition_data: bool + :ivar next_run_time_estimate: If the export has an active schedule, provides an estimate of the + next run time. + :vartype next_run_time_estimate: ~datetime.datetime + """ + + _validation = { + "delivery_info": {"required": True}, + "definition": {"required": True}, + "next_run_time_estimate": {"readonly": True}, + } + + _attribute_map = { + "format": {"key": "format", "type": "str"}, + "delivery_info": {"key": "deliveryInfo", "type": "ExportDeliveryInfo"}, + "definition": {"key": "definition", "type": "ExportDefinition"}, + "run_history": {"key": "runHistory", "type": "ExportExecutionListResult"}, + "partition_data": {"key": "partitionData", "type": "bool"}, + "next_run_time_estimate": {"key": "nextRunTimeEstimate", "type": "iso-8601"}, + } + + def __init__( + self, + *, + delivery_info: "_models.ExportDeliveryInfo", + definition: "_models.ExportDefinition", + format: Optional[Union[str, "_models.FormatType"]] = None, + run_history: Optional["_models.ExportExecutionListResult"] = None, + partition_data: Optional[bool] = None, + **kwargs: Any + ) -> None: + """ + :keyword format: The format of the export being delivered. Currently only 'Csv' is supported. + "Csv" + :paramtype format: str or ~azure.mgmt.costmanagement.models.FormatType + :keyword delivery_info: Has delivery information for the export. Required. + :paramtype delivery_info: ~azure.mgmt.costmanagement.models.ExportDeliveryInfo + :keyword definition: Has the definition for the export. Required. + :paramtype definition: ~azure.mgmt.costmanagement.models.ExportDefinition + :keyword run_history: If requested, has the most recent run history for the export. + :paramtype run_history: ~azure.mgmt.costmanagement.models.ExportExecutionListResult + :keyword partition_data: If set to true, exported data will be partitioned by size and placed + in a blob directory together with a manifest file. Note: this option is currently available + only for Microsoft Customer Agreement commerce scopes. + :paramtype partition_data: bool + """ + super().__init__(**kwargs) + self.format = format + self.delivery_info = delivery_info + self.definition = definition + self.run_history = run_history + self.partition_data = partition_data + self.next_run_time_estimate = None + + +class CostAllocationProportion(_serialization.Model): + """Target resources and allocation. + + All required parameters must be populated in order to send to server. + + :ivar name: Target resource for cost allocation. Required. + :vartype name: str + :ivar percentage: Percentage of source cost to allocate to this resource. This value can be + specified to two decimal places and the total percentage of all resources in this rule must sum + to 100.00. Required. + :vartype percentage: float + """ + + _validation = { + "name": {"required": True}, + "percentage": {"required": True}, + } + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "percentage": {"key": "percentage", "type": "float"}, + } + + def __init__(self, *, name: str, percentage: float, **kwargs: Any) -> None: + """ + :keyword name: Target resource for cost allocation. Required. + :paramtype name: str + :keyword percentage: Percentage of source cost to allocate to this resource. This value can be + specified to two decimal places and the total percentage of all resources in this rule must sum + to 100.00. Required. + :paramtype percentage: float + """ + super().__init__(**kwargs) + self.name = name + self.percentage = percentage + + +class CostAllocationResource(_serialization.Model): + """Common values for resources for cost allocation. + + All required parameters must be populated in order to send to server. + + :ivar resource_type: Type of resources contained in this cost allocation rule. Required. Known + values are: "Dimension" and "Tag". + :vartype resource_type: str or ~azure.mgmt.costmanagement.models.CostAllocationResourceType + :ivar name: If resource type is dimension, this must be either ResourceGroupName or + SubscriptionId. If resource type is tag, this must be a valid Azure tag. Required. + :vartype name: str + """ + + _validation = { + "resource_type": {"required": True}, + "name": {"required": True}, + } + + _attribute_map = { + "resource_type": {"key": "resourceType", "type": "str"}, + "name": {"key": "name", "type": "str"}, + } + + def __init__( + self, *, resource_type: Union[str, "_models.CostAllocationResourceType"], name: str, **kwargs: Any + ) -> None: + """ + :keyword resource_type: Type of resources contained in this cost allocation rule. Required. + Known values are: "Dimension" and "Tag". + :paramtype resource_type: str or ~azure.mgmt.costmanagement.models.CostAllocationResourceType + :keyword name: If resource type is dimension, this must be either ResourceGroupName or + SubscriptionId. If resource type is tag, this must be a valid Azure tag. Required. + :paramtype name: str + """ + super().__init__(**kwargs) + self.resource_type = resource_type + self.name = name + + +class CostAllocationRuleCheckNameAvailabilityRequest(_serialization.Model): # pylint: disable=name-too-long + """The cost allocation rule check name availability request. - :ivar name: The name of the resource for which availability needs to be checked. + :ivar name: Rule name. :vartype name: str - :ivar type: The resource type. + :ivar type: Resource type. This is expected to be Microsoft.CostManagement/costAllocationRules. :vartype type: str """ @@ -988,9 +1877,10 @@ class CheckNameAvailabilityRequest(_serialization.Model): def __init__(self, *, name: Optional[str] = None, type: Optional[str] = None, **kwargs: Any) -> None: """ - :keyword name: The name of the resource for which availability needs to be checked. + :keyword name: Rule name. :paramtype name: str - :keyword type: The resource type. + :keyword type: Resource type. This is expected to be + Microsoft.CostManagement/costAllocationRules. :paramtype type: str """ super().__init__(**kwargs) @@ -998,15 +1888,15 @@ def __init__(self, *, name: Optional[str] = None, type: Optional[str] = None, ** self.type = type -class CheckNameAvailabilityResponse(_serialization.Model): - """The check availability result. +class CostAllocationRuleCheckNameAvailabilityResponse(_serialization.Model): # pylint: disable=name-too-long + """The cost allocation rule check name availability response. - :ivar name_available: Indicates if the resource name is available. + :ivar name_available: Whether this rule name is available. :vartype name_available: bool - :ivar reason: The reason why the given name is not available. Known values are: "Invalid" and - "AlreadyExists". - :vartype reason: str or ~azure.mgmt.costmanagement.models.CheckNameAvailabilityReason - :ivar message: Detailed reason why the given name is available. + :ivar reason: The reason this name is not available. Known values are: "Invalid", + "AlreadyExists", and "Valid". + :vartype reason: str or ~azure.mgmt.costmanagement.models.Reason + :ivar message: Error message if the name is not available. :vartype message: str """ @@ -1020,17 +1910,17 @@ def __init__( self, *, name_available: Optional[bool] = None, - reason: Optional[Union[str, "_models.CheckNameAvailabilityReason"]] = None, + reason: Optional[Union[str, "_models.Reason"]] = None, message: Optional[str] = None, **kwargs: Any ) -> None: """ - :keyword name_available: Indicates if the resource name is available. + :keyword name_available: Whether this rule name is available. :paramtype name_available: bool - :keyword reason: The reason why the given name is not available. Known values are: "Invalid" - and "AlreadyExists". - :paramtype reason: str or ~azure.mgmt.costmanagement.models.CheckNameAvailabilityReason - :keyword message: Detailed reason why the given name is available. + :keyword reason: The reason this name is not available. Known values are: "Invalid", + "AlreadyExists", and "Valid". + :paramtype reason: str or ~azure.mgmt.costmanagement.models.Reason + :keyword message: Error message if the name is not available. :paramtype message: str """ super().__init__(**kwargs) @@ -1039,78 +1929,175 @@ def __init__( self.message = message -class CommonExportProperties(_serialization.Model): - """The common properties of the export. +class CostAllocationRuleDefinition(_serialization.Model): + """The cost allocation rule model definition. Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. + :ivar id: Azure Resource Manager Id for the rule. This is a read ony value. + :vartype id: str + :ivar name: Name of the rule. This is a read only value. + :vartype name: str + :ivar type: Resource type of the rule. This is a read only value of + Microsoft.CostManagement/CostAllocationRule. + :vartype type: str + :ivar properties: Cost allocation rule properties. + :vartype properties: ~azure.mgmt.costmanagement.models.CostAllocationRuleProperties + """ - :ivar format: The format of the export being delivered. Currently only 'Csv' is supported. - "Csv" - :vartype format: str or ~azure.mgmt.costmanagement.models.FormatType - :ivar delivery_info: Has delivery information for the export. Required. - :vartype delivery_info: ~azure.mgmt.costmanagement.models.ExportDeliveryInfo - :ivar definition: Has the definition for the export. Required. - :vartype definition: ~azure.mgmt.costmanagement.models.ExportDefinition - :ivar run_history: If requested, has the most recent run history for the export. - :vartype run_history: ~azure.mgmt.costmanagement.models.ExportExecutionListResult - :ivar partition_data: If set to true, exported data will be partitioned by size and placed in a - blob directory together with a manifest file. Note: this option is currently available only for - Microsoft Customer Agreement commerce scopes. - :vartype partition_data: bool - :ivar next_run_time_estimate: If the export has an active schedule, provides an estimate of the - next run time. - :vartype next_run_time_estimate: ~datetime.datetime + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "properties": {"key": "properties", "type": "CostAllocationRuleProperties"}, + } + + def __init__(self, *, properties: Optional["_models.CostAllocationRuleProperties"] = None, **kwargs: Any) -> None: + """ + :keyword properties: Cost allocation rule properties. + :paramtype properties: ~azure.mgmt.costmanagement.models.CostAllocationRuleProperties + """ + super().__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.properties = properties + + +class CostAllocationRuleDetails(_serialization.Model): + """Resource details of the cost allocation rule. + + :ivar source_resources: Source resources for cost allocation. At this time, this list can + contain no more than one element. + :vartype source_resources: list[~azure.mgmt.costmanagement.models.SourceCostAllocationResource] + :ivar target_resources: Target resources for cost allocation. At this time, this list can + contain no more than one element. + :vartype target_resources: list[~azure.mgmt.costmanagement.models.TargetCostAllocationResource] + """ + + _attribute_map = { + "source_resources": {"key": "sourceResources", "type": "[SourceCostAllocationResource]"}, + "target_resources": {"key": "targetResources", "type": "[TargetCostAllocationResource]"}, + } + + def __init__( + self, + *, + source_resources: Optional[List["_models.SourceCostAllocationResource"]] = None, + target_resources: Optional[List["_models.TargetCostAllocationResource"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword source_resources: Source resources for cost allocation. At this time, this list can + contain no more than one element. + :paramtype source_resources: + list[~azure.mgmt.costmanagement.models.SourceCostAllocationResource] + :keyword target_resources: Target resources for cost allocation. At this time, this list can + contain no more than one element. + :paramtype target_resources: + list[~azure.mgmt.costmanagement.models.TargetCostAllocationResource] + """ + super().__init__(**kwargs) + self.source_resources = source_resources + self.target_resources = target_resources + + +class CostAllocationRuleList(_serialization.Model): + """Result of listing cost allocation rules. It contains a list of available rules in the billing + account or enterprise enrollment provided. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: The list of cost allocation rules. + :vartype value: list[~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition] + :ivar next_link: URL to get the next set of rule list results if there are any. + :vartype next_link: str """ _validation = { - "delivery_info": {"required": True}, - "definition": {"required": True}, - "next_run_time_estimate": {"readonly": True}, + "next_link": {"readonly": True}, } _attribute_map = { - "format": {"key": "format", "type": "str"}, - "delivery_info": {"key": "deliveryInfo", "type": "ExportDeliveryInfo"}, - "definition": {"key": "definition", "type": "ExportDefinition"}, - "run_history": {"key": "runHistory", "type": "ExportExecutionListResult"}, - "partition_data": {"key": "partitionData", "type": "bool"}, - "next_run_time_estimate": {"key": "nextRunTimeEstimate", "type": "iso-8601"}, + "value": {"key": "value", "type": "[CostAllocationRuleDefinition]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, *, value: Optional[List["_models.CostAllocationRuleDefinition"]] = None, **kwargs: Any) -> None: + """ + :keyword value: The list of cost allocation rules. + :paramtype value: list[~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition] + """ + super().__init__(**kwargs) + self.value = value + self.next_link = None + + +class CostAllocationRuleProperties(_serialization.Model): + """The properties of a cost allocation rule. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to server. + + :ivar description: Description of a cost allocation rule. + :vartype description: str + :ivar details: Resource information for the cost allocation rule. Required. + :vartype details: ~azure.mgmt.costmanagement.models.CostAllocationRuleDetails + :ivar status: Status of the rule. Required. Known values are: "NotActive", "Active", and + "Processing". + :vartype status: str or ~azure.mgmt.costmanagement.models.RuleStatus + :ivar created_date: Time at which the rule was created. Rules that change cost for the same + resource are applied in order of creation. + :vartype created_date: ~datetime.datetime + :ivar updated_date: Time at which the rule was last updated. + :vartype updated_date: ~datetime.datetime + """ + + _validation = { + "details": {"required": True}, + "status": {"required": True}, + "created_date": {"readonly": True}, + "updated_date": {"readonly": True}, + } + + _attribute_map = { + "description": {"key": "description", "type": "str"}, + "details": {"key": "details", "type": "CostAllocationRuleDetails"}, + "status": {"key": "status", "type": "str"}, + "created_date": {"key": "createdDate", "type": "iso-8601"}, + "updated_date": {"key": "updatedDate", "type": "iso-8601"}, } def __init__( self, *, - delivery_info: "_models.ExportDeliveryInfo", - definition: "_models.ExportDefinition", - format: Optional[Union[str, "_models.FormatType"]] = None, - run_history: Optional["_models.ExportExecutionListResult"] = None, - partition_data: Optional[bool] = None, + details: "_models.CostAllocationRuleDetails", + status: Union[str, "_models.RuleStatus"], + description: Optional[str] = None, **kwargs: Any ) -> None: """ - :keyword format: The format of the export being delivered. Currently only 'Csv' is supported. - "Csv" - :paramtype format: str or ~azure.mgmt.costmanagement.models.FormatType - :keyword delivery_info: Has delivery information for the export. Required. - :paramtype delivery_info: ~azure.mgmt.costmanagement.models.ExportDeliveryInfo - :keyword definition: Has the definition for the export. Required. - :paramtype definition: ~azure.mgmt.costmanagement.models.ExportDefinition - :keyword run_history: If requested, has the most recent run history for the export. - :paramtype run_history: ~azure.mgmt.costmanagement.models.ExportExecutionListResult - :keyword partition_data: If set to true, exported data will be partitioned by size and placed - in a blob directory together with a manifest file. Note: this option is currently available - only for Microsoft Customer Agreement commerce scopes. - :paramtype partition_data: bool + :keyword description: Description of a cost allocation rule. + :paramtype description: str + :keyword details: Resource information for the cost allocation rule. Required. + :paramtype details: ~azure.mgmt.costmanagement.models.CostAllocationRuleDetails + :keyword status: Status of the rule. Required. Known values are: "NotActive", "Active", and + "Processing". + :paramtype status: str or ~azure.mgmt.costmanagement.models.RuleStatus """ super().__init__(**kwargs) - self.format = format - self.delivery_info = delivery_info - self.definition = definition - self.run_history = run_history - self.partition_data = partition_data - self.next_run_time_estimate = None + self.description = description + self.details = details + self.status = status + self.created_date = None + self.updated_date = None class CostDetailsOperationResults(_serialization.Model): # pylint: disable=too-many-instance-attributes @@ -1242,7 +2229,7 @@ class CostDetailsTimePeriod(_serialization.Model): """The start and end date for pulling data for the cost detailed report. API only allows data to be pulled for 1 month or less and no older than 13 months. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar start: The start date to pull data from. example format 2020-03-15. Required. :vartype start: str @@ -1425,6 +2412,36 @@ def __init__(self, **kwargs: Any) -> None: self.tags = None +class CurrentSpend(_serialization.Model): + """The current amount of cost which is being tracked for a budget. + + Supported for CategoryType(s): Cost. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar amount: The total amount of cost which is being tracked by the budget. + :vartype amount: float + :ivar unit: The unit of measure for the budget amount. + :vartype unit: str + """ + + _validation = { + "amount": {"readonly": True}, + "unit": {"readonly": True}, + } + + _attribute_map = { + "amount": {"key": "amount", "type": "float"}, + "unit": {"key": "unit", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.amount = None + self.unit = None + + class Dimension(CostManagementResource): # pylint: disable=too-many-instance-attributes """List of Dimension. @@ -1625,58 +2642,342 @@ def __init__( :paramtype status_modification_time: str """ super().__init__(**kwargs) - self.definition = definition - self.description = description - self.source = source - self.details = details - self.cost_entity_id = cost_entity_id - self.status = status - self.creation_time = creation_time - self.close_time = close_time - self.modification_time = modification_time - self.status_modification_user_name = status_modification_user_name - self.status_modification_time = status_modification_time + self.definition = definition + self.description = description + self.source = source + self.details = details + self.cost_entity_id = cost_entity_id + self.status = status + self.creation_time = creation_time + self.close_time = close_time + self.modification_time = modification_time + self.status_modification_user_name = status_modification_user_name + self.status_modification_time = status_modification_time + + +class DownloadURL(_serialization.Model): + """The URL to download the generated report. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar expiry_time: The time at which report URL becomes invalid/expires in UTC e.g. + 2020-12-08T05:55:59.4394737Z. + :vartype expiry_time: ~datetime.datetime + :ivar valid_till: The time at which report URL becomes invalid/expires in UTC e.g. + 2020-12-08T05:55:59.4394737Z. + :vartype valid_till: ~datetime.datetime + :ivar download_url: The URL to download the generated report. + :vartype download_url: str + """ + + _validation = { + "expiry_time": {"readonly": True}, + } + + _attribute_map = { + "expiry_time": {"key": "expiryTime", "type": "iso-8601"}, + "valid_till": {"key": "validTill", "type": "iso-8601"}, + "download_url": {"key": "downloadUrl", "type": "str"}, + } + + def __init__( + self, *, valid_till: Optional[datetime.datetime] = None, download_url: Optional[str] = None, **kwargs: Any + ) -> None: + """ + :keyword valid_till: The time at which report URL becomes invalid/expires in UTC e.g. + 2020-12-08T05:55:59.4394737Z. + :paramtype valid_till: ~datetime.datetime + :keyword download_url: The URL to download the generated report. + :paramtype download_url: str + """ + super().__init__(**kwargs) + self.expiry_time = None + self.valid_till = valid_till + self.download_url = download_url + + +class EAPriceSheetProperties(_serialization.Model): # pylint: disable=too-many-instance-attributes + """The properties of the EA price sheet. Properties supported with version 2024-08-01 are as + below. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar enrollment_number: Unique identifier for the EA billing account. + :vartype enrollment_number: str + :ivar service_family: Type of Azure service. For example, Compute, Analytics, and Security. + :vartype service_family: float + :ivar product: Name of the product accruing the charges. + :vartype product: str + :ivar product_id: Unique identifier for the product whose meter is consumed. + :vartype product_id: str + :ivar sku_id: Unique identifier of the SKU. + :vartype sku_id: str + :ivar unit_of_measure: How usage is measured for the service. Note: The field “Unit” has been + removed with version 2023-11-01 as a duplicate of “UnitofMeasure”, please use the field + “UnitOfMeasure”. + :vartype unit_of_measure: str + :ivar meter_id: Unique identifier of the meter. + :vartype meter_id: str + :ivar meter_name: Name of the meter. The meter represents the deployable resource of an Azure + service. + :vartype meter_name: str + :ivar meter_type: Name of the meter type. + :vartype meter_type: str + :ivar offer_id: Determines the Azure offer associated with this meter. [Learn more about Azure + offers] (https://azure.microsoft.com/en-us/support/legal/offer-details/). + :vartype offer_id: str + :ivar meter_category: Name of the classification category for the meter. For example, Cloud + services, Networking, etc. + :vartype meter_category: str + :ivar meter_sub_category: Name of the meter subclassification category. + :vartype meter_sub_category: str + :ivar meter_region: Name of the Azure region where the meter for the service is available. + :vartype meter_region: str + :ivar effective_start_date: Effective start date of the Price Sheet billing period. + :vartype effective_start_date: ~datetime.datetime + :ivar effective_end_date: Effective end date of the Price Sheet billing period. + :vartype effective_end_date: ~datetime.datetime + :ivar unit_price: The per-unit price at the time of billing for a given product or service, + inclusive of any negotiated discounts on top of the market price. + + For PriceType ReservedInstance, unit price reflects the total cost of the 1 or 3-year + commitment including discounts. + + Note: The unit price isn't the same as the effective price in usage details downloads when + services have differential prices across tiers. + + If services have multi-tiered pricing, the effective price is a blended rate across the tiers + and doesn't show a tier-specific unit price. The blended price or effective price is the net + price for the consumed quantity spanning across the multiple tiers (where each tier has a + specific unit price). + :vartype unit_price: str + :ivar base_price: The unit price at the time the customer signs on or the unit price at the + time of service meter GA launch if it is after sign-on. + + This is applicable for Enterprise Agreement users. + :vartype base_price: str + :ivar market_price: The current list price for a given product or service. This price is + without any negotiations and is based on your Microsoft Agreement type. + + For PriceType Consumption, market price is reflected as the pay-as-you-go price. + + For PriceType Savings Plan, market price reflects the Savings plan benefit on top of + pay-as-you-go price for the corresponding commitment term. + + For PriceType ReservedInstance, market price reflects the total price of the 1 or 3-year + commitment. + + Note: For EA customers with no negotiations, market price may appear rounded to a different + decimal precision than unit price. + :vartype market_price: str + :ivar included_quantity: Quantities of a specific service to which an EA customer is entitled + to consume without incremental charges. + :vartype included_quantity: str + :ivar currency_code: Currency in which the Enterprise Agreement was signed. + :vartype currency_code: str + :ivar term: Term length for Azure Savings Plan or Reservation term – one year or three years + (P1Y or P3Y). + :vartype term: str + :ivar price_type: Price type for a product. For example, an Azure resource with a pay-as-you-go + rate with priceType as Consumption. Other price types include ReservedInstance and Savings + Plan. + :vartype price_type: str + :ivar part_number: Part number associated with the meter. + :vartype part_number: str + """ + + _validation = { + "enrollment_number": {"readonly": True}, + "service_family": {"readonly": True}, + "product": {"readonly": True}, + "product_id": {"readonly": True}, + "sku_id": {"readonly": True}, + "unit_of_measure": {"readonly": True}, + "meter_id": {"readonly": True}, + "meter_name": {"readonly": True}, + "meter_type": {"readonly": True}, + "offer_id": {"readonly": True}, + "meter_category": {"readonly": True}, + "meter_sub_category": {"readonly": True}, + "meter_region": {"readonly": True}, + "effective_start_date": {"readonly": True}, + "effective_end_date": {"readonly": True}, + "unit_price": {"readonly": True}, + "base_price": {"readonly": True}, + "market_price": {"readonly": True}, + "included_quantity": {"readonly": True}, + "currency_code": {"readonly": True}, + "term": {"readonly": True}, + "price_type": {"readonly": True}, + "part_number": {"readonly": True}, + } + + _attribute_map = { + "enrollment_number": {"key": "enrollmentNumber", "type": "str"}, + "service_family": {"key": "serviceFamily", "type": "float"}, + "product": {"key": "product", "type": "str"}, + "product_id": {"key": "productId", "type": "str"}, + "sku_id": {"key": "skuId", "type": "str"}, + "unit_of_measure": {"key": "unitOfMeasure", "type": "str"}, + "meter_id": {"key": "meterId", "type": "str"}, + "meter_name": {"key": "meterName", "type": "str"}, + "meter_type": {"key": "meterType", "type": "str"}, + "offer_id": {"key": "offerId", "type": "str"}, + "meter_category": {"key": "meterCategory", "type": "str"}, + "meter_sub_category": {"key": "meterSubCategory", "type": "str"}, + "meter_region": {"key": "meterRegion", "type": "str"}, + "effective_start_date": {"key": "effectiveStartDate", "type": "iso-8601"}, + "effective_end_date": {"key": "effectiveEndDate", "type": "iso-8601"}, + "unit_price": {"key": "unitPrice", "type": "str"}, + "base_price": {"key": "basePrice", "type": "str"}, + "market_price": {"key": "marketPrice", "type": "str"}, + "included_quantity": {"key": "includedQuantity", "type": "str"}, + "currency_code": {"key": "currencyCode", "type": "str"}, + "term": {"key": "term", "type": "str"}, + "price_type": {"key": "priceType", "type": "str"}, + "part_number": {"key": "partNumber", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.enrollment_number = None + self.service_family = None + self.product = None + self.product_id = None + self.sku_id = None + self.unit_of_measure = None + self.meter_id = None + self.meter_name = None + self.meter_type = None + self.offer_id = None + self.meter_category = None + self.meter_sub_category = None + self.meter_region = None + self.effective_start_date = None + self.effective_end_date = None + self.unit_price = None + self.base_price = None + self.market_price = None + self.included_quantity = None + self.currency_code = None + self.term = None + self.price_type = None + self.part_number = None + + +class ErrorAdditionalInfo(_serialization.Model): + """The resource management error additional info. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar type: The additional info type. + :vartype type: str + :ivar info: The additional info. + :vartype info: JSON + """ + + _validation = { + "type": {"readonly": True}, + "info": {"readonly": True}, + } + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "info": {"key": "info", "type": "object"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.type = None + self.info = None -class DownloadURL(_serialization.Model): - """The URL to download the generated report. +class ErrorDetail(_serialization.Model): + """The error detail. Variables are only populated by the server, and will be ignored when sending a request. - :ivar expiry_time: The time at which report URL becomes invalid/expires in UTC e.g. - 2020-12-08T05:55:59.4394737Z. - :vartype expiry_time: ~datetime.datetime - :ivar valid_till: The time at which report URL becomes invalid/expires in UTC e.g. - 2020-12-08T05:55:59.4394737Z. - :vartype valid_till: ~datetime.datetime - :ivar download_url: The URL to download the generated report. - :vartype download_url: str + :ivar code: The error code. + :vartype code: str + :ivar message: The error message. + :vartype message: str + :ivar target: The error target. + :vartype target: str + :ivar details: The error details. + :vartype details: list[~azure.mgmt.costmanagement.models.ErrorDetail] + :ivar additional_info: The error additional info. + :vartype additional_info: list[~azure.mgmt.costmanagement.models.ErrorAdditionalInfo] """ _validation = { - "expiry_time": {"readonly": True}, + "code": {"readonly": True}, + "message": {"readonly": True}, + "target": {"readonly": True}, + "details": {"readonly": True}, + "additional_info": {"readonly": True}, } _attribute_map = { - "expiry_time": {"key": "expiryTime", "type": "iso-8601"}, - "valid_till": {"key": "validTill", "type": "iso-8601"}, - "download_url": {"key": "downloadUrl", "type": "str"}, + "code": {"key": "code", "type": "str"}, + "message": {"key": "message", "type": "str"}, + "target": {"key": "target", "type": "str"}, + "details": {"key": "details", "type": "[ErrorDetail]"}, + "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, } - def __init__( - self, *, valid_till: Optional[datetime.datetime] = None, download_url: Optional[str] = None, **kwargs: Any - ) -> None: - """ - :keyword valid_till: The time at which report URL becomes invalid/expires in UTC e.g. - 2020-12-08T05:55:59.4394737Z. - :paramtype valid_till: ~datetime.datetime - :keyword download_url: The URL to download the generated report. - :paramtype download_url: str - """ + def __init__(self, **kwargs: Any) -> None: + """ """ super().__init__(**kwargs) - self.expiry_time = None - self.valid_till = valid_till - self.download_url = download_url + self.code = None + self.message = None + self.target = None + self.details = None + self.additional_info = None + + +class ErrorDetailAutoGenerated(_serialization.Model): + """The error detail. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar code: The error code. + :vartype code: str + :ivar message: The error message. + :vartype message: str + :ivar target: The error target. + :vartype target: str + :ivar details: The error details. + :vartype details: list[~azure.mgmt.costmanagement.models.ErrorDetailAutoGenerated] + :ivar additional_info: The error additional info. + :vartype additional_info: list[~azure.mgmt.costmanagement.models.ErrorAdditionalInfo] + """ + + _validation = { + "code": {"readonly": True}, + "message": {"readonly": True}, + "target": {"readonly": True}, + "details": {"readonly": True}, + "additional_info": {"readonly": True}, + } + + _attribute_map = { + "code": {"key": "code", "type": "str"}, + "message": {"key": "message", "type": "str"}, + "target": {"key": "target", "type": "str"}, + "details": {"key": "details", "type": "[ErrorDetailAutoGenerated]"}, + "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.code = None + self.message = None + self.target = None + self.details = None + self.additional_info = None class ErrorDetails(_serialization.Model): @@ -1770,6 +3071,48 @@ def __init__(self, *, error: Optional["_models.ErrorDetails"] = None, **kwargs: self.error = error +class ErrorResponseAutoGenerated(_serialization.Model): + """Common error response for all Azure Resource Manager APIs to return error details for failed + operations. (This also follows the OData error response format.). + + :ivar error: The error object. + :vartype error: ~azure.mgmt.costmanagement.models.ErrorDetail + """ + + _attribute_map = { + "error": {"key": "error", "type": "ErrorDetail"}, + } + + def __init__(self, *, error: Optional["_models.ErrorDetail"] = None, **kwargs: Any) -> None: + """ + :keyword error: The error object. + :paramtype error: ~azure.mgmt.costmanagement.models.ErrorDetail + """ + super().__init__(**kwargs) + self.error = error + + +class ErrorResponseAutoGenerated2(_serialization.Model): + """Common error response for all Azure Resource Manager APIs to return error details for failed + operations. (This also follows the OData error response format.). + + :ivar error: The error object. + :vartype error: ~azure.mgmt.costmanagement.models.ErrorDetailAutoGenerated + """ + + _attribute_map = { + "error": {"key": "error", "type": "ErrorDetailAutoGenerated"}, + } + + def __init__(self, *, error: Optional["_models.ErrorDetailAutoGenerated"] = None, **kwargs: Any) -> None: + """ + :keyword error: The error object. + :paramtype error: ~azure.mgmt.costmanagement.models.ErrorDetailAutoGenerated + """ + super().__init__(**kwargs) + self.error = error + + class ErrorResponseWithNestedDetails(_serialization.Model): """Error response indicates that the service is not able to process the incoming request. The reason is provided in the error message. @@ -1816,6 +3159,11 @@ class Export(CostManagementProxyResource): # pylint: disable=too-many-instance- :ivar e_tag: eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not. :vartype e_tag: str + :ivar identity: The managed identity associated with Export. + :vartype identity: ~azure.mgmt.costmanagement.models.SystemAssignedServiceIdentity + :ivar location: The location of the Export's managed identity. Only required when utilizing + managed identity. + :vartype location: str :ivar format: The format of the export being delivered. Currently only 'Csv' is supported. "Csv" :vartype format: str or ~azure.mgmt.costmanagement.models.FormatType @@ -1848,6 +3196,8 @@ class Export(CostManagementProxyResource): # pylint: disable=too-many-instance- "name": {"key": "name", "type": "str"}, "type": {"key": "type", "type": "str"}, "e_tag": {"key": "eTag", "type": "str"}, + "identity": {"key": "identity", "type": "SystemAssignedServiceIdentity"}, + "location": {"key": "location", "type": "str"}, "format": {"key": "properties.format", "type": "str"}, "delivery_info": {"key": "properties.deliveryInfo", "type": "ExportDeliveryInfo"}, "definition": {"key": "properties.definition", "type": "ExportDefinition"}, @@ -1861,6 +3211,8 @@ def __init__( self, *, e_tag: Optional[str] = None, + identity: Optional["_models.SystemAssignedServiceIdentity"] = None, + location: Optional[str] = None, format: Optional[Union[str, "_models.FormatType"]] = None, delivery_info: Optional["_models.ExportDeliveryInfo"] = None, definition: Optional["_models.ExportDefinition"] = None, @@ -1873,6 +3225,11 @@ def __init__( :keyword e_tag: eTag of the resource. To handle concurrent update scenario, this field will be used to determine whether the user is updating the latest version or not. :paramtype e_tag: str + :keyword identity: The managed identity associated with Export. + :paramtype identity: ~azure.mgmt.costmanagement.models.SystemAssignedServiceIdentity + :keyword location: The location of the Export's managed identity. Only required when utilizing + managed identity. + :paramtype location: str :keyword format: The format of the export being delivered. Currently only 'Csv' is supported. "Csv" :paramtype format: str or ~azure.mgmt.costmanagement.models.FormatType @@ -1890,6 +3247,8 @@ def __init__( :paramtype schedule: ~azure.mgmt.costmanagement.models.ExportSchedule """ super().__init__(e_tag=e_tag, **kwargs) + self.identity = identity + self.location = location self.format = format self.delivery_info = delivery_info self.definition = definition @@ -1961,7 +3320,7 @@ def __init__(self, *, columns: Optional[List[str]] = None, **kwargs: Any) -> Non class ExportDefinition(_serialization.Model): """The definition of an export. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar type: The type of the export. Note that 'Usage' is equivalent to 'ActualCost' and is applicable to exports that do not yet provide data for charges or amortization for service @@ -2037,7 +3396,7 @@ class ExportDeliveryDestination(_serialization.Model): https://docs.microsoft.com/en-us/azure/cost-management-billing/costs/export-cost-data-storage-account-sas-key ). - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar resource_id: The resource id of the storage account where exports will be delivered. This is not required if a sasToken and storageAccount are specified. @@ -2110,7 +3469,7 @@ def __init__( class ExportDeliveryInfo(_serialization.Model): """The delivery information associated with a export. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar destination: Has destination for the export being delivered. Required. :vartype destination: ~azure.mgmt.costmanagement.models.ExportDeliveryDestination @@ -2184,7 +3543,7 @@ class ExportProperties(CommonExportProperties): Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar format: The format of the export being delivered. Currently only 'Csv' is supported. "Csv" @@ -2264,7 +3623,7 @@ def __init__( class ExportRecurrencePeriod(_serialization.Model): """The start and end date for recurrence schedule. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar from_property: The start date of recurrence. Required. :vartype from_property: ~datetime.datetime @@ -2455,7 +3814,7 @@ class ExportTimePeriod(_serialization.Model): """The date range for data in the export. This should only be specified with timeFrame set to 'Custom'. The maximum date range is 3 months. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar from_property: The start date for export data. Required. :vartype from_property: ~datetime.datetime @@ -2508,7 +3867,7 @@ def __init__(self, *, file_formats: Optional[List[Union[str, "_models.FileFormat class ForecastAggregation(_serialization.Model): """The aggregation expression to be used in the forecast. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar name: The name of the column to aggregate. Required. Known values are: "PreTaxCostUSD", "Cost", "CostUSD", and "PreTaxCost". @@ -2571,7 +3930,7 @@ def __init__(self, *, name: Optional[str] = None, type: Optional[str] = None, ** class ForecastComparisonExpression(_serialization.Model): """The comparison expression to be used in the forecast. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar name: The name of the column to use in comparison. Required. :vartype name: str @@ -2614,7 +3973,7 @@ def __init__( class ForecastDataset(_serialization.Model): """The definition of data present in the forecast. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar granularity: The granularity of rows in the forecast. "Daily" :vartype granularity: str or ~azure.mgmt.costmanagement.models.GranularityType @@ -2694,7 +4053,7 @@ def __init__(self, *, columns: Optional[List[str]] = None, **kwargs: Any) -> Non class ForecastDefinition(_serialization.Model): """The definition of a forecast. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar type: The type of the forecast. Required. Known values are: "Usage", "ActualCost", and "AmortizedCost". @@ -2887,10 +4246,41 @@ def __init__( self.rows = rows +class ForecastSpend(_serialization.Model): + """The forecasted cost which is being tracked for a budget. + + Supported for CategoryType(s): Cost. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar amount: The forecasted cost for the total time period which is being tracked by the + budget. This value is only provided if the budget contains a forecast alert type. + :vartype amount: float + :ivar unit: The unit of measure for the budget amount. + :vartype unit: str + """ + + _validation = { + "amount": {"readonly": True}, + "unit": {"readonly": True}, + } + + _attribute_map = { + "amount": {"key": "amount", "type": "float"}, + "unit": {"key": "unit", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.amount = None + self.unit = None + + class ForecastTimePeriod(_serialization.Model): """Has time period for pulling data for the forecast. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar from_property: The start date to pull data from. Required. :vartype from_property: ~datetime.datetime @@ -2969,7 +4359,7 @@ def __init__(self, *, error: Optional["_models.ErrorDetails"] = None, **kwargs: self.error = error -class GenerateCostDetailsReportRequestDefinition(_serialization.Model): +class GenerateCostDetailsReportRequestDefinition(_serialization.Model): # pylint: disable=name-too-long """The definition of a cost detailed report. :ivar metric: The type of the detailed report. By default ActualCost is provided. Known values @@ -3148,7 +4538,7 @@ def __init__(self, *, error: Optional["_models.ErrorDetails"] = None, **kwargs: self.error = error -class GenerateDetailedCostReportOperationResult(_serialization.Model): +class GenerateDetailedCostReportOperationResult(_serialization.Model): # pylint: disable=name-too-long """The result of the long running operation for cost detailed report. Variables are only populated by the server, and will be ignored when sending a request. @@ -3214,7 +4604,7 @@ def __init__( self.download_url = download_url -class GenerateDetailedCostReportOperationStatuses(_serialization.Model): +class GenerateDetailedCostReportOperationStatuses(_serialization.Model): # pylint: disable=name-too-long """The status of the long running operation for cost detailed report. Variables are only populated by the server, and will be ignored when sending a request. @@ -3311,7 +4701,7 @@ def __init__( class GenerateDetailedCostReportTimePeriod(_serialization.Model): """The start and end date for pulling data for the cost detailed report. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar start: The start date to pull data from. example format 2020-03-15. Required. :vartype start: str @@ -3346,10 +4736,10 @@ class IncludedQuantityUtilizationSummary(BenefitUtilizationSummary): Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long :vartype id: str :ivar name: The name of the resource. :vartype name: str @@ -3416,7 +4806,9 @@ def __init__(self, *, benefit_type: Optional[Union[str, "_models.BenefitKind"]] self.utilization_percentage = None -class IncludedQuantityUtilizationSummaryProperties(BenefitUtilizationSummaryProperties): +class IncludedQuantityUtilizationSummaryProperties( + BenefitUtilizationSummaryProperties +): # pylint: disable=name-too-long """Included Quantity utilization summary properties. Variables are only populated by the server, and will be ignored when sending a request. @@ -3503,10 +4895,377 @@ def __init__( self.enabled = enabled +class MCAPriceSheetProperties(_serialization.Model): # pylint: disable=too-many-instance-attributes + """The properties of the price sheet. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar billing_account_id: Unique identifier for the billing account. + :vartype billing_account_id: str + :ivar billing_account_name: Name of the billing profile that is set up to receive invoices. The + prices in the price sheet are associated with this billing profile. + :vartype billing_account_name: str + :ivar billing_profile_id: Unique identifier for the billing profile. + :vartype billing_profile_id: str + :ivar billing_profile_name: Name of the billing profile that is set up to receive invoices. The + prices in the price sheet are associated with this billing profile. + :vartype billing_profile_name: str + :ivar product_order_name: Name of the purchased product plan. Indicates if this pricing is + standard Azure Plan pricing, Dev/Test pricing etc. + + Currently unavailable for Azure 3rd party and ReservedInstance meters. + :vartype product_order_name: str + :ivar service_family: Type of Azure service. For example, Compute, Analytics, and Security. + :vartype service_family: float + :ivar product: Name of the product accruing the charges. + :vartype product: str + :ivar product_id: Unique identifier for the product whose meter is consumed. + :vartype product_id: str + :ivar sku_id: Unique identifier of the SKU. + :vartype sku_id: str + :ivar unit_of_measure: How usage is measured for the service. + :vartype unit_of_measure: str + :ivar meter_name: Name of the meter. The meter represents the deployable resource of an Azure + service. + :vartype meter_name: str + :ivar meter_type: Name of the meter type. + :vartype meter_type: str + :ivar meter_category: Name of the classification category for the meter. For example, Cloud + services, Networking, etc. + :vartype meter_category: str + :ivar meter_sub_category: Name of the meter subclassification category. + :vartype meter_sub_category: str + :ivar meter_region: Name of the Azure region where the meter for the service is available. + :vartype meter_region: str + :ivar tier_minimum_units: Defines the lower bound of the tier range for which prices are + defined. For example, if the range is 0 to 100, tierMinimumUnits would be 0. + :vartype tier_minimum_units: str + :ivar effective_start_date: Effective start date of the Price Sheet billing period. + :vartype effective_start_date: ~datetime.datetime + :ivar effective_end_date: Effective end date of the Price Sheet billing period. + :vartype effective_end_date: ~datetime.datetime + :ivar unit_price: The per-unit price at the time of billing for a given product or service, + inclusive of any negotiated discounts on top of the market price. + + For PriceType ReservedInstance, unit price reflects the total cost of the 1 or 3-year + commitment including discounts. + + Note: The unit price isn't the same as the effective price in usage details downloads when + services have differential prices across tiers. + + If services have multi-tiered pricing, the effective price is a blended rate across the tiers + and doesn't show a tier-specific unit price. The blended price or effective price is the net + price for the consumed quantity spanning across the multiple tiers (where each tier has a + specific unit price). + :vartype unit_price: str + :ivar base_price: The unit price at the time the customer signs on or the unit price at the + time of service meter GA launch if it is after sign-on. + + This is applicable for Enterprise Agreement users. + :vartype base_price: str + :ivar market_price: The current list price for a given product or service. This price is + without any negotiations and is based on your Microsoft Agreement type. + + For PriceType Consumption, market price is reflected as the pay-as-you-go price. + + For PriceType Savings Plan, market price reflects the Savings plan benefit on top of + pay-as-you-go price for the corresponding commitment term. + + For PriceType ReservedInstance, market price reflects the total price of the 1 or 3-year + commitment. + :vartype market_price: str + :ivar currency: Currency in which all the prices are reflected. + :vartype currency: str + :ivar billing_currency: Currency in which charges are posted. + :vartype billing_currency: str + :ivar term: Term length for Azure Savings Plan or Reservation term – one year or three years + (P1Y or P3Y). + :vartype term: str + :ivar price_type: Price type for a product. For example, an Azure resource with a pay-as-you-go + rate with priceType as Consumption. Other price types include ReservedInstance and Savings + Plan. + :vartype price_type: str + """ + + _validation = { + "billing_account_id": {"readonly": True}, + "billing_account_name": {"readonly": True}, + "billing_profile_id": {"readonly": True}, + "billing_profile_name": {"readonly": True}, + "product_order_name": {"readonly": True}, + "service_family": {"readonly": True}, + "product": {"readonly": True}, + "product_id": {"readonly": True}, + "sku_id": {"readonly": True}, + "unit_of_measure": {"readonly": True}, + "meter_name": {"readonly": True}, + "meter_type": {"readonly": True}, + "meter_category": {"readonly": True}, + "meter_sub_category": {"readonly": True}, + "meter_region": {"readonly": True}, + "tier_minimum_units": {"readonly": True}, + "effective_start_date": {"readonly": True}, + "effective_end_date": {"readonly": True}, + "unit_price": {"readonly": True}, + "base_price": {"readonly": True}, + "market_price": {"readonly": True}, + "currency": {"readonly": True}, + "billing_currency": {"readonly": True}, + "term": {"readonly": True}, + "price_type": {"readonly": True}, + } + + _attribute_map = { + "billing_account_id": {"key": "billingAccountID", "type": "str"}, + "billing_account_name": {"key": "billingAccountName", "type": "str"}, + "billing_profile_id": {"key": "billingProfileId", "type": "str"}, + "billing_profile_name": {"key": "billingProfileName", "type": "str"}, + "product_order_name": {"key": "productOrderName", "type": "str"}, + "service_family": {"key": "serviceFamily", "type": "float"}, + "product": {"key": "product", "type": "str"}, + "product_id": {"key": "productId", "type": "str"}, + "sku_id": {"key": "skuId", "type": "str"}, + "unit_of_measure": {"key": "unitOfMeasure", "type": "str"}, + "meter_name": {"key": "meterName", "type": "str"}, + "meter_type": {"key": "meterType", "type": "str"}, + "meter_category": {"key": "meterCategory", "type": "str"}, + "meter_sub_category": {"key": "meterSubCategory", "type": "str"}, + "meter_region": {"key": "meterRegion", "type": "str"}, + "tier_minimum_units": {"key": "tierMinimumUnits", "type": "str"}, + "effective_start_date": {"key": "effectiveStartDate", "type": "iso-8601"}, + "effective_end_date": {"key": "effectiveEndDate", "type": "iso-8601"}, + "unit_price": {"key": "unitPrice", "type": "str"}, + "base_price": {"key": "basePrice", "type": "str"}, + "market_price": {"key": "marketPrice", "type": "str"}, + "currency": {"key": "currency", "type": "str"}, + "billing_currency": {"key": "billingCurrency", "type": "str"}, + "term": {"key": "term", "type": "str"}, + "price_type": {"key": "priceType", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: # pylint: disable=too-many-locals + """ """ + super().__init__(**kwargs) + self.billing_account_id = None + self.billing_account_name = None + self.billing_profile_id = None + self.billing_profile_name = None + self.product_order_name = None + self.service_family = None + self.product = None + self.product_id = None + self.sku_id = None + self.unit_of_measure = None + self.meter_name = None + self.meter_type = None + self.meter_category = None + self.meter_sub_category = None + self.meter_region = None + self.tier_minimum_units = None + self.effective_start_date = None + self.effective_end_date = None + self.unit_price = None + self.base_price = None + self.market_price = None + self.currency = None + self.billing_currency = None + self.term = None + self.price_type = None + + +class Notification(_serialization.Model): + """The notification associated with a budget. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + All required parameters must be populated in order to send to server. + + :ivar enabled: The notification is enabled or not. + + Supported for CategoryType(s): Cost, ReservationUtilization. Required. + :vartype enabled: bool + :ivar operator: The comparison operator. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported operators for **CategoryType: Cost** + + + * GreaterThan + * + GreaterThanOrEqualTo + + Supported operators for **CategoryType: ReservationUtilization** + + * LessThan. Required. Known values are: "EqualTo", "GreaterThan", "GreaterThanOrEqualTo", and + "LessThan". + :vartype operator: str or ~azure.mgmt.costmanagement.models.BudgetNotificationOperatorType + :ivar threshold: Threshold value associated with a notification. It is always percent with a + maximum of 2 decimal places. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + **CategoryType: Cost** - Must be between 0 and 1000. Notification is sent when the cost + exceeded the threshold. + + **CategoryType: ReservationUtilization** - Must be between 0 and 100. Notification is sent + when a reservation has a utilization percentage below the threshold. Required. + :vartype threshold: float + :ivar frequency: Frequency of a notification. Represents how long the notification will be + silent after triggering an alert for a threshold breach. If not specified, the frequency will + be set by default based on the timeGrain (Weekly when timeGrain: Last7Days, Monthly when + timeGrain: Last30Days). + + Supported for CategoryType(s): ReservationUtilization. Known values are: "Daily", "Weekly", + and "Monthly". + :vartype frequency: str or ~azure.mgmt.costmanagement.models.Frequency + :ivar contact_emails: Email addresses to send the notification to when the threshold is + breached. Must have at least one contact email or contact group specified at the Subscription + or Resource Group scopes. All other scopes must have at least one contact email specified. + + Supported for CategoryType(s): Cost, ReservationUtilization. Required. + :vartype contact_emails: list[str] + :ivar contact_roles: Subscription or Resource Group scopes only. Contact roles to send the + notification to when the threshold is breached. + + Supported for CategoryType(s): Cost. + :vartype contact_roles: list[str] + :ivar contact_groups: Subscription or Resource Group scopes only. Action groups to send the + notification to when the threshold is exceeded. Must be provided as a fully qualified Azure + resource id. + + Supported for CategoryType(s): Cost. + :vartype contact_groups: list[str] + :ivar threshold_type: The type of threshold. + + Supported for CategoryType(s): Cost. Known values are: "Actual" and "Forecasted". + :vartype threshold_type: str or ~azure.mgmt.costmanagement.models.ThresholdType + :ivar locale: Language in which the recipient will receive the notification, + + Supported for CategoryType(s): Cost, ReservationUtilization. Known values are: "en-us", + "ja-jp", "zh-cn", "de-de", "es-es", "fr-fr", "it-it", "ko-kr", "pt-br", "ru-ru", "zh-tw", + "cs-cz", "pl-pl", "tr-tr", "da-dk", "en-gb", "hu-hu", "nb-no", "nl-nl", "pt-pt", and "sv-se". + :vartype locale: str or ~azure.mgmt.costmanagement.models.CultureCode + """ + + _validation = { + "enabled": {"required": True}, + "operator": {"required": True}, + "threshold": {"required": True}, + "contact_emails": {"required": True, "max_items": 50, "min_items": 0}, + "contact_groups": {"max_items": 50, "min_items": 0}, + } + + _attribute_map = { + "enabled": {"key": "enabled", "type": "bool"}, + "operator": {"key": "operator", "type": "str"}, + "threshold": {"key": "threshold", "type": "float"}, + "frequency": {"key": "frequency", "type": "str"}, + "contact_emails": {"key": "contactEmails", "type": "[str]"}, + "contact_roles": {"key": "contactRoles", "type": "[str]"}, + "contact_groups": {"key": "contactGroups", "type": "[str]"}, + "threshold_type": {"key": "thresholdType", "type": "str"}, + "locale": {"key": "locale", "type": "str"}, + } + + def __init__( + self, + *, + enabled: bool, + operator: Union[str, "_models.BudgetNotificationOperatorType"], + threshold: float, + contact_emails: List[str], + frequency: Optional[Union[str, "_models.Frequency"]] = None, + contact_roles: Optional[List[str]] = None, + contact_groups: Optional[List[str]] = None, + threshold_type: Union[str, "_models.ThresholdType"] = "Actual", + locale: Optional[Union[str, "_models.CultureCode"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword enabled: The notification is enabled or not. + + Supported for CategoryType(s): Cost, ReservationUtilization. Required. + :paramtype enabled: bool + :keyword operator: The comparison operator. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + Supported operators for **CategoryType: Cost** + + + * GreaterThan + * + GreaterThanOrEqualTo + + Supported operators for **CategoryType: ReservationUtilization** + + * LessThan. Required. Known values are: "EqualTo", "GreaterThan", "GreaterThanOrEqualTo", and + "LessThan". + :paramtype operator: str or ~azure.mgmt.costmanagement.models.BudgetNotificationOperatorType + :keyword threshold: Threshold value associated with a notification. It is always percent with a + maximum of 2 decimal places. + + Supported for CategoryType(s): Cost, ReservationUtilization. + + **CategoryType: Cost** - Must be between 0 and 1000. Notification is sent when the cost + exceeded the threshold. + + **CategoryType: ReservationUtilization** - Must be between 0 and 100. Notification is sent + when a reservation has a utilization percentage below the threshold. Required. + :paramtype threshold: float + :keyword frequency: Frequency of a notification. Represents how long the notification will be + silent after triggering an alert for a threshold breach. If not specified, the frequency will + be set by default based on the timeGrain (Weekly when timeGrain: Last7Days, Monthly when + timeGrain: Last30Days). + + Supported for CategoryType(s): ReservationUtilization. Known values are: "Daily", "Weekly", + and "Monthly". + :paramtype frequency: str or ~azure.mgmt.costmanagement.models.Frequency + :keyword contact_emails: Email addresses to send the notification to when the threshold is + breached. Must have at least one contact email or contact group specified at the Subscription + or Resource Group scopes. All other scopes must have at least one contact email specified. + + Supported for CategoryType(s): Cost, ReservationUtilization. Required. + :paramtype contact_emails: list[str] + :keyword contact_roles: Subscription or Resource Group scopes only. Contact roles to send the + notification to when the threshold is breached. + + Supported for CategoryType(s): Cost. + :paramtype contact_roles: list[str] + :keyword contact_groups: Subscription or Resource Group scopes only. Action groups to send the + notification to when the threshold is exceeded. Must be provided as a fully qualified Azure + resource id. + + Supported for CategoryType(s): Cost. + :paramtype contact_groups: list[str] + :keyword threshold_type: The type of threshold. + + Supported for CategoryType(s): Cost. Known values are: "Actual" and "Forecasted". + :paramtype threshold_type: str or ~azure.mgmt.costmanagement.models.ThresholdType + :keyword locale: Language in which the recipient will receive the notification, + + Supported for CategoryType(s): Cost, ReservationUtilization. Known values are: "en-us", + "ja-jp", "zh-cn", "de-de", "es-es", "fr-fr", "it-it", "ko-kr", "pt-br", "ru-ru", "zh-tw", + "cs-cz", "pl-pl", "tr-tr", "da-dk", "en-gb", "hu-hu", "nb-no", "nl-nl", "pt-pt", and "sv-se". + :paramtype locale: str or ~azure.mgmt.costmanagement.models.CultureCode + """ + super().__init__(**kwargs) + self.enabled = enabled + self.operator = operator + self.threshold = threshold + self.frequency = frequency + self.contact_emails = contact_emails + self.contact_roles = contact_roles + self.contact_groups = contact_groups + self.threshold_type = threshold_type + self.locale = locale + + class NotificationProperties(_serialization.Model): """The properties of the scheduled action notification. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar to: Array of email addresses. Required. :vartype to: list[str] @@ -3642,7 +5401,7 @@ class OperationStatus(_serialization.Model): """The status of the long running operation. :ivar status: The status of the long running operation. Known values are: "Running", - "Completed", and "Failed". + "Complete", "Failed", and "Completed". :vartype status: str or ~azure.mgmt.costmanagement.models.OperationStatusType :ivar report_url: The CSV file from the reportUrl blob link consists of reservation usage data with the following schema at daily granularity. Known values are: "InstanceFlexibilityGroup", @@ -3655,35 +5414,84 @@ class OperationStatus(_serialization.Model): _attribute_map = { "status": {"key": "status", "type": "str"}, - "report_url": {"key": "properties.reportUrl", "type": "str"}, - "valid_until": {"key": "properties.validUntil", "type": "iso-8601"}, + "report_url": {"key": "properties.reportUrl", "type": "str"}, + "valid_until": {"key": "properties.validUntil", "type": "iso-8601"}, + } + + def __init__( + self, + *, + status: Optional[Union[str, "_models.OperationStatusType"]] = None, + report_url: Optional[Union[str, "_models.ReservationReportSchema"]] = None, + valid_until: Optional[datetime.datetime] = None, + **kwargs: Any + ) -> None: + """ + :keyword status: The status of the long running operation. Known values are: "Running", + "Complete", "Failed", and "Completed". + :paramtype status: str or ~azure.mgmt.costmanagement.models.OperationStatusType + :keyword report_url: The CSV file from the reportUrl blob link consists of reservation usage + data with the following schema at daily granularity. Known values are: + "InstanceFlexibilityGroup", "InstanceFlexibilityRatio", "InstanceId", "Kind", "ReservationId", + "ReservationOrderId", "ReservedHours", "SkuName", "TotalReservedQuantity", "UsageDate", and + "UsedHours". + :paramtype report_url: str or ~azure.mgmt.costmanagement.models.ReservationReportSchema + :keyword valid_until: The time at which report URL becomes invalid. + :paramtype valid_until: ~datetime.datetime + """ + super().__init__(**kwargs) + self.status = status + self.report_url = report_url + self.valid_until = valid_until + + +class OperationStatusAutoGenerated(_serialization.Model): + """The status of the long running operation. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar status: The status of the long running operation. Known values are: "Running", + "Complete", "Failed", and "Completed". + :vartype status: str or ~azure.mgmt.costmanagement.models.OperationStatusType + :ivar download_url: The link (url) to download the pricesheet. + :vartype download_url: str + :ivar valid_till: Download link validity. + :vartype valid_till: ~datetime.datetime + :ivar download_file_properties: The properties in downloaded file. + :vartype download_file_properties: ~azure.mgmt.costmanagement.models.EAPriceSheetProperties + """ + + _validation = { + "download_url": {"readonly": True}, + "valid_till": {"readonly": True}, + } + + _attribute_map = { + "status": {"key": "status", "type": "str"}, + "download_url": {"key": "properties.downloadUrl", "type": "str"}, + "valid_till": {"key": "properties.validTill", "type": "iso-8601"}, + "download_file_properties": {"key": "properties.downloadFileProperties", "type": "EAPriceSheetProperties"}, } def __init__( self, *, status: Optional[Union[str, "_models.OperationStatusType"]] = None, - report_url: Optional[Union[str, "_models.ReservationReportSchema"]] = None, - valid_until: Optional[datetime.datetime] = None, + download_file_properties: Optional["_models.EAPriceSheetProperties"] = None, **kwargs: Any ) -> None: """ :keyword status: The status of the long running operation. Known values are: "Running", - "Completed", and "Failed". + "Complete", "Failed", and "Completed". :paramtype status: str or ~azure.mgmt.costmanagement.models.OperationStatusType - :keyword report_url: The CSV file from the reportUrl blob link consists of reservation usage - data with the following schema at daily granularity. Known values are: - "InstanceFlexibilityGroup", "InstanceFlexibilityRatio", "InstanceId", "Kind", "ReservationId", - "ReservationOrderId", "ReservedHours", "SkuName", "TotalReservedQuantity", "UsageDate", and - "UsedHours". - :paramtype report_url: str or ~azure.mgmt.costmanagement.models.ReservationReportSchema - :keyword valid_until: The time at which report URL becomes invalid. - :paramtype valid_until: ~datetime.datetime + :keyword download_file_properties: The properties in downloaded file. + :paramtype download_file_properties: ~azure.mgmt.costmanagement.models.EAPriceSheetProperties """ super().__init__(**kwargs) self.status = status - self.report_url = report_url - self.valid_until = valid_until + self.download_url = None + self.valid_till = None + self.download_file_properties = download_file_properties class PivotProperties(_serialization.Model): @@ -3714,6 +5522,49 @@ def __init__( self.name = name +class PricesheetDownloadProperties(_serialization.Model): + """The URL to download the generated report. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar expiry_time: The time at which report URL becomes invalid/expires in UTC e.g. + 2020-12-08T05:55:59.4394737Z. + :vartype expiry_time: ~datetime.datetime + :ivar download_url: The URL to download the generated report. + :vartype download_url: str + :ivar download_file_properties: The properties in downloaded file. + :vartype download_file_properties: ~azure.mgmt.costmanagement.models.MCAPriceSheetProperties + """ + + _validation = { + "expiry_time": {"readonly": True}, + } + + _attribute_map = { + "expiry_time": {"key": "expiryTime", "type": "iso-8601"}, + "download_url": {"key": "downloadUrl", "type": "str"}, + "download_file_properties": {"key": "downloadFileProperties", "type": "MCAPriceSheetProperties"}, + } + + def __init__( + self, + *, + download_url: Optional[str] = None, + download_file_properties: Optional["_models.MCAPriceSheetProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword download_url: The URL to download the generated report. + :paramtype download_url: str + :keyword download_file_properties: The properties in downloaded file. + :paramtype download_file_properties: ~azure.mgmt.costmanagement.models.MCAPriceSheetProperties + """ + super().__init__(**kwargs) + self.expiry_time = None + self.download_url = download_url + self.download_file_properties = download_file_properties + + class ProxyResource(Resource): """The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location. @@ -3721,7 +5572,7 @@ class ProxyResource(Resource): Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long :vartype id: str :ivar name: The name of the resource. :vartype name: str @@ -3730,27 +5581,11 @@ class ProxyResource(Resource): :vartype type: str """ - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - } - - def __init__(self, **kwargs: Any) -> None: - """ """ - super().__init__(**kwargs) - class QueryAggregation(_serialization.Model): """The aggregation expression to be used in the query. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar name: The name of the column to aggregate. Required. :vartype name: str @@ -3809,7 +5644,7 @@ def __init__(self, *, name: Optional[str] = None, type: Optional[str] = None, ** class QueryComparisonExpression(_serialization.Model): """The comparison expression to be used in the query. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar name: The name of the column to use in comparison. Required. :vartype name: str @@ -3941,7 +5776,7 @@ def __init__(self, *, columns: Optional[List[str]] = None, **kwargs: Any) -> Non class QueryDefinition(_serialization.Model): """The definition of a query. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar type: The type of the query. Required. Known values are: "Usage", "ActualCost", and "AmortizedCost". @@ -4052,7 +5887,7 @@ def __init__( class QueryGrouping(_serialization.Model): """The group by expression to be used in the query. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar type: Has type of the column to group. Required. Known values are: "TagKey" and "Dimension". @@ -4159,7 +5994,7 @@ def __init__( class QueryTimePeriod(_serialization.Model): """The start and end date for pulling data for the query. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar from_property: The start date to pull data from. Required. :vartype from_property: ~datetime.datetime @@ -4226,7 +6061,7 @@ def __init__(self, *, usage_grain: Optional[Union[str, "_models.Grain"]] = None, class ReportConfigAggregation(_serialization.Model): """The aggregation expression to be used in the report. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar name: The name of the column to aggregate. Required. :vartype name: str @@ -4259,7 +6094,7 @@ def __init__(self, *, name: str, function: Union[str, "_models.FunctionType"], * class ReportConfigComparisonExpression(_serialization.Model): """The comparison expression to be used in the report. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar name: The name of the column to use in comparison. Required. :vartype name: str @@ -4450,7 +6285,7 @@ def __init__( class ReportConfigGrouping(_serialization.Model): """The group by expression to be used in the report. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar type: Has type of the column to group. Required. Known values are: "TagKey" and "Dimension". @@ -4487,7 +6322,7 @@ def __init__(self, *, type: Union[str, "_models.QueryColumnType"], name: str, ** class ReportConfigSorting(_serialization.Model): """The order by expression to be used in the report. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar direction: Direction of sort. Known values are: "Ascending" and "Descending". :vartype direction: str or ~azure.mgmt.costmanagement.models.ReportConfigSortingType @@ -4521,7 +6356,7 @@ def __init__( class ReportConfigTimePeriod(_serialization.Model): """The start and end date for pulling data for the report. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar from_property: The start date to pull data from. Required. :vartype from_property: ~datetime.datetime @@ -4556,10 +6391,10 @@ class SavingsPlanUtilizationSummary(BenefitUtilizationSummary): # pylint: disab Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long :vartype id: str :ivar name: The name of the resource. :vartype name: str @@ -4583,14 +6418,14 @@ class SavingsPlanUtilizationSummary(BenefitUtilizationSummary): # pylint: disab :vartype usage_date: ~datetime.datetime :ivar avg_utilization_percentage: This is the average hourly utilization for each date range that corresponds to given grain (Daily, Monthly). Suppose the API call is for usageDate > - 2022-10-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per + 2024-08-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per benefit id for each day. For a single day, the avgUtilizationPercentage value will be equal to the average of the set of values where the set contains 24 utilization percentage entries one for each hour in a specific day. :vartype avg_utilization_percentage: float :ivar min_utilization_percentage: This is the minimum hourly utilization for each date range that corresponds to given grain (Daily, Monthly). Suppose the API call is for usageDate > - 2022-10-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per + 2024-08-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per benefit id for each day. For a single day, the minUtilizationPercentage value will be equal to the smallest in the set of values where the set contains 24 utilization percentage entries one for each hour in a specific day. If on the day 2022-10-18, the lowest utilization percentage @@ -4598,7 +6433,7 @@ class SavingsPlanUtilizationSummary(BenefitUtilizationSummary): # pylint: disab :vartype min_utilization_percentage: float :ivar max_utilization_percentage: This is the maximum hourly utilization for each date range that corresponds to given grain (Daily, Monthly). Suppose the API call is for usageDate > - 2022-10-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per + 2024-08-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per benefit id for each day. For a single day, the maxUtilizationPercentage value will be equal to the largest in the set of values where the set contains 24 utilization percentage entries one for each hour in a specific day. If on the day 2022-10-18, the largest utilization percentage @@ -4672,14 +6507,14 @@ class SavingsPlanUtilizationSummaryProperties(BenefitUtilizationSummaryPropertie :vartype usage_date: ~datetime.datetime :ivar avg_utilization_percentage: This is the average hourly utilization for each date range that corresponds to given grain (Daily, Monthly). Suppose the API call is for usageDate > - 2022-10-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per + 2024-08-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per benefit id for each day. For a single day, the avgUtilizationPercentage value will be equal to the average of the set of values where the set contains 24 utilization percentage entries one for each hour in a specific day. :vartype avg_utilization_percentage: float :ivar min_utilization_percentage: This is the minimum hourly utilization for each date range that corresponds to given grain (Daily, Monthly). Suppose the API call is for usageDate > - 2022-10-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per + 2024-08-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per benefit id for each day. For a single day, the minUtilizationPercentage value will be equal to the smallest in the set of values where the set contains 24 utilization percentage entries one for each hour in a specific day. If on the day 2022-10-18, the lowest utilization percentage @@ -4687,7 +6522,7 @@ class SavingsPlanUtilizationSummaryProperties(BenefitUtilizationSummaryPropertie :vartype min_utilization_percentage: float :ivar max_utilization_percentage: This is the maximum hourly utilization for each date range that corresponds to given grain (Daily, Monthly). Suppose the API call is for usageDate > - 2022-10-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per + 2024-08-01 and usageDate < 2022-10-31 at a daily granularity. There will be one record per benefit id for each day. For a single day, the maxUtilizationPercentage value will be equal to the largest in the set of values where the set contains 24 utilization percentage entries one for each hour in a specific day. If on the day 2022-10-18, the largest utilization percentage @@ -4734,7 +6569,7 @@ class ScheduledActionProxyResource(ProxyResource): Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long :vartype id: str :ivar name: The name of the resource. :vartype name: str @@ -4786,7 +6621,7 @@ class ScheduledAction(ScheduledActionProxyResource): # pylint: disable=too-many Variables are only populated by the server, and will be ignored when sending a request. :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long :vartype id: str :ivar name: The name of the resource. :vartype name: str @@ -4813,10 +6648,11 @@ class ScheduledAction(ScheduledActionProxyResource): # pylint: disable=too-many :vartype notification_email: str :ivar schedule: Schedule of the scheduled action. :vartype schedule: ~azure.mgmt.costmanagement.models.ScheduleProperties - :ivar scope: Cost Management scope like 'subscriptions/{subscriptionId}' for subscription - scope, 'subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup - scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account - scope, + :ivar scope: For private scheduled action(Create or Update), scope will be empty.:code:`
` + For shared scheduled action(Create or Update By Scope), Cost Management scope can be + 'subscriptions/{subscriptionId}' for subscription scope, + 'subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' @@ -4891,10 +6727,11 @@ def __init__( :paramtype notification_email: str :keyword schedule: Schedule of the scheduled action. :paramtype schedule: ~azure.mgmt.costmanagement.models.ScheduleProperties - :keyword scope: Cost Management scope like 'subscriptions/{subscriptionId}' for subscription - scope, 'subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup - scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account - scope, + :keyword scope: For private scheduled action(Create or Update), scope will be empty.:code:`
` For shared scheduled action(Create or Update By Scope), Cost Management scope can be + 'subscriptions/{subscriptionId}' for subscription scope, + 'subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department scope, 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' @@ -4957,7 +6794,7 @@ def __init__(self, **kwargs: Any) -> None: class ScheduleProperties(_serialization.Model): """The properties of the schedule. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar frequency: Frequency of the schedule. Required. Known values are: "Daily", "Weekly", and "Monthly". @@ -5039,14 +6876,81 @@ def __init__( self.end_date = end_date +class Setting(ProxyResource): + """Setting definition. + + You probably want to use the sub-classes and not this class directly. Known sub-classes are: + TagInheritanceSetting + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to server. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar kind: Specifies the kind of settings. Required. "taginheritance" + :vartype kind: str or ~azure.mgmt.costmanagement.models.SettingsKind + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "kind": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "kind": {"key": "kind", "type": "str"}, + } + + _subtype_map = {"kind": {"taginheritance": "TagInheritanceSetting"}} + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.kind: Optional[str] = None + + +class SettingsListResult(_serialization.Model): + """Setting list result. It contains a list of settings. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: The list of settings. + :vartype value: list[~azure.mgmt.costmanagement.models.Setting] + """ + + _validation = { + "value": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[Setting]"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value = None + + class SharedScopeBenefitRecommendationProperties( BenefitRecommendationProperties -): # pylint: disable=too-many-instance-attributes +): # pylint: disable=too-many-instance-attributes,name-too-long """The properties of the benefit recommendation when scope is 'Shared'. Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar first_consumption_date: The first usage date used for looking back for computing the recommendations. @@ -5152,12 +7056,12 @@ def __init__( class SingleScopeBenefitRecommendationProperties( BenefitRecommendationProperties -): # pylint: disable=too-many-instance-attributes +): # pylint: disable=too-many-instance-attributes,name-too-long """The properties of the benefit recommendations when scope is 'Single'. Variables are only populated by the server, and will be ignored when sending a request. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar first_consumption_date: The first usage date used for looking back for computing the recommendations. @@ -5273,6 +7177,57 @@ def __init__( self.resource_group = None +class SourceCostAllocationResource(CostAllocationResource): + """Source resources for cost allocation. + + All required parameters must be populated in order to send to server. + + :ivar resource_type: Type of resources contained in this cost allocation rule. Required. Known + values are: "Dimension" and "Tag". + :vartype resource_type: str or ~azure.mgmt.costmanagement.models.CostAllocationResourceType + :ivar name: If resource type is dimension, this must be either ResourceGroupName or + SubscriptionId. If resource type is tag, this must be a valid Azure tag. Required. + :vartype name: str + :ivar values: Source Resources for cost allocation. This list cannot contain more than 25 + values. Required. + :vartype values: list[str] + """ + + _validation = { + "resource_type": {"required": True}, + "name": {"required": True}, + "values": {"required": True}, + } + + _attribute_map = { + "resource_type": {"key": "resourceType", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "values": {"key": "values", "type": "[str]"}, + } + + def __init__( + self, + *, + resource_type: Union[str, "_models.CostAllocationResourceType"], + name: str, + values: List[str], + **kwargs: Any + ) -> None: + """ + :keyword resource_type: Type of resources contained in this cost allocation rule. Required. + Known values are: "Dimension" and "Tag". + :paramtype resource_type: str or ~azure.mgmt.costmanagement.models.CostAllocationResourceType + :keyword name: If resource type is dimension, this must be either ResourceGroupName or + SubscriptionId. If resource type is tag, this must be a valid Azure tag. Required. + :paramtype name: str + :keyword values: Source Resources for cost allocation. This list cannot contain more than 25 + values. Required. + :paramtype values: list[str] + """ + super().__init__(resource_type=resource_type, name=name, **kwargs) + self.values = values + + class Status(_serialization.Model): """The status of the long running operation. @@ -5297,6 +7252,48 @@ def __init__( self.status = status +class SystemAssignedServiceIdentity(_serialization.Model): + """Managed service identity (either system assigned, or none). + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to server. + + :ivar principal_id: The service principal ID of the system assigned identity. This property + will only be provided for a system assigned identity. + :vartype principal_id: str + :ivar tenant_id: The tenant ID of the system assigned identity. This property will only be + provided for a system assigned identity. + :vartype tenant_id: str + :ivar type: Type of managed service identity (either system assigned, or none). Required. Known + values are: "None" and "SystemAssigned". + :vartype type: str or ~azure.mgmt.costmanagement.models.SystemAssignedServiceIdentityType + """ + + _validation = { + "principal_id": {"readonly": True}, + "tenant_id": {"readonly": True}, + "type": {"required": True}, + } + + _attribute_map = { + "principal_id": {"key": "principalId", "type": "str"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + "type": {"key": "type", "type": "str"}, + } + + def __init__(self, *, type: Union[str, "_models.SystemAssignedServiceIdentityType"], **kwargs: Any) -> None: + """ + :keyword type: Type of managed service identity (either system assigned, or none). Required. + Known values are: "None" and "SystemAssigned". + :paramtype type: str or ~azure.mgmt.costmanagement.models.SystemAssignedServiceIdentityType + """ + super().__init__(**kwargs) + self.principal_id = None + self.tenant_id = None + self.type = type + + class SystemData(_serialization.Model): """Metadata pertaining to creation and last modification of the resource. @@ -5361,6 +7358,149 @@ def __init__( self.last_modified_at = last_modified_at +class TagInheritanceProperties(_serialization.Model): + """The properties of the tag inheritance setting. + + All required parameters must be populated in order to send to server. + + :ivar prefer_container_tags: This property defines the behavior when an inherited tag being + applied matches a lower scope tag (Eg. Subscription tag matches the resource tag). If set to + true - when tags match, the highest scope tags will be applied. Billing profile is the highest + scope, followed by invoice sections, subscriptions and resource groups (allows overriding of + lower scope tag values). If set to false - when tags match, the lowest scope tags will be + applied. So, if a resource has the same tag as a subscription tag, the resource tag will be + applied (does not allow overriding of lower scope tag values). Required. + :vartype prefer_container_tags: bool + """ + + _validation = { + "prefer_container_tags": {"required": True}, + } + + _attribute_map = { + "prefer_container_tags": {"key": "preferContainerTags", "type": "bool"}, + } + + def __init__(self, *, prefer_container_tags: bool, **kwargs: Any) -> None: + """ + :keyword prefer_container_tags: This property defines the behavior when an inherited tag being + applied matches a lower scope tag (Eg. Subscription tag matches the resource tag). If set to + true - when tags match, the highest scope tags will be applied. Billing profile is the highest + scope, followed by invoice sections, subscriptions and resource groups (allows overriding of + lower scope tag values). If set to false - when tags match, the lowest scope tags will be + applied. So, if a resource has the same tag as a subscription tag, the resource tag will be + applied (does not allow overriding of lower scope tag values). Required. + :paramtype prefer_container_tags: bool + """ + super().__init__(**kwargs) + self.prefer_container_tags = prefer_container_tags + + +class TagInheritanceSetting(Setting): + """Tag Inheritance Setting definition. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to server. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. # pylint: disable=line-too-long + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar kind: Specifies the kind of settings. Required. "taginheritance" + :vartype kind: str or ~azure.mgmt.costmanagement.models.SettingsKind + :ivar properties: The properties of the tag inheritance setting. + :vartype properties: ~azure.mgmt.costmanagement.models.TagInheritanceProperties + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "kind": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "kind": {"key": "kind", "type": "str"}, + "properties": {"key": "properties", "type": "TagInheritanceProperties"}, + } + + def __init__(self, *, properties: Optional["_models.TagInheritanceProperties"] = None, **kwargs: Any) -> None: + """ + :keyword properties: The properties of the tag inheritance setting. + :paramtype properties: ~azure.mgmt.costmanagement.models.TagInheritanceProperties + """ + super().__init__(**kwargs) + self.kind: str = "taginheritance" + self.properties = properties + + +class TargetCostAllocationResource(CostAllocationResource): + """Target resources for cost allocation. + + All required parameters must be populated in order to send to server. + + :ivar resource_type: Type of resources contained in this cost allocation rule. Required. Known + values are: "Dimension" and "Tag". + :vartype resource_type: str or ~azure.mgmt.costmanagement.models.CostAllocationResourceType + :ivar name: If resource type is dimension, this must be either ResourceGroupName or + SubscriptionId. If resource type is tag, this must be a valid Azure tag. Required. + :vartype name: str + :ivar values: Target resources for cost allocation. This list cannot contain more than 25 + values. Required. + :vartype values: list[~azure.mgmt.costmanagement.models.CostAllocationProportion] + :ivar policy_type: Method of cost allocation for the rule. Required. "FixedProportion" + :vartype policy_type: str or ~azure.mgmt.costmanagement.models.CostAllocationPolicyType + """ + + _validation = { + "resource_type": {"required": True}, + "name": {"required": True}, + "values": {"required": True}, + "policy_type": {"required": True}, + } + + _attribute_map = { + "resource_type": {"key": "resourceType", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "values": {"key": "values", "type": "[CostAllocationProportion]"}, + "policy_type": {"key": "policyType", "type": "str"}, + } + + def __init__( + self, + *, + resource_type: Union[str, "_models.CostAllocationResourceType"], + name: str, + values: List["_models.CostAllocationProportion"], + policy_type: Union[str, "_models.CostAllocationPolicyType"], + **kwargs: Any + ) -> None: + """ + :keyword resource_type: Type of resources contained in this cost allocation rule. Required. + Known values are: "Dimension" and "Tag". + :paramtype resource_type: str or ~azure.mgmt.costmanagement.models.CostAllocationResourceType + :keyword name: If resource type is dimension, this must be either ResourceGroupName or + SubscriptionId. If resource type is tag, this must be a valid Azure tag. Required. + :paramtype name: str + :keyword values: Target resources for cost allocation. This list cannot contain more than 25 + values. Required. + :paramtype values: list[~azure.mgmt.costmanagement.models.CostAllocationProportion] + :keyword policy_type: Method of cost allocation for the rule. Required. "FixedProportion" + :paramtype policy_type: str or ~azure.mgmt.costmanagement.models.CostAllocationPolicyType + """ + super().__init__(resource_type=resource_type, name=name, **kwargs) + self.values = values + self.policy_type = policy_type + + class View(CostManagementProxyResource): # pylint: disable=too-many-instance-attributes """States and configurations of Cost Analysis. @@ -5436,7 +7576,6 @@ class View(CostManagementProxyResource): # pylint: disable=too-many-instance-at "name": {"readonly": True}, "type": {"readonly": True}, "created_on": {"readonly": True}, - "modified_on": {"readonly": True}, "currency": {"readonly": True}, } @@ -5469,6 +7608,7 @@ def __init__( e_tag: Optional[str] = None, display_name: Optional[str] = None, scope: Optional[str] = None, + modified_on: Optional[datetime.datetime] = None, date_range: Optional[str] = None, chart: Optional[Union[str, "_models.ChartType"]] = None, accumulated: Optional[Union[str, "_models.AccumulatedType"]] = None, @@ -5506,6 +7646,8 @@ def __init__( '/providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}' for ExternalSubscription scope. :paramtype scope: str + :keyword modified_on: Date when the user last modified this view. + :paramtype modified_on: ~datetime.datetime :keyword date_range: Date range of the current view. :paramtype date_range: str :keyword chart: Chart type of the main view in Cost Analysis. Required. Known values are: @@ -5539,7 +7681,7 @@ def __init__( self.display_name = display_name self.scope = scope self.created_on = None - self.modified_on = None + self.modified_on = modified_on self.date_range = date_range self.currency = None self.chart = chart diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/__init__.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/__init__.py index ba3f6355c103..643bcbdd80f7 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/__init__.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/__init__.py @@ -7,12 +7,13 @@ # -------------------------------------------------------------------------- from ._operations import Operations -from ._views_operations import ViewsOperations -from ._alerts_operations import AlertsOperations -from ._forecast_operations import ForecastOperations -from ._dimensions_operations import DimensionsOperations -from ._query_operations import QueryOperations -from ._generate_reservation_details_report_operations import GenerateReservationDetailsReportOperations +from ._cost_allocation_rules_operations import CostAllocationRulesOperations +from ._benefit_recommendations_operations import BenefitRecommendationsOperations +from ._benefit_utilization_summaries_operations import BenefitUtilizationSummariesOperations +from ._generate_benefit_utilization_summaries_report_operations import ( + GenerateBenefitUtilizationSummariesReportOperations, +) +from ._budgets_operations import BudgetsOperations from ._exports_operations import ExportsOperations from ._generate_cost_details_report_operations import GenerateCostDetailsReportOperations from ._generate_detailed_cost_report_operations import GenerateDetailedCostReportOperations @@ -22,10 +23,15 @@ from ._generate_detailed_cost_report_operation_status_operations import ( GenerateDetailedCostReportOperationStatusOperations, ) +from ._views_operations import ViewsOperations +from ._alerts_operations import AlertsOperations +from ._forecast_operations import ForecastOperations +from ._dimensions_operations import DimensionsOperations +from ._query_operations import QueryOperations +from ._generate_reservation_details_report_operations import GenerateReservationDetailsReportOperations from ._price_sheet_operations import PriceSheetOperations from ._scheduled_actions_operations import ScheduledActionsOperations -from ._benefit_recommendations_operations import BenefitRecommendationsOperations -from ._benefit_utilization_summaries_operations import BenefitUtilizationSummariesOperations +from ._settings_operations import SettingsOperations from ._patch import __all__ as _patch_all from ._patch import * # pylint: disable=unused-wildcard-import @@ -33,21 +39,25 @@ __all__ = [ "Operations", + "CostAllocationRulesOperations", + "BenefitRecommendationsOperations", + "BenefitUtilizationSummariesOperations", + "GenerateBenefitUtilizationSummariesReportOperations", + "BudgetsOperations", + "ExportsOperations", + "GenerateCostDetailsReportOperations", + "GenerateDetailedCostReportOperations", + "GenerateDetailedCostReportOperationResultsOperations", + "GenerateDetailedCostReportOperationStatusOperations", "ViewsOperations", "AlertsOperations", "ForecastOperations", "DimensionsOperations", "QueryOperations", "GenerateReservationDetailsReportOperations", - "ExportsOperations", - "GenerateCostDetailsReportOperations", - "GenerateDetailedCostReportOperations", - "GenerateDetailedCostReportOperationResultsOperations", - "GenerateDetailedCostReportOperationStatusOperations", "PriceSheetOperations", "ScheduledActionsOperations", - "BenefitRecommendationsOperations", - "BenefitUtilizationSummariesOperations", + "SettingsOperations", ] __all__.extend([p for p in _patch_all if p not in __all__]) _patch_sdk() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_alerts_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_alerts_operations.py index 266574888da0..8cb98fe11ccb 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_alerts_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_alerts_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -18,16 +19,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -39,7 +42,7 @@ def build_list_request(scope: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -48,7 +51,7 @@ def build_list_request(scope: str, **kwargs: Any) -> HttpRequest: "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -63,7 +66,7 @@ def build_get_request(scope: str, alert_id: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -73,7 +76,7 @@ def build_get_request(scope: str, alert_id: str, **kwargs: Any) -> HttpRequest: "alertId": _SERIALIZER.url("alert_id", alert_id, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -88,7 +91,7 @@ def build_dismiss_request(scope: str, alert_id: str, **kwargs: Any) -> HttpReque _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -99,7 +102,7 @@ def build_dismiss_request(scope: str, alert_id: str, **kwargs: Any) -> HttpReque "alertId": _SERIALIZER.url("alert_id", alert_id, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -120,7 +123,7 @@ def build_list_external_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -135,7 +138,7 @@ def build_list_external_request( "externalCloudProviderId": _SERIALIZER.url("external_cloud_provider_id", external_cloud_provider_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -189,12 +192,11 @@ def list(self, scope: str, **kwargs: Any) -> _models.AlertsResult: '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' specific for partners. Required. :type scope: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: AlertsResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.AlertsResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -208,19 +210,17 @@ def list(self, scope: str, **kwargs: Any) -> _models.AlertsResult: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.AlertsResult] = kwargs.pop("cls", None) - request = build_list_request( + _request = build_list_request( scope=scope, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -230,14 +230,12 @@ def list(self, scope: str, **kwargs: Any) -> _models.AlertsResult: error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("AlertsResult", pipeline_response) + deserialized = self._deserialize("AlertsResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - list.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/alerts"} + return deserialized # type: ignore @distributed_trace def get(self, scope: str, alert_id: str, **kwargs: Any) -> _models.Alert: @@ -265,12 +263,11 @@ def get(self, scope: str, alert_id: str, **kwargs: Any) -> _models.Alert: :type scope: str :param alert_id: Alert ID. Required. :type alert_id: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Alert or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Alert :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -284,20 +281,18 @@ def get(self, scope: str, alert_id: str, **kwargs: Any) -> _models.Alert: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.Alert] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( scope=scope, alert_id=alert_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -307,14 +302,12 @@ def get(self, scope: str, alert_id: str, **kwargs: Any) -> _models.Alert: error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("Alert", pipeline_response) + deserialized = self._deserialize("Alert", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/alerts/{alertId}"} + return deserialized # type: ignore @overload def dismiss( @@ -355,7 +348,6 @@ def dismiss( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Alert or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Alert :raises ~azure.core.exceptions.HttpResponseError: @@ -363,7 +355,7 @@ def dismiss( @overload def dismiss( - self, scope: str, alert_id: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, scope: str, alert_id: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> _models.Alert: """Dismisses the specified alert. @@ -390,11 +382,10 @@ def dismiss( :param alert_id: Alert ID. Required. :type alert_id: str :param parameters: Parameters supplied to the Dismiss Alert operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Alert or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Alert :raises ~azure.core.exceptions.HttpResponseError: @@ -402,7 +393,7 @@ def dismiss( @distributed_trace def dismiss( - self, scope: str, alert_id: str, parameters: Union[_models.DismissAlertPayload, IO], **kwargs: Any + self, scope: str, alert_id: str, parameters: Union[_models.DismissAlertPayload, IO[bytes]], **kwargs: Any ) -> _models.Alert: """Dismisses the specified alert. @@ -429,17 +420,13 @@ def dismiss( :param alert_id: Alert ID. Required. :type alert_id: str :param parameters: Parameters supplied to the Dismiss Alert operation. Is either a - DismissAlertPayload type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.DismissAlertPayload or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + DismissAlertPayload type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.DismissAlertPayload or IO[bytes] :return: Alert or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Alert :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -462,23 +449,21 @@ def dismiss( else: _json = self._serialize.body(parameters, "DismissAlertPayload") - request = build_dismiss_request( + _request = build_dismiss_request( scope=scope, alert_id=alert_id, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.dismiss.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -488,14 +473,12 @@ def dismiss( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("Alert", pipeline_response) + deserialized = self._deserialize("Alert", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - dismiss.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/alerts/{alertId}"} + return deserialized # type: ignore @distributed_trace def list_external( @@ -519,12 +502,11 @@ def list_external( '{externalBillingAccountId}' for consolidated account used with dimension/query operations. Required. :type external_cloud_provider_id: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: AlertsResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.AlertsResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -538,20 +520,18 @@ def list_external( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.AlertsResult] = kwargs.pop("cls", None) - request = build_list_external_request( + _request = build_list_external_request( external_cloud_provider_type=external_cloud_provider_type, external_cloud_provider_id=external_cloud_provider_id, api_version=api_version, - template_url=self.list_external.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -561,13 +541,9 @@ def list_external( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("AlertsResult", pipeline_response) + deserialized = self._deserialize("AlertsResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - list_external.metadata = { - "url": "/providers/Microsoft.CostManagement/{externalCloudProviderType}/{externalCloudProviderId}/alerts" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_benefit_recommendations_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_benefit_recommendations_operations.py index 3503a1d3721e..019e6c3763c4 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_benefit_recommendations_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_benefit_recommendations_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar +import sys +from typing import Any, Callable, Dict, Iterable, Optional, Type, TypeVar import urllib.parse from azure.core.exceptions import ( @@ -19,16 +20,18 @@ ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -47,7 +50,7 @@ def build_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -56,7 +59,7 @@ def build_list_request( "billingScope": _SERIALIZER.url("billing_scope", billing_scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters if filter is not None: @@ -127,7 +130,6 @@ def list( :param expand: May be used to expand the properties by: properties/usage, properties/allRecommendationDetails. Default value is None. :type expand: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitRecommendationModel or the result of cls(response) :rtype: @@ -140,7 +142,7 @@ def list( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitRecommendationsListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -151,18 +153,16 @@ def list( def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( billing_scope=billing_scope, filter=filter, orderby=orderby, expand=expand, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -174,13 +174,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("BenefitRecommendationsListResult", pipeline_response) @@ -190,11 +189,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -206,5 +205,3 @@ def get_next(next_link=None): return pipeline_response return ItemPaged(get_next, extract_data) - - list.metadata = {"url": "/{billingScope}/providers/Microsoft.CostManagement/benefitRecommendations"} diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_benefit_utilization_summaries_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_benefit_utilization_summaries_operations.py index 3a8af9d96867..122d11ef3678 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_benefit_utilization_summaries_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_benefit_utilization_summaries_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union +import sys +from typing import Any, Callable, Dict, Iterable, Optional, Type, TypeVar, Union import urllib.parse from azure.core.exceptions import ( @@ -19,16 +20,18 @@ ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -46,7 +49,7 @@ def build_list_by_billing_account_id_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -58,7 +61,7 @@ def build_list_by_billing_account_id_request( "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -84,7 +87,7 @@ def build_list_by_billing_profile_id_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -97,7 +100,7 @@ def build_list_by_billing_profile_id_request( "billingProfileId": _SERIALIZER.url("billing_profile_id", billing_profile_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -122,7 +125,7 @@ def build_list_by_savings_plan_order_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -134,7 +137,7 @@ def build_list_by_savings_plan_order_request( "savingsPlanOrderId": _SERIALIZER.url("savings_plan_order_id", savings_plan_order_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -160,7 +163,7 @@ def build_list_by_savings_plan_id_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -173,7 +176,7 @@ def build_list_by_savings_plan_id_request( "savingsPlanId": _SERIALIZER.url("savings_plan_id", savings_plan_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -229,7 +232,6 @@ def list_by_billing_account_id( :param filter: Supports filtering by properties/benefitId, properties/benefitOrderId and properties/usageDate. Default value is None. :type filter: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitUtilizationSummary or the result of cls(response) :rtype: @@ -242,7 +244,7 @@ def list_by_billing_account_id( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitUtilizationSummariesListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -253,17 +255,15 @@ def list_by_billing_account_id( def prepare_request(next_link=None): if not next_link: - request = build_list_by_billing_account_id_request( + _request = build_list_by_billing_account_id_request( billing_account_id=billing_account_id, grain_parameter=grain_parameter, filter=filter, api_version=api_version, - template_url=self.list_by_billing_account_id.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -275,13 +275,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("BenefitUtilizationSummariesListResult", pipeline_response) @@ -291,11 +290,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -308,10 +307,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_by_billing_account_id.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/benefitUtilizationSummaries" - } - @distributed_trace def list_by_billing_profile_id( self, @@ -337,7 +332,6 @@ def list_by_billing_profile_id( :param filter: Supports filtering by properties/benefitId, properties/benefitOrderId and properties/usageDate. Default value is None. :type filter: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitUtilizationSummary or the result of cls(response) :rtype: @@ -350,7 +344,7 @@ def list_by_billing_profile_id( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitUtilizationSummariesListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -361,18 +355,16 @@ def list_by_billing_profile_id( def prepare_request(next_link=None): if not next_link: - request = build_list_by_billing_profile_id_request( + _request = build_list_by_billing_profile_id_request( billing_account_id=billing_account_id, billing_profile_id=billing_profile_id, grain_parameter=grain_parameter, filter=filter, api_version=api_version, - template_url=self.list_by_billing_profile_id.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -384,13 +376,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("BenefitUtilizationSummariesListResult", pipeline_response) @@ -400,11 +391,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -417,10 +408,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_by_billing_profile_id.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/providers/Microsoft.CostManagement/benefitUtilizationSummaries" - } - @distributed_trace def list_by_savings_plan_order( self, @@ -441,7 +428,6 @@ def list_by_savings_plan_order( :param grain_parameter: Grain. Known values are: "Hourly", "Daily", and "Monthly". Default value is None. :type grain_parameter: str or ~azure.mgmt.costmanagement.models.GrainParameter - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitUtilizationSummary or the result of cls(response) :rtype: @@ -454,7 +440,7 @@ def list_by_savings_plan_order( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitUtilizationSummariesListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -465,17 +451,15 @@ def list_by_savings_plan_order( def prepare_request(next_link=None): if not next_link: - request = build_list_by_savings_plan_order_request( + _request = build_list_by_savings_plan_order_request( savings_plan_order_id=savings_plan_order_id, filter=filter, grain_parameter=grain_parameter, api_version=api_version, - template_url=self.list_by_savings_plan_order.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -487,13 +471,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("BenefitUtilizationSummariesListResult", pipeline_response) @@ -503,11 +486,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -520,10 +503,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_by_savings_plan_order.metadata = { - "url": "/providers/Microsoft.BillingBenefits/savingsPlanOrders/{savingsPlanOrderId}/providers/Microsoft.CostManagement/benefitUtilizationSummaries" - } - @distributed_trace def list_by_savings_plan_id( self, @@ -547,7 +526,6 @@ def list_by_savings_plan_id( :param grain_parameter: Grain. Known values are: "Hourly", "Daily", and "Monthly". Default value is None. :type grain_parameter: str or ~azure.mgmt.costmanagement.models.GrainParameter - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either BenefitUtilizationSummary or the result of cls(response) :rtype: @@ -560,7 +538,7 @@ def list_by_savings_plan_id( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.BenefitUtilizationSummariesListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -571,18 +549,16 @@ def list_by_savings_plan_id( def prepare_request(next_link=None): if not next_link: - request = build_list_by_savings_plan_id_request( + _request = build_list_by_savings_plan_id_request( savings_plan_order_id=savings_plan_order_id, savings_plan_id=savings_plan_id, filter=filter, grain_parameter=grain_parameter, api_version=api_version, - template_url=self.list_by_savings_plan_id.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -594,13 +570,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("BenefitUtilizationSummariesListResult", pipeline_response) @@ -610,11 +585,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -626,7 +601,3 @@ def get_next(next_link=None): return pipeline_response return ItemPaged(get_next, extract_data) - - list_by_savings_plan_id.metadata = { - "url": "/providers/Microsoft.BillingBenefits/savingsPlanOrders/{savingsPlanOrderId}/savingsPlans/{savingsPlanId}/providers/Microsoft.CostManagement/benefitUtilizationSummaries" - } diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_budgets_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_budgets_operations.py new file mode 100644 index 000000000000..a2978ca2a385 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_budgets_operations.py @@ -0,0 +1,804 @@ +# pylint: disable=too-many-lines,too-many-statements +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from io import IOBase +import sys +from typing import Any, Callable, Dict, IO, Iterable, Optional, Type, TypeVar, Union, overload +import urllib.parse + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.rest import HttpRequest, HttpResponse +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models as _models +from .._serialization import Serializer + +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_list_request(scope: str, *, filter: Optional[str] = None, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/{scope}/providers/Microsoft.CostManagement/budgets") + path_format_arguments = { + "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + if filter is not None: + _params["$filter"] = _SERIALIZER.query("filter", filter, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_request(scope: str, budget_name: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/{scope}/providers/Microsoft.CostManagement/budgets/{budgetName}") + path_format_arguments = { + "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), + "budgetName": _SERIALIZER.url( + "budget_name", budget_name, "str", max_length=63, min_length=1, pattern=r"^[a-zA-Z0-9_-]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_or_update_request(scope: str, budget_name: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/{scope}/providers/Microsoft.CostManagement/budgets/{budgetName}") + path_format_arguments = { + "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), + "budgetName": _SERIALIZER.url( + "budget_name", budget_name, "str", max_length=63, min_length=1, pattern=r"^[a-zA-Z0-9_-]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_delete_request(scope: str, budget_name: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/{scope}/providers/Microsoft.CostManagement/budgets/{budgetName}") + path_format_arguments = { + "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), + "budgetName": _SERIALIZER.url( + "budget_name", budget_name, "str", max_length=63, min_length=1, pattern=r"^[a-zA-Z0-9_-]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) + + +class BudgetsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.costmanagement.CostManagementClient`'s + :attr:`budgets` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, scope: str, filter: Optional[str] = None, **kwargs: Any) -> Iterable["_models.Budget"]: + """Lists all budgets for the defined scope. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param filter: OData filter option. May be used to filter budgets by properties/category. The + filter supports 'eq' only. Default value is None. + :type filter: str + :return: An iterator like instance of either Budget or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.costmanagement.models.Budget] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.BudgetsListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + scope=scope, + filter=filter, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("BudgetsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def get(self, scope: str, budget_name: str, **kwargs: Any) -> _models.Budget: + """Gets the budget for the scope by budget name. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :return: Budget or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Budget + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.Budget] = kwargs.pop("cls", None) + + _request = build_get_request( + scope=scope, + budget_name=budget_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Budget", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def create_or_update( + self, + scope: str, + budget_name: str, + parameters: _models.Budget, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Budget: + """The operation to create or update a budget. You can optionally provide an eTag if desired as a + form of concurrency control. To obtain the latest eTag for a given budget, perform a get + operation prior to your put operation. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :param parameters: Parameters supplied to the Create Budget operation. Required. + :type parameters: ~azure.mgmt.costmanagement.models.Budget + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: Budget or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Budget + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update( + self, + scope: str, + budget_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Budget: + """The operation to create or update a budget. You can optionally provide an eTag if desired as a + form of concurrency control. To obtain the latest eTag for a given budget, perform a get + operation prior to your put operation. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :param parameters: Parameters supplied to the Create Budget operation. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: Budget or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Budget + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create_or_update( + self, scope: str, budget_name: str, parameters: Union[_models.Budget, IO[bytes]], **kwargs: Any + ) -> _models.Budget: + """The operation to create or update a budget. You can optionally provide an eTag if desired as a + form of concurrency control. To obtain the latest eTag for a given budget, perform a get + operation prior to your put operation. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :param parameters: Parameters supplied to the Create Budget operation. Is either a Budget type + or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.Budget or IO[bytes] + :return: Budget or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Budget + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.Budget] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _json = self._serialize.body(parameters, "Budget") + + _request = build_create_or_update_request( + scope=scope, + budget_name=budget_name, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Budget", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, scope: str, budget_name: str, **kwargs: Any + ) -> None: + """The operation to delete a budget. + + .. seealso:: + - https://docs.microsoft.com/en-us/rest/api/CostManagement/ + + :param scope: The scope associated with budget operations. + + Supported scopes for **CategoryType: Cost** + + Azure RBAC Scopes: + + + * '/subscriptions/{subscriptionId}/' for subscription scope + * '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope + * + '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for Management Group + scope + + EA (Enterprise Agreement) Scopes: + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' + for Department scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' + for EnrollmentAccount scope + + MCA (Modern Customer Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/invoiceSections/{invoiceSectionId}' + for invoiceSection scope + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only) + + Supported scopes for **CategoryType: ReservationUtilization** + + EA (Enterprise Agreement) Scopes: + + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account Scope + + MCA (Modern Customer Agreement) Scopes: + + + * + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billingProfile scope (non-CSP only) + * '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/customers/{customerId}' for + customer scope (CSP only). Required. + :type scope: str + :param budget_name: Budget Name. Required. + :type budget_name: str + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_request( + scope=scope, + budget_name=budget_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_cost_allocation_rules_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_cost_allocation_rules_operations.py new file mode 100644 index 000000000000..16cb28a43db3 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_cost_allocation_rules_operations.py @@ -0,0 +1,653 @@ +# pylint: disable=too-many-lines,too-many-statements +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from io import IOBase +import sys +from typing import Any, Callable, Dict, IO, Iterable, Optional, Type, TypeVar, Union, overload +import urllib.parse + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.rest import HttpRequest, HttpResponse +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models as _models +from .._serialization import Serializer + +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_list_request(billing_account_id: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/costAllocationRules", + ) # pylint: disable=line-too-long + path_format_arguments = { + "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_check_name_availability_request(billing_account_id: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/costAllocationRules/checkNameAvailability", + ) # pylint: disable=line-too-long + path_format_arguments = { + "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_request(billing_account_id: str, rule_name: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/costAllocationRules/{ruleName}", + ) # pylint: disable=line-too-long + path_format_arguments = { + "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), + "ruleName": _SERIALIZER.url("rule_name", rule_name, "str", pattern=r"[A-Za-z0-9\-_]+"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_or_update_request(billing_account_id: str, rule_name: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/costAllocationRules/{ruleName}", + ) # pylint: disable=line-too-long + path_format_arguments = { + "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), + "ruleName": _SERIALIZER.url("rule_name", rule_name, "str", pattern=r"[A-Za-z0-9\-_]+"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_delete_request(billing_account_id: str, rule_name: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/costAllocationRules/{ruleName}", + ) # pylint: disable=line-too-long + path_format_arguments = { + "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), + "ruleName": _SERIALIZER.url("rule_name", rule_name, "str", pattern=r"[A-Za-z0-9\-_]+"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) + + +class CostAllocationRulesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.costmanagement.CostManagementClient`'s + :attr:`cost_allocation_rules` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, billing_account_id: str, **kwargs: Any) -> Iterable["_models.CostAllocationRuleDefinition"]: + """Get the list of all cost allocation rules for a billing account or enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :return: An iterator like instance of either CostAllocationRuleDefinition or the result of + cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.CostAllocationRuleList] = kwargs.pop("cls", None) + + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + billing_account_id=billing_account_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("CostAllocationRuleList", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @overload + def check_name_availability( + self, + billing_account_id: str, + cost_allocation_rule_check_name_availability_request: _models.CostAllocationRuleCheckNameAvailabilityRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CostAllocationRuleCheckNameAvailabilityResponse: + """Checks availability and correctness of a name for a cost allocation rule. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param cost_allocation_rule_check_name_availability_request: Cost allocation rule to be created + or updated. Required. + :type cost_allocation_rule_check_name_availability_request: + ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: CostAllocationRuleCheckNameAvailabilityResponse or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def check_name_availability( + self, + billing_account_id: str, + cost_allocation_rule_check_name_availability_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CostAllocationRuleCheckNameAvailabilityResponse: + """Checks availability and correctness of a name for a cost allocation rule. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param cost_allocation_rule_check_name_availability_request: Cost allocation rule to be created + or updated. Required. + :type cost_allocation_rule_check_name_availability_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: CostAllocationRuleCheckNameAvailabilityResponse or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def check_name_availability( + self, + billing_account_id: str, + cost_allocation_rule_check_name_availability_request: Union[ + _models.CostAllocationRuleCheckNameAvailabilityRequest, IO[bytes] + ], + **kwargs: Any + ) -> _models.CostAllocationRuleCheckNameAvailabilityResponse: + """Checks availability and correctness of a name for a cost allocation rule. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param cost_allocation_rule_check_name_availability_request: Cost allocation rule to be created + or updated. Is either a CostAllocationRuleCheckNameAvailabilityRequest type or a IO[bytes] + type. Required. + :type cost_allocation_rule_check_name_availability_request: + ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityRequest or IO[bytes] + :return: CostAllocationRuleCheckNameAvailabilityResponse or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleCheckNameAvailabilityResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.CostAllocationRuleCheckNameAvailabilityResponse] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(cost_allocation_rule_check_name_availability_request, (IOBase, bytes)): + _content = cost_allocation_rule_check_name_availability_request + else: + _json = self._serialize.body( + cost_allocation_rule_check_name_availability_request, "CostAllocationRuleCheckNameAvailabilityRequest" + ) + + _request = build_check_name_availability_request( + billing_account_id=billing_account_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize( + "CostAllocationRuleCheckNameAvailabilityResponse", pipeline_response.http_response + ) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def get(self, billing_account_id: str, rule_name: str, **kwargs: Any) -> _models.CostAllocationRuleDefinition: + """Get a cost allocation rule by rule name and billing account or enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :return: CostAllocationRuleDefinition or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.CostAllocationRuleDefinition] = kwargs.pop("cls", None) + + _request = build_get_request( + billing_account_id=billing_account_id, + rule_name=rule_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("CostAllocationRuleDefinition", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def create_or_update( + self, + billing_account_id: str, + rule_name: str, + cost_allocation_rule: _models.CostAllocationRuleDefinition, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CostAllocationRuleDefinition: + """Create/Update a rule to allocate cost between different resources within a billing account or + enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :param cost_allocation_rule: Cost allocation rule to be created or updated. Required. + :type cost_allocation_rule: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: CostAllocationRuleDefinition or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update( + self, + billing_account_id: str, + rule_name: str, + cost_allocation_rule: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.CostAllocationRuleDefinition: + """Create/Update a rule to allocate cost between different resources within a billing account or + enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :param cost_allocation_rule: Cost allocation rule to be created or updated. Required. + :type cost_allocation_rule: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: CostAllocationRuleDefinition or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create_or_update( + self, + billing_account_id: str, + rule_name: str, + cost_allocation_rule: Union[_models.CostAllocationRuleDefinition, IO[bytes]], + **kwargs: Any + ) -> _models.CostAllocationRuleDefinition: + """Create/Update a rule to allocate cost between different resources within a billing account or + enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :param cost_allocation_rule: Cost allocation rule to be created or updated. Is either a + CostAllocationRuleDefinition type or a IO[bytes] type. Required. + :type cost_allocation_rule: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition or + IO[bytes] + :return: CostAllocationRuleDefinition or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.CostAllocationRuleDefinition + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.CostAllocationRuleDefinition] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(cost_allocation_rule, (IOBase, bytes)): + _content = cost_allocation_rule + else: + _json = self._serialize.body(cost_allocation_rule, "CostAllocationRuleDefinition") + + _request = build_create_or_update_request( + billing_account_id=billing_account_id, + rule_name=rule_name, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("CostAllocationRuleDefinition", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, billing_account_id: str, rule_name: str, **kwargs: Any + ) -> None: + """Delete cost allocation rule for billing account or enterprise enrollment. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param rule_name: Cost allocation rule name. The name cannot include spaces or any non + alphanumeric characters other than '_' and '-'. The max length is 260 characters. Required. + :type rule_name: str + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_request( + billing_account_id=billing_account_id, + rule_name=rule_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_dimensions_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_dimensions_operations.py index 19dec07c7dc7..be04d33e2554 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_dimensions_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_dimensions_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union +import sys +from typing import Any, Callable, Dict, Iterable, Optional, Type, TypeVar, Union import urllib.parse from azure.core.exceptions import ( @@ -19,16 +20,18 @@ ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -48,7 +51,7 @@ def build_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -57,7 +60,7 @@ def build_list_request( "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -76,7 +79,7 @@ def build_list_request( return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_by_external_cloud_provider_type_request( +def build_by_external_cloud_provider_type_request( # pylint: disable=name-too-long external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, *, @@ -89,7 +92,7 @@ def build_by_external_cloud_provider_type_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -104,7 +107,7 @@ def build_by_external_cloud_provider_type_request( "externalCloudProviderId": _SERIALIZER.url("external_cloud_provider_id", external_cloud_provider_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -189,7 +192,6 @@ def list( :param top: May be used to limit the number of results to the most recent N dimension data. Default value is None. :type top: int - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either Dimension or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.costmanagement.models.Dimension] :raises ~azure.core.exceptions.HttpResponseError: @@ -200,7 +202,7 @@ def list( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.DimensionsListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -211,19 +213,17 @@ def list( def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( scope=scope, filter=filter, expand=expand, skiptoken=skiptoken, top=top, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -235,13 +235,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("DimensionsListResult", pipeline_response) @@ -251,11 +250,11 @@ def extract_data(pipeline_response): return None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -268,8 +267,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/dimensions"} - @distributed_trace def by_external_cloud_provider_type( self, @@ -311,7 +308,6 @@ def by_external_cloud_provider_type( :param top: May be used to limit the number of results to the most recent N dimension data. Default value is None. :type top: int - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either Dimension or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.costmanagement.models.Dimension] :raises ~azure.core.exceptions.HttpResponseError: @@ -322,7 +318,7 @@ def by_external_cloud_provider_type( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.DimensionsListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -333,7 +329,7 @@ def by_external_cloud_provider_type( def prepare_request(next_link=None): if not next_link: - request = build_by_external_cloud_provider_type_request( + _request = build_by_external_cloud_provider_type_request( external_cloud_provider_type=external_cloud_provider_type, external_cloud_provider_id=external_cloud_provider_id, filter=filter, @@ -341,12 +337,10 @@ def prepare_request(next_link=None): skiptoken=skiptoken, top=top, api_version=api_version, - template_url=self.by_external_cloud_provider_type.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -358,13 +352,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("DimensionsListResult", pipeline_response) @@ -374,11 +367,11 @@ def extract_data(pipeline_response): return None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -390,7 +383,3 @@ def get_next(next_link=None): return pipeline_response return ItemPaged(get_next, extract_data) - - by_external_cloud_provider_type.metadata = { - "url": "/providers/Microsoft.CostManagement/{externalCloudProviderType}/{externalCloudProviderId}/dimensions" - } diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_exports_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_exports_operations.py index e747255baa54..31fb313847b7 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_exports_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_exports_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -18,16 +19,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -39,7 +42,7 @@ def build_list_request(scope: str, *, expand: Optional[str] = None, **kwargs: An _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -48,7 +51,7 @@ def build_list_request(scope: str, *, expand: Optional[str] = None, **kwargs: An "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -65,7 +68,7 @@ def build_get_request(scope: str, export_name: str, *, expand: Optional[str] = N _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -75,7 +78,7 @@ def build_get_request(scope: str, export_name: str, *, expand: Optional[str] = N "exportName": _SERIALIZER.url("export_name", export_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -92,7 +95,7 @@ def build_create_or_update_request(scope: str, export_name: str, **kwargs: Any) _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -103,7 +106,7 @@ def build_create_or_update_request(scope: str, export_name: str, **kwargs: Any) "exportName": _SERIALIZER.url("export_name", export_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -120,7 +123,7 @@ def build_delete_request(scope: str, export_name: str, **kwargs: Any) -> HttpReq _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -130,7 +133,7 @@ def build_delete_request(scope: str, export_name: str, **kwargs: Any) -> HttpReq "exportName": _SERIALIZER.url("export_name", export_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -145,7 +148,7 @@ def build_execute_request(scope: str, export_name: str, **kwargs: Any) -> HttpRe _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -155,7 +158,7 @@ def build_execute_request(scope: str, export_name: str, **kwargs: Any) -> HttpRe "exportName": _SERIALIZER.url("export_name", export_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -170,7 +173,7 @@ def build_get_execution_history_request(scope: str, export_name: str, **kwargs: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -180,7 +183,7 @@ def build_get_execution_history_request(scope: str, export_name: str, **kwargs: "exportName": _SERIALIZER.url("export_name", export_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -238,12 +241,11 @@ def list(self, scope: str, expand: Optional[str] = None, **kwargs: Any) -> _mode 'runHistory' is supported and will return information for the last run of each export. Default value is None. :type expand: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ExportListResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ExportListResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -257,20 +259,18 @@ def list(self, scope: str, expand: Optional[str] = None, **kwargs: Any) -> _mode api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ExportListResult] = kwargs.pop("cls", None) - request = build_list_request( + _request = build_list_request( scope=scope, expand=expand, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -280,14 +280,12 @@ def list(self, scope: str, expand: Optional[str] = None, **kwargs: Any) -> _mode error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ExportListResult", pipeline_response) + deserialized = self._deserialize("ExportListResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - list.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports"} + return deserialized # type: ignore @distributed_trace def get(self, scope: str, export_name: str, expand: Optional[str] = None, **kwargs: Any) -> _models.Export: @@ -319,12 +317,11 @@ def get(self, scope: str, export_name: str, expand: Optional[str] = None, **kwar 'runHistory' is supported and will return information for the last 10 runs of the export. Default value is None. :type expand: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Export or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Export :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -338,21 +335,19 @@ def get(self, scope: str, export_name: str, expand: Optional[str] = None, **kwar api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.Export] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( scope=scope, export_name=export_name, expand=expand, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -362,14 +357,12 @@ def get(self, scope: str, export_name: str, expand: Optional[str] = None, **kwar error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("Export", pipeline_response) + deserialized = self._deserialize("Export", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}"} + return deserialized # type: ignore @overload def create_or_update( @@ -412,7 +405,6 @@ def create_or_update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Export or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Export :raises ~azure.core.exceptions.HttpResponseError: @@ -420,7 +412,13 @@ def create_or_update( @overload def create_or_update( - self, scope: str, export_name: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, + scope: str, + export_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any ) -> _models.Export: """The operation to create or update a export. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -449,11 +447,10 @@ def create_or_update( :param export_name: Export Name. Required. :type export_name: str :param parameters: Parameters supplied to the CreateOrUpdate Export operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: Export or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Export :raises ~azure.core.exceptions.HttpResponseError: @@ -461,7 +458,7 @@ def create_or_update( @distributed_trace def create_or_update( - self, scope: str, export_name: str, parameters: Union[_models.Export, IO], **kwargs: Any + self, scope: str, export_name: str, parameters: Union[_models.Export, IO[bytes]], **kwargs: Any ) -> _models.Export: """The operation to create or update a export. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -490,17 +487,13 @@ def create_or_update( :param export_name: Export Name. Required. :type export_name: str :param parameters: Parameters supplied to the CreateOrUpdate Export operation. Is either a - Export type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.Export or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + Export type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.Export or IO[bytes] :return: Export or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.Export :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -523,23 +516,21 @@ def create_or_update( else: _json = self._serialize.body(parameters, "Export") - request = build_create_or_update_request( + _request = build_create_or_update_request( scope=scope, export_name=export_name, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -549,19 +540,13 @@ def create_or_update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("Export", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("Export", pipeline_response) + deserialized = self._deserialize("Export", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}"} - @distributed_trace def delete( # pylint: disable=inconsistent-return-statements self, scope: str, export_name: str, **kwargs: Any @@ -590,12 +575,11 @@ def delete( # pylint: disable=inconsistent-return-statements :type scope: str :param export_name: Export Name. Required. :type export_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -609,20 +593,18 @@ def delete( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( scope=scope, export_name=export_name, api_version=api_version, - template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -633,9 +615,7 @@ def delete( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace def execute( # pylint: disable=inconsistent-return-statements @@ -665,12 +645,11 @@ def execute( # pylint: disable=inconsistent-return-statements :type scope: str :param export_name: Export Name. Required. :type export_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -684,20 +663,18 @@ def execute( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_execute_request( + _request = build_execute_request( scope=scope, export_name=export_name, api_version=api_version, - template_url=self.execute.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -708,9 +685,7 @@ def execute( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - execute.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}/run"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace def get_execution_history(self, scope: str, export_name: str, **kwargs: Any) -> _models.ExportExecutionListResult: @@ -738,12 +713,11 @@ def get_execution_history(self, scope: str, export_name: str, **kwargs: Any) -> :type scope: str :param export_name: Export Name. Required. :type export_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ExportExecutionListResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ExportExecutionListResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -757,20 +731,18 @@ def get_execution_history(self, scope: str, export_name: str, **kwargs: Any) -> api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ExportExecutionListResult] = kwargs.pop("cls", None) - request = build_get_execution_history_request( + _request = build_get_execution_history_request( scope=scope, export_name=export_name, api_version=api_version, - template_url=self.get_execution_history.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -780,13 +752,9 @@ def get_execution_history(self, scope: str, export_name: str, **kwargs: Any) -> error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ExportExecutionListResult", pipeline_response) + deserialized = self._deserialize("ExportExecutionListResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get_execution_history.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/exports/{exportName}/runHistory" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_forecast_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_forecast_operations.py index e39d94f30f09..ffe0320e2b18 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_forecast_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_forecast_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -18,16 +19,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -39,7 +42,7 @@ def build_usage_request(scope: str, *, filter: Optional[str] = None, **kwargs: A _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -49,7 +52,7 @@ def build_usage_request(scope: str, *, filter: Optional[str] = None, **kwargs: A "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters if filter is not None: @@ -64,7 +67,7 @@ def build_usage_request(scope: str, *, filter: Optional[str] = None, **kwargs: A return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) -def build_external_cloud_provider_usage_request( +def build_external_cloud_provider_usage_request( # pylint: disable=name-too-long external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, *, @@ -74,7 +77,7 @@ def build_external_cloud_provider_usage_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -90,7 +93,7 @@ def build_external_cloud_provider_usage_request( "externalCloudProviderId": _SERIALIZER.url("external_cloud_provider_id", external_cloud_provider_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters if filter is not None: @@ -166,7 +169,6 @@ def usage( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult or None :raises ~azure.core.exceptions.HttpResponseError: @@ -176,7 +178,7 @@ def usage( def usage( self, scope: str, - parameters: IO, + parameters: IO[bytes], filter: Optional[str] = None, *, content_type: str = "application/json", @@ -206,7 +208,7 @@ def usage( :type scope: str :param parameters: Parameters supplied to the CreateOrUpdate Forecast Config operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :param filter: May be used to filter forecasts by properties/usageDate (Utc time), properties/chargeType or properties/grain. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Default value is None. @@ -214,7 +216,6 @@ def usage( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult or None :raises ~azure.core.exceptions.HttpResponseError: @@ -222,7 +223,11 @@ def usage( @distributed_trace def usage( - self, scope: str, parameters: Union[_models.ForecastDefinition, IO], filter: Optional[str] = None, **kwargs: Any + self, + scope: str, + parameters: Union[_models.ForecastDefinition, IO[bytes]], + filter: Optional[str] = None, + **kwargs: Any ) -> Optional[_models.ForecastResult]: """Lists the forecast charges for scope defined. @@ -247,21 +252,17 @@ def usage( specific for partners. Required. :type scope: str :param parameters: Parameters supplied to the CreateOrUpdate Forecast Config operation. Is - either a ForecastDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.ForecastDefinition or IO + either a ForecastDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.ForecastDefinition or IO[bytes] :param filter: May be used to filter forecasts by properties/usageDate (Utc time), properties/chargeType or properties/grain. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Default value is None. :type filter: str - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult or None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -284,23 +285,21 @@ def usage( else: _json = self._serialize.body(parameters, "ForecastDefinition") - request = build_usage_request( + _request = build_usage_request( scope=scope, filter=filter, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.usage.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -312,14 +311,12 @@ def usage( deserialized = None if response.status_code == 200: - deserialized = self._deserialize("ForecastResult", pipeline_response) + deserialized = self._deserialize("ForecastResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - usage.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/forecast"} + return deserialized # type: ignore @overload def external_cloud_provider_usage( @@ -357,7 +354,6 @@ def external_cloud_provider_usage( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult :raises ~azure.core.exceptions.HttpResponseError: @@ -368,7 +364,7 @@ def external_cloud_provider_usage( self, external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, - parameters: IO, + parameters: IO[bytes], filter: Optional[str] = None, *, content_type: str = "application/json", @@ -391,7 +387,7 @@ def external_cloud_provider_usage( :type external_cloud_provider_id: str :param parameters: Parameters supplied to the CreateOrUpdate Forecast Config operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :param filter: May be used to filter forecasts by properties/usageDate (Utc time), properties/chargeType or properties/grain. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Default value is None. @@ -399,7 +395,6 @@ def external_cloud_provider_usage( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult :raises ~azure.core.exceptions.HttpResponseError: @@ -410,7 +405,7 @@ def external_cloud_provider_usage( self, external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, - parameters: Union[_models.ForecastDefinition, IO], + parameters: Union[_models.ForecastDefinition, IO[bytes]], filter: Optional[str] = None, **kwargs: Any ) -> _models.ForecastResult: @@ -430,21 +425,17 @@ def external_cloud_provider_usage( Required. :type external_cloud_provider_id: str :param parameters: Parameters supplied to the CreateOrUpdate Forecast Config operation. Is - either a ForecastDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.ForecastDefinition or IO + either a ForecastDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.ForecastDefinition or IO[bytes] :param filter: May be used to filter forecasts by properties/usageDate (Utc time), properties/chargeType or properties/grain. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'. Default value is None. :type filter: str - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ForecastResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ForecastResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -467,7 +458,7 @@ def external_cloud_provider_usage( else: _json = self._serialize.body(parameters, "ForecastDefinition") - request = build_external_cloud_provider_usage_request( + _request = build_external_cloud_provider_usage_request( external_cloud_provider_type=external_cloud_provider_type, external_cloud_provider_id=external_cloud_provider_id, filter=filter, @@ -475,16 +466,14 @@ def external_cloud_provider_usage( content_type=content_type, json=_json, content=_content, - template_url=self.external_cloud_provider_usage.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -494,13 +483,9 @@ def external_cloud_provider_usage( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ForecastResult", pipeline_response) + deserialized = self._deserialize("ForecastResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - external_cloud_provider_usage.metadata = { - "url": "/providers/Microsoft.CostManagement/{externalCloudProviderType}/{externalCloudProviderId}/forecast" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_benefit_utilization_summaries_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_benefit_utilization_summaries_report_operations.py new file mode 100644 index 000000000000..b761f3d60d01 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_benefit_utilization_summaries_report_operations.py @@ -0,0 +1,1517 @@ +# pylint: disable=too-many-lines,too-many-statements +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from io import IOBase +import sys +from typing import Any, Callable, Dict, IO, Iterator, Optional, Type, TypeVar, Union, cast, overload + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest, HttpResponse +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.arm_polling import ARMPolling + +from .. import models as _models +from .._serialization import Serializer + +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_generate_by_billing_account_request( # pylint: disable=name-too-long + billing_account_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/generateBenefitUtilizationSummariesReport", + ) # pylint: disable=line-too-long + path_format_arguments = { + "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_generate_by_billing_profile_request( # pylint: disable=name-too-long + billing_account_id: str, billing_profile_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/providers/Microsoft.CostManagement/generateBenefitUtilizationSummariesReport", + ) # pylint: disable=line-too-long + path_format_arguments = { + "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), + "billingProfileId": _SERIALIZER.url("billing_profile_id", billing_profile_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_generate_by_reservation_order_id_request( # pylint: disable=name-too-long + reservation_order_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/providers/Microsoft.CostManagement/generateBenefitUtilizationSummariesReport", + ) # pylint: disable=line-too-long + path_format_arguments = { + "reservationOrderId": _SERIALIZER.url("reservation_order_id", reservation_order_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_generate_by_reservation_id_request( + reservation_order_id: str, reservation_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/reservations/{reservationId}/providers/Microsoft.CostManagement/generateBenefitUtilizationSummariesReport", + ) # pylint: disable=line-too-long + path_format_arguments = { + "reservationOrderId": _SERIALIZER.url("reservation_order_id", reservation_order_id, "str"), + "reservationId": _SERIALIZER.url("reservation_id", reservation_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_generate_by_savings_plan_order_id_request( # pylint: disable=name-too-long + savings_plan_order_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.BillingBenefits/savingsPlanOrders/{savingsPlanOrderId}/providers/Microsoft.CostManagement/generateBenefitUtilizationSummariesReport", + ) # pylint: disable=line-too-long + path_format_arguments = { + "savingsPlanOrderId": _SERIALIZER.url("savings_plan_order_id", savings_plan_order_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_generate_by_savings_plan_id_request( # pylint: disable=name-too-long + savings_plan_order_id: str, savings_plan_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.BillingBenefits/savingsPlanOrders/{savingsPlanOrderId}/savingsPlans/{savingsPlanId}/providers/Microsoft.CostManagement/generateBenefitUtilizationSummariesReport", + ) # pylint: disable=line-too-long + path_format_arguments = { + "savingsPlanOrderId": _SERIALIZER.url("savings_plan_order_id", savings_plan_order_id, "str"), + "savingsPlanId": _SERIALIZER.url("savings_plan_id", savings_plan_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +class GenerateBenefitUtilizationSummariesReportOperations: # pylint: disable=name-too-long + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.costmanagement.CostManagementClient`'s + :attr:`generate_benefit_utilization_summaries_report` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + def _generate_by_billing_account_initial( + self, + billing_account_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_billing_account_request( + billing_account_id=billing_account_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_generate_by_billing_account( + self, + billing_account_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account. + This API supports only enrollment accounts. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_generate_by_billing_account( + self, + billing_account_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account. + This API supports only enrollment accounts. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_generate_by_billing_account( + self, + billing_account_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account. + This API supports only enrollment accounts. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._generate_by_billing_account_initial( + billing_account_id=billing_account_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _generate_by_billing_profile_initial( + self, + billing_account_id: str, + billing_profile_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_billing_profile_request( + billing_account_id=billing_account_id, + billing_profile_id=billing_profile_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_generate_by_billing_profile( + self, + billing_account_id: str, + billing_profile_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account + and billing profile. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param billing_profile_id: Billing profile ID. Required. + :type billing_profile_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_generate_by_billing_profile( + self, + billing_account_id: str, + billing_profile_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account + and billing profile. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param billing_profile_id: Billing profile ID. Required. + :type billing_profile_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_generate_by_billing_profile( + self, + billing_account_id: str, + billing_profile_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided billing account + and billing profile. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param billing_account_id: Billing account ID. Required. + :type billing_account_id: str + :param billing_profile_id: Billing profile ID. Required. + :type billing_profile_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._generate_by_billing_profile_initial( + billing_account_id=billing_account_id, + billing_profile_id=billing_profile_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _generate_by_reservation_order_id_initial( # pylint: disable=name-too-long + self, + reservation_order_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_reservation_order_id_request( + reservation_order_id=reservation_order_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_generate_by_reservation_order_id( + self, + reservation_order_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_generate_by_reservation_order_id( + self, + reservation_order_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_generate_by_reservation_order_id( + self, + reservation_order_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._generate_by_reservation_order_id_initial( + reservation_order_id=reservation_order_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _generate_by_reservation_id_initial( + self, + reservation_order_id: str, + reservation_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_reservation_id_request( + reservation_order_id=reservation_order_id, + reservation_id=reservation_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_generate_by_reservation_id( + self, + reservation_order_id: str, + reservation_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param reservation_id: Reservation ID. Required. + :type reservation_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_generate_by_reservation_id( + self, + reservation_order_id: str, + reservation_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param reservation_id: Reservation ID. Required. + :type reservation_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_generate_by_reservation_id( + self, + reservation_order_id: str, + reservation_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided reservation. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param reservation_order_id: Reservation Order ID. Required. + :type reservation_order_id: str + :param reservation_id: Reservation ID. Required. + :type reservation_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._generate_by_reservation_id_initial( + reservation_order_id=reservation_order_id, + reservation_id=reservation_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _generate_by_savings_plan_order_id_initial( # pylint: disable=name-too-long + self, + savings_plan_order_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_savings_plan_order_id_request( + savings_plan_order_id=savings_plan_order_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_generate_by_savings_plan_order_id( + self, + savings_plan_order_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_generate_by_savings_plan_order_id( + self, + savings_plan_order_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_generate_by_savings_plan_order_id( + self, + savings_plan_order_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan + order. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._generate_by_savings_plan_order_id_initial( + savings_plan_order_id=savings_plan_order_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _generate_by_savings_plan_id_initial( + self, + savings_plan_order_id: str, + savings_plan_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(benefit_utilization_summaries_request, (IOBase, bytes)): + _content = benefit_utilization_summaries_request + else: + _json = self._serialize.body(benefit_utilization_summaries_request, "BenefitUtilizationSummariesRequest") + + _request = build_generate_by_savings_plan_id_request( + savings_plan_order_id=savings_plan_order_id, + savings_plan_id=savings_plan_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_generate_by_savings_plan_id( + self, + savings_plan_order_id: str, + savings_plan_id: str, + benefit_utilization_summaries_request: _models.BenefitUtilizationSummariesRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param savings_plan_id: Savings plan ID. Required. + :type savings_plan_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_generate_by_savings_plan_id( + self, + savings_plan_order_id: str, + savings_plan_id: str, + benefit_utilization_summaries_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param savings_plan_id: Savings plan ID. Required. + :type savings_plan_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Required. + :type benefit_utilization_summaries_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_generate_by_savings_plan_id( + self, + savings_plan_order_id: str, + savings_plan_id: str, + benefit_utilization_summaries_request: Union[_models.BenefitUtilizationSummariesRequest, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.BenefitUtilizationSummariesOperationStatus]: + """Triggers generation of a benefit utilization summaries report for the provided savings plan. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param savings_plan_order_id: Savings plan order ID. Required. + :type savings_plan_order_id: str + :param savings_plan_id: Savings plan ID. Required. + :type savings_plan_id: str + :param benefit_utilization_summaries_request: Async Benefit Utilization Summary report to be + created. Is either a BenefitUtilizationSummariesRequest type or a IO[bytes] type. Required. + :type benefit_utilization_summaries_request: + ~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesRequest or IO[bytes] + :return: An instance of LROPoller that returns either + BenefitUtilizationSummariesOperationStatus or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.BenefitUtilizationSummariesOperationStatus] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.BenefitUtilizationSummariesOperationStatus] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._generate_by_savings_plan_id_initial( + savings_plan_order_id=savings_plan_order_id, + savings_plan_id=savings_plan_id, + benefit_utilization_summaries_request=benefit_utilization_summaries_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "BenefitUtilizationSummariesOperationStatus", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.BenefitUtilizationSummariesOperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_cost_details_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_cost_details_report_operations.py index 7f9f5529f879..dc4fd037aa7d 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_cost_details_report_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_cost_details_report_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +import sys +from typing import Any, Callable, Dict, IO, Iterator, Optional, Type, TypeVar, Union, cast, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -15,12 +16,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat @@ -28,8 +30,11 @@ from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -41,7 +46,7 @@ def build_create_operation_request(scope: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -51,7 +56,7 @@ def build_create_operation_request(scope: str, **kwargs: Any) -> HttpRequest: "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -68,7 +73,7 @@ def build_get_operation_results_request(scope: str, operation_id: str, **kwargs: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -80,7 +85,7 @@ def build_get_operation_results_request(scope: str, operation_id: str, **kwargs: "operationId": _SERIALIZER.url("operation_id", operation_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -111,9 +116,12 @@ def __init__(self, *args, **kwargs): self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") def _create_operation_initial( - self, scope: str, parameters: Union[_models.GenerateCostDetailsReportRequestDefinition, IO], **kwargs: Any - ) -> Optional[_models.CostDetailsOperationResults]: - error_map = { + self, + scope: str, + parameters: Union[_models.GenerateCostDetailsReportRequestDefinition, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -126,7 +134,7 @@ def _create_operation_initial( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Optional[_models.CostDetailsOperationResults]] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None @@ -136,50 +144,47 @@ def _create_operation_initial( else: _json = self._serialize.body(parameters, "GenerateCostDetailsReportRequestDefinition") - request = build_create_operation_request( + _request = build_create_operation_request( scope=scope, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self._create_operation_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize( _models.GenerateCostDetailsReportErrorResponse, pipeline_response ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _create_operation_initial.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport" - } + return deserialized # type: ignore @overload def begin_create_operation( @@ -201,27 +206,20 @@ def begin_create_operation( response along with details on the report blob(s) that are available for download. The details on the file(s) available for download will be available in the polling response body. To Understand cost details (formerly known as usage details) fields found in files ,see - https://learn.microsoft.com/azure/cost-management-billing/automate/understand-usage-details-fields. + https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ - :param scope: The ARM Resource ID for subscription, resource group, billing account, or other - billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. + :param scope: The ARM Resource ID for subscription, billing account, or other billing + scopes.Currently Resource Group and Management Group are not supported. For details, see + https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create cost details operation. Required. :type parameters: ~azure.mgmt.costmanagement.models.GenerateCostDetailsReportRequestDefinition :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of LROPoller that returns either CostDetailsOperationResults or the result of cls(response) :rtype: @@ -231,7 +229,7 @@ def begin_create_operation( @overload def begin_create_operation( - self, scope: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, scope: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> LROPoller[_models.CostDetailsOperationResults]: """This API is the replacement for all previously release Usage Details APIs. Request to generate a cost details report for the provided date range, billing period (Only enterprise customers) @@ -244,27 +242,20 @@ def begin_create_operation( response along with details on the report blob(s) that are available for download. The details on the file(s) available for download will be available in the polling response body. To Understand cost details (formerly known as usage details) fields found in files ,see - https://learn.microsoft.com/azure/cost-management-billing/automate/understand-usage-details-fields. + https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ - :param scope: The ARM Resource ID for subscription, resource group, billing account, or other - billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. + :param scope: The ARM Resource ID for subscription, billing account, or other billing + scopes.Currently Resource Group and Management Group are not supported. For details, see + https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create cost details operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of LROPoller that returns either CostDetailsOperationResults or the result of cls(response) :rtype: @@ -274,7 +265,10 @@ def begin_create_operation( @distributed_trace def begin_create_operation( - self, scope: str, parameters: Union[_models.GenerateCostDetailsReportRequestDefinition, IO], **kwargs: Any + self, + scope: str, + parameters: Union[_models.GenerateCostDetailsReportRequestDefinition, IO[bytes]], + **kwargs: Any ) -> LROPoller[_models.CostDetailsOperationResults]: """This API is the replacement for all previously release Usage Details APIs. Request to generate a cost details report for the provided date range, billing period (Only enterprise customers) @@ -287,29 +281,19 @@ def begin_create_operation( response along with details on the report blob(s) that are available for download. The details on the file(s) available for download will be available in the polling response body. To Understand cost details (formerly known as usage details) fields found in files ,see - https://learn.microsoft.com/azure/cost-management-billing/automate/understand-usage-details-fields. + https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ - :param scope: The ARM Resource ID for subscription, resource group, billing account, or other - billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. + :param scope: The ARM Resource ID for subscription, billing account, or other billing + scopes.Currently Resource Group and Management Group are not supported. For details, see + https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create cost details operation. Is either a - GenerateCostDetailsReportRequestDefinition type or a IO type. Required. + GenerateCostDetailsReportRequestDefinition type or a IO[bytes] type. Required. :type parameters: ~azure.mgmt.costmanagement.models.GenerateCostDetailsReportRequestDefinition - or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. + or IO[bytes] :return: An instance of LROPoller that returns either CostDetailsOperationResults or the result of cls(response) :rtype: @@ -336,12 +320,13 @@ def begin_create_operation( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response) + deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -353,20 +338,18 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.CostDetailsOperationResults].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create_operation.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport"} + return LROPoller[_models.CostDetailsOperationResults]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - def _get_operation_results_initial( - self, scope: str, operation_id: str, **kwargs: Any - ) -> Optional[_models.CostDetailsOperationResults]: - error_map = { + def _get_operation_results_initial(self, scope: str, operation_id: str, **kwargs: Any) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -378,43 +361,40 @@ def _get_operation_results_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.CostDetailsOperationResults]] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_get_operation_results_request( + _request = build_get_operation_results_request( scope=scope, operation_id=operation_id, api_version=api_version, - template_url=self._get_operation_results_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None - if response.status_code == 200: - deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - _get_operation_results_initial.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/costDetailsOperationResults/{operationId}" - } + return deserialized # type: ignore @distributed_trace def begin_get_operation_results( @@ -423,19 +403,12 @@ def begin_get_operation_results( """Get the result of the specified operation. This link is provided in the CostDetails creation request response Location header. - :param scope: The ARM Resource ID for subscription, resource group, billing account, or other - billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. + :param scope: The ARM Resource ID for subscription, billing account, or other billing + scopes.Currently Resource Group and Management Group are not supported. For details, see + https://aka.ms/costmgmt/scopes. Required. :type scope: str :param operation_id: The target operation Id. Required. :type operation_id: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of LROPoller that returns either CostDetailsOperationResults or the result of cls(response) :rtype: @@ -460,12 +433,13 @@ def begin_get_operation_results( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response) + deserialized = self._deserialize("CostDetailsOperationResults", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -477,14 +451,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.CostDetailsOperationResults].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_get_operation_results.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/costDetailsOperationResults/{operationId}" - } + return LROPoller[_models.CostDetailsOperationResults]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operation_results_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operation_results_operations.py index fe9816fc945f..56ac68894a88 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operation_results_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operation_results_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar, Union, cast +import sys +from typing import Any, Callable, Dict, Iterator, Optional, Type, TypeVar, Union, cast from azure.core.exceptions import ( ClientAuthenticationError, @@ -14,12 +15,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat @@ -27,8 +29,11 @@ from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -40,7 +45,7 @@ def build_get_request(operation_id: str, scope: str, **kwargs: Any) -> HttpReque _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -50,7 +55,7 @@ def build_get_request(operation_id: str, scope: str, **kwargs: Any) -> HttpReque "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -61,7 +66,7 @@ def build_get_request(operation_id: str, scope: str, **kwargs: Any) -> HttpReque return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -class GenerateDetailedCostReportOperationResultsOperations: +class GenerateDetailedCostReportOperationResultsOperations: # pylint: disable=name-too-long """ .. warning:: **DO NOT** instantiate this class directly. @@ -80,10 +85,8 @@ def __init__(self, *args, **kwargs): self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") - def _get_initial( - self, operation_id: str, scope: str, **kwargs: Any - ) -> Optional[_models.GenerateDetailedCostReportOperationResult]: - error_map = { + def _get_initial(self, operation_id: str, scope: str, **kwargs: Any) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -95,41 +98,40 @@ def _get_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.GenerateDetailedCostReportOperationResult]] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( operation_id=operation_id, scope=scope, api_version=api_version, - template_url=self._get_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None - if response.status_code == 200: - deserialized = self._deserialize("GenerateDetailedCostReportOperationResult", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - _get_initial.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/operationResults/{operationId}"} + return deserialized # type: ignore @distributed_trace def begin_get( @@ -143,14 +145,6 @@ def begin_get( :param scope: The ARM Resource ID for subscription, resource group, billing account, or other billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. :type scope: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of LROPoller that returns either GenerateDetailedCostReportOperationResult or the result of cls(response) :rtype: @@ -175,12 +169,15 @@ def begin_get( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("GenerateDetailedCostReportOperationResult", pipeline_response) + deserialized = self._deserialize( + "GenerateDetailedCostReportOperationResult", pipeline_response.http_response + ) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -190,12 +187,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.GenerateDetailedCostReportOperationResult].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_get.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/operationResults/{operationId}"} + return LROPoller[_models.GenerateDetailedCostReportOperationResult]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operation_status_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operation_status_operations.py index 35352c896734..2b1995aba479 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operation_status_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operation_status_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar +import sys +from typing import Any, Callable, Dict, Optional, Type, TypeVar from azure.core.exceptions import ( ClientAuthenticationError, @@ -17,16 +18,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -38,7 +41,7 @@ def build_get_request(operation_id: str, scope: str, **kwargs: Any) -> HttpReque _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -48,7 +51,7 @@ def build_get_request(operation_id: str, scope: str, **kwargs: Any) -> HttpReque "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -59,7 +62,7 @@ def build_get_request(operation_id: str, scope: str, **kwargs: Any) -> HttpReque return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -class GenerateDetailedCostReportOperationStatusOperations: +class GenerateDetailedCostReportOperationStatusOperations: # pylint: disable=name-too-long """ .. warning:: **DO NOT** instantiate this class directly. @@ -88,12 +91,11 @@ def get(self, operation_id: str, scope: str, **kwargs: Any) -> _models.GenerateD :param scope: The ARM Resource ID for subscription, resource group, billing account, or other billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. :type scope: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: GenerateDetailedCostReportOperationStatuses or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.GenerateDetailedCostReportOperationStatuses :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -107,20 +109,18 @@ def get(self, operation_id: str, scope: str, **kwargs: Any) -> _models.GenerateD api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.GenerateDetailedCostReportOperationStatuses] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( operation_id=operation_id, scope=scope, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -130,11 +130,9 @@ def get(self, operation_id: str, scope: str, **kwargs: Any) -> _models.GenerateD error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("GenerateDetailedCostReportOperationStatuses", pipeline_response) + deserialized = self._deserialize("GenerateDetailedCostReportOperationStatuses", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - get.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/operationStatus/{operationId}"} + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operations.py index d97dc71e376c..1f1b7a349295 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_detailed_cost_report_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +import sys +from typing import Any, Callable, Dict, IO, Iterator, Optional, Type, TypeVar, Union, cast, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -15,12 +16,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat @@ -28,8 +30,11 @@ from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -41,7 +46,7 @@ def build_create_operation_request(scope: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -51,7 +56,7 @@ def build_create_operation_request(scope: str, **kwargs: Any) -> HttpRequest: "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -84,9 +89,9 @@ def __init__(self, *args, **kwargs): self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") def _create_operation_initial( - self, scope: str, parameters: Union[_models.GenerateDetailedCostReportDefinition, IO], **kwargs: Any - ) -> Optional[_models.GenerateDetailedCostReportOperationResult]: - error_map = { + self, scope: str, parameters: Union[_models.GenerateDetailedCostReportDefinition, IO[bytes]], **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -99,7 +104,7 @@ def _create_operation_initial( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Optional[_models.GenerateDetailedCostReportOperationResult]] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None @@ -109,38 +114,37 @@ def _create_operation_initial( else: _json = self._serialize.body(parameters, "GenerateDetailedCostReportDefinition") - request = build_create_operation_request( + _request = build_create_operation_request( scope=scope, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self._create_operation_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize( _models.GenerateDetailedCostReportErrorResponse, pipeline_response ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("GenerateDetailedCostReportOperationResult", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Azure-Consumption-AsyncOperation"] = self._deserialize( @@ -151,14 +155,12 @@ def _create_operation_initial( ) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _create_operation_initial.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/generateDetailedCostReport" - } + return deserialized # type: ignore @overload def begin_create_operation( @@ -186,14 +188,6 @@ def begin_create_operation( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of LROPoller that returns either GenerateDetailedCostReportOperationResult or the result of cls(response) :rtype: @@ -203,7 +197,7 @@ def begin_create_operation( @overload def begin_create_operation( - self, scope: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, scope: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> LROPoller[_models.GenerateDetailedCostReportOperationResult]: """Generates the detailed cost report for provided date range, billing period(only enterprise customers) or Invoice ID asynchronously at a certain scope. Call returns a 202 with header @@ -218,18 +212,10 @@ def begin_create_operation( billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create detailed cost report operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of LROPoller that returns either GenerateDetailedCostReportOperationResult or the result of cls(response) :rtype: @@ -239,7 +225,7 @@ def begin_create_operation( @distributed_trace def begin_create_operation( - self, scope: str, parameters: Union[_models.GenerateDetailedCostReportDefinition, IO], **kwargs: Any + self, scope: str, parameters: Union[_models.GenerateDetailedCostReportDefinition, IO[bytes]], **kwargs: Any ) -> LROPoller[_models.GenerateDetailedCostReportOperationResult]: """Generates the detailed cost report for provided date range, billing period(only enterprise customers) or Invoice ID asynchronously at a certain scope. Call returns a 202 with header @@ -254,19 +240,9 @@ def begin_create_operation( billing scopes. For details, see https://aka.ms/costmgmt/scopes. Required. :type scope: str :param parameters: Parameters supplied to the Create detailed cost report operation. Is either - a GenerateDetailedCostReportDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.GenerateDetailedCostReportDefinition or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. + a GenerateDetailedCostReportDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.GenerateDetailedCostReportDefinition or + IO[bytes] :return: An instance of LROPoller that returns either GenerateDetailedCostReportOperationResult or the result of cls(response) :rtype: @@ -293,12 +269,15 @@ def begin_create_operation( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("GenerateDetailedCostReportOperationResult", pipeline_response) + deserialized = self._deserialize( + "GenerateDetailedCostReportOperationResult", pipeline_response.http_response + ) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -310,12 +289,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.GenerateDetailedCostReportOperationResult].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create_operation.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/generateDetailedCostReport"} + return LROPoller[_models.GenerateDetailedCostReportOperationResult]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_reservation_details_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_reservation_details_report_operations.py index acfd66c3eca0..f49b7a1be6aa 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_reservation_details_report_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_generate_reservation_details_report_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar, Union, cast +import sys +from typing import Any, Callable, Dict, Iterator, Optional, Type, TypeVar, Union, cast from azure.core.exceptions import ( ClientAuthenticationError, @@ -14,12 +15,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat @@ -27,8 +29,11 @@ from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -42,7 +47,7 @@ def build_by_billing_account_id_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -54,7 +59,7 @@ def build_by_billing_account_id_request( "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["startDate"] = _SERIALIZER.query("start_date", start_date, "str") @@ -73,7 +78,7 @@ def build_by_billing_profile_id_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -86,7 +91,7 @@ def build_by_billing_profile_id_request( "billingProfileId": _SERIALIZER.url("billing_profile_id", billing_profile_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["startDate"] = _SERIALIZER.query("start_date", start_date, "str") @@ -99,7 +104,7 @@ def build_by_billing_profile_id_request( return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) -class GenerateReservationDetailsReportOperations: +class GenerateReservationDetailsReportOperations: # pylint: disable=name-too-long """ .. warning:: **DO NOT** instantiate this class directly. @@ -120,8 +125,8 @@ def __init__(self, *args, **kwargs): def _by_billing_account_id_initial( self, billing_account_id: str, start_date: str, end_date: str, **kwargs: Any - ) -> Optional[_models.OperationStatus]: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -133,49 +138,46 @@ def _by_billing_account_id_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.OperationStatus]] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_by_billing_account_id_request( + _request = build_by_billing_account_id_request( billing_account_id=billing_account_id, start_date=start_date, end_date=end_date, api_version=api_version, - template_url=self._by_billing_account_id_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("OperationStatus", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _by_billing_account_id_initial.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/generateReservationDetailsReport" - } + return deserialized # type: ignore @distributed_trace def begin_by_billing_account_id( @@ -184,7 +186,7 @@ def begin_by_billing_account_id( """Generates the reservations details report for provided date range asynchronously based on enrollment id. The Reservation usage details can be viewed only by certain enterprise roles. For more details on the roles see, - https://docs.microsoft.com/azure/cost-management-billing/manage/understand-ea-roles#usage-and-costs-access-by-role. + https://docs.microsoft.com/en-us/azure/cost-management-billing/manage/understand-ea-roles#usage-and-costs-access-by-role. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ @@ -195,14 +197,6 @@ def begin_by_billing_account_id( :type start_date: str :param end_date: End Date. Required. :type end_date: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of LROPoller that returns either OperationStatus or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.OperationStatus] @@ -227,12 +221,13 @@ def begin_by_billing_account_id( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("OperationStatus", pipeline_response) + deserialized = self._deserialize("OperationStatus", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -244,22 +239,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.OperationStatus].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_by_billing_account_id.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/providers/Microsoft.CostManagement/generateReservationDetailsReport" - } + return LROPoller[_models.OperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) def _by_billing_profile_id_initial( self, billing_account_id: str, billing_profile_id: str, start_date: str, end_date: str, **kwargs: Any - ) -> Optional[_models.OperationStatus]: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -271,50 +264,47 @@ def _by_billing_profile_id_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.OperationStatus]] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_by_billing_profile_id_request( + _request = build_by_billing_profile_id_request( billing_account_id=billing_account_id, billing_profile_id=billing_profile_id, start_date=start_date, end_date=end_date, api_version=api_version, - template_url=self._by_billing_profile_id_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("OperationStatus", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _by_billing_profile_id_initial.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/providers/Microsoft.CostManagement/generateReservationDetailsReport" - } + return deserialized # type: ignore @distributed_trace def begin_by_billing_profile_id( @@ -323,7 +313,7 @@ def begin_by_billing_profile_id( """Generates the reservations details report for provided date range asynchronously by billing profile. The Reservation usage details can be viewed by only certain enterprise roles by default. For more details on the roles see, - https://docs.microsoft.com/azure/cost-management-billing/reservations/reservation-utilization#view-utilization-in-the-azure-portal-with-azure-rbac-access. + https://docs.microsoft.com/en-us/azure/cost-management-billing/reservations/reservation-utilization#view-utilization-in-the-azure-portal-with-azure-rbac-access. .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ @@ -336,14 +326,6 @@ def begin_by_billing_profile_id( :type start_date: str :param end_date: End Date. Required. :type end_date: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of LROPoller that returns either OperationStatus or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.OperationStatus] @@ -369,12 +351,13 @@ def begin_by_billing_profile_id( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("OperationStatus", pipeline_response) + deserialized = self._deserialize("OperationStatus", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -386,14 +369,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.OperationStatus].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_by_billing_profile_id.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}/providers/Microsoft.CostManagement/generateReservationDetailsReport" - } + return LROPoller[_models.OperationStatus]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_operations.py index d227fb63fadc..b259ccb199b6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar +import sys +from typing import Any, Callable, Dict, Iterable, Optional, Type, TypeVar import urllib.parse from azure.core.exceptions import ( @@ -19,16 +20,18 @@ ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -40,7 +43,7 @@ def build_list_request(**kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -78,7 +81,6 @@ def __init__(self, *args, **kwargs): def list(self, **kwargs: Any) -> Iterable["_models.CostManagementOperation"]: """Lists all of the available cost management REST API operations. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either CostManagementOperation or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.costmanagement.models.CostManagementOperation] @@ -90,7 +92,7 @@ def list(self, **kwargs: Any) -> Iterable["_models.CostManagementOperation"]: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.OperationListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -101,14 +103,12 @@ def list(self, **kwargs: Any) -> Iterable["_models.CostManagementOperation"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -120,13 +120,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("OperationListResult", pipeline_response) @@ -136,11 +135,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -152,5 +151,3 @@ def get_next(next_link=None): return pipeline_response return ItemPaged(get_next, extract_data) - - list.metadata = {"url": "/providers/Microsoft.CostManagement/operations"} diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_price_sheet_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_price_sheet_operations.py index 708b3b455e76..a74eb5c7b2b6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_price_sheet_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_price_sheet_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,7 +6,8 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -from typing import Any, Callable, Dict, Optional, TypeVar, Union, cast +import sys +from typing import Any, Callable, Dict, Iterator, Optional, Type, TypeVar, Union, cast from azure.core.exceptions import ( ClientAuthenticationError, @@ -14,12 +15,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat @@ -27,8 +29,11 @@ from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -36,13 +41,13 @@ _SERIALIZER.client_side_validation = False -def build_download_request( +def build_download_by_invoice_request( billing_account_name: str, billing_profile_name: str, invoice_name: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -63,7 +68,7 @@ def build_download_request( "invoiceName": _SERIALIZER.url("invoice_name", invoice_name, "str", pattern=r"[A-Za-z0-9]+"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -74,13 +79,13 @@ def build_download_request( return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) -def build_download_by_billing_profile_request( +def build_download_by_billing_profile_request( # pylint: disable=name-too-long billing_account_name: str, billing_profile_name: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -100,7 +105,37 @@ def build_download_by_billing_profile_request( ), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_download_by_billing_account_request( # pylint: disable=name-too-long + billing_account_id: str, billing_period_name: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingPeriods/{billingPeriodName}/providers/Microsoft.CostManagement/pricesheets/default/download", + ) # pylint: disable=line-too-long + path_format_arguments = { + "billingAccountId": _SERIALIZER.url("billing_account_id", billing_account_id, "str"), + "billingPeriodName": _SERIALIZER.url("billing_period_name", billing_period_name, "str", pattern=r"^[0-9]*$"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -130,10 +165,10 @@ def __init__(self, *args, **kwargs): self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") - def _download_initial( + def _download_by_invoice_initial( self, billing_account_name: str, billing_profile_name: str, invoice_name: str, **kwargs: Any - ) -> Optional[_models.DownloadURL]: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -145,53 +180,50 @@ def _download_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.DownloadURL]] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_download_request( + _request = build_download_by_invoice_request( billing_account_name=billing_account_name, billing_profile_name=billing_profile_name, invoice_name=invoice_name, api_version=api_version, - template_url=self._download_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("DownloadURL", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) response_headers["OData-EntityId"] = self._deserialize("str", response.headers.get("OData-EntityId")) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, deserialized, response_headers) + return cls(pipeline_response, deserialized, response_headers) # type: ignore - return deserialized - - _download_initial.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/invoices/{invoiceName}/providers/Microsoft.CostManagement/pricesheets/default/download" - } + return deserialized # type: ignore @distributed_trace - def begin_download( + def begin_download_by_invoice( self, billing_account_name: str, billing_profile_name: str, invoice_name: str, **kwargs: Any ) -> LROPoller[_models.DownloadURL]: """Gets a URL to download the pricesheet for an invoice. The operation is supported for billing @@ -203,14 +235,6 @@ def begin_download( :type billing_profile_name: str :param invoice_name: The ID that uniquely identifies an invoice. Required. :type invoice_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. :return: An instance of LROPoller that returns either DownloadURL or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.DownloadURL] @@ -225,7 +249,7 @@ def begin_download( lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._download_initial( + raw_result = self._download_by_invoice_initial( billing_account_name=billing_account_name, billing_profile_name=billing_profile_name, invoice_name=invoice_name, @@ -235,12 +259,13 @@ def begin_download( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("DownloadURL", pipeline_response) + deserialized = self._deserialize("DownloadURL", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -252,22 +277,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.DownloadURL].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_download.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/invoices/{invoiceName}/providers/Microsoft.CostManagement/pricesheets/default/download" - } + return LROPoller[_models.DownloadURL]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) def _download_by_billing_profile_initial( self, billing_account_name: str, billing_profile_name: str, **kwargs: Any - ) -> Optional[_models.DownloadURL]: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -279,82 +302,77 @@ def _download_by_billing_profile_initial( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[Optional[_models.DownloadURL]] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_download_by_billing_profile_request( + _request = build_download_by_billing_profile_request( billing_account_name=billing_account_name, billing_profile_name=billing_profile_name, api_version=api_version, - template_url=self._download_by_billing_profile_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None response_headers = {} - if response.status_code == 200: - deserialized = self._deserialize("DownloadURL", pipeline_response) - if response.status_code == 202: response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) response_headers["OData-EntityId"] = self._deserialize("str", response.headers.get("OData-EntityId")) - if cls: - return cls(pipeline_response, deserialized, response_headers) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) - return deserialized + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _download_by_billing_profile_initial.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/providers/Microsoft.CostManagement/pricesheets/default/download" - } + return deserialized # type: ignore @distributed_trace def begin_download_by_billing_profile( self, billing_account_name: str, billing_profile_name: str, **kwargs: Any - ) -> LROPoller[_models.DownloadURL]: + ) -> LROPoller[_models.PricesheetDownloadProperties]: """Gets a URL to download the current month's pricesheet for a billing profile. The operation is supported for billing accounts with agreement type Microsoft Partner Agreement or Microsoft - Customer Agreement.Due to Azure product growth, the Azure price sheet download experience in - this preview version will be updated from a single csv file to a Zip file containing multiple - csv files, each with max 200k records. + Customer Agreement. + + You can use the new 2023-09-01 API version for billing periods January 2023 onwards. Azure + Reserved Instance (RI) pricing is only available through the new version of the API. + + Due to Azure product growth, the Azure price sheet download experience in this preview version + will be updated from a single csv/json file to a Zip file containing multiple csv/json files, + each with max size of 75MB. :param billing_account_name: The ID that uniquely identifies a billing account. Required. :type billing_account_name: str :param billing_profile_name: The ID that uniquely identifies a billing profile. Required. :type billing_profile_name: str - :keyword callable cls: A custom type or function that will be passed the direct response - :keyword str continuation_token: A continuation token to restart a poller from a saved state. - :keyword polling: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a personal polling - strategy. - :paramtype polling: bool or ~azure.core.polling.PollingMethod - :keyword int polling_interval: Default waiting time between two polls for LRO operations if no - Retry-After header is present. - :return: An instance of LROPoller that returns either DownloadURL or the result of - cls(response) - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.DownloadURL] + :return: An instance of LROPoller that returns either PricesheetDownloadProperties or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.PricesheetDownloadProperties] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) - cls: ClsType[_models.DownloadURL] = kwargs.pop("cls", None) + cls: ClsType[_models.PricesheetDownloadProperties] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) @@ -368,12 +386,13 @@ def begin_download_by_billing_profile( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("DownloadURL", pipeline_response) + deserialized = self._deserialize("PricesheetDownloadProperties", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -385,14 +404,152 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.PricesheetDownloadProperties].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore + return LROPoller[_models.PricesheetDownloadProperties]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - begin_download_by_billing_profile.metadata = { - "url": "/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/providers/Microsoft.CostManagement/pricesheets/default/download" - } + def _download_by_billing_account_initial( + self, billing_account_id: str, billing_period_name: str, **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_download_by_billing_account_request( + billing_account_id=billing_account_id, + billing_period_name=billing_period_name, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponseAutoGenerated2, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def begin_download_by_billing_account( + self, billing_account_id: str, billing_period_name: str, **kwargs: Any + ) -> LROPoller[_models.OperationStatusAutoGenerated]: + """Generates the pricesheet for the provided billing period asynchronously based on the Enrollment + ID. This is for Enterprise Agreement customers. + + **Migrate to version 2024-08-01** + + You can use the 2024-08-01 API version with the new URI: + + '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingPeriods/{billingPeriodName}/providers/Microsoft.CostManagement/pricesheets/default/download' + + With a new schema detailed below, the new version of the price sheet provides additional + information and includes prices for Azure Reserved Instances (RI) for the current billing + period. We recommend downloading an Azure Price Sheet for when entering a new billing period if + you would maintain an ongoing record of past Azure Reserved Instance (RI) pricing. + + The EA Azure price sheet is available for billing periods in the past 13 months. To request a + price sheet for a billing period older than 13 months, please contact support. + + The Azure price sheet download experience has been updated from a single .csv file to a zip + file containing multiple .csv files, each with max size of 75MB. The 2023-11-01 version has + been upgraded to use http POST method; details can be found below. + + All versions of the Microsoft.Consumption Azure Price Sheet - Download by Billing Account + (including 2022-06-01, 2021-10-01, 2020-01-01-preview, 2019-10-01, 2019-05-01) are scheduled to + be retired on 01 June 2026 and will no longer be supported after this date. + + :param billing_account_id: BillingAccount ID. Required. + :type billing_account_id: str + :param billing_period_name: Billing Period Name. Required. + :type billing_period_name: str + :return: An instance of LROPoller that returns either OperationStatusAutoGenerated or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.costmanagement.models.OperationStatusAutoGenerated] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.OperationStatusAutoGenerated] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._download_by_billing_account_initial( + billing_account_id=billing_account_id, + billing_period_name=billing_period_name, + api_version=api_version, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("OperationStatusAutoGenerated", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.OperationStatusAutoGenerated].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.OperationStatusAutoGenerated]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_query_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_query_operations.py index 6438c2d581b9..d50b454436e8 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_query_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_query_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload from azure.core.exceptions import ( ClientAuthenticationError, @@ -18,16 +19,18 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -39,7 +42,7 @@ def build_usage_request(scope: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -49,7 +52,7 @@ def build_usage_request(scope: str, **kwargs: Any) -> HttpRequest: "scope": _SERIALIZER.url("scope", scope, "str", skip_quote=True), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -62,7 +65,7 @@ def build_usage_request(scope: str, **kwargs: Any) -> HttpRequest: return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) -def build_usage_by_external_cloud_provider_type_request( +def build_usage_by_external_cloud_provider_type_request( # pylint: disable=name-too-long external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, **kwargs: Any @@ -70,7 +73,7 @@ def build_usage_by_external_cloud_provider_type_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -86,7 +89,7 @@ def build_usage_by_external_cloud_provider_type_request( "externalCloudProviderId": _SERIALIZER.url("external_cloud_provider_id", external_cloud_provider_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -149,7 +152,6 @@ def usage( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: QueryResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult or None :raises ~azure.core.exceptions.HttpResponseError: @@ -157,7 +159,7 @@ def usage( @overload def usage( - self, scope: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, scope: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> Optional[_models.QueryResult]: """Query the usage data for scope defined. @@ -182,11 +184,10 @@ def usage( specific for partners. Required. :type scope: str :param parameters: Parameters supplied to the CreateOrUpdate Query Config operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: QueryResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult or None :raises ~azure.core.exceptions.HttpResponseError: @@ -194,7 +195,7 @@ def usage( @distributed_trace def usage( - self, scope: str, parameters: Union[_models.QueryDefinition, IO], **kwargs: Any + self, scope: str, parameters: Union[_models.QueryDefinition, IO[bytes]], **kwargs: Any ) -> Optional[_models.QueryResult]: """Query the usage data for scope defined. @@ -219,17 +220,13 @@ def usage( specific for partners. Required. :type scope: str :param parameters: Parameters supplied to the CreateOrUpdate Query Config operation. Is either - a QueryDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.QueryDefinition or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + a QueryDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.QueryDefinition or IO[bytes] :return: QueryResult or None or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult or None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -252,22 +249,20 @@ def usage( else: _json = self._serialize.body(parameters, "QueryDefinition") - request = build_usage_request( + _request = build_usage_request( scope=scope, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.usage.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -279,14 +274,12 @@ def usage( deserialized = None if response.status_code == 200: - deserialized = self._deserialize("QueryResult", pipeline_response) + deserialized = self._deserialize("QueryResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - usage.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/query"} + return deserialized # type: ignore @overload def usage_by_external_cloud_provider_type( @@ -318,7 +311,6 @@ def usage_by_external_cloud_provider_type( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: QueryResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult :raises ~azure.core.exceptions.HttpResponseError: @@ -329,7 +321,7 @@ def usage_by_external_cloud_provider_type( self, external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, - parameters: IO, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -350,11 +342,10 @@ def usage_by_external_cloud_provider_type( Required. :type external_cloud_provider_id: str :param parameters: Parameters supplied to the CreateOrUpdate Query Config operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: QueryResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult :raises ~azure.core.exceptions.HttpResponseError: @@ -365,7 +356,7 @@ def usage_by_external_cloud_provider_type( self, external_cloud_provider_type: Union[str, _models.ExternalCloudProviderType], external_cloud_provider_id: str, - parameters: Union[_models.QueryDefinition, IO], + parameters: Union[_models.QueryDefinition, IO[bytes]], **kwargs: Any ) -> _models.QueryResult: """Query the usage data for external cloud provider type defined. @@ -384,17 +375,13 @@ def usage_by_external_cloud_provider_type( Required. :type external_cloud_provider_id: str :param parameters: Parameters supplied to the CreateOrUpdate Query Config operation. Is either - a QueryDefinition type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.QueryDefinition or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + a QueryDefinition type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.QueryDefinition or IO[bytes] :return: QueryResult or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.QueryResult :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -417,23 +404,21 @@ def usage_by_external_cloud_provider_type( else: _json = self._serialize.body(parameters, "QueryDefinition") - request = build_usage_by_external_cloud_provider_type_request( + _request = build_usage_by_external_cloud_provider_type_request( external_cloud_provider_type=external_cloud_provider_type, external_cloud_provider_id=external_cloud_provider_id, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.usage_by_external_cloud_provider_type.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -443,13 +428,9 @@ def usage_by_external_cloud_provider_type( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("QueryResult", pipeline_response) + deserialized = self._deserialize("QueryResult", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - usage_by_external_cloud_provider_type.metadata = { - "url": "/providers/Microsoft.CostManagement/{externalCloudProviderType}/{externalCloudProviderId}/query" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_scheduled_actions_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_scheduled_actions_operations.py index c50ba6872037..650bbfd24ad5 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_scheduled_actions_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_scheduled_actions_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Iterable, Optional, Type, TypeVar, Union, overload import urllib.parse from azure.core.exceptions import ( @@ -20,16 +21,18 @@ ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -41,7 +44,7 @@ def build_list_request(*, filter: Optional[str] = None, **kwargs: Any) -> HttpRe _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -62,7 +65,7 @@ def build_list_by_scope_request(scope: str, *, filter: Optional[str] = None, **k _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -71,7 +74,7 @@ def build_list_by_scope_request(scope: str, *, filter: Optional[str] = None, **k "scope": _SERIALIZER.url("scope", scope, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -88,7 +91,7 @@ def build_create_or_update_request(name: str, *, if_match: Optional[str] = None, _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -98,7 +101,7 @@ def build_create_or_update_request(name: str, *, if_match: Optional[str] = None, "name": _SERIALIZER.url("name", name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -117,7 +120,7 @@ def build_get_request(name: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -126,7 +129,7 @@ def build_get_request(name: str, **kwargs: Any) -> HttpRequest: "name": _SERIALIZER.url("name", name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -141,7 +144,7 @@ def build_delete_request(name: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -150,7 +153,7 @@ def build_delete_request(name: str, **kwargs: Any) -> HttpRequest: "name": _SERIALIZER.url("name", name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -167,7 +170,7 @@ def build_create_or_update_by_scope_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -178,7 +181,7 @@ def build_create_or_update_by_scope_request( "name": _SERIALIZER.url("name", name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -197,7 +200,7 @@ def build_get_by_scope_request(scope: str, name: str, **kwargs: Any) -> HttpRequ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -207,7 +210,7 @@ def build_get_by_scope_request(scope: str, name: str, **kwargs: Any) -> HttpRequ "name": _SERIALIZER.url("name", name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -222,7 +225,7 @@ def build_delete_by_scope_request(scope: str, name: str, **kwargs: Any) -> HttpR _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -232,7 +235,7 @@ def build_delete_by_scope_request(scope: str, name: str, **kwargs: Any) -> HttpR "name": _SERIALIZER.url("name", name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -247,7 +250,7 @@ def build_run_request(name: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -256,7 +259,7 @@ def build_run_request(name: str, **kwargs: Any) -> HttpRequest: "name": _SERIALIZER.url("name", name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -271,7 +274,7 @@ def build_run_by_scope_request(scope: str, name: str, **kwargs: Any) -> HttpRequ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -281,7 +284,7 @@ def build_run_by_scope_request(scope: str, name: str, **kwargs: Any) -> HttpRequ "name": _SERIALIZER.url("name", name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -296,7 +299,7 @@ def build_check_name_availability_request(**kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -314,11 +317,13 @@ def build_check_name_availability_request(**kwargs: Any) -> HttpRequest: return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) -def build_check_name_availability_by_scope_request(scope: str, **kwargs: Any) -> HttpRequest: +def build_check_name_availability_by_scope_request( # pylint: disable=name-too-long + scope: str, **kwargs: Any +) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -328,7 +333,7 @@ def build_check_name_availability_by_scope_request(scope: str, **kwargs: Any) -> "scope": _SERIALIZER.url("scope", scope, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -370,7 +375,6 @@ def list(self, filter: Optional[str] = None, **kwargs: Any) -> Iterable["_models :param filter: May be used to filter scheduled actions by properties/viewId. Supported operator is 'eq'. Default value is None. :type filter: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ScheduledAction or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.costmanagement.models.ScheduledAction] :raises ~azure.core.exceptions.HttpResponseError: @@ -381,7 +385,7 @@ def list(self, filter: Optional[str] = None, **kwargs: Any) -> Iterable["_models api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ScheduledActionListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -392,15 +396,13 @@ def list(self, filter: Optional[str] = None, **kwargs: Any) -> Iterable["_models def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( filter=filter, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -412,13 +414,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("ScheduledActionListResult", pipeline_response) @@ -428,11 +429,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -447,8 +448,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions"} - @distributed_trace def list_by_scope( self, scope: str, filter: Optional[str] = None, **kwargs: Any @@ -479,7 +478,6 @@ def list_by_scope( :param filter: May be used to filter scheduled actions by properties/viewId. Supported operator is 'eq'. Default value is None. :type filter: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ScheduledAction or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.costmanagement.models.ScheduledAction] :raises ~azure.core.exceptions.HttpResponseError: @@ -490,7 +488,7 @@ def list_by_scope( api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ScheduledActionListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -501,16 +499,14 @@ def list_by_scope( def prepare_request(next_link=None): if not next_link: - request = build_list_by_scope_request( + _request = build_list_by_scope_request( scope=scope, filter=filter, api_version=api_version, - template_url=self.list_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -522,13 +518,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("ScheduledActionListResult", pipeline_response) @@ -538,11 +533,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -557,8 +552,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions"} - @overload def create_or_update( self, @@ -582,7 +575,6 @@ def create_or_update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: @@ -592,7 +584,7 @@ def create_or_update( def create_or_update( self, name: str, - scheduled_action: IO, + scheduled_action: IO[bytes], if_match: Optional[str] = None, *, content_type: str = "application/json", @@ -603,7 +595,7 @@ def create_or_update( :param name: Scheduled action name. Required. :type name: str :param scheduled_action: Scheduled action to be created or updated. Required. - :type scheduled_action: IO + :type scheduled_action: IO[bytes] :param if_match: ETag of the Entity. Not required when creating an entity. Optional when updating an entity and can be specified to achieve optimistic concurrency. Default value is None. @@ -611,7 +603,6 @@ def create_or_update( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: @@ -621,7 +612,7 @@ def create_or_update( def create_or_update( self, name: str, - scheduled_action: Union[_models.ScheduledAction, IO], + scheduled_action: Union[_models.ScheduledAction, IO[bytes]], if_match: Optional[str] = None, **kwargs: Any ) -> _models.ScheduledAction: @@ -630,21 +621,17 @@ def create_or_update( :param name: Scheduled action name. Required. :type name: str :param scheduled_action: Scheduled action to be created or updated. Is either a ScheduledAction - type or a IO type. Required. - :type scheduled_action: ~azure.mgmt.costmanagement.models.ScheduledAction or IO + type or a IO[bytes] type. Required. + :type scheduled_action: ~azure.mgmt.costmanagement.models.ScheduledAction or IO[bytes] :param if_match: ETag of the Entity. Not required when creating an entity. Optional when updating an entity and can be specified to achieve optimistic concurrency. Default value is None. :type if_match: str - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -667,23 +654,21 @@ def create_or_update( else: _json = self._serialize.body(scheduled_action, "ScheduledAction") - request = build_create_or_update_request( + _request = build_create_or_update_request( name=name, if_match=if_match, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -693,19 +678,13 @@ def create_or_update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("ScheduledAction", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("ScheduledAction", pipeline_response) + deserialized = self._deserialize("ScheduledAction", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions/{name}"} - @distributed_trace def get(self, name: str, **kwargs: Any) -> _models.ScheduledAction: """Get the private scheduled action by name. @@ -715,12 +694,11 @@ def get(self, name: str, **kwargs: Any) -> _models.ScheduledAction: :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -734,19 +712,17 @@ def get(self, name: str, **kwargs: Any) -> _models.ScheduledAction: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ScheduledAction] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( name=name, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -756,14 +732,12 @@ def get(self, name: str, **kwargs: Any) -> _models.ScheduledAction: error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ScheduledAction", pipeline_response) + deserialized = self._deserialize("ScheduledAction", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions/{name}"} + return deserialized # type: ignore @distributed_trace def delete(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements @@ -774,12 +748,11 @@ def delete(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsist :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -793,19 +766,17 @@ def delete(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsist api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( name=name, api_version=api_version, - template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -816,9 +787,7 @@ def delete(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsist raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions/{name}"} + return cls(pipeline_response, None, {}) # type: ignore @overload def create_or_update_by_scope( @@ -862,7 +831,6 @@ def create_or_update_by_scope( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: @@ -873,7 +841,7 @@ def create_or_update_by_scope( self, scope: str, name: str, - scheduled_action: IO, + scheduled_action: IO[bytes], if_match: Optional[str] = None, *, content_type: str = "application/json", @@ -902,7 +870,7 @@ def create_or_update_by_scope( :param name: Scheduled action name. Required. :type name: str :param scheduled_action: Scheduled action to be created or updated. Required. - :type scheduled_action: IO + :type scheduled_action: IO[bytes] :param if_match: ETag of the Entity. Not required when creating an entity. Optional when updating an entity and can be specified to achieve optimistic concurrency. Default value is None. @@ -910,7 +878,6 @@ def create_or_update_by_scope( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: @@ -921,7 +888,7 @@ def create_or_update_by_scope( self, scope: str, name: str, - scheduled_action: Union[_models.ScheduledAction, IO], + scheduled_action: Union[_models.ScheduledAction, IO[bytes]], if_match: Optional[str] = None, **kwargs: Any ) -> _models.ScheduledAction: @@ -948,21 +915,17 @@ def create_or_update_by_scope( :param name: Scheduled action name. Required. :type name: str :param scheduled_action: Scheduled action to be created or updated. Is either a ScheduledAction - type or a IO type. Required. - :type scheduled_action: ~azure.mgmt.costmanagement.models.ScheduledAction or IO + type or a IO[bytes] type. Required. + :type scheduled_action: ~azure.mgmt.costmanagement.models.ScheduledAction or IO[bytes] :param if_match: ETag of the Entity. Not required when creating an entity. Optional when updating an entity and can be specified to achieve optimistic concurrency. Default value is None. :type if_match: str - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -985,7 +948,7 @@ def create_or_update_by_scope( else: _json = self._serialize.body(scheduled_action, "ScheduledAction") - request = build_create_or_update_by_scope_request( + _request = build_create_or_update_by_scope_request( scope=scope, name=name, if_match=if_match, @@ -993,16 +956,14 @@ def create_or_update_by_scope( content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1012,19 +973,13 @@ def create_or_update_by_scope( error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("ScheduledAction", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("ScheduledAction", pipeline_response) + deserialized = self._deserialize("ScheduledAction", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions/{name}"} - @distributed_trace def get_by_scope(self, scope: str, name: str, **kwargs: Any) -> _models.ScheduledAction: """Get the shared scheduled action from the given scope by name. @@ -1052,12 +1007,11 @@ def get_by_scope(self, scope: str, name: str, **kwargs: Any) -> _models.Schedule :type scope: str :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ScheduledAction or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.ScheduledAction :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -1071,20 +1025,18 @@ def get_by_scope(self, scope: str, name: str, **kwargs: Any) -> _models.Schedule api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ScheduledAction] = kwargs.pop("cls", None) - request = build_get_by_scope_request( + _request = build_get_by_scope_request( scope=scope, name=name, api_version=api_version, - template_url=self.get_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1094,14 +1046,12 @@ def get_by_scope(self, scope: str, name: str, **kwargs: Any) -> _models.Schedule error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ScheduledAction", pipeline_response) + deserialized = self._deserialize("ScheduledAction", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions/{name}"} + return deserialized # type: ignore @distributed_trace def delete_by_scope( # pylint: disable=inconsistent-return-statements @@ -1132,12 +1082,11 @@ def delete_by_scope( # pylint: disable=inconsistent-return-statements :type scope: str :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -1151,20 +1100,18 @@ def delete_by_scope( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_by_scope_request( + _request = build_delete_by_scope_request( scope=scope, name=name, api_version=api_version, - template_url=self.delete_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1175,9 +1122,7 @@ def delete_by_scope( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions/{name}"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace def run(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements @@ -1185,12 +1130,11 @@ def run(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsistent :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -1204,19 +1148,17 @@ def run(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsistent api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_run_request( + _request = build_run_request( name=name, api_version=api_version, - template_url=self.run.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1227,9 +1169,7 @@ def run(self, name: str, **kwargs: Any) -> None: # pylint: disable=inconsistent raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - run.metadata = {"url": "/providers/Microsoft.CostManagement/scheduledActions/{name}/execute"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace def run_by_scope( # pylint: disable=inconsistent-return-statements @@ -1257,12 +1197,11 @@ def run_by_scope( # pylint: disable=inconsistent-return-statements :type scope: str :param name: Scheduled action name. Required. :type name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -1276,20 +1215,18 @@ def run_by_scope( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_run_by_scope_request( + _request = build_run_by_scope_request( scope=scope, name=name, api_version=api_version, - template_url=self.run_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1300,9 +1237,7 @@ def run_by_scope( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - run_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/scheduledActions/{name}/execute"} + return cls(pipeline_response, None, {}) # type: ignore @overload def check_name_availability( @@ -1320,7 +1255,6 @@ def check_name_availability( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: @@ -1328,16 +1262,15 @@ def check_name_availability( @overload def check_name_availability( - self, check_name_availability_request: IO, *, content_type: str = "application/json", **kwargs: Any + self, check_name_availability_request: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> _models.CheckNameAvailabilityResponse: """Checks availability and correctness of the name for a scheduled action. :param check_name_availability_request: Scheduled action to be created or updated. Required. - :type check_name_availability_request: IO + :type check_name_availability_request: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: @@ -1345,23 +1278,19 @@ def check_name_availability( @distributed_trace def check_name_availability( - self, check_name_availability_request: Union[_models.CheckNameAvailabilityRequest, IO], **kwargs: Any + self, check_name_availability_request: Union[_models.CheckNameAvailabilityRequest, IO[bytes]], **kwargs: Any ) -> _models.CheckNameAvailabilityResponse: """Checks availability and correctness of the name for a scheduled action. :param check_name_availability_request: Scheduled action to be created or updated. Is either a - CheckNameAvailabilityRequest type or a IO type. Required. + CheckNameAvailabilityRequest type or a IO[bytes] type. Required. :type check_name_availability_request: - ~azure.mgmt.costmanagement.models.CheckNameAvailabilityRequest or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + ~azure.mgmt.costmanagement.models.CheckNameAvailabilityRequest or IO[bytes] :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -1384,21 +1313,19 @@ def check_name_availability( else: _json = self._serialize.body(check_name_availability_request, "CheckNameAvailabilityRequest") - request = build_check_name_availability_request( + _request = build_check_name_availability_request( api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.check_name_availability.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1408,14 +1335,12 @@ def check_name_availability( error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("CheckNameAvailabilityResponse", pipeline_response) + deserialized = self._deserialize("CheckNameAvailabilityResponse", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - check_name_availability.metadata = {"url": "/providers/Microsoft.CostManagement/checkNameAvailability"} + return deserialized # type: ignore @overload def check_name_availability_by_scope( @@ -1452,7 +1377,6 @@ def check_name_availability_by_scope( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: @@ -1460,7 +1384,12 @@ def check_name_availability_by_scope( @overload def check_name_availability_by_scope( - self, scope: str, check_name_availability_request: IO, *, content_type: str = "application/json", **kwargs: Any + self, + scope: str, + check_name_availability_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any ) -> _models.CheckNameAvailabilityResponse: """Checks availability and correctness of the name for a scheduled action within the given scope. @@ -1483,11 +1412,10 @@ def check_name_availability_by_scope( Required. :type scope: str :param check_name_availability_request: Scheduled action to be created or updated. Required. - :type check_name_availability_request: IO + :type check_name_availability_request: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: @@ -1497,7 +1425,7 @@ def check_name_availability_by_scope( def check_name_availability_by_scope( self, scope: str, - check_name_availability_request: Union[_models.CheckNameAvailabilityRequest, IO], + check_name_availability_request: Union[_models.CheckNameAvailabilityRequest, IO[bytes]], **kwargs: Any ) -> _models.CheckNameAvailabilityResponse: """Checks availability and correctness of the name for a scheduled action within the given scope. @@ -1521,18 +1449,14 @@ def check_name_availability_by_scope( Required. :type scope: str :param check_name_availability_request: Scheduled action to be created or updated. Is either a - CheckNameAvailabilityRequest type or a IO type. Required. + CheckNameAvailabilityRequest type or a IO[bytes] type. Required. :type check_name_availability_request: - ~azure.mgmt.costmanagement.models.CheckNameAvailabilityRequest or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + ~azure.mgmt.costmanagement.models.CheckNameAvailabilityRequest or IO[bytes] :return: CheckNameAvailabilityResponse or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.CheckNameAvailabilityResponse :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -1555,22 +1479,20 @@ def check_name_availability_by_scope( else: _json = self._serialize.body(check_name_availability_request, "CheckNameAvailabilityRequest") - request = build_check_name_availability_by_scope_request( + _request = build_check_name_availability_by_scope_request( scope=scope, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.check_name_availability_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1580,13 +1502,9 @@ def check_name_availability_by_scope( error = self._deserialize.failsafe_deserialize(_models.ErrorResponseWithNestedDetails, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("CheckNameAvailabilityResponse", pipeline_response) + deserialized = self._deserialize("CheckNameAvailabilityResponse", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - check_name_availability_by_scope.metadata = { - "url": "/{scope}/providers/Microsoft.CostManagement/checkNameAvailability" - } + return deserialized # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_settings_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_settings_operations.py new file mode 100644 index 000000000000..647a91714963 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_settings_operations.py @@ -0,0 +1,479 @@ +# pylint: disable=too-many-lines,too-many-statements +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from io import IOBase +import sys +from typing import Any, Callable, Dict, IO, Optional, Type, TypeVar, Union, overload + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.rest import HttpRequest, HttpResponse +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models as _models +from .._serialization import Serializer + +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_list_request(scope: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/{scope}/providers/Microsoft.CostManagement/settings") + path_format_arguments = { + "scope": _SERIALIZER.url("scope", scope, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_or_update_by_scope_request( + scope: str, type: Union[str, _models.SettingType], **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/{scope}/providers/Microsoft.CostManagement/settings/{type}") + path_format_arguments = { + "scope": _SERIALIZER.url("scope", scope, "str"), + "type": _SERIALIZER.url("type", type, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_by_scope_request(scope: str, type: Union[str, _models.SettingType], **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/{scope}/providers/Microsoft.CostManagement/settings/{type}") + path_format_arguments = { + "scope": _SERIALIZER.url("scope", scope, "str"), + "type": _SERIALIZER.url("type", type, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_delete_by_scope_request(scope: str, type: Union[str, _models.SettingType], **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop("template_url", "/{scope}/providers/Microsoft.CostManagement/settings/{type}") + path_format_arguments = { + "scope": _SERIALIZER.url("scope", scope, "str"), + "type": _SERIALIZER.url("type", type, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) + + +class SettingsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.costmanagement.CostManagementClient`'s + :attr:`settings` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client = input_args.pop(0) if input_args else kwargs.pop("client") + self._config = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, scope: str, **kwargs: Any) -> _models.SettingsListResult: + """List all cost management settings in the requested scope. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :return: SettingsListResult or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.SettingsListResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SettingsListResult] = kwargs.pop("cls", None) + + _request = build_list_request( + scope=scope, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SettingsListResult", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def create_or_update_by_scope( + self, + scope: str, + type: Union[str, _models.SettingType], + setting: _models.Setting, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Setting: + """Create or update a setting within the given scope. + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :param setting: Setting to be created or updated. Required. + :type setting: ~azure.mgmt.costmanagement.models.Setting + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: Setting or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Setting + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create_or_update_by_scope( + self, + scope: str, + type: Union[str, _models.SettingType], + setting: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Setting: + """Create or update a setting within the given scope. + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :param setting: Setting to be created or updated. Required. + :type setting: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: Setting or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Setting + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create_or_update_by_scope( + self, + scope: str, + type: Union[str, _models.SettingType], + setting: Union[_models.Setting, IO[bytes]], + **kwargs: Any + ) -> _models.Setting: + """Create or update a setting within the given scope. + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :param setting: Setting to be created or updated. Is either a Setting type or a IO[bytes] type. + Required. + :type setting: ~azure.mgmt.costmanagement.models.Setting or IO[bytes] + :return: Setting or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Setting + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.Setting] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(setting, (IOBase, bytes)): + _content = setting + else: + _json = self._serialize.body(setting, "Setting") + + _request = build_create_or_update_by_scope_request( + scope=scope, + type=type, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Setting", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def get_by_scope(self, scope: str, type: Union[str, _models.SettingType], **kwargs: Any) -> _models.Setting: + """Get the setting from the given scope by name. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :return: Setting or the result of cls(response) + :rtype: ~azure.mgmt.costmanagement.models.Setting + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.Setting] = kwargs.pop("cls", None) + + _request = build_get_by_scope_request( + scope=scope, + type=type, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Setting", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def delete_by_scope( # pylint: disable=inconsistent-return-statements + self, scope: str, type: Union[str, _models.SettingType], **kwargs: Any + ) -> None: + """Delete a setting within the given scope. + + .. seealso:: + - https://docs.microsoft.com/rest/api/cost-management/ + + :param scope: The scope associated with this setting. This includes + 'subscriptions/{subscriptionId}' for subscription scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, + 'providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' + for billing profile scope. Required. + :type scope: str + :param type: Setting type. "taginheritance" Required. + :type type: str or ~azure.mgmt.costmanagement.models.SettingType + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping[int, Type[HttpResponseError]] = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_by_scope_request( + scope=scope, + type=type, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_views_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_views_operations.py index 421a20005715..8c4cbd622281 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_views_operations.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/azure/mgmt/costmanagement/operations/_views_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=too-many-lines,too-many-statements # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,7 +7,8 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- from io import IOBase -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, overload +import sys +from typing import Any, Callable, Dict, IO, Iterable, Optional, Type, TypeVar, Union, overload import urllib.parse from azure.core.exceptions import ( @@ -20,16 +21,18 @@ ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +if sys.version_info >= (3, 9): + from collections.abc import MutableMapping +else: + from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -41,7 +44,7 @@ def build_list_request(**kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -60,7 +63,7 @@ def build_list_by_scope_request(scope: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -69,7 +72,7 @@ def build_list_by_scope_request(scope: str, **kwargs: Any) -> HttpRequest: "scope": _SERIALIZER.url("scope", scope, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -84,7 +87,7 @@ def build_get_request(view_name: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -93,7 +96,7 @@ def build_get_request(view_name: str, **kwargs: Any) -> HttpRequest: "viewName": _SERIALIZER.url("view_name", view_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -108,7 +111,7 @@ def build_create_or_update_request(view_name: str, **kwargs: Any) -> HttpRequest _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -118,7 +121,7 @@ def build_create_or_update_request(view_name: str, **kwargs: Any) -> HttpRequest "viewName": _SERIALIZER.url("view_name", view_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -135,7 +138,7 @@ def build_delete_request(view_name: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -144,7 +147,7 @@ def build_delete_request(view_name: str, **kwargs: Any) -> HttpRequest: "viewName": _SERIALIZER.url("view_name", view_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -159,7 +162,7 @@ def build_get_by_scope_request(scope: str, view_name: str, **kwargs: Any) -> Htt _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -169,7 +172,7 @@ def build_get_by_scope_request(scope: str, view_name: str, **kwargs: Any) -> Htt "viewName": _SERIALIZER.url("view_name", view_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -184,7 +187,7 @@ def build_create_or_update_by_scope_request(scope: str, view_name: str, **kwargs _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -195,7 +198,7 @@ def build_create_or_update_by_scope_request(scope: str, view_name: str, **kwargs "viewName": _SERIALIZER.url("view_name", view_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -212,7 +215,7 @@ def build_delete_by_scope_request(scope: str, view_name: str, **kwargs: Any) -> _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2024-08-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -222,7 +225,7 @@ def build_delete_by_scope_request(scope: str, view_name: str, **kwargs: Any) -> "viewName": _SERIALIZER.url("view_name", view_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -259,7 +262,6 @@ def list(self, **kwargs: Any) -> Iterable["_models.View"]: .. seealso:: - https://docs.microsoft.com/en-us/rest/api/costmanagement/ - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either View or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.costmanagement.models.View] :raises ~azure.core.exceptions.HttpResponseError: @@ -270,7 +272,7 @@ def list(self, **kwargs: Any) -> Iterable["_models.View"]: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ViewListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -281,14 +283,12 @@ def list(self, **kwargs: Any) -> Iterable["_models.View"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -300,13 +300,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("ViewListResult", pipeline_response) @@ -316,11 +315,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -333,8 +332,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list.metadata = {"url": "/providers/Microsoft.CostManagement/views"} - @distributed_trace def list_by_scope(self, scope: str, **kwargs: Any) -> Iterable["_models.View"]: """Lists all views at the given scope. @@ -360,7 +357,6 @@ def list_by_scope(self, scope: str, **kwargs: Any) -> Iterable["_models.View"]: 'providers/Microsoft.CostManagement/externalSubscriptions/{externalSubscriptionName}' for External Subscription scope. Required. :type scope: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either View or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.costmanagement.models.View] :raises ~azure.core.exceptions.HttpResponseError: @@ -371,7 +367,7 @@ def list_by_scope(self, scope: str, **kwargs: Any) -> Iterable["_models.View"]: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ViewListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -382,15 +378,13 @@ def list_by_scope(self, scope: str, **kwargs: Any) -> Iterable["_models.View"]: def prepare_request(next_link=None): if not next_link: - request = build_list_by_scope_request( + _request = build_list_by_scope_request( scope=scope, api_version=api_version, - template_url=self.list_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -402,13 +396,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("ViewListResult", pipeline_response) @@ -418,11 +411,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -435,8 +428,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/views"} - @distributed_trace def get(self, view_name: str, **kwargs: Any) -> _models.View: """Gets the view by view name. @@ -446,12 +437,11 @@ def get(self, view_name: str, **kwargs: Any) -> _models.View: :param view_name: View name. Required. :type view_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -465,19 +455,17 @@ def get(self, view_name: str, **kwargs: Any) -> _models.View: api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.View] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( view_name=view_name, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -487,14 +475,12 @@ def get(self, view_name: str, **kwargs: Any) -> _models.View: error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("View", pipeline_response) + deserialized = self._deserialize("View", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = {"url": "/providers/Microsoft.CostManagement/views/{viewName}"} + return deserialized # type: ignore @overload def create_or_update( @@ -514,7 +500,6 @@ def create_or_update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: @@ -522,7 +507,7 @@ def create_or_update( @overload def create_or_update( - self, view_name: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, view_name: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any ) -> _models.View: """The operation to create or update a view. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -534,18 +519,19 @@ def create_or_update( :param view_name: View name. Required. :type view_name: str :param parameters: Parameters supplied to the CreateOrUpdate View operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace - def create_or_update(self, view_name: str, parameters: Union[_models.View, IO], **kwargs: Any) -> _models.View: + def create_or_update( + self, view_name: str, parameters: Union[_models.View, IO[bytes]], **kwargs: Any + ) -> _models.View: """The operation to create or update a view. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation does not require eTag. @@ -556,17 +542,13 @@ def create_or_update(self, view_name: str, parameters: Union[_models.View, IO], :param view_name: View name. Required. :type view_name: str :param parameters: Parameters supplied to the CreateOrUpdate View operation. Is either a View - type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.View or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.View or IO[bytes] :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -589,22 +571,20 @@ def create_or_update(self, view_name: str, parameters: Union[_models.View, IO], else: _json = self._serialize.body(parameters, "View") - request = build_create_or_update_request( + _request = build_create_or_update_request( view_name=view_name, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -614,19 +594,13 @@ def create_or_update(self, view_name: str, parameters: Union[_models.View, IO], error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("View", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("View", pipeline_response) + deserialized = self._deserialize("View", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update.metadata = {"url": "/providers/Microsoft.CostManagement/views/{viewName}"} - @distributed_trace def delete(self, view_name: str, **kwargs: Any) -> None: # pylint: disable=inconsistent-return-statements """The operation to delete a view. @@ -636,12 +610,11 @@ def delete(self, view_name: str, **kwargs: Any) -> None: # pylint: disable=inco :param view_name: View name. Required. :type view_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -655,19 +628,17 @@ def delete(self, view_name: str, **kwargs: Any) -> None: # pylint: disable=inco api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( view_name=view_name, api_version=api_version, - template_url=self.delete.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -678,9 +649,7 @@ def delete(self, view_name: str, **kwargs: Any) -> None: # pylint: disable=inco raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete.metadata = {"url": "/providers/Microsoft.CostManagement/views/{viewName}"} + return cls(pipeline_response, None, {}) # type: ignore @distributed_trace def get_by_scope(self, scope: str, view_name: str, **kwargs: Any) -> _models.View: @@ -709,12 +678,11 @@ def get_by_scope(self, scope: str, view_name: str, **kwargs: Any) -> _models.Vie :type scope: str :param view_name: View name. Required. :type view_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -728,20 +696,18 @@ def get_by_scope(self, scope: str, view_name: str, **kwargs: Any) -> _models.Vie api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.View] = kwargs.pop("cls", None) - request = build_get_by_scope_request( + _request = build_get_by_scope_request( scope=scope, view_name=view_name, api_version=api_version, - template_url=self.get_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -751,14 +717,12 @@ def get_by_scope(self, scope: str, view_name: str, **kwargs: Any) -> _models.Vie error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("View", pipeline_response) + deserialized = self._deserialize("View", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/views/{viewName}"} + return deserialized # type: ignore @overload def create_or_update_by_scope( @@ -802,7 +766,6 @@ def create_or_update_by_scope( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: @@ -810,7 +773,13 @@ def create_or_update_by_scope( @overload def create_or_update_by_scope( - self, scope: str, view_name: str, parameters: IO, *, content_type: str = "application/json", **kwargs: Any + self, + scope: str, + view_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any ) -> _models.View: """The operation to create or update a view. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -840,11 +809,10 @@ def create_or_update_by_scope( :param view_name: View name. Required. :type view_name: str :param parameters: Parameters supplied to the CreateOrUpdate View operation. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: @@ -852,7 +820,7 @@ def create_or_update_by_scope( @distributed_trace def create_or_update_by_scope( - self, scope: str, view_name: str, parameters: Union[_models.View, IO], **kwargs: Any + self, scope: str, view_name: str, parameters: Union[_models.View, IO[bytes]], **kwargs: Any ) -> _models.View: """The operation to create or update a view. Update operation requires latest eTag to be set in the request. You may obtain the latest eTag by performing a get operation. Create operation @@ -882,17 +850,13 @@ def create_or_update_by_scope( :param view_name: View name. Required. :type view_name: str :param parameters: Parameters supplied to the CreateOrUpdate View operation. Is either a View - type or a IO type. Required. - :type parameters: ~azure.mgmt.costmanagement.models.View or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + type or a IO[bytes] type. Required. + :type parameters: ~azure.mgmt.costmanagement.models.View or IO[bytes] :return: View or the result of cls(response) :rtype: ~azure.mgmt.costmanagement.models.View :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -915,23 +879,21 @@ def create_or_update_by_scope( else: _json = self._serialize.body(parameters, "View") - request = build_create_or_update_by_scope_request( + _request = build_create_or_update_by_scope_request( scope=scope, view_name=view_name, api_version=api_version, content_type=content_type, json=_json, content=_content, - template_url=self.create_or_update_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -941,19 +903,13 @@ def create_or_update_by_scope( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("View", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("View", pipeline_response) + deserialized = self._deserialize("View", pipeline_response.http_response) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - create_or_update_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/views/{viewName}"} - @distributed_trace def delete_by_scope( # pylint: disable=inconsistent-return-statements self, scope: str, view_name: str, **kwargs: Any @@ -983,12 +939,11 @@ def delete_by_scope( # pylint: disable=inconsistent-return-statements :type scope: str :param view_name: View name. Required. :type view_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: None or the result of cls(response) :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping[int, Type[HttpResponseError]] = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -1002,20 +957,18 @@ def delete_by_scope( # pylint: disable=inconsistent-return-statements api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) - request = build_delete_by_scope_request( + _request = build_delete_by_scope_request( scope=scope, view_name=view_name, api_version=api_version, - template_url=self.delete_by_scope.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=_stream, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -1026,6 +979,4 @@ def delete_by_scope( # pylint: disable=inconsistent-return-statements raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) if cls: - return cls(pipeline_response, None, {}) - - delete_by_scope.metadata = {"url": "/{scope}/providers/Microsoft.CostManagement/views/{viewName}"} + return cls(pipeline_response, None, {}) # type: ignore diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_recommendations_by_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_recommendations_by_billing_account.py index 92332e0a8bf2..d6f0a0489bbe 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_recommendations_by_billing_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_recommendations_by_billing_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BenefitRecommendationsByBillingAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitRecommendationsByBillingAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_billing_account.py new file mode 100644 index 000000000000..9006884a0f2f --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_billing_account.py @@ -0,0 +1,46 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python generate_benefit_utilization_summaries_report_by_billing_account.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.generate_benefit_utilization_summaries_report.begin_generate_by_billing_account( + billing_account_id="8099099", + benefit_utilization_summaries_request={ + "endDate": "2022-08-31T00:00:00Z", + "grain": "Daily", + "kind": "Reservation", + "startDate": "2022-06-01T00:00:00Z", + }, + ).result() + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/Async/GenerateBenefitUtilizationSummariesReportByBillingAccount.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_billing_profile.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_billing_profile.py new file mode 100644 index 000000000000..cf3013b3d471 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_billing_profile.py @@ -0,0 +1,47 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python generate_benefit_utilization_summaries_report_by_billing_profile.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.generate_benefit_utilization_summaries_report.begin_generate_by_billing_profile( + billing_account_id="00000000-0000-0000-0000-000000000000", + billing_profile_id="CZSFR-SDFXC-DSDF", + benefit_utilization_summaries_request={ + "endDate": "2022-08-31T00:00:00Z", + "grain": "Daily", + "kind": "Reservation", + "startDate": "2022-06-01T00:00:00Z", + }, + ).result() + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/Async/GenerateBenefitUtilizationSummariesReportByBillingProfile.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_reservation.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_reservation.py new file mode 100644 index 000000000000..3f3ce3d4c8ce --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_reservation.py @@ -0,0 +1,46 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python generate_benefit_utilization_summaries_report_by_reservation.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.generate_benefit_utilization_summaries_report.begin_generate_by_reservation_id( + reservation_order_id="00000000-0000-0000-0000-000000000000", + reservation_id="00000000-0000-0000-0000-000000000000", + benefit_utilization_summaries_request={ + "endDate": "2022-08-31T00:00:00Z", + "grain": "Daily", + "startDate": "2022-06-01T00:00:00Z", + }, + ).result() + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/Async/GenerateBenefitUtilizationSummariesReportByReservation.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_reservation_order.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_reservation_order.py new file mode 100644 index 000000000000..31572f79aed4 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_reservation_order.py @@ -0,0 +1,45 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python generate_benefit_utilization_summaries_report_by_reservation_order.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.generate_benefit_utilization_summaries_report.begin_generate_by_reservation_order_id( + reservation_order_id="00000000-0000-0000-0000-000000000000", + benefit_utilization_summaries_request={ + "endDate": "2022-08-31T00:00:00Z", + "grain": "Daily", + "startDate": "2022-06-01T00:00:00Z", + }, + ).result() + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/Async/GenerateBenefitUtilizationSummariesReportByReservationOrder.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_savings_plan.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_savings_plan.py new file mode 100644 index 000000000000..876dee24252e --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_savings_plan.py @@ -0,0 +1,46 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python generate_benefit_utilization_summaries_report_by_savings_plan.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.generate_benefit_utilization_summaries_report.begin_generate_by_savings_plan_id( + savings_plan_order_id="00000000-0000-0000-0000-000000000000", + savings_plan_id="00000000-0000-0000-0000-000000000000", + benefit_utilization_summaries_request={ + "endDate": "2022-08-31T00:00:00Z", + "grain": "Daily", + "startDate": "2022-06-01T00:00:00Z", + }, + ).result() + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/Async/GenerateBenefitUtilizationSummariesReportBySavingsPlan.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_savings_plan_order.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_savings_plan_order.py new file mode 100644 index 000000000000..350db635cbc8 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/async/generate_benefit_utilization_summaries_report_by_savings_plan_order.py @@ -0,0 +1,45 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python generate_benefit_utilization_summaries_report_by_savings_plan_order.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.generate_benefit_utilization_summaries_report.begin_generate_by_savings_plan_order_id( + savings_plan_order_id="00000000-0000-0000-0000-000000000000", + benefit_utilization_summaries_request={ + "endDate": "2022-08-31T00:00:00Z", + "grain": "Daily", + "startDate": "2022-06-01T00:00:00Z", + }, + ).result() + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/Async/GenerateBenefitUtilizationSummariesReportBySavingsPlanOrder.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_billing_account.py index c09892637945..459588899f51 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_billing_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_billing_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BenefitUtilizationSummaries/SavingsPlan-BillingAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/SavingsPlan-BillingAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_billing_profile.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_billing_profile.py index 83fd2506ae40..afafba229d9a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_billing_profile.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_billing_profile.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -36,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BenefitUtilizationSummaries/SavingsPlan-BillingProfile.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/SavingsPlan-BillingProfile.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_savings_plan_id_monthly.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_savings_plan_id_monthly.py index a3451662d9a5..dc941fef975e 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_savings_plan_id_monthly.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_savings_plan_id_monthly.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -36,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BenefitUtilizationSummaries/SavingsPlan-SavingsPlanId-Monthly.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/SavingsPlan-SavingsPlanId-Monthly.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_savings_plan_order_id_daily.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_savings_plan_order_id_daily.py index 6aa7f30f86ef..2a9fe09d304a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_savings_plan_order_id_daily.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/benefit_utilization_summaries/savings_plan_savings_plan_order_id_daily.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BenefitUtilizationSummaries/SavingsPlan-SavingsPlanOrderId-Daily.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BenefitUtilizationSummaries/SavingsPlan-SavingsPlanOrderId-Daily.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_alerts.py index b5bb07a53325..04ed5c2fd385 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BillingAccountAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BillingAccountAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list.py index f0e45e39ad6c..77eb16e27bfc 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BillingAccountDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BillingAccountDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list_expand_and_top.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list_expand_and_top.py index 874fc420c63d..923e4b76f8ad 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list_expand_and_top.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list_expand_and_top.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BillingAccountDimensionsListExpandAndTop.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BillingAccountDimensionsListExpandAndTop.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list_with_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list_with_filter.py index 02bd4d716cc0..fee9cf212774 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list_with_filter.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_dimensions_list_with_filter.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BillingAccountDimensionsListWithFilter.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BillingAccountDimensionsListWithFilter.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_forecast.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_forecast.py index 1b4628647f41..098d0c8985ed 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_forecast.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_forecast.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -62,6 +63,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BillingAccountForecast.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BillingAccountForecast.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_query.py index a7cae2acc067..96200e9940dc 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BillingAccountQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BillingAccountQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_query_grouping.py index 13b762d01fcf..0961ba3f18df 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_account_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BillingAccountQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BillingAccountQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_profile_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_profile_alerts.py index e3d0e291e3a4..d2a9e37c86ea 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_profile_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_profile_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BillingProfileAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BillingProfileAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_profile_forecast.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_profile_forecast.py index 887aafbcf15e..01a724009724 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_profile_forecast.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/billing_profile_forecast.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -62,6 +63,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/BillingProfileForecast.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/BillingProfileForecast.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/cost/create_or_update_cost_subscription_budget.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/cost/create_or_update_cost_subscription_budget.py new file mode 100644 index 000000000000..f90b512395ca --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/cost/create_or_update_cost_subscription_budget.py @@ -0,0 +1,80 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python create_or_update_cost_subscription_budget.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="subscriptions/00000000-0000-0000-0000-000000000000", + budget_name="TestBudget", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "amount": 100.65, + "category": "Cost", + "filter": { + "and": [ + { + "dimensions": { + "name": "ResourceId", + "operator": "In", + "values": [ + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/Microsoft.Compute/virtualMachines/MSVM2", + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/Microsoft.Compute/virtualMachines/platformcloudplatformGeneric1", + ], + } + }, + {"tags": {"name": "category", "operator": "In", "values": ["Dev", "Prod"]}}, + {"tags": {"name": "department", "operator": "In", "values": ["engineering", "sales"]}}, + ] + }, + "notifications": { + "Actual_GreaterThan_80_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "contactGroups": [ + "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG/providers/microsoft.insights/actionGroups/SampleActionGroup" + ], + "contactRoles": ["Contributor", "Reader"], + "enabled": True, + "locale": "en-us", + "operator": "GreaterThan", + "threshold": 80, + "thresholdType": "Actual", + } + }, + "timeGrain": "Monthly", + "timePeriod": {"endDate": "2024-10-31T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/Cost/CreateOrUpdate-Cost-Subscription-Budget.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule.py new file mode 100644 index 000000000000..d4a2dba5a80f --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule.py @@ -0,0 +1,60 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_account_ea_alert_rule.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="providers/Microsoft.Billing/billingAccounts/123456", + budget_name="TestAlertRule", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "category": "ReservationUtilization", + "filter": {}, + "notifications": { + "Actual_LessThan_99_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "enabled": True, + "frequency": "Weekly", + "locale": "en-us", + "operator": "LessThan", + "threshold": 99, + } + }, + "timeGrain": "Last7Days", + "timePeriod": {"endDate": "2025-04-01T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/ReservationUtilization/EA/BillingAccountEA-AlertRule.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule_reservation_id_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule_reservation_id_filter.py new file mode 100644 index 000000000000..166d675d1542 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule_reservation_id_filter.py @@ -0,0 +1,70 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_account_ea_alert_rule_reservation_id_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="providers/Microsoft.Billing/billingAccounts/123456", + budget_name="TestAlertRule", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "category": "ReservationUtilization", + "filter": { + "dimensions": { + "name": "ReservationId", + "operator": "In", + "values": [ + "00000000-0000-0000-0000-000000000000", + "00000000-0000-0000-0000-000000000001", + "00000000-0000-0000-0000-000000000002", + ], + } + }, + "notifications": { + "Actual_LessThan_99_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "enabled": True, + "frequency": "Weekly", + "locale": "en-us", + "operator": "LessThan", + "threshold": 99, + } + }, + "timeGrain": "Last7Days", + "timePeriod": {"endDate": "2025-04-01T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/ReservationUtilization/EA/BillingAccountEA-AlertRule-ReservationIdFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule_reserved_resource_type_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule_reserved_resource_type_filter.py new file mode 100644 index 000000000000..2ddd2c974ee1 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/ea/billing_account_ea_alert_rule_reserved_resource_type_filter.py @@ -0,0 +1,66 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_account_ea_alert_rule_reserved_resource_type_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="providers/Microsoft.Billing/billingAccounts/123456", + budget_name="TestAlertRule", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "category": "ReservationUtilization", + "filter": { + "dimensions": { + "name": "ReservedResourceType", + "operator": "In", + "values": ["VirtualMachines", "SqlDatabases", "CosmosDb"], + } + }, + "notifications": { + "Actual_LessThan_99_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "enabled": True, + "frequency": "Weekly", + "locale": "en-us", + "operator": "LessThan", + "threshold": 99, + } + }, + "timeGrain": "Last7Days", + "timePeriod": {"endDate": "2025-04-01T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/ReservationUtilization/EA/BillingAccountEA-AlertRule-ReservedResourceTypeFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule.py new file mode 100644 index 000000000000..b8a485b798b5 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule.py @@ -0,0 +1,60 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_profile_alert_rule.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN", + budget_name="TestAlertRule", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "category": "ReservationUtilization", + "filter": {}, + "notifications": { + "Actual_LessThan_99_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "enabled": True, + "frequency": "Daily", + "locale": "en-us", + "operator": "LessThan", + "threshold": 99, + } + }, + "timeGrain": "Last30Days", + "timePeriod": {"endDate": "2025-04-01T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/ReservationUtilization/MCA/BillingProfile-AlertRule.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule_reservation_id_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule_reservation_id_filter.py new file mode 100644 index 000000000000..365b3111fe65 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule_reservation_id_filter.py @@ -0,0 +1,70 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_profile_alert_rule_reservation_id_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN", + budget_name="TestAlertRule", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "category": "ReservationUtilization", + "filter": { + "dimensions": { + "name": "ReservationId", + "operator": "In", + "values": [ + "00000000-0000-0000-0000-000000000000", + "00000000-0000-0000-0000-000000000001", + "00000000-0000-0000-0000-000000000002", + ], + } + }, + "notifications": { + "Actual_LessThan_99_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "enabled": True, + "frequency": "Daily", + "locale": "en-us", + "operator": "LessThan", + "threshold": 99, + } + }, + "timeGrain": "Last30Days", + "timePeriod": {"endDate": "2025-04-01T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/ReservationUtilization/MCA/BillingProfile-AlertRule-ReservationIdFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule_reserved_resource_type_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule_reserved_resource_type_filter.py new file mode 100644 index 000000000000..a4d73bdd0cad --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/billing_profile_alert_rule_reserved_resource_type_filter.py @@ -0,0 +1,66 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_profile_alert_rule_reserved_resource_type_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN", + budget_name="TestAlertRule", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "category": "ReservationUtilization", + "filter": { + "dimensions": { + "name": "ReservedResourceType", + "operator": "In", + "values": ["VirtualMachines", "SqlDatabases", "CosmosDb"], + } + }, + "notifications": { + "Actual_LessThan_99_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "enabled": True, + "frequency": "Daily", + "locale": "en-us", + "operator": "LessThan", + "threshold": 99, + } + }, + "timeGrain": "Last30Days", + "timePeriod": {"endDate": "2025-04-01T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/ReservationUtilization/MCA/BillingProfile-AlertRule-ReservedResourceTypeFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule.py new file mode 100644 index 000000000000..17972d927812 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule.py @@ -0,0 +1,60 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python customer_alert_rule.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444", + budget_name="TestAlertRule", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "category": "ReservationUtilization", + "filter": {}, + "notifications": { + "Actual_LessThan_99_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "enabled": True, + "frequency": "Daily", + "locale": "en-us", + "operator": "LessThan", + "threshold": 99, + } + }, + "timeGrain": "Last30Days", + "timePeriod": {"endDate": "2025-04-01T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/ReservationUtilization/MCA/Customer-AlertRule.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule_reservation_id_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule_reservation_id_filter.py new file mode 100644 index 000000000000..0302f6c2b6c2 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule_reservation_id_filter.py @@ -0,0 +1,70 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python customer_alert_rule_reservation_id_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444", + budget_name="TestAlertRule", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "category": "ReservationUtilization", + "filter": { + "dimensions": { + "name": "ReservationId", + "operator": "In", + "values": [ + "00000000-0000-0000-0000-000000000000", + "00000000-0000-0000-0000-000000000001", + "00000000-0000-0000-0000-000000000002", + ], + } + }, + "notifications": { + "Actual_LessThan_99_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "enabled": True, + "frequency": "Daily", + "locale": "en-us", + "operator": "LessThan", + "threshold": 99, + } + }, + "timeGrain": "Last30Days", + "timePeriod": {"endDate": "2025-04-01T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/ReservationUtilization/MCA/Customer-AlertRule-ReservationIdFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule_reserved_resource_type_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule_reserved_resource_type_filter.py new file mode 100644 index 000000000000..5726b8c74764 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/create_or_update/reservation_utilization/mca/customer_alert_rule_reserved_resource_type_filter.py @@ -0,0 +1,66 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python customer_alert_rule_reserved_resource_type_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.create_or_update( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444", + budget_name="TestAlertRule", + parameters={ + "eTag": '"1d34d016a593709"', + "properties": { + "category": "ReservationUtilization", + "filter": { + "dimensions": { + "name": "ReservedResourceType", + "operator": "In", + "values": ["VirtualMachines", "SqlDatabases", "CosmosDb"], + } + }, + "notifications": { + "Actual_LessThan_99_Percent": { + "contactEmails": ["johndoe@contoso.com", "janesmith@contoso.com"], + "enabled": True, + "frequency": "Daily", + "locale": "en-us", + "operator": "LessThan", + "threshold": 99, + } + }, + "timeGrain": "Last30Days", + "timePeriod": {"endDate": "2025-04-01T00:00:00Z", "startDate": "2023-04-01T00:00:00Z"}, + }, + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/CreateOrUpdate/ReservationUtilization/MCA/Customer-AlertRule-ReservedResourceTypeFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/delete/delete_budget.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/delete/delete_budget.py new file mode 100644 index 000000000000..046497dc179a --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/delete/delete_budget.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python delete_budget.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + client.budgets.delete( + scope="subscriptions/00000000-0000-0000-0000-000000000000", + budget_name="TestBudget", + ) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/Delete/DeleteBudget.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/get/cost/get_cost_budget.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/get/cost/get_cost_budget.py new file mode 100644 index 000000000000..a4e71a4e0c8d --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/get/cost/get_cost_budget.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python get_cost_budget.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.get( + scope="subscriptions/00000000-0000-0000-0000-000000000000", + budget_name="TestBudget", + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/Get/Cost/Get-Cost-Budget.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/get/reservation_utilization/get_reservation_utilization_alert_rule.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/get/reservation_utilization/get_reservation_utilization_alert_rule.py new file mode 100644 index 000000000000..88f06bd9fa48 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/get/reservation_utilization/get_reservation_utilization_alert_rule.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python get_reservation_utilization_alert_rule.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.get( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/KKKK-LLLL-MMM-NNN", + budget_name="TestAlertRule", + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/Get/ReservationUtilization/Get-ReservationUtilization-AlertRule.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/billing_account_budgets_list_ea.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/billing_account_budgets_list_ea.py new file mode 100644 index 000000000000..87c6634ee9ca --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/billing_account_budgets_list_ea.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_account_budgets_list_ea.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/123456", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/EA/BillingAccountBudgetsList-EA.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/billing_account_budgets_list_ea_category_type_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/billing_account_budgets_list_ea_category_type_filter.py new file mode 100644 index 000000000000..e1e95f655915 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/billing_account_budgets_list_ea_category_type_filter.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_account_budgets_list_ea_category_type_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/123456", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/EA/BillingAccountBudgetsList-EA-CategoryTypeFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/department_budgets_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/department_budgets_list.py new file mode 100644 index 000000000000..2ba85fafd5b1 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/department_budgets_list.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python department_budgets_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/123456/departments/789101", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/EA/DepartmentBudgetsList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/enrollment_account_budgets_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/enrollment_account_budgets_list.py new file mode 100644 index 000000000000..7aa9bce04d30 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/ea/enrollment_account_budgets_list.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python enrollment_account_budgets_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/123456/enrollmentAccounts/473845", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/EA/EnrollmentAccountBudgetsList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_account_budgets_list_mca.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_account_budgets_list_mca.py new file mode 100644 index 000000000000..e4d59a066c68 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_account_budgets_list_mca.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_account_budgets_list_mca.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/MCA/BillingAccountBudgetsList-MCA.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_account_budgets_list_mca_category_type_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_account_budgets_list_mca_category_type_filter.py new file mode 100644 index 000000000000..17f553009752 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_account_budgets_list_mca_category_type_filter.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_account_budgets_list_mca_category_type_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/MCA/BillingAccountBudgetsList-MCA-CategoryTypeFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_profile_budgets_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_profile_budgets_list.py new file mode 100644 index 000000000000..2d60f32de0d9 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_profile_budgets_list.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_profile_budgets_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/MYDEVTESTBP", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/MCA/BillingProfileBudgetsList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_profile_budgets_list_category_type_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_profile_budgets_list_category_type_filter.py new file mode 100644 index 000000000000..78b94347f610 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/billing_profile_budgets_list_category_type_filter.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python billing_profile_budgets_list_category_type_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/MYDEVTESTBP", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/MCA/BillingProfileBudgetsList-CategoryTypeFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/customer_budgets_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/customer_budgets_list.py new file mode 100644 index 000000000000..a3662bd6386d --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/customer_budgets_list.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python customer_budgets_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/MCA/CustomerBudgetsList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/customer_budgets_list_category_type_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/customer_budgets_list_category_type_filter.py new file mode 100644 index 000000000000..47b1d5e9469d --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/customer_budgets_list_category_type_filter.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python customer_budgets_list_category_type_filter.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/customers/000000-1111-2222-3333-444444444444", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/MCA/CustomerBudgetsList-CategoryTypeFilter.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/invoice_section_budgets_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/invoice_section_budgets_list.py new file mode 100644 index 000000000000..53bca88abdf7 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/mca/invoice_section_budgets_list.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python invoice_section_budgets_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="providers/Microsoft.Billing/billingAccounts/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj_2023-04-01/billingProfiles/MYDEVTESTBP/invoiceSections/AAAA-BBBB-CCC-DDD", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/MCA/InvoiceSectionBudgetsList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/management_group_budgets_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/management_group_budgets_list.py new file mode 100644 index 000000000000..56e386fb73d1 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/management_group_budgets_list.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python management_group_budgets_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="Microsoft.Management/managementGroups/MYDEVTESTMG", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/RBAC/ManagementGroupBudgetsList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/resource_group_budgets_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/resource_group_budgets_list.py new file mode 100644 index 000000000000..712cc82c758c --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/resource_group_budgets_list.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python resource_group_budgets_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/RBAC/ResourceGroupBudgetsList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/subscription_budgets_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/subscription_budgets_list.py new file mode 100644 index 000000000000..4f82fae1de4c --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/budgets/list/rbac/subscription_budgets_list.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python subscription_budgets_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.budgets.list( + scope="subscriptions/00000000-0000-0000-0000-000000000000", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/Budgets/List/RBAC/SubscriptionBudgetsList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_check_name_availability.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_check_name_availability.py new file mode 100644 index 000000000000..1615d0e925bd --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_check_name_availability.py @@ -0,0 +1,44 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python cost_allocation_rule_check_name_availability.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.cost_allocation_rules.check_name_availability( + billing_account_id="100", + cost_allocation_rule_check_name_availability_request={ + "name": "testRule", + "type": "Microsoft.CostManagement/costAllocationRules", + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/CostAllocationRuleCheckNameAvailability.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_create.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_create.py new file mode 100644 index 000000000000..b4eb5e71aa0a --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_create.py @@ -0,0 +1,63 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python cost_allocation_rule_create.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.cost_allocation_rules.create_or_update( + billing_account_id="100", + rule_name="testRule", + cost_allocation_rule={ + "properties": { + "description": "This is a testRule", + "details": { + "sourceResources": [ + {"name": "ResourceGroupName", "resourceType": "Dimension", "values": ["sampleRG", "secondRG"]} + ], + "targetResources": [ + { + "name": "ResourceGroupName", + "policyType": "FixedProportion", + "resourceType": "Dimension", + "values": [ + {"name": "destinationRG", "percentage": 45}, + {"name": "destinationRG2", "percentage": 54}, + ], + } + ], + }, + "status": "Active", + } + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/CostAllocationRuleCreate.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_create_tag.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_create_tag.py new file mode 100644 index 000000000000..78b521e13cc6 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_create_tag.py @@ -0,0 +1,62 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python cost_allocation_rule_create_tag.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.cost_allocation_rules.create_or_update( + billing_account_id="100", + rule_name="testRule", + cost_allocation_rule={ + "properties": { + "description": "This is a testRule", + "details": { + "sourceResources": [{"name": "category", "resourceType": "Tag", "values": ["devops"]}], + "targetResources": [ + { + "name": "ResourceGroupName", + "policyType": "FixedProportion", + "resourceType": "Dimension", + "values": [ + {"name": "destinationRG", "percentage": 33.33}, + {"name": "destinationRG2", "percentage": 33.33}, + {"name": "destinationRG3", "percentage": 33.34}, + ], + } + ], + }, + "status": "Active", + } + }, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/CostAllocationRuleCreateTag.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_delete.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_delete.py new file mode 100644 index 000000000000..ff2293b4cea2 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_delete.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python cost_allocation_rule_delete.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + client.cost_allocation_rules.delete( + billing_account_id="100", + rule_name="testRule", + ) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/CostAllocationRuleDelete.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_get.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_get.py new file mode 100644 index 000000000000..505fd2bf54f2 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rule_get.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python cost_allocation_rule_get.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.cost_allocation_rules.get( + billing_account_id="100", + rule_name="testRule", + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/CostAllocationRuleGet.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rules_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rules_list.py new file mode 100644 index 000000000000..c5220859e7a0 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_allocation_rules_list.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python cost_allocation_rules_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.cost_allocation_rules.list( + billing_account_id="100", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/CostAllocationRulesList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_details_operation_results_by_subscription_scope.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_details_operation_results_by_subscription_scope.py index 5c2a8daab65e..d95cfbc8d72a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_details_operation_results_by_subscription_scope.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/cost_details_operation_results_by_subscription_scope.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/CostDetailsOperationResultsBySubscriptionScope.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/CostDetailsOperationResultsBySubscriptionScope.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_alerts.py index 88c238b30566..0b78bb4d5557 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/DepartmentAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/DepartmentAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list.py index a38421094702..4fb3da8f56ad 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/DepartmentDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/DepartmentDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list_expand_and_top.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list_expand_and_top.py index 48935633c8ac..07730f7b1d7b 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list_expand_and_top.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list_expand_and_top.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/DepartmentDimensionsListExpandAndTop.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/DepartmentDimensionsListExpandAndTop.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list_with_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list_with_filter.py index 23e65cb1cb0c..894a20d89b74 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list_with_filter.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_dimensions_list_with_filter.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/DepartmentDimensionsListWithFilter.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/DepartmentDimensionsListWithFilter.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_forecast.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_forecast.py index 15b69c4b5200..599fc2474c02 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_forecast.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_forecast.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -62,6 +63,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/DepartmentForecast.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/DepartmentForecast.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_query.py index f31157b94afd..c34ad8f47297 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/DepartmentQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/DepartmentQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_query_grouping.py index 36c7d45875f4..d86b2598454b 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/department_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/DepartmentQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/DepartmentQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/dismiss_resource_group_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/dismiss_resource_group_alerts.py index face8893712c..82ca0f435d17 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/dismiss_resource_group_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/dismiss_resource_group_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/DismissResourceGroupAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/DismissResourceGroupAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/dismiss_subscription_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/dismiss_subscription_alerts.py index 2da152c2d778..424e7c97b5c2 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/dismiss_subscription_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/dismiss_subscription_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/DismissSubscriptionAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/DismissSubscriptionAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/ea_price_sheet_for_billing_period.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/ea_price_sheet_for_billing_period.py new file mode 100644 index 000000000000..60c177b2dc34 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/ea_price_sheet_for_billing_period.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python ea_price_sheet_for_billing_period.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.price_sheet.begin_download_by_billing_account( + billing_account_id="0000000", + billing_period_name="202311", + ).result() + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/EAPriceSheetForBillingPeriod.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_alerts.py index 1e246acd55bb..ecc72d10ec02 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/EnrollmentAccountAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/EnrollmentAccountAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list.py index e58b8e1c6003..19ffa5a45784 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/EnrollmentAccountDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/EnrollmentAccountDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list_expand_and_top.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list_expand_and_top.py index d730beedb0a2..9d2691c8e75a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list_expand_and_top.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list_expand_and_top.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/EnrollmentAccountDimensionsListExpandAndTop.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/EnrollmentAccountDimensionsListExpandAndTop.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list_with_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list_with_filter.py index aa4098802237..0e3775670db6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list_with_filter.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_dimensions_list_with_filter.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/EnrollmentAccountDimensionsListWithFilter.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/EnrollmentAccountDimensionsListWithFilter.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_forecast.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_forecast.py index a418aca1b8b4..839d0112d5e8 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_forecast.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_forecast.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -62,6 +63,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/EnrollmentAccountForecast.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/EnrollmentAccountForecast.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_query.py index b62acd0963eb..a6b8bd691d8b 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/EnrollmentAccountQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/EnrollmentAccountQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_query_grouping.py index 4a49084d6642..97de57aa2893 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/enrollment_account_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/EnrollmentAccountQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/EnrollmentAccountQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_billing_account.py index 24a9fdabca78..78884cbd121f 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_billing_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_billing_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -32,6 +33,8 @@ def main(): scope="providers/Microsoft.Billing/billingAccounts/123456", export_name="TestExport", parameters={ + "identity": {"type": "SystemAssigned"}, + "location": "centralus", "properties": { "definition": { "dataSet": { @@ -54,12 +57,12 @@ def main(): "recurrencePeriod": {"from": "2020-06-01T00:00:00Z", "to": "2020-10-31T00:00:00Z"}, "status": "Active", }, - } + }, }, ) print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportCreateOrUpdateByBillingAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportCreateOrUpdateByBillingAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_department.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_department.py index ae5adf8565d1..8a4952e25d8c 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_department.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_department.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -32,6 +33,8 @@ def main(): scope="providers/Microsoft.Billing/billingAccounts/12/departments/1234", export_name="TestExport", parameters={ + "identity": {"type": "SystemAssigned"}, + "location": "centralus", "properties": { "definition": { "dataSet": { @@ -54,12 +57,12 @@ def main(): "recurrencePeriod": {"from": "2020-06-01T00:00:00Z", "to": "2020-10-31T00:00:00Z"}, "status": "Active", }, - } + }, }, ) print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportCreateOrUpdateByDepartment.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportCreateOrUpdateByDepartment.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_enrollment_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_enrollment_account.py index 259dd8f62917..1bab5774c261 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_enrollment_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_enrollment_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -32,6 +33,8 @@ def main(): scope="providers/Microsoft.Billing/billingAccounts/100/enrollmentAccounts/456", export_name="TestExport", parameters={ + "identity": {"type": "SystemAssigned"}, + "location": "centralus", "properties": { "definition": { "dataSet": { @@ -54,12 +57,12 @@ def main(): "recurrencePeriod": {"from": "2020-06-01T00:00:00Z", "to": "2020-10-31T00:00:00Z"}, "status": "Active", }, - } + }, }, ) print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportCreateOrUpdateByEnrollmentAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportCreateOrUpdateByEnrollmentAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_management_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_management_group.py index a69690f9e8c2..159440622e9c 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_management_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_management_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -32,6 +33,8 @@ def main(): scope="providers/Microsoft.Management/managementGroups/TestMG", export_name="TestExport", parameters={ + "identity": {"type": "SystemAssigned"}, + "location": "centralus", "properties": { "definition": { "dataSet": { @@ -54,12 +57,12 @@ def main(): "recurrencePeriod": {"from": "2020-06-01T00:00:00Z", "to": "2020-10-31T00:00:00Z"}, "status": "Active", }, - } + }, }, ) print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportCreateOrUpdateByManagementGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportCreateOrUpdateByManagementGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_resource_group.py index c8fa59257795..d5409ffbe0de 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -32,6 +33,8 @@ def main(): scope="subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MYDEVTESTRG", export_name="TestExport", parameters={ + "identity": {"type": "SystemAssigned"}, + "location": "centralus", "properties": { "definition": { "dataSet": { @@ -54,12 +57,12 @@ def main(): "recurrencePeriod": {"from": "2020-06-01T00:00:00Z", "to": "2020-10-31T00:00:00Z"}, "status": "Active", }, - } + }, }, ) print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportCreateOrUpdateByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportCreateOrUpdateByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_subscription.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_subscription.py index 997f926419db..4b545e3e472d 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_subscription.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_create_or_update_by_subscription.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -32,6 +33,8 @@ def main(): scope="subscriptions/00000000-0000-0000-0000-000000000000", export_name="TestExport", parameters={ + "identity": {"type": "SystemAssigned"}, + "location": "centralus", "properties": { "definition": { "dataSet": { @@ -54,12 +57,12 @@ def main(): "recurrencePeriod": {"from": "2020-06-01T00:00:00Z", "to": "2020-10-31T00:00:00Z"}, "status": "Active", }, - } + }, }, ) print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportCreateOrUpdateBySubscription.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportCreateOrUpdateBySubscription.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_billing_account.py index 05c045b790fa..eb78877c77a2 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_billing_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_billing_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportDeleteByBillingAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportDeleteByBillingAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_department.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_department.py index ae811025f0a9..15bc6e2360be 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_department.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_department.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportDeleteByDepartment.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportDeleteByDepartment.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_enrollment_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_enrollment_account.py index c108b4b337d1..c41eda3c1636 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_enrollment_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_enrollment_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportDeleteByEnrollmentAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportDeleteByEnrollmentAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_management_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_management_group.py index 4bf2f36a8622..a99f4b487de7 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_management_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_management_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportDeleteByManagementGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportDeleteByManagementGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_resource_group.py index 82229e9bba7c..b784c360b8ae 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportDeleteByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportDeleteByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_subscription.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_subscription.py index 427f2a9f9138..49462ba24feb 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_subscription.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_delete_by_subscription.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportDeleteBySubscription.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportDeleteBySubscription.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_billing_account.py index 8266b9a594d2..1195228bb4d6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_billing_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_billing_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportGetByBillingAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportGetByBillingAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_department.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_department.py index e6aa15d5361c..8677b65ffdd8 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_department.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_department.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportGetByDepartment.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportGetByDepartment.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_enrollment_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_enrollment_account.py index 4960c604686d..57c2d6f02c70 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_enrollment_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_enrollment_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportGetByEnrollmentAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportGetByEnrollmentAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_management_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_management_group.py index ac2e541426fc..f968e7007040 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_management_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_management_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportGetByManagementGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportGetByManagementGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_resource_group.py index 307fb98bd806..c77fd7edc1ed 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportGetByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportGetByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_subscription.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_subscription.py index efbd1e8048b7..ddb07053cb97 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_subscription.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_get_by_subscription.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportGetBySubscription.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportGetBySubscription.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_billing_account.py index 97740984b3de..9180dba9503b 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_billing_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_billing_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunByBillingAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunByBillingAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_department.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_department.py index 64f869360de1..e71da17f2f99 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_department.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_department.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunByDepartment.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunByDepartment.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_enrollment_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_enrollment_account.py index 6e94d8ada049..49befd605d76 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_enrollment_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_enrollment_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunByEnrollmentAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunByEnrollmentAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_management_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_management_group.py index 8b0d53edc4d5..e9de7e20569a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_management_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_management_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunByManagementGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunByManagementGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_resource_group.py index ab862471e963..9c92dd06a3ce 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_subscription.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_subscription.py index 4e61a79b18ac..d6ee0e9357f3 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_subscription.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_by_subscription.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunBySubscription.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunBySubscription.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_billing_account.py index 199740876c6b..97263b5c8dc4 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_billing_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_billing_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunHistoryGetByBillingAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunHistoryGetByBillingAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_department.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_department.py index 380019a2e8e1..11150002bd30 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_department.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_department.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunHistoryGetByDepartment.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunHistoryGetByDepartment.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_enrollment_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_enrollment_account.py index 79922afbc76d..e7d611799d4c 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_enrollment_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_enrollment_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunHistoryGetByEnrollmentAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunHistoryGetByEnrollmentAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_management_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_management_group.py index 37d279c1cd97..ab0ac6dc99fe 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_management_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_management_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunHistoryGetByManagementGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunHistoryGetByManagementGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_resource_group.py index 494201812bf2..30d17e00aad3 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunHistoryGetByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunHistoryGetByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_subscription.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_subscription.py index 4565b72e9911..58cb4717533a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_subscription.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/export_run_history_get_by_subscription.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportRunHistoryGetBySubscription.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportRunHistoryGetBySubscription.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_billing_account.py index 6562d9dddf91..eec1f6e0d550 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_billing_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_billing_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportsGetByBillingAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportsGetByBillingAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_department.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_department.py index e5f7c4444277..45e84d0ff2cf 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_department.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_department.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportsGetByDepartment.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportsGetByDepartment.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_enrollment_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_enrollment_account.py index de0b8d7490a8..54428234d4e0 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_enrollment_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_enrollment_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportsGetByEnrollmentAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportsGetByEnrollmentAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_management_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_management_group.py index 8b78725d765d..63955027d2f3 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_management_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_management_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportsGetByManagementGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportsGetByManagementGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_resource_group.py index b9662dd0ff45..646c5c7f7a14 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportsGetByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportsGetByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_subscription.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_subscription.py index 37fcdbd45b49..8cfe5da7f321 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_subscription.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/exports_get_by_subscription.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExportsGetBySubscription.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExportsGetBySubscription.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_account_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_account_alerts.py index 779eb2320f80..f910864de477 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_account_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_account_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExternalBillingAccountAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExternalBillingAccountAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_account_forecast.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_account_forecast.py index dc1bb420b118..c4ead6cacb07 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_account_forecast.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_account_forecast.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -61,6 +62,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExternalBillingAccountForecast.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExternalBillingAccountForecast.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_accounts_dimensions.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_accounts_dimensions.py index b764fdd3c0ed..4b6b6612a06f 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_accounts_dimensions.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_accounts_dimensions.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -36,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExternalBillingAccountsDimensions.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExternalBillingAccountsDimensions.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_accounts_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_accounts_query.py index 69b7503274a8..f9434e32bca0 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_accounts_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_billing_accounts_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -59,6 +60,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExternalBillingAccountsQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExternalBillingAccountsQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscription_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscription_alerts.py index 24103f6c6562..83c581652316 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscription_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscription_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExternalSubscriptionAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExternalSubscriptionAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscription_forecast.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscription_forecast.py index 39a6ed464e0f..952f5006eec9 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscription_forecast.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscription_forecast.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -61,6 +62,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExternalSubscriptionForecast.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExternalSubscriptionForecast.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscriptions_dimensions.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscriptions_dimensions.py index ff8ef5e75164..3615ae580b51 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscriptions_dimensions.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscriptions_dimensions.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -36,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExternalSubscriptionsDimensions.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExternalSubscriptionsDimensions.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscriptions_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscriptions_query.py index 5879a5230481..c205d413310b 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscriptions_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/external_subscriptions_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -59,6 +60,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ExternalSubscriptionsQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ExternalSubscriptionsQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_account_enterprise_agreement_customer_and_billing_period.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_account_enterprise_agreement_customer_and_billing_period.py index 8fc7ecb2911b..e89e2f74166f 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_account_enterprise_agreement_customer_and_billing_period.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_account_enterprise_agreement_customer_and_billing_period.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateCostDetailsReportByBillingAccountEnterpriseAgreementCustomerAndBillingPeriod.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateCostDetailsReportByBillingAccountEnterpriseAgreementCustomerAndBillingPeriod.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_profile_and_invoice_id.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_profile_and_invoice_id.py index 3cc8d1ae18e2..ad737ee1b77a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_profile_and_invoice_id.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_profile_and_invoice_id.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateCostDetailsReportByBillingProfileAndInvoiceId.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateCostDetailsReportByBillingProfileAndInvoiceId.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_profile_and_invoice_id_and_customer_id.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_profile_and_invoice_id_and_customer_id.py index 7e38e26e351f..dcb35b7f0cfc 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_profile_and_invoice_id_and_customer_id.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_billing_profile_and_invoice_id_and_customer_id.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateCostDetailsReportByBillingProfileAndInvoiceIdAndCustomerId.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateCostDetailsReportByBillingProfileAndInvoiceIdAndCustomerId.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_customer_and_time_period.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_customer_and_time_period.py index 1d9fb4013da7..b30b388f73c6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_customer_and_time_period.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_customer_and_time_period.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateCostDetailsReportByCustomerAndTimePeriod.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateCostDetailsReportByCustomerAndTimePeriod.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_departments_and_time_period.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_departments_and_time_period.py index b7fd59c2d6f0..c694533cd0ad 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_departments_and_time_period.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_departments_and_time_period.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateCostDetailsReportByDepartmentsAndTimePeriod.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateCostDetailsReportByDepartmentsAndTimePeriod.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_enrollment_accounts_and_time_period.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_enrollment_accounts_and_time_period.py index 05857cda0b19..8f150e007067 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_enrollment_accounts_and_time_period.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_enrollment_accounts_and_time_period.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateCostDetailsReportByEnrollmentAccountsAndTimePeriod.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateCostDetailsReportByEnrollmentAccountsAndTimePeriod.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_subscription_and_time_period.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_subscription_and_time_period.py index fa959fac4317..444ec722d8c8 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_subscription_and_time_period.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_cost_details_report_by_subscription_and_time_period.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateCostDetailsReportBySubscriptionAndTimePeriod.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateCostDetailsReportBySubscriptionAndTimePeriod.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_account_legacy_and_billing_period.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_account_legacy_and_billing_period.py index 6c9aba183fb6..0ec22b2d8bad 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_account_legacy_and_billing_period.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_account_legacy_and_billing_period.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateDetailedCostReportByBillingAccountLegacyAndBillingPeriod.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateDetailedCostReportByBillingAccountLegacyAndBillingPeriod.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_profile_and_invoice_id.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_profile_and_invoice_id.py index 171adc5bea17..798400517c51 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_profile_and_invoice_id.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_profile_and_invoice_id.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateDetailedCostReportByBillingProfileAndInvoiceId.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateDetailedCostReportByBillingProfileAndInvoiceId.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_profile_and_invoice_id_and_customer_id.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_profile_and_invoice_id_and_customer_id.py index 66e8751344e3..ba691f594515 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_profile_and_invoice_id_and_customer_id.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_billing_profile_and_invoice_id_and_customer_id.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateDetailedCostReportByBillingProfileAndInvoiceIdAndCustomerId.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateDetailedCostReportByBillingProfileAndInvoiceIdAndCustomerId.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_customer_and_time_period.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_customer_and_time_period.py index 6b4c1c570c67..fff6d0ef89fa 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_customer_and_time_period.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_customer_and_time_period.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateDetailedCostReportByCustomerAndTimePeriod.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateDetailedCostReportByCustomerAndTimePeriod.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_subscription_and_time_period.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_subscription_and_time_period.py index 002c901d4c44..2d2d5848b04d 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_subscription_and_time_period.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_by_subscription_and_time_period.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateDetailedCostReportBySubscriptionAndTimePeriod.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateDetailedCostReportBySubscriptionAndTimePeriod.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_operation_results_by_subscription_scope.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_operation_results_by_subscription_scope.py index ad52d818c68e..fde22a40fd91 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_operation_results_by_subscription_scope.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_operation_results_by_subscription_scope.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateDetailedCostReportOperationResultsBySubscriptionScope.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateDetailedCostReportOperationResultsBySubscriptionScope.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_operation_status_by_subscription_scope.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_operation_status_by_subscription_scope.py index faf3c338f455..6368a0001137 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_operation_status_by_subscription_scope.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_detailed_cost_report_operation_status_by_subscription_scope.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateDetailedCostReportOperationStatusBySubscriptionScope.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateDetailedCostReportOperationStatusBySubscriptionScope.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_reservation_details_report_by_billing_account.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_reservation_details_report_by_billing_account.py index 5cbf1f685c89..fba2ff179617 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_reservation_details_report_by_billing_account.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_reservation_details_report_by_billing_account.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateReservationDetailsReportByBillingAccount.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateReservationDetailsReportByBillingAccount.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_reservation_details_report_by_billing_profile.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_reservation_details_report_by_billing_profile.py index 29acfba80850..81742fc5c3a0 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_reservation_details_report_by_billing_profile.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/generate_reservation_details_report_by_billing_profile.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -37,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/GenerateReservationDetailsReportByBillingProfile.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/GenerateReservationDetailsReportByBillingProfile.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/invoice_section_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/invoice_section_alerts.py index 24be92520b5e..9c37c63b5da2 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/invoice_section_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/invoice_section_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/InvoiceSectionAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/InvoiceSectionAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/invoice_section_forecast.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/invoice_section_forecast.py index 5ca0635445f2..104526718689 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/invoice_section_forecast.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/invoice_section_forecast.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -62,6 +63,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/InvoiceSectionForecast.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/InvoiceSectionForecast.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list.py index a57a6252f33b..24fbba214fb0 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ManagementGroupDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ManagementGroupDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list_expand_and_top.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list_expand_and_top.py index fd618f059528..9d05c5df5586 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list_expand_and_top.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list_expand_and_top.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ManagementGroupDimensionsListExpandAndTop.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ManagementGroupDimensionsListExpandAndTop.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list_with_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list_with_filter.py index d6624fb9d858..0736c2dd6961 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list_with_filter.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_dimensions_list_with_filter.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ManagementGroupDimensionsListWithFilter.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ManagementGroupDimensionsListWithFilter.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_query.py index 259ead41ae0e..ba5898a8c87e 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ManagementGroupQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ManagementGroupQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_query_grouping.py index fda6bddcc595..e2eb914982bd 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/management_group_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ManagementGroupQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ManagementGroupQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list.py index 9f7cba047e65..3b8105c1ccd2 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingAccountDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingAccountDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list_expand_and_top.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list_expand_and_top.py index 659323eb7296..fcd3e270b3b2 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list_expand_and_top.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list_expand_and_top.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingAccountDimensionsListExpandAndTop.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingAccountDimensionsListExpandAndTop.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list_with_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list_with_filter.py index 0f16db5f30bb..497e0fa5e2e7 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list_with_filter.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_dimensions_list_with_filter.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingAccountDimensionsListWithFilter.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingAccountDimensionsListWithFilter.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_query.py index 7c8456bba766..d47b08991f61 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingAccountQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingAccountQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_query_grouping.py index 3e3dffe50f13..61623caf7ee6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_account_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingAccountQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingAccountQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list.py index f4b4e44b51d1..f8205711d823 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingProfileDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingProfileDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list_expand_and_top.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list_expand_and_top.py index 801c2ef43317..b7a80c93ea08 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list_expand_and_top.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list_expand_and_top.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingProfileDimensionsListExpandAndTop.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingProfileDimensionsListExpandAndTop.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list_with_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list_with_filter.py index ed2286ccfe72..104015a6e937 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list_with_filter.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_dimensions_list_with_filter.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingProfileDimensionsListWithFilter.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingProfileDimensionsListWithFilter.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_query.py index bd56472dcdbb..0626bf4976df 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingProfileQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingProfileQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_query_grouping.py index cacb2c21e4d5..0e19f6408c34 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_billing_profile_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCABillingProfileQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCABillingProfileQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list.py index 16ca7b1798a2..091a7245de5a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCACustomerDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCACustomerDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list_expand_and_top.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list_expand_and_top.py index b941fb680e48..6ba371951e3f 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list_expand_and_top.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list_expand_and_top.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCACustomerDimensionsListExpandAndTop.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCACustomerDimensionsListExpandAndTop.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list_with_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list_with_filter.py index 498fb66387df..ae1b9e26b96b 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list_with_filter.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_dimensions_list_with_filter.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCACustomerDimensionsListWithFilter.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCACustomerDimensionsListWithFilter.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_query.py index 4dcb6efde3d4..8639d3358ef4 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCACustomerQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCACustomerQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_query_grouping.py index c4c0ff727c0a..f89df714d69f 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_customer_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCACustomerQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCACustomerQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list.py index 11b68a17f4d4..5d1fee479bc3 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCAInvoiceSectionDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCAInvoiceSectionDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list_expand_and_top.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list_expand_and_top.py index e449f04d320c..c46dae3515c0 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list_expand_and_top.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list_expand_and_top.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCAInvoiceSectionDimensionsListExpandAndTop.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCAInvoiceSectionDimensionsListExpandAndTop.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list_with_filter.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list_with_filter.py index 14b352dfb098..02bda2a6933c 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list_with_filter.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_dimensions_list_with_filter.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCAInvoiceSectionDimensionsListWithFilter.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCAInvoiceSectionDimensionsListWithFilter.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_query.py index 7a472df6af05..ed77314d996d 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCAInvoiceSectionQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCAInvoiceSectionQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_query_grouping.py index 2030ca2f13a1..133db4b30f71 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/mca_invoice_section_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/MCAInvoiceSectionQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/MCAInvoiceSectionQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/operation_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/operation_list.py index 6c325487a5b9..1a01085199a6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/operation_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/operation_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -33,6 +34,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/OperationList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/OperationList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/pricesheet_download.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/pricesheet_download.py index 2450cd629150..d81b40212f10 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/pricesheet_download.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/pricesheet_download.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -28,7 +29,7 @@ def main(): credential=DefaultAzureCredential(), ) - response = client.price_sheet.begin_download( + response = client.price_sheet.begin_download_by_invoice( billing_account_name="7c05a543-80ff-571e-9f98-1063b3b53cf2:99ad03ad-2d1b-4889-a452-090ad407d25f_2019-05-31", billing_profile_name="2USN-TPCD-BG7-TGB", invoice_name="T000940677", @@ -36,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/PricesheetDownload.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/PricesheetDownload.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/pricesheet_download_by_billing_profile.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/pricesheet_download_by_billing_profile.py index e6a64be2fa83..fafda1e8c716 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/pricesheet_download_by_billing_profile.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/pricesheet_download_by_billing_profile.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/PricesheetDownloadByBillingProfile.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/PricesheetDownloadByBillingProfile.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view.py index 506133cc0ef2..6c347d192116 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/PrivateView.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/PrivateView.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_create_or_update.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_create_or_update.py index 5b4bfb8a3143..1882097db333 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_create_or_update.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_create_or_update.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -66,6 +67,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/PrivateViewCreateOrUpdate.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/PrivateViewCreateOrUpdate.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_delete.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_delete.py index cc5ae3b919e1..48314182e537 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_delete.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_delete.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -33,6 +34,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/PrivateViewDelete.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/PrivateViewDelete.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_list.py index ff5ce767ac30..601ae8761ed6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/private_view_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -33,6 +34,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/PrivateViewList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/PrivateViewList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_alerts.py index 4d2c8998f9a0..e1d865b8f04a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ResourceGroupAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ResourceGroupAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_dimensions_list.py index d8c4c9543dc6..82b4199a9568 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ResourceGroupDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ResourceGroupDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_forecast.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_forecast.py index 4c7ea0276418..9ff555f1a292 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_forecast.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_forecast.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -62,6 +63,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ResourceGroupForecast.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ResourceGroupForecast.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_query.py index e4556d516b5f..ce48d5f7eedb 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ResourceGroupQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ResourceGroupQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_query_grouping.py index 1d63d0bafb57..503d859def63 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/resource_group_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ResourceGroupQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ResourceGroupQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/check_name_availabilityprivatescheduled_action.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/check_name_availabilityprivatescheduled_action.py index 3fe817df9a29..ac99b2f26c94 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/check_name_availabilityprivatescheduled_action.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/check_name_availabilityprivatescheduled_action.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/checkNameAvailability-private-scheduledAction.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/checkNameAvailability-private-scheduledAction.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/check_name_availabilitysharedscheduled_action.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/check_name_availabilitysharedscheduled_action.py index 3527687cfd09..1186312161ca 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/check_name_availabilitysharedscheduled_action.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/check_name_availabilitysharedscheduled_action.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/checkNameAvailability-shared-scheduledAction.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/checkNameAvailability-shared-scheduledAction.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioncreate_or_updateprivate.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioncreate_or_updateprivate.py index eccd776b189f..c6d5d1d472d6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioncreate_or_updateprivate.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioncreate_or_updateprivate.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -51,6 +52,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledAction-createOrUpdate-private.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledAction-createOrUpdate-private.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioncreate_or_updateshared.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioncreate_or_updateshared.py index 957b8e9f1f5d..8d772e1659bf 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioncreate_or_updateshared.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioncreate_or_updateshared.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -53,6 +54,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledAction-createOrUpdate-shared.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledAction-createOrUpdate-shared.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiondeleteprivate.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiondeleteprivate.py index 9f37bab8ab05..491ad1b4f8dd 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiondeleteprivate.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiondeleteprivate.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -33,6 +34,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledAction-delete-private.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledAction-delete-private.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiondeleteshared.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiondeleteshared.py index b13e2b926cb2..3c11489db34d 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiondeleteshared.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiondeleteshared.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledAction-delete-shared.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledAction-delete-shared.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiongetprivate.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiongetprivate.py index baf04b00199f..aad35614449c 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiongetprivate.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiongetprivate.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledAction-get-private.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledAction-get-private.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiongetshared.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiongetshared.py index b21a8394b3cf..a0ded9790399 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiongetshared.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actiongetshared.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledAction-get-shared.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledAction-get-shared.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioninsight_alertcreate_or_updateshared.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioninsight_alertcreate_or_updateshared.py index fa047b3903d5..e4385e42847c 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioninsight_alertcreate_or_updateshared.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actioninsight_alertcreate_or_updateshared.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -52,6 +53,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledAction-insightAlert-createOrUpdate-shared.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledAction-insightAlert-createOrUpdate-shared.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionsend_nowprivate.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionsend_nowprivate.py index 602e727e9ef5..cdc94d5788b9 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionsend_nowprivate.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionsend_nowprivate.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -33,6 +34,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledAction-sendNow-private.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledAction-sendNow-private.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionsend_nowshared.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionsend_nowshared.py index 72401f901922..2fe9566d826a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionsend_nowshared.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionsend_nowshared.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledAction-sendNow-shared.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledAction-sendNow-shared.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslist_with_filterprivate.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslist_with_filterprivate.py index 229644b5997f..f6097f1fcfb1 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslist_with_filterprivate.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslist_with_filterprivate.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -33,6 +34,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledActions-listWithFilter-private.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledActions-listWithFilter-private.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslist_with_filtershared.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslist_with_filtershared.py index 9815805b19a2..67d5e44818ac 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslist_with_filtershared.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslist_with_filtershared.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledActions-listWithFilter-shared.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledActions-listWithFilter-shared.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslistprivate.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslistprivate.py index 7e1bb07a89f8..40efa2211318 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslistprivate.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslistprivate.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -33,6 +34,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledActions-list-private.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledActions-list-private.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslistshared.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslistshared.py index 1ce7057cf63c..f460cea6da8e 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslistshared.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/scheduled_actions/scheduled_actionslistshared.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/scheduledActions/scheduledActions-list-shared.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/scheduledActions/scheduledActions-list-shared.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingdelete.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingdelete.py new file mode 100644 index 000000000000..eb36a2207c54 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingdelete.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python settingdelete.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + client.settings.delete_by_scope( + scope="subscriptions/00000000-0000-0000-0000-000000000000", + type="taginheritance", + ) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/setting-delete.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingget.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingget.py new file mode 100644 index 000000000000..68a7d10a69f9 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingget.py @@ -0,0 +1,41 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python settingget.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.settings.get_by_scope( + scope="subscriptions/00000000-0000-0000-0000-000000000000", + type="taginheritance", + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/setting-get.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settings_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settings_list.py new file mode 100644 index 000000000000..eed8cb21befe --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settings_list.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python settings_list.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.settings.list( + scope="subscriptions/00000000-0000-0000-0000-000000000000", + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/settingsList.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingscreate_or_update.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingscreate_or_update.py new file mode 100644 index 000000000000..d5aa0c1955b4 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/settingscreate_or_update.py @@ -0,0 +1,42 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from azure.identity import DefaultAzureCredential + +from azure.mgmt.costmanagement import CostManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-costmanagement +# USAGE + python settingscreate_or_update.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = CostManagementClient( + credential=DefaultAzureCredential(), + ) + + response = client.settings.create_or_update_by_scope( + scope="subscriptions/00000000-0000-0000-0000-000000000000", + type="taginheritance", + setting={"kind": "taginheritance", "properties": {"preferContainerTags": False}}, + ) + print(response) + + +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/settings-createOrUpdate.json +if __name__ == "__main__": + main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/single_resource_group_alert.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/single_resource_group_alert.py index 9d9f5742c791..139c424ed122 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/single_resource_group_alert.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/single_resource_group_alert.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/SingleResourceGroupAlert.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/SingleResourceGroupAlert.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/single_subscription_alert.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/single_subscription_alert.py index 3a504fe6fdb2..5894401071b6 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/single_subscription_alert.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/single_subscription_alert.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/SingleSubscriptionAlert.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/SingleSubscriptionAlert.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_alerts.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_alerts.py index 3402e29b0f72..968c265c493a 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_alerts.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_alerts.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/SubscriptionAlerts.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/SubscriptionAlerts.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_dimensions_list.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_dimensions_list.py index 7c82f57ea2ff..5a848a252ebd 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_dimensions_list.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_dimensions_list.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/SubscriptionDimensionsList.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/SubscriptionDimensionsList.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_forecast.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_forecast.py index 63c6ba54de7c..7061521e299c 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_forecast.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_forecast.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -62,6 +63,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/SubscriptionForecast.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/SubscriptionForecast.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_query.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_query.py index a80a9cb721c8..27e18cc09a70 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_query.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_query.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -58,6 +59,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/SubscriptionQuery.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/SubscriptionQuery.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_query_grouping.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_query_grouping.py index 90f56b4f701e..53f07d083256 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_query_grouping.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/subscription_query_grouping.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -43,6 +44,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/SubscriptionQueryGrouping.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/SubscriptionQueryGrouping.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_by_resource_group.py index 8ebf3ed7deec..e0110b368dd7 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ViewByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ViewByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_create_or_update_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_create_or_update_by_resource_group.py index 0c0f6a148b5b..cb6603b21689 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_create_or_update_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_create_or_update_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -67,6 +68,6 @@ def main(): print(response) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ViewCreateOrUpdateByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ViewCreateOrUpdateByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_delete_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_delete_by_resource_group.py index 351d43f8c2f8..2f3d9990e59e 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_delete_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_delete_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -34,6 +35,6 @@ def main(): ) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ViewDeleteByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ViewDeleteByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_list_by_resource_group.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_list_by_resource_group.py index 13608bc5eb00..5a0286745172 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_list_by_resource_group.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_samples/view_list_by_resource_group.py @@ -7,6 +7,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.costmanagement import CostManagementClient """ @@ -35,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2022-10-01/examples/ViewListByResourceGroup.json +# x-ms-original-file: specification/cost-management/resource-manager/Microsoft.CostManagement/stable/2024-08-01/examples/ViewListByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/conftest.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/conftest.py new file mode 100644 index 000000000000..a68c3a051359 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/conftest.py @@ -0,0 +1,35 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import os +import pytest +from dotenv import load_dotenv +from devtools_testutils import ( + test_proxy, + add_general_regex_sanitizer, + add_body_key_sanitizer, + add_header_regex_sanitizer, +) + +load_dotenv() + + +# aovid record sensitive identity information in recordings +@pytest.fixture(scope="session", autouse=True) +def add_sanitizers(test_proxy): + costmanagement_subscription_id = os.environ.get("AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000") + costmanagement_tenant_id = os.environ.get("AZURE_TENANT_ID", "00000000-0000-0000-0000-000000000000") + costmanagement_client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000") + costmanagement_client_secret = os.environ.get("AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=costmanagement_subscription_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=costmanagement_tenant_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=costmanagement_client_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=costmanagement_client_secret, value="00000000-0000-0000-0000-000000000000") + + add_header_regex_sanitizer(key="Set-Cookie", value="[set-cookie;]") + add_header_regex_sanitizer(key="Cookie", value="cookie;") + add_body_key_sanitizer(json_path="$..access_token", value="access_token") diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_alerts_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_alerts_operations.py new file mode 100644 index 000000000000..ee5d1a0e78e9 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_alerts_operations.py @@ -0,0 +1,102 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementAlertsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.alerts.list( + scope="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get(self, resource_group): + response = self.client.alerts.get( + scope="str", + alert_id="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_dismiss(self, resource_group): + response = self.client.alerts.dismiss( + scope="str", + alert_id="str", + parameters={ + "closeTime": "str", + "costEntityId": "str", + "creationTime": "str", + "definition": {"category": "str", "criteria": "str", "type": "str"}, + "description": "str", + "details": { + "amount": 0.0, + "companyName": "str", + "contactEmails": ["str"], + "contactGroups": ["str"], + "contactRoles": ["str"], + "currentSpend": 0.0, + "departmentName": "str", + "enrollmentEndDate": "str", + "enrollmentNumber": "str", + "enrollmentStartDate": "str", + "invoicingThreshold": 0.0, + "meterFilter": [{}], + "operator": "str", + "overridingAlert": "str", + "periodStartDate": "str", + "resourceFilter": [{}], + "resourceGroupFilter": [{}], + "tagFilter": {}, + "threshold": 0.0, + "timeGrainType": "str", + "triggeredBy": "str", + "unit": "str", + }, + "modificationTime": "str", + "source": "str", + "status": "str", + "statusModificationTime": "str", + "statusModificationUserName": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list_external(self, resource_group): + response = self.client.alerts.list_external( + external_cloud_provider_type="str", + external_cloud_provider_id="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_alerts_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_alerts_operations_async.py new file mode 100644 index 000000000000..e72786d30a61 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_alerts_operations_async.py @@ -0,0 +1,103 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementAlertsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = await self.client.alerts.list( + scope="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get(self, resource_group): + response = await self.client.alerts.get( + scope="str", + alert_id="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_dismiss(self, resource_group): + response = await self.client.alerts.dismiss( + scope="str", + alert_id="str", + parameters={ + "closeTime": "str", + "costEntityId": "str", + "creationTime": "str", + "definition": {"category": "str", "criteria": "str", "type": "str"}, + "description": "str", + "details": { + "amount": 0.0, + "companyName": "str", + "contactEmails": ["str"], + "contactGroups": ["str"], + "contactRoles": ["str"], + "currentSpend": 0.0, + "departmentName": "str", + "enrollmentEndDate": "str", + "enrollmentNumber": "str", + "enrollmentStartDate": "str", + "invoicingThreshold": 0.0, + "meterFilter": [{}], + "operator": "str", + "overridingAlert": "str", + "periodStartDate": "str", + "resourceFilter": [{}], + "resourceGroupFilter": [{}], + "tagFilter": {}, + "threshold": 0.0, + "timeGrainType": "str", + "triggeredBy": "str", + "unit": "str", + }, + "modificationTime": "str", + "source": "str", + "status": "str", + "statusModificationTime": "str", + "statusModificationUserName": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list_external(self, resource_group): + response = await self.client.alerts.list_external( + external_cloud_provider_type="str", + external_cloud_provider_id="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_recommendations_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_recommendations_operations.py new file mode 100644 index 000000000000..eb43ab180553 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_recommendations_operations.py @@ -0,0 +1,30 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementBenefitRecommendationsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.benefit_recommendations.list( + billing_scope="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_recommendations_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_recommendations_operations_async.py new file mode 100644 index 000000000000..71c3f9370096 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_recommendations_operations_async.py @@ -0,0 +1,31 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementBenefitRecommendationsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = self.client.benefit_recommendations.list( + billing_scope="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_utilization_summaries_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_utilization_summaries_operations.py new file mode 100644 index 000000000000..5951e09871ee --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_utilization_summaries_operations.py @@ -0,0 +1,65 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementBenefitUtilizationSummariesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list_by_billing_account_id(self, resource_group): + response = self.client.benefit_utilization_summaries.list_by_billing_account_id( + billing_account_id="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list_by_billing_profile_id(self, resource_group): + response = self.client.benefit_utilization_summaries.list_by_billing_profile_id( + billing_account_id="str", + billing_profile_id="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list_by_savings_plan_order(self, resource_group): + response = self.client.benefit_utilization_summaries.list_by_savings_plan_order( + savings_plan_order_id="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list_by_savings_plan_id(self, resource_group): + response = self.client.benefit_utilization_summaries.list_by_savings_plan_id( + savings_plan_order_id="str", + savings_plan_id="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_utilization_summaries_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_utilization_summaries_operations_async.py new file mode 100644 index 000000000000..8e4fca06f142 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_benefit_utilization_summaries_operations_async.py @@ -0,0 +1,66 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementBenefitUtilizationSummariesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list_by_billing_account_id(self, resource_group): + response = self.client.benefit_utilization_summaries.list_by_billing_account_id( + billing_account_id="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list_by_billing_profile_id(self, resource_group): + response = self.client.benefit_utilization_summaries.list_by_billing_profile_id( + billing_account_id="str", + billing_profile_id="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list_by_savings_plan_order(self, resource_group): + response = self.client.benefit_utilization_summaries.list_by_savings_plan_order( + savings_plan_order_id="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list_by_savings_plan_id(self, resource_group): + response = self.client.benefit_utilization_summaries.list_by_savings_plan_id( + savings_plan_order_id="str", + savings_plan_id="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_budgets_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_budgets_operations.py new file mode 100644 index 000000000000..662851570d59 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_budgets_operations.py @@ -0,0 +1,101 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementBudgetsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.budgets.list( + scope="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get(self, resource_group): + response = self.client.budgets.get( + scope="str", + budget_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_create_or_update(self, resource_group): + response = self.client.budgets.create_or_update( + scope="str", + budget_name="str", + parameters={ + "amount": 0.0, + "category": "str", + "currentSpend": {"amount": 0.0, "unit": "str"}, + "eTag": "str", + "filter": { + "and": [ + { + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + } + ], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "forecastSpend": {"amount": 0.0, "unit": "str"}, + "id": "str", + "name": "str", + "notifications": { + "str": { + "contactEmails": ["str"], + "enabled": bool, + "operator": "str", + "threshold": 0.0, + "contactGroups": ["str"], + "contactRoles": ["str"], + "frequency": "str", + "locale": "str", + "thresholdType": "Actual", + } + }, + "timeGrain": "str", + "timePeriod": {"startDate": "2020-02-20 00:00:00", "endDate": "2020-02-20 00:00:00"}, + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_delete(self, resource_group): + response = self.client.budgets.delete( + scope="str", + budget_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_budgets_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_budgets_operations_async.py new file mode 100644 index 000000000000..051710ead268 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_budgets_operations_async.py @@ -0,0 +1,102 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementBudgetsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = self.client.budgets.list( + scope="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get(self, resource_group): + response = await self.client.budgets.get( + scope="str", + budget_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_create_or_update(self, resource_group): + response = await self.client.budgets.create_or_update( + scope="str", + budget_name="str", + parameters={ + "amount": 0.0, + "category": "str", + "currentSpend": {"amount": 0.0, "unit": "str"}, + "eTag": "str", + "filter": { + "and": [ + { + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + } + ], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "forecastSpend": {"amount": 0.0, "unit": "str"}, + "id": "str", + "name": "str", + "notifications": { + "str": { + "contactEmails": ["str"], + "enabled": bool, + "operator": "str", + "threshold": 0.0, + "contactGroups": ["str"], + "contactRoles": ["str"], + "frequency": "str", + "locale": "str", + "thresholdType": "Actual", + } + }, + "timeGrain": "str", + "timePeriod": {"startDate": "2020-02-20 00:00:00", "endDate": "2020-02-20 00:00:00"}, + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_delete(self, resource_group): + response = await self.client.budgets.delete( + scope="str", + budget_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_cost_allocation_rules_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_cost_allocation_rules_operations.py new file mode 100644 index 000000000000..5d47348883f8 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_cost_allocation_rules_operations.py @@ -0,0 +1,100 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementCostAllocationRulesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.cost_allocation_rules.list( + billing_account_id="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_check_name_availability(self, resource_group): + response = self.client.cost_allocation_rules.check_name_availability( + billing_account_id="str", + cost_allocation_rule_check_name_availability_request={"name": "str", "type": "str"}, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get(self, resource_group): + response = self.client.cost_allocation_rules.get( + billing_account_id="str", + rule_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_create_or_update(self, resource_group): + response = self.client.cost_allocation_rules.create_or_update( + billing_account_id="str", + rule_name="str", + cost_allocation_rule={ + "id": "str", + "name": "str", + "properties": { + "details": { + "sourceResources": [{"name": "str", "resourceType": "str", "values": ["str"]}], + "targetResources": [ + { + "name": "str", + "policyType": "str", + "resourceType": "str", + "values": [{"name": "str", "percentage": 0.0}], + } + ], + }, + "status": "str", + "createdDate": "2020-02-20 00:00:00", + "description": "str", + "updatedDate": "2020-02-20 00:00:00", + }, + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_delete(self, resource_group): + response = self.client.cost_allocation_rules.delete( + billing_account_id="str", + rule_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_cost_allocation_rules_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_cost_allocation_rules_operations_async.py new file mode 100644 index 000000000000..7972883ab460 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_cost_allocation_rules_operations_async.py @@ -0,0 +1,101 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementCostAllocationRulesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = self.client.cost_allocation_rules.list( + billing_account_id="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_check_name_availability(self, resource_group): + response = await self.client.cost_allocation_rules.check_name_availability( + billing_account_id="str", + cost_allocation_rule_check_name_availability_request={"name": "str", "type": "str"}, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get(self, resource_group): + response = await self.client.cost_allocation_rules.get( + billing_account_id="str", + rule_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_create_or_update(self, resource_group): + response = await self.client.cost_allocation_rules.create_or_update( + billing_account_id="str", + rule_name="str", + cost_allocation_rule={ + "id": "str", + "name": "str", + "properties": { + "details": { + "sourceResources": [{"name": "str", "resourceType": "str", "values": ["str"]}], + "targetResources": [ + { + "name": "str", + "policyType": "str", + "resourceType": "str", + "values": [{"name": "str", "percentage": 0.0}], + } + ], + }, + "status": "str", + "createdDate": "2020-02-20 00:00:00", + "description": "str", + "updatedDate": "2020-02-20 00:00:00", + }, + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_delete(self, resource_group): + response = await self.client.cost_allocation_rules.delete( + billing_account_id="str", + rule_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_dimensions_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_dimensions_operations.py new file mode 100644 index 000000000000..51cc3660a928 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_dimensions_operations.py @@ -0,0 +1,42 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementDimensionsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.dimensions.list( + scope="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_by_external_cloud_provider_type(self, resource_group): + response = self.client.dimensions.by_external_cloud_provider_type( + external_cloud_provider_type="str", + external_cloud_provider_id="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_dimensions_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_dimensions_operations_async.py new file mode 100644 index 000000000000..3bd7e5895aa8 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_dimensions_operations_async.py @@ -0,0 +1,43 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementDimensionsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = self.client.dimensions.list( + scope="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_by_external_cloud_provider_type(self, resource_group): + response = self.client.dimensions.by_external_cloud_provider_type( + external_cloud_provider_type="str", + external_cloud_provider_id="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_exports_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_exports_operations.py new file mode 100644 index 000000000000..7dc715a8cd16 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_exports_operations.py @@ -0,0 +1,160 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementExportsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.exports.list( + scope="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get(self, resource_group): + response = self.client.exports.get( + scope="str", + export_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_create_or_update(self, resource_group): + response = self.client.exports.create_or_update( + scope="str", + export_name="str", + parameters={ + "definition": { + "timeframe": "str", + "type": "str", + "dataSet": {"configuration": {"columns": ["str"]}, "granularity": "str"}, + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + "deliveryInfo": { + "destination": { + "container": "str", + "resourceId": "str", + "rootFolderPath": "str", + "sasToken": "str", + "storageAccount": "str", + } + }, + "eTag": "str", + "format": "str", + "id": "str", + "identity": {"type": "str", "principalId": "str", "tenantId": "str"}, + "location": "str", + "name": "str", + "nextRunTimeEstimate": "2020-02-20 00:00:00", + "partitionData": bool, + "runHistory": { + "value": [ + { + "eTag": "str", + "error": {"code": "str", "message": "str"}, + "executionType": "str", + "fileName": "str", + "id": "str", + "name": "str", + "processingEndTime": "2020-02-20 00:00:00", + "processingStartTime": "2020-02-20 00:00:00", + "runSettings": { + "definition": { + "timeframe": "str", + "type": "str", + "dataSet": {"configuration": {"columns": ["str"]}, "granularity": "str"}, + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + "deliveryInfo": { + "destination": { + "container": "str", + "resourceId": "str", + "rootFolderPath": "str", + "sasToken": "str", + "storageAccount": "str", + } + }, + "format": "str", + "nextRunTimeEstimate": "2020-02-20 00:00:00", + "partitionData": bool, + "runHistory": ..., + }, + "status": "str", + "submittedBy": "str", + "submittedTime": "2020-02-20 00:00:00", + "type": "str", + } + ] + }, + "schedule": { + "recurrence": "str", + "recurrencePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + "status": "str", + }, + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_delete(self, resource_group): + response = self.client.exports.delete( + scope="str", + export_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_execute(self, resource_group): + response = self.client.exports.execute( + scope="str", + export_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get_execution_history(self, resource_group): + response = self.client.exports.get_execution_history( + scope="str", + export_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_exports_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_exports_operations_async.py new file mode 100644 index 000000000000..032cae336e83 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_exports_operations_async.py @@ -0,0 +1,161 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementExportsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = await self.client.exports.list( + scope="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get(self, resource_group): + response = await self.client.exports.get( + scope="str", + export_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_create_or_update(self, resource_group): + response = await self.client.exports.create_or_update( + scope="str", + export_name="str", + parameters={ + "definition": { + "timeframe": "str", + "type": "str", + "dataSet": {"configuration": {"columns": ["str"]}, "granularity": "str"}, + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + "deliveryInfo": { + "destination": { + "container": "str", + "resourceId": "str", + "rootFolderPath": "str", + "sasToken": "str", + "storageAccount": "str", + } + }, + "eTag": "str", + "format": "str", + "id": "str", + "identity": {"type": "str", "principalId": "str", "tenantId": "str"}, + "location": "str", + "name": "str", + "nextRunTimeEstimate": "2020-02-20 00:00:00", + "partitionData": bool, + "runHistory": { + "value": [ + { + "eTag": "str", + "error": {"code": "str", "message": "str"}, + "executionType": "str", + "fileName": "str", + "id": "str", + "name": "str", + "processingEndTime": "2020-02-20 00:00:00", + "processingStartTime": "2020-02-20 00:00:00", + "runSettings": { + "definition": { + "timeframe": "str", + "type": "str", + "dataSet": {"configuration": {"columns": ["str"]}, "granularity": "str"}, + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + "deliveryInfo": { + "destination": { + "container": "str", + "resourceId": "str", + "rootFolderPath": "str", + "sasToken": "str", + "storageAccount": "str", + } + }, + "format": "str", + "nextRunTimeEstimate": "2020-02-20 00:00:00", + "partitionData": bool, + "runHistory": ..., + }, + "status": "str", + "submittedBy": "str", + "submittedTime": "2020-02-20 00:00:00", + "type": "str", + } + ] + }, + "schedule": { + "recurrence": "str", + "recurrencePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + "status": "str", + }, + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_delete(self, resource_group): + response = await self.client.exports.delete( + scope="str", + export_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_execute(self, resource_group): + response = await self.client.exports.execute( + scope="str", + export_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get_execution_history(self, resource_group): + response = await self.client.exports.get_execution_history( + scope="str", + export_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_forecast_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_forecast_operations.py new file mode 100644 index 000000000000..be36a2e0b0a2 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_forecast_operations.py @@ -0,0 +1,78 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementForecastOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_usage(self, resource_group): + response = self.client.forecast.usage( + scope="str", + parameters={ + "dataset": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + }, + "timeframe": "str", + "type": "str", + "includeActualCost": bool, + "includeFreshPartialCost": bool, + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_external_cloud_provider_usage(self, resource_group): + response = self.client.forecast.external_cloud_provider_usage( + external_cloud_provider_type="str", + external_cloud_provider_id="str", + parameters={ + "dataset": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + }, + "timeframe": "str", + "type": "str", + "includeActualCost": bool, + "includeFreshPartialCost": bool, + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_forecast_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_forecast_operations_async.py new file mode 100644 index 000000000000..ae0a0954af52 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_forecast_operations_async.py @@ -0,0 +1,79 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementForecastOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_usage(self, resource_group): + response = await self.client.forecast.usage( + scope="str", + parameters={ + "dataset": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + }, + "timeframe": "str", + "type": "str", + "includeActualCost": bool, + "includeFreshPartialCost": bool, + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_external_cloud_provider_usage(self, resource_group): + response = await self.client.forecast.external_cloud_provider_usage( + external_cloud_provider_type="str", + external_cloud_provider_id="str", + parameters={ + "dataset": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + }, + "timeframe": "str", + "type": "str", + "includeActualCost": bool, + "includeFreshPartialCost": bool, + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_benefit_utilization_summaries_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_benefit_utilization_summaries_report_operations.py new file mode 100644 index 000000000000..31cd4f22e59a --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_benefit_utilization_summaries_report_operations.py @@ -0,0 +1,148 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateBenefitUtilizationSummariesReportOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_generate_by_billing_account(self, resource_group): + response = self.client.generate_benefit_utilization_summaries_report.begin_generate_by_billing_account( + billing_account_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_generate_by_billing_profile(self, resource_group): + response = self.client.generate_benefit_utilization_summaries_report.begin_generate_by_billing_profile( + billing_account_id="str", + billing_profile_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_generate_by_reservation_order_id(self, resource_group): + response = self.client.generate_benefit_utilization_summaries_report.begin_generate_by_reservation_order_id( + reservation_order_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_generate_by_reservation_id(self, resource_group): + response = self.client.generate_benefit_utilization_summaries_report.begin_generate_by_reservation_id( + reservation_order_id="str", + reservation_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_generate_by_savings_plan_order_id(self, resource_group): + response = self.client.generate_benefit_utilization_summaries_report.begin_generate_by_savings_plan_order_id( + savings_plan_order_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_generate_by_savings_plan_id(self, resource_group): + response = self.client.generate_benefit_utilization_summaries_report.begin_generate_by_savings_plan_id( + savings_plan_order_id="str", + savings_plan_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_benefit_utilization_summaries_report_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_benefit_utilization_summaries_report_operations_async.py new file mode 100644 index 000000000000..291e3a0df627 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_benefit_utilization_summaries_report_operations_async.py @@ -0,0 +1,161 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateBenefitUtilizationSummariesReportOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_generate_by_billing_account(self, resource_group): + response = await ( + await self.client.generate_benefit_utilization_summaries_report.begin_generate_by_billing_account( + billing_account_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_generate_by_billing_profile(self, resource_group): + response = await ( + await self.client.generate_benefit_utilization_summaries_report.begin_generate_by_billing_profile( + billing_account_id="str", + billing_profile_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_generate_by_reservation_order_id(self, resource_group): + response = await ( + await self.client.generate_benefit_utilization_summaries_report.begin_generate_by_reservation_order_id( + reservation_order_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_generate_by_reservation_id(self, resource_group): + response = await ( + await self.client.generate_benefit_utilization_summaries_report.begin_generate_by_reservation_id( + reservation_order_id="str", + reservation_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_generate_by_savings_plan_order_id(self, resource_group): + response = await ( + await self.client.generate_benefit_utilization_summaries_report.begin_generate_by_savings_plan_order_id( + savings_plan_order_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_generate_by_savings_plan_id(self, resource_group): + response = await ( + await self.client.generate_benefit_utilization_summaries_report.begin_generate_by_savings_plan_id( + savings_plan_order_id="str", + savings_plan_id="str", + benefit_utilization_summaries_request={ + "endDate": "2020-02-20 00:00:00", + "grain": "str", + "startDate": "2020-02-20 00:00:00", + "benefitId": "str", + "benefitOrderId": "str", + "billingAccountId": "str", + "billingProfileId": "str", + "kind": "str", + }, + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_cost_details_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_cost_details_report_operations.py new file mode 100644 index 000000000000..8fbd27a9f68c --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_cost_details_report_operations.py @@ -0,0 +1,48 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateCostDetailsReportOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_create_operation(self, resource_group): + response = self.client.generate_cost_details_report.begin_create_operation( + scope="str", + parameters={ + "billingPeriod": "str", + "invoiceId": "str", + "metric": "str", + "timePeriod": {"end": "str", "start": "str"}, + }, + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_get_operation_results(self, resource_group): + response = self.client.generate_cost_details_report.begin_get_operation_results( + scope="str", + operation_id="str", + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_cost_details_report_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_cost_details_report_operations_async.py new file mode 100644 index 000000000000..dfb65d1a6563 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_cost_details_report_operations_async.py @@ -0,0 +1,53 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateCostDetailsReportOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_create_operation(self, resource_group): + response = await ( + await self.client.generate_cost_details_report.begin_create_operation( + scope="str", + parameters={ + "billingPeriod": "str", + "invoiceId": "str", + "metric": "str", + "timePeriod": {"end": "str", "start": "str"}, + }, + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_get_operation_results(self, resource_group): + response = await ( + await self.client.generate_cost_details_report.begin_get_operation_results( + scope="str", + operation_id="str", + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_results_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_results_operations.py new file mode 100644 index 000000000000..5662dbaa12c2 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_results_operations.py @@ -0,0 +1,31 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateDetailedCostReportOperationResultsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_get(self, resource_group): + response = self.client.generate_detailed_cost_report_operation_results.begin_get( + operation_id="str", + scope="str", + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_results_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_results_operations_async.py new file mode 100644 index 000000000000..72b393e7f001 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_results_operations_async.py @@ -0,0 +1,34 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateDetailedCostReportOperationResultsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_get(self, resource_group): + response = await ( + await self.client.generate_detailed_cost_report_operation_results.begin_get( + operation_id="str", + scope="str", + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_status_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_status_operations.py new file mode 100644 index 000000000000..20a532b256cf --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_status_operations.py @@ -0,0 +1,31 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateDetailedCostReportOperationStatusOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get(self, resource_group): + response = self.client.generate_detailed_cost_report_operation_status.get( + operation_id="str", + scope="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_status_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_status_operations_async.py new file mode 100644 index 000000000000..c3f054455dc1 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operation_status_operations_async.py @@ -0,0 +1,32 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateDetailedCostReportOperationStatusOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get(self, resource_group): + response = await self.client.generate_detailed_cost_report_operation_status.get( + operation_id="str", + scope="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operations.py new file mode 100644 index 000000000000..b2f45f8642ea --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operations.py @@ -0,0 +1,37 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateDetailedCostReportOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_create_operation(self, resource_group): + response = self.client.generate_detailed_cost_report.begin_create_operation( + scope="str", + parameters={ + "billingPeriod": "str", + "customerId": "str", + "invoiceId": "str", + "metric": "str", + "timePeriod": {"end": "str", "start": "str"}, + }, + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operations_async.py new file mode 100644 index 000000000000..cab98ea11ae8 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_detailed_cost_report_operations_async.py @@ -0,0 +1,40 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateDetailedCostReportOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_create_operation(self, resource_group): + response = await ( + await self.client.generate_detailed_cost_report.begin_create_operation( + scope="str", + parameters={ + "billingPeriod": "str", + "customerId": "str", + "invoiceId": "str", + "metric": "str", + "timePeriod": {"end": "str", "start": "str"}, + }, + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_reservation_details_report_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_reservation_details_report_operations.py new file mode 100644 index 000000000000..7075356a5eb9 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_reservation_details_report_operations.py @@ -0,0 +1,46 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateReservationDetailsReportOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_by_billing_account_id(self, resource_group): + response = self.client.generate_reservation_details_report.begin_by_billing_account_id( + billing_account_id="str", + start_date="str", + end_date="str", + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_by_billing_profile_id(self, resource_group): + response = self.client.generate_reservation_details_report.begin_by_billing_profile_id( + billing_account_id="str", + billing_profile_id="str", + start_date="str", + end_date="str", + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_reservation_details_report_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_reservation_details_report_operations_async.py new file mode 100644 index 000000000000..749316540e73 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_generate_reservation_details_report_operations_async.py @@ -0,0 +1,51 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementGenerateReservationDetailsReportOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_by_billing_account_id(self, resource_group): + response = await ( + await self.client.generate_reservation_details_report.begin_by_billing_account_id( + billing_account_id="str", + start_date="str", + end_date="str", + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_by_billing_profile_id(self, resource_group): + response = await ( + await self.client.generate_reservation_details_report.begin_by_billing_profile_id( + billing_account_id="str", + billing_profile_id="str", + start_date="str", + end_date="str", + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_operations.py new file mode 100644 index 000000000000..942f364346f9 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_operations.py @@ -0,0 +1,29 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.operations.list( + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_operations_async.py new file mode 100644 index 000000000000..02c4572fcfa9 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_operations_async.py @@ -0,0 +1,30 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = self.client.operations.list( + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_price_sheet_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_price_sheet_operations.py new file mode 100644 index 000000000000..a8ea46b30765 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_price_sheet_operations.py @@ -0,0 +1,56 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementPriceSheetOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_download_by_invoice(self, resource_group): + response = self.client.price_sheet.begin_download_by_invoice( + billing_account_name="str", + billing_profile_name="str", + invoice_name="str", + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_download_by_billing_profile(self, resource_group): + response = self.client.price_sheet.begin_download_by_billing_profile( + billing_account_name="str", + billing_profile_name="str", + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_begin_download_by_billing_account(self, resource_group): + response = self.client.price_sheet.begin_download_by_billing_account( + billing_account_id="str", + billing_period_name="str", + api_version="2024-08-01", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_price_sheet_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_price_sheet_operations_async.py new file mode 100644 index 000000000000..79b910665dff --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_price_sheet_operations_async.py @@ -0,0 +1,63 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementPriceSheetOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_download_by_invoice(self, resource_group): + response = await ( + await self.client.price_sheet.begin_download_by_invoice( + billing_account_name="str", + billing_profile_name="str", + invoice_name="str", + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_download_by_billing_profile(self, resource_group): + response = await ( + await self.client.price_sheet.begin_download_by_billing_profile( + billing_account_name="str", + billing_profile_name="str", + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_begin_download_by_billing_account(self, resource_group): + response = await ( + await self.client.price_sheet.begin_download_by_billing_account( + billing_account_id="str", + billing_period_name="str", + api_version="2024-08-01", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_query_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_query_operations.py new file mode 100644 index 000000000000..3ca01f57840b --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_query_operations.py @@ -0,0 +1,76 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementQueryOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_usage(self, resource_group): + response = self.client.query.usage( + scope="str", + parameters={ + "dataset": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + "grouping": [{"name": "str", "type": "str"}], + }, + "timeframe": "str", + "type": "str", + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_usage_by_external_cloud_provider_type(self, resource_group): + response = self.client.query.usage_by_external_cloud_provider_type( + external_cloud_provider_type="str", + external_cloud_provider_id="str", + parameters={ + "dataset": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + "grouping": [{"name": "str", "type": "str"}], + }, + "timeframe": "str", + "type": "str", + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_query_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_query_operations_async.py new file mode 100644 index 000000000000..af2eb8b56f7a --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_query_operations_async.py @@ -0,0 +1,77 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementQueryOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_usage(self, resource_group): + response = await self.client.query.usage( + scope="str", + parameters={ + "dataset": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + "grouping": [{"name": "str", "type": "str"}], + }, + "timeframe": "str", + "type": "str", + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_usage_by_external_cloud_provider_type(self, resource_group): + response = await self.client.query.usage_by_external_cloud_provider_type( + external_cloud_provider_type="str", + external_cloud_provider_id="str", + parameters={ + "dataset": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + "grouping": [{"name": "str", "type": "str"}], + }, + "timeframe": "str", + "type": "str", + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_scheduled_actions_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_scheduled_actions_operations.py new file mode 100644 index 000000000000..8dba31af5f4b --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_scheduled_actions_operations.py @@ -0,0 +1,229 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementScheduledActionsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.scheduled_actions.list( + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list_by_scope(self, resource_group): + response = self.client.scheduled_actions.list_by_scope( + scope="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_create_or_update(self, resource_group): + response = self.client.scheduled_actions.create_or_update( + name="str", + scheduled_action={ + "displayName": "str", + "eTag": "str", + "fileDestination": {"fileFormats": ["str"]}, + "id": "str", + "kind": "str", + "name": "str", + "notification": { + "subject": "str", + "to": ["str"], + "language": "str", + "message": "str", + "regionalFormat": "str", + }, + "notificationEmail": "str", + "schedule": { + "endDate": "2020-02-20 00:00:00", + "frequency": "str", + "startDate": "2020-02-20 00:00:00", + "dayOfMonth": 0, + "daysOfWeek": ["str"], + "hourOfDay": 0, + "weeksOfMonth": ["str"], + }, + "scope": "str", + "status": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + "viewId": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get(self, resource_group): + response = self.client.scheduled_actions.get( + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_delete(self, resource_group): + response = self.client.scheduled_actions.delete( + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_create_or_update_by_scope(self, resource_group): + response = self.client.scheduled_actions.create_or_update_by_scope( + scope="str", + name="str", + scheduled_action={ + "displayName": "str", + "eTag": "str", + "fileDestination": {"fileFormats": ["str"]}, + "id": "str", + "kind": "str", + "name": "str", + "notification": { + "subject": "str", + "to": ["str"], + "language": "str", + "message": "str", + "regionalFormat": "str", + }, + "notificationEmail": "str", + "schedule": { + "endDate": "2020-02-20 00:00:00", + "frequency": "str", + "startDate": "2020-02-20 00:00:00", + "dayOfMonth": 0, + "daysOfWeek": ["str"], + "hourOfDay": 0, + "weeksOfMonth": ["str"], + }, + "scope": "str", + "status": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + "viewId": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get_by_scope(self, resource_group): + response = self.client.scheduled_actions.get_by_scope( + scope="str", + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_delete_by_scope(self, resource_group): + response = self.client.scheduled_actions.delete_by_scope( + scope="str", + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_run(self, resource_group): + response = self.client.scheduled_actions.run( + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_run_by_scope(self, resource_group): + response = self.client.scheduled_actions.run_by_scope( + scope="str", + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_check_name_availability(self, resource_group): + response = self.client.scheduled_actions.check_name_availability( + check_name_availability_request={"name": "str", "type": "str"}, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_check_name_availability_by_scope(self, resource_group): + response = self.client.scheduled_actions.check_name_availability_by_scope( + scope="str", + check_name_availability_request={"name": "str", "type": "str"}, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_scheduled_actions_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_scheduled_actions_operations_async.py new file mode 100644 index 000000000000..7378ad05faff --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_scheduled_actions_operations_async.py @@ -0,0 +1,230 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementScheduledActionsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = self.client.scheduled_actions.list( + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list_by_scope(self, resource_group): + response = self.client.scheduled_actions.list_by_scope( + scope="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_create_or_update(self, resource_group): + response = await self.client.scheduled_actions.create_or_update( + name="str", + scheduled_action={ + "displayName": "str", + "eTag": "str", + "fileDestination": {"fileFormats": ["str"]}, + "id": "str", + "kind": "str", + "name": "str", + "notification": { + "subject": "str", + "to": ["str"], + "language": "str", + "message": "str", + "regionalFormat": "str", + }, + "notificationEmail": "str", + "schedule": { + "endDate": "2020-02-20 00:00:00", + "frequency": "str", + "startDate": "2020-02-20 00:00:00", + "dayOfMonth": 0, + "daysOfWeek": ["str"], + "hourOfDay": 0, + "weeksOfMonth": ["str"], + }, + "scope": "str", + "status": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + "viewId": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get(self, resource_group): + response = await self.client.scheduled_actions.get( + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_delete(self, resource_group): + response = await self.client.scheduled_actions.delete( + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_create_or_update_by_scope(self, resource_group): + response = await self.client.scheduled_actions.create_or_update_by_scope( + scope="str", + name="str", + scheduled_action={ + "displayName": "str", + "eTag": "str", + "fileDestination": {"fileFormats": ["str"]}, + "id": "str", + "kind": "str", + "name": "str", + "notification": { + "subject": "str", + "to": ["str"], + "language": "str", + "message": "str", + "regionalFormat": "str", + }, + "notificationEmail": "str", + "schedule": { + "endDate": "2020-02-20 00:00:00", + "frequency": "str", + "startDate": "2020-02-20 00:00:00", + "dayOfMonth": 0, + "daysOfWeek": ["str"], + "hourOfDay": 0, + "weeksOfMonth": ["str"], + }, + "scope": "str", + "status": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + "viewId": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get_by_scope(self, resource_group): + response = await self.client.scheduled_actions.get_by_scope( + scope="str", + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_delete_by_scope(self, resource_group): + response = await self.client.scheduled_actions.delete_by_scope( + scope="str", + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_run(self, resource_group): + response = await self.client.scheduled_actions.run( + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_run_by_scope(self, resource_group): + response = await self.client.scheduled_actions.run_by_scope( + scope="str", + name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_check_name_availability(self, resource_group): + response = await self.client.scheduled_actions.check_name_availability( + check_name_availability_request={"name": "str", "type": "str"}, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_check_name_availability_by_scope(self, resource_group): + response = await self.client.scheduled_actions.check_name_availability_by_scope( + scope="str", + check_name_availability_request={"name": "str", "type": "str"}, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_settings_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_settings_operations.py new file mode 100644 index 000000000000..883f1a20f268 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_settings_operations.py @@ -0,0 +1,73 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementSettingsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.settings.list( + scope="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_create_or_update_by_scope(self, resource_group): + response = self.client.settings.create_or_update_by_scope( + scope="str", + type="str", + setting={ + "kind": "taginheritance", + "id": "str", + "name": "str", + "properties": {"preferContainerTags": bool}, + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get_by_scope(self, resource_group): + response = self.client.settings.get_by_scope( + scope="str", + type="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_delete_by_scope(self, resource_group): + response = self.client.settings.delete_by_scope( + scope="str", + type="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_settings_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_settings_operations_async.py new file mode 100644 index 000000000000..3ee2f298e43c --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_settings_operations_async.py @@ -0,0 +1,74 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementSettingsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = await self.client.settings.list( + scope="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_create_or_update_by_scope(self, resource_group): + response = await self.client.settings.create_or_update_by_scope( + scope="str", + type="str", + setting={ + "kind": "taginheritance", + "id": "str", + "name": "str", + "properties": {"preferContainerTags": bool}, + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get_by_scope(self, resource_group): + response = await self.client.settings.get_by_scope( + scope="str", + type="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_delete_by_scope(self, resource_group): + response = await self.client.settings.delete_by_scope( + scope="str", + type="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_views_operations.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_views_operations.py new file mode 100644 index 000000000000..64b922981245 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_views_operations.py @@ -0,0 +1,175 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementViewsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list(self, resource_group): + response = self.client.views.list( + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_list_by_scope(self, resource_group): + response = self.client.views.list_by_scope( + scope="str", + api_version="2024-08-01", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get(self, resource_group): + response = self.client.views.get( + view_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_create_or_update(self, resource_group): + response = self.client.views.create_or_update( + view_name="str", + parameters={ + "accumulated": "str", + "chart": "str", + "createdOn": "2020-02-20 00:00:00", + "currency": "str", + "dataSet": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + "grouping": [{"name": "str", "type": "str"}], + "sorting": [{"name": "str", "direction": "str"}], + }, + "dateRange": "str", + "displayName": "str", + "eTag": "str", + "id": "str", + "includeMonetaryCommitment": bool, + "kpis": [{"enabled": bool, "id": "str", "type": "str"}], + "metric": "str", + "modifiedOn": "2020-02-20 00:00:00", + "name": "str", + "pivots": [{"name": "str", "type": "str"}], + "scope": "str", + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + "timeframe": "str", + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_delete(self, resource_group): + response = self.client.views.delete( + view_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_get_by_scope(self, resource_group): + response = self.client.views.get_by_scope( + scope="str", + view_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_create_or_update_by_scope(self, resource_group): + response = self.client.views.create_or_update_by_scope( + scope="str", + view_name="str", + parameters={ + "accumulated": "str", + "chart": "str", + "createdOn": "2020-02-20 00:00:00", + "currency": "str", + "dataSet": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + "grouping": [{"name": "str", "type": "str"}], + "sorting": [{"name": "str", "direction": "str"}], + }, + "dateRange": "str", + "displayName": "str", + "eTag": "str", + "id": "str", + "includeMonetaryCommitment": bool, + "kpis": [{"enabled": bool, "id": "str", "type": "str"}], + "metric": "str", + "modifiedOn": "2020-02-20 00:00:00", + "name": "str", + "pivots": [{"name": "str", "type": "str"}], + "scope": "str", + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + "timeframe": "str", + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_delete_by_scope(self, resource_group): + response = self.client.views.delete_by_scope( + scope="str", + view_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_views_operations_async.py b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_views_operations_async.py new file mode 100644 index 000000000000..646a01ce67d6 --- /dev/null +++ b/sdk/costmanagement/azure-mgmt-costmanagement/generated_tests/test_cost_management_views_operations_async.py @@ -0,0 +1,176 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.costmanagement.aio import CostManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestCostManagementViewsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(CostManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list(self, resource_group): + response = self.client.views.list( + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_list_by_scope(self, resource_group): + response = self.client.views.list_by_scope( + scope="str", + api_version="2024-08-01", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get(self, resource_group): + response = await self.client.views.get( + view_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_create_or_update(self, resource_group): + response = await self.client.views.create_or_update( + view_name="str", + parameters={ + "accumulated": "str", + "chart": "str", + "createdOn": "2020-02-20 00:00:00", + "currency": "str", + "dataSet": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + "grouping": [{"name": "str", "type": "str"}], + "sorting": [{"name": "str", "direction": "str"}], + }, + "dateRange": "str", + "displayName": "str", + "eTag": "str", + "id": "str", + "includeMonetaryCommitment": bool, + "kpis": [{"enabled": bool, "id": "str", "type": "str"}], + "metric": "str", + "modifiedOn": "2020-02-20 00:00:00", + "name": "str", + "pivots": [{"name": "str", "type": "str"}], + "scope": "str", + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + "timeframe": "str", + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_delete(self, resource_group): + response = await self.client.views.delete( + view_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_get_by_scope(self, resource_group): + response = await self.client.views.get_by_scope( + scope="str", + view_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_create_or_update_by_scope(self, resource_group): + response = await self.client.views.create_or_update_by_scope( + scope="str", + view_name="str", + parameters={ + "accumulated": "str", + "chart": "str", + "createdOn": "2020-02-20 00:00:00", + "currency": "str", + "dataSet": { + "aggregation": {"str": {"function": "str", "name": "str"}}, + "configuration": {"columns": ["str"]}, + "filter": { + "and": [...], + "dimensions": {"name": "str", "operator": "str", "values": ["str"]}, + "or": [...], + "tags": {"name": "str", "operator": "str", "values": ["str"]}, + }, + "granularity": "str", + "grouping": [{"name": "str", "type": "str"}], + "sorting": [{"name": "str", "direction": "str"}], + }, + "dateRange": "str", + "displayName": "str", + "eTag": "str", + "id": "str", + "includeMonetaryCommitment": bool, + "kpis": [{"enabled": bool, "id": "str", "type": "str"}], + "metric": "str", + "modifiedOn": "2020-02-20 00:00:00", + "name": "str", + "pivots": [{"name": "str", "type": "str"}], + "scope": "str", + "timePeriod": {"from": "2020-02-20 00:00:00", "to": "2020-02-20 00:00:00"}, + "timeframe": "str", + "type": "str", + }, + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_delete_by_scope(self, resource_group): + response = await self.client.views.delete_by_scope( + scope="str", + view_name="str", + api_version="2024-08-01", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/costmanagement/azure-mgmt-costmanagement/setup.py b/sdk/costmanagement/azure-mgmt-costmanagement/setup.py index bdcf90a92b53..25df14c26118 100644 --- a/sdk/costmanagement/azure-mgmt-costmanagement/setup.py +++ b/sdk/costmanagement/azure-mgmt-costmanagement/setup.py @@ -53,11 +53,11 @@ "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "License :: OSI Approved :: MIT License", ], zip_safe=False, @@ -74,10 +74,10 @@ "pytyped": ["py.typed"], }, install_requires=[ - "isodate<1.0.0,>=0.6.1", - "azure-common~=1.1", - "azure-mgmt-core>=1.3.2,<2.0.0", - "typing-extensions>=4.3.0; python_version<'3.8.0'", + "isodate>=0.6.1", + "typing-extensions>=4.6.0", + "azure-common>=1.1", + "azure-mgmt-core>=1.3.2", ], - python_requires=">=3.7", + python_requires=">=3.8", )