From 513ba9c651775c78c386c9a72c36bfb6d53ac0af Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez Date: Wed, 1 Nov 2023 16:26:41 -0400 Subject: [PATCH 01/15] New report for TS vendors New report for TS vendors --- reports/TS_products/Readme.md | 3 ++ reports/TS_products/__init__.py | 0 reports/TS_products/entrypoint.py | 48 ++++++++++++++++++++++++++++++ reports/TS_products/template.xlsx | Bin 0 -> 10576 bytes 4 files changed, 51 insertions(+) create mode 100644 reports/TS_products/Readme.md create mode 100644 reports/TS_products/__init__.py create mode 100644 reports/TS_products/entrypoint.py create mode 100644 reports/TS_products/template.xlsx diff --git a/reports/TS_products/Readme.md b/reports/TS_products/Readme.md new file mode 100644 index 0000000..183dca6 --- /dev/null +++ b/reports/TS_products/Readme.md @@ -0,0 +1,3 @@ +# AWS Report + +This report provides a list of assets for AWS product and generates a report with AWS specific information \ No newline at end of file diff --git a/reports/TS_products/__init__.py b/reports/TS_products/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/reports/TS_products/entrypoint.py b/reports/TS_products/entrypoint.py new file mode 100644 index 0000000..94e3c2d --- /dev/null +++ b/reports/TS_products/entrypoint.py @@ -0,0 +1,48 @@ +from cnct import R +from reports.utils import ( + convert_to_datetime, + get_asset_parameter, + get_value, +) + + + +def warm_up_tcs(client, products): + rql_filter = R() + rql_filter &= R().product.id.oneof(products) + tcs = client.ns('tier').configs.filter(rql_filter).all() + for tc in tcs: + if not awsmpn.get(f'{tc["account"]["id"]}_{tc["product"]["id"]}'): + for param in tc['params']: + if param['id'] == 'awsApnId': + awsmpn[f'{tc["account"]["id"]}_{tc["product"]["id"]}'] = param.get('value', '-') + + + +def generate(client, parameters, progress_callback): + warm_up_tcs(client, parameters['products']['choices']) + subscriptions_rql = R() + if not parameters.get("products") or len(parameters['products']['choices']) < 1: + raise RuntimeError("AWS products was not selected") + if parameters.get("date"): + subscriptions_rql &= R().events.created.at.ge(parameters['date']['after']) + subscriptions_rql &= R().events.created.at.le(parameters['date']['before']) + subscriptions_rql &= R().product.id.oneof(parameters['products']['choices']) + subscriptions_rql &= R().status.ne('draft') + subscriptions = client.assets.filter(subscriptions_rql) + total_subscriptions = subscriptions.count() + progress = 0 + for subscription in subscriptions: + yield ( + subscription['id'], + subscription.get('external_id', "-"), + subscription['status'], + subscription['marketplace']['name'], + subscription['product']['id'], + convert_to_datetime(subscription['events']['created']['at']), + get_asset_parameter(subscription, "vendor_subscription_id"), + get_asset_parameter(subscription, "customer_purchase_order_number") + + ) + progress += 1 + progress_callback(progress, total_subscriptions) diff --git a/reports/TS_products/template.xlsx b/reports/TS_products/template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..21a006c59ccfd7354f51748e86e96d8e0c537567 GIT binary patch literal 10576 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 EKbV76NdN!< literal 0 HcmV?d00001 From 60a56dc0ea9d646ced2a63635e897edc46dfa2b6 Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:48:35 -0400 Subject: [PATCH 02/15] Update Readme.md --- reports/TS_products/Readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reports/TS_products/Readme.md b/reports/TS_products/Readme.md index 183dca6..f851819 100644 --- a/reports/TS_products/Readme.md +++ b/reports/TS_products/Readme.md @@ -1,3 +1,3 @@ -# AWS Report +# TS Report -This report provides a list of assets for AWS product and generates a report with AWS specific information \ No newline at end of file +This report provides a list of assets for TS product and generates a report with specific information From be52d14111a2776d4ca092ff24bd9dc49f11f321 Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:52:08 -0400 Subject: [PATCH 03/15] Delete reports/all_transactions directory --- reports/all_transactions/__init__.py | 0 reports/all_transactions/entrypoint.py | 294 ------------------------- reports/all_transactions/readme.md | 7 - reports/all_transactions/template.xlsx | Bin 9082 -> 0 bytes 4 files changed, 301 deletions(-) delete mode 100644 reports/all_transactions/__init__.py delete mode 100644 reports/all_transactions/entrypoint.py delete mode 100644 reports/all_transactions/readme.md delete mode 100644 reports/all_transactions/template.xlsx diff --git a/reports/all_transactions/__init__.py b/reports/all_transactions/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/reports/all_transactions/entrypoint.py b/reports/all_transactions/entrypoint.py deleted file mode 100644 index ee8243f..0000000 --- a/reports/all_transactions/entrypoint.py +++ /dev/null @@ -1,294 +0,0 @@ -from cnct import R -from reports.utils import ( - convert_to_datetime, - Progress, - delta, - get_parameter, - get_ta_parameter, -) -from concurrent import futures - -PRODUCTS_TO_SKIP = [ - "CN-165-840-738", - "PRD-410-648-782", - "PRD-351-327-555", -] - - -def generate(client, parameters, progress_callback): - subscriptions_rql = R() - if parameters.get("date"): - subscriptions_rql &= R().events.created.at.ge(parameters['date']['after']) - subscriptions_rql &= R().events.created.at.le(parameters['date']['before']) - subscriptions_rql &= R().status.eq("approved") - subscriptions_rql &= R().type.eq("vendor") - for product in PRODUCTS_TO_SKIP: - subscriptions_rql &= R().asset.product.id.ne(product) - - subscriptions = ( - client.ns('subscriptions') - .collection('requests') - .filter(subscriptions_rql) - .order_by("-events.created.at") - ) - total_subscriptions = subscriptions.count() - - request_types = ["purchase", "change", "cancel"] - requests_rql = R() - if parameters.get("date"): - requests_rql &= R().created.ge(parameters['date']['after']) - requests_rql &= R().created.le(parameters['date']['before']) - requests_rql &= R().status.eq("approved") - requests_rql &= R().asset.connection.type.eq('production') - for product in PRODUCTS_TO_SKIP: - requests_rql &= R().asset.product.id.ne(product) - requests_rql &= R().type.oneof(request_types) - requests = client.requests.filter(requests_rql).order_by("-created") - - total_requests = requests.count() - - progress = Progress(progress_callback, total_subscriptions + total_requests) - - ex = futures.ThreadPoolExecutor( - max_workers=6, - ) - - wait_for = [] - for request in requests: - wait_for.append( - ex.submit( - get_request_record, - client, - request, - progress, - ) - ) - progress.increment() - - for future in futures.as_completed(wait_for): - results = future.result() - for result in results: - yield result - - wait_for = [] - for subscription in subscriptions: - wait_for.append( - ex.submit( - get_subscription_record, - client, - subscription, - progress, - ) - ) - - for future in futures.as_completed(wait_for): - results = future.result() - for result in results: - yield result - - -def get_request_record(client, request, progress): - param_values = get_product_specifics(request, client) - output = [] - for item in request["asset"]["items"]: - try: - if item["quantity"] == "0" and item["old_quantity"] == "0": - continue - output.append( - [ - request["type"].capitalize(), - request["id"], - request["asset"]["product"]["id"], - request["asset"]["product"]["name"], - request["asset"]["connection"]["vendor"]['id'], - request["asset"]["connection"]["vendor"]["name"], - convert_to_datetime(request["created"]), - convert_to_datetime(request["asset"]["events"]["created"]["at"]), - request["asset"]["id"], - request["asset"]["status"], - request["asset"]["external_id"], - request["asset"]["tiers"]["customer"]["name"], - ( - request["asset"]["tiers"]["customer"]["external_id"] - if "external_id" in request["asset"]["tiers"]["customer"] - else request["asset"]["tiers"]["customer"]["external_uid"] - ), - request["asset"]["tiers"]["customer"]["contact_info"]["country"], - request["asset"]["tiers"]["tier1"]["name"], - ( - request["asset"]["tiers"]["tier1"]["external_id"] - if "external_id" in request["asset"]["tiers"]["tier1"] - else request["asset"]["tiers"]["tier1"]["external_uid"] - ), - request["asset"]["tiers"]["tier1"]["contact_info"]["country"], - ( - request["asset"]["tiers"]["tier2"]["name"] - if "name" in request["asset"]["tiers"]["tier2"] - else "-" - ), - ( - request["asset"]["tiers"]["tier2"]["external_id"] - if "external_id" in request["asset"]["tiers"]["tier2"] - else "-" - ), - ( - request["asset"]["tiers"]["tier2"]["contact_info"]["country"] - if request["asset"]["tiers"]["tier2"] - and "country" in request["asset"]["tiers"]["tier2"]["contact_info"] - else "-" - ), - item["global_id"], - item["mpn"], - item["display_name"], - item.get("period", item.get("item_type")), - item["old_quantity"], - item["quantity"], - delta(item["old_quantity"], item["quantity"]), - request["asset"]["connection"]["provider"]["id"], - request["asset"]["connection"]["provider"]["name"], - request["asset"]["marketplace"]["id"], - request["asset"]["marketplace"]["name"], - request["asset"]["contract"].get("type", "distribution").capitalize(), - param_values["microsoft_domain"], - param_values["subscription_id"], - param_values["ms_customer_id"], - param_values["microsoft_order_id"], - param_values["microsoft_plan_subscription_id"], - param_values["microsoft_tier1_mpn"], - param_values["awsAccountEmail"], - param_values["awsAccountName"], - param_values["awsOrderedSupportLevel"], - param_values["awsAccountId"], - ] - ) - except Exception: - pass - progress.increment() - return output - - -def get_subscription_record(client, subscription, progress): - param_values = get_product_specifics(subscription, client) - output = [] - try: - for item in subscription["items"]: - output.append( - [ - subscription["type"].capitalize() + " Billing", - subscription["id"], - subscription["asset"]["product"]["id"], - subscription["asset"]["product"]["name"], - subscription["asset"]["connection"]["vendor"]['id'], - subscription["asset"]["connection"]["vendor"]["name"], - convert_to_datetime(subscription["events"]["created"]["at"]), - convert_to_datetime(subscription["asset"]["events"]["created"]["at"]), - subscription["asset"]["id"], - subscription["asset"]["status"], - subscription["asset"]["external_id"], - subscription["asset"]["tiers"]["customer"]["name"], - ( - subscription["asset"]["tiers"]["customer"]["external_id"] - if "external_id" in subscription["asset"]["tiers"]["customer"] - else subscription["asset"]["tiers"]["customer"]["external_uid"] - ), - subscription["asset"]["tiers"]["customer"]["contact_info"]["country"], - subscription["asset"]["tiers"]["tier1"]["name"], - ( - subscription["asset"]["tiers"]["tier1"]["external_id"] - if "external_id" in subscription["asset"]["tiers"]["tier1"] - else subscription["asset"]["tiers"]["tier1"]["external_uid"] - ), - subscription["asset"]["tiers"]["tier1"]["contact_info"]["country"], - ( - subscription["asset"]["tiers"]["tier2"]["name"] - if "tier2" in subscription["asset"]["tiers"] - else "-" - ), - ( - subscription["asset"]["tiers"]["tier2"]["external_id"] - if "tier2" in subscription["asset"]["tiers"] - else "-" - ), - ( - subscription["asset"]["tiers"]["tier2"]["contact_info"]["country"] - if "tier2" in subscription["asset"]["tiers"] - else "-" - ), - item["global_id"], - item["mpn"], - item["display_name"], - item.get("period", item.get("item_type")), - 0, - ( - "unlimited" if item["quantity"] == -1 else item["quantity"] - ), - ( - "unlimited" if item["quantity"] == -1 else item["quantity"] - ), - subscription["asset"]["connection"]["provider"]["id"], - subscription["asset"]["connection"]["provider"]["name"], - subscription["asset"]["marketplace"]["id"], - subscription["asset"]["marketplace"]["name"], - ( - "Syndication" - if "CRU" in subscription["asset"]["contract"]["id"] - else "Distribution" - ), - param_values["microsoft_domain"], - param_values["subscription_id"], - param_values["ms_customer_id"], - param_values["microsoft_order_id"], - param_values["microsoft_plan_subscription_id"], - param_values["microsoft_tier1_mpn"], - param_values["awsAccountEmail"], - param_values["awsAccountName"], - param_values["awsOrderedSupportLevel"], - param_values["awsAccountId"], - ] - ) - except Exception: - pass - progress.increment() - return output - - -def get_product_specifics(request, client): - values = { - "microsoft_domain": "-", - "subscription_id": "-", - "ms_customer_id": "-", - "microsoft_order_id": "-", - "microsoft_plan_subscription_id": "-", - "microsoft_tier1_mpn": "-", - "awsAccountEmail": "-", - "awsAccountName": "-", - "awsOrderedSupportLevel": "-", - "awsAccountId": "-", - } - if request["asset"]["connection"]["vendor"]["id"] == "VA-888-104": - values["microsoft_domain"] = get_parameter(request, "microsoft_domain") - sub_id = get_parameter(request, "subscription_id") - if sub_id == "-": - sub_id = get_parameter(request, "microsoft_subscription_id") - values["subscription_id"] = sub_id - cust_id = get_parameter(request, "ms_customer_id") - if cust_id == "-": - cust_id = get_parameter(request, "customer_id") - values["ms_customer_id"] = cust_id - order_id = get_parameter(request, "microsoft_order_id") - if order_id == "-": - order_id = get_parameter(request, "csp_order_id") - values["microsoft_plan_subscription_id"] = get_parameter( - request, - "microsoft_plan_subscription_id", - ) - values["microsoft_order_id"] = order_id - values["microsoft_tier1_mpn"] = get_ta_parameter(request, "tier1", "tier1_mpn", client) - elif request["asset"]["connection"]["vendor"]["id"] == "VA-919-258": - values["awsAccountEmail"] = get_parameter(request, "awsAccountEmail") - values["awsAccountName"] = get_parameter(request, "awsAccountName") - values["awsOrderedSupportLevel"] = get_parameter( - request, "awsOrderedSupportLevel" - ) - values["awsAccountId"] = get_parameter(request, "awsAccountId") - return values diff --git a/reports/all_transactions/readme.md b/reports/all_transactions/readme.md deleted file mode 100644 index b3f37a9..0000000 --- a/reports/all_transactions/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# All transactions report - -This report provides an overview of all requests and billing requests for a given range of dates. -Report includes: - * All syndicated and direct transactions - * AWS Product specific data - * Microsoft products specific data \ No newline at end of file diff --git a/reports/all_transactions/template.xlsx b/reports/all_transactions/template.xlsx deleted file mode 100644 index 235284bf9cef574d285b9cb4972e57799d224e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9082 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 Date: Wed, 1 Nov 2023 16:57:14 -0400 Subject: [PATCH 04/15] Update reports.json --- reports.json | 308 +-------------------------------------------------- 1 file changed, 5 insertions(+), 303 deletions(-) diff --git a/reports.json b/reports.json index 1228caa..c804659 100644 --- a/reports.json +++ b/reports.json @@ -5,12 +5,12 @@ "language":"python", "reports":[ { - "name":"IM all Transactions report", - "readme_file":"reports/all_transactions/readme.md", - "template":"reports/all_transactions/template.xlsx", + "name":"TS Subscriptions", + "readme_file":"reports/TS_products/readme.md", + "template":"reports/TS_products/template.xlsx", "start_row":2, "start_col":1, - "entrypoint":"reports.all_transactions.entrypoint.generate", + "entrypoint":"reports.TS_products.entrypoint.generate", "audience":[ "provider" ], @@ -22,127 +22,6 @@ "name":"Report period", "description":"Provide the time period to create the report", "required":true - } - ] - }, - { - "name":"IM all Microsoft Transactions report", - "readme_file":"reports/ms_products/readme.md", - "report_spec":"2", - "renderers":[ - { - "id":"xlsx", - "type":"xlsx", - "default":false, - "description":"Export data in Microsoft Excel 2020 format.", - "template":"reports/ms_products/template.xlsx", - "args":{ - "start_row":2, - "start_col":1 - } - }, - { - "id":"json", - "type":"json", - "default":false, - "description":"Export data as JSON" - }, - { - "id":"csv", - "type":"csv", - "default":true, - "description":"Export data as CSV" - } - ], - "entrypoint":"reports.ms_products.entrypoint.generate", - "audience":[ - "provider" - ], - "parameters":[ - { - "id":"date", - "type":"date_range", - "name":"Report period", - "description":"Provide the time period to create the report", - "required":true - } - ] - }, - { - "name":"Billing requests report for syndication partners", - "readme_file":"reports/billing_requests/Readme.md", - "template":"reports/billing_requests/template.xlsx", - "start_row":2, - "start_col":1, - "entrypoint":"reports.billing_requests.entrypoint.generate", - "audience":[ - "provider" - ], - "report_spec":"1", - "parameters":[ - { - "id":"date", - "type":"date_range", - "name":"Report period", - "description":"Provide the time period to create the report", - "required":true - }, - { - "id":"product", - "type":"product", - "name":"Product list", - "required":true, - "description":"Select the products you want to include in report" - } - ] - }, - { - "name":"Billing requests report for syndication partners at line item level", - "readme_file":"reports/billing_requests_line_item/Readme.md", - "template":"reports/billing_requests_line_item/template.xlsx", - "start_row":2, - "start_col":1, - "entrypoint":"reports.billing_requests_line_item.entrypoint.generate", - "audience":[ - "provider", - "vendor" - ], - "report_spec":"1", - "parameters":[ - { - "id":"date", - "type":"date_range", - "name":"Report period", - "description":"Provide the time period to create the report", - "required":true - }, - { - "id":"product", - "type":"product", - "name":"Product list", - "required":true, - "description":"Select the products you want to include in report" - } - ] - }, - { - "name":"AWS Assets report", - "readme_file":"reports/aws_products/Readme.md", - "template":"reports/aws_products/template.xlsx", - "start_row":2, - "start_col":1, - "entrypoint":"reports.aws_products.entrypoint.generate", - "audience":[ - "provider" - ], - "report_spec":"1", - "parameters":[ - { - "id":"date", - "type":"date_range", - "name":"Assets range", - "description":"Provide the time range of assets creation", - "required":true }, { "id":"products", @@ -152,183 +31,6 @@ "description":"Select the products that represents AWS, ALL option is not valid" } ] - }, - { - "name":"SonicWall Subscriptions list report", - "readme_file":"reports/sonicwall_subscriptions/Readme.md", - "entrypoint":"reports.sonicwall_subscriptions.entrypoint.generate", - "audience":[ - "provider", - "vendor" - ], - "report_spec":"2", - "renderers":[ - { - "id":"xlsx", - "type":"xlsx", - "default":true, - "description":"Export data in Microsoft Excel 2020 format.", - "template":"reports/sonicwall_subscriptions/templates/xlsx/template.xlsx", - "args":{ - "start_row":2, - "start_col":1 - } - }, - { - "id":"json", - "type":"json", - "default":false, - "description":"Export data as JSON" - }, - { - "id":"csv", - "type":"csv", - "default":false, - "description":"Export data as CSV" - } - ], - "parameters":[ - { - "id":"date", - "type":"date_range", - "name":"Subscription Creation", - "description":"Optional: in case that is desired, report can be limited to subscriptions created in the selected period of time" - }, - { - "id":"product", - "type":"product", - "name":"Product list", - "required":true, - "description":"Select the products that represents SonicWall product that you want to include in report" - }, - { - "id":"mkp", - "type":"marketplace", - "name":"Marketplaces", - "required":true, - "description":"Select the marketplaces you want to include in report" - }, - { - "id":"period", - "type":"checkbox", - "name":"Billing Periods", - "required":true, - "description":"Specify the billing periods to include in report", - "choices":[ - { - "value":"monthly", - "label":"1 Month" - }, - { - "value":"yearly", - "label":"1 Year" - }, - { - "value":"years_2", - "label":"2 Years" - }, - { - "value":"years_3", - "label":"3 Years" - }, - { - "value":"years_4", - "label":"4 Years" - }, - { - "value":"years_5", - "label":"5 Years" - } - ] - }, - { - "id":"status", - "type":"checkbox", - "name":"Subscription status", - "required":true, - "description":"Specify the subscription status to include in report", - "choices":[ - { - "value":"active", - "label":"Active" - }, - { - "value":"processing", - "label":"Processing" - }, - { - "value":"suspended", - "label":"Suspended" - }, - { - "value":"terminating", - "label":"Terminating" - }, - { - "value":"terminated", - "label":"Terminated" - } - ] - } - ] - }, - { - "name":"Open Usage Files report", - "readme_file":"reports/usage_files_status/Readme.md", - "entrypoint":"reports.usage_files_status.entrypoint.generate", - "audience":[ - "provider", - "vendor" - ], - "report_spec":"2", - "renderers":[ - { - "id":"xlsx", - "type":"xlsx", - "default":true, - "description":"Export data in Microsoft Excel 2020 format.", - "template":"reports/usage_files_status/templates/xlsx/template.xlsx", - "args":{ - "start_row":2, - "start_col":1 - } - }, - { - "id":"json", - "type":"json", - "default":false, - "description":"Export data as JSON" - }, - { - "id":"csv", - "type":"csv", - "default":false, - "description":"Export data as CSV" - } - ], - "parameters":[ - - ] - }, - { - "name":"Syndication products for Dragon tool", - "readme_file":"reports/im_syndication_products_availability/Readme.md", - "entrypoint":"reports.im_syndication_products_availability.entrypoint.generate", - "audience":[ - "provider" - ], - "report_spec":"2", - "renderers":[ - { - "id":"json", - "type":"json", - "default":true, - "description":"Export data as JSON" - } - ], - "parameters":[ - - ] } ] -} \ No newline at end of file +} From 8fa2ac0b8ed28533d3af910c5c942ead3468a9db Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:58:08 -0400 Subject: [PATCH 05/15] Update reports.json --- reports.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reports.json b/reports.json index c804659..12911be 100644 --- a/reports.json +++ b/reports.json @@ -28,7 +28,7 @@ "type":"product", "name":"Product list", "required":true, - "description":"Select the products that represents AWS, ALL option is not valid" + "description":"Select the products that represents TS, ALL option is not valid" } ] } From 5837b3d99fdf6b739c567567fc0c95db242c7575 Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:58:38 -0400 Subject: [PATCH 06/15] Delete reports/aws_products directory --- reports/aws_products/Readme.md | 3 - reports/aws_products/__init__.py | 0 reports/aws_products/entrypoint.py | 89 ----------------------------- reports/aws_products/template.xlsx | Bin 10576 -> 0 bytes 4 files changed, 92 deletions(-) delete mode 100644 reports/aws_products/Readme.md delete mode 100644 reports/aws_products/__init__.py delete mode 100644 reports/aws_products/entrypoint.py delete mode 100644 reports/aws_products/template.xlsx diff --git a/reports/aws_products/Readme.md b/reports/aws_products/Readme.md deleted file mode 100644 index 183dca6..0000000 --- a/reports/aws_products/Readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# AWS Report - -This report provides a list of assets for AWS product and generates a report with AWS specific information \ No newline at end of file diff --git a/reports/aws_products/__init__.py b/reports/aws_products/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/reports/aws_products/entrypoint.py b/reports/aws_products/entrypoint.py deleted file mode 100644 index 37aaf5e..0000000 --- a/reports/aws_products/entrypoint.py +++ /dev/null @@ -1,89 +0,0 @@ -from cnct import R -from reports.utils import ( - convert_to_datetime, - get_asset_parameter, - get_value, -) - -awsmpn = {} - - -def get_aws_mpn(client, account, product): - if awsmpn.get(account): - return awsmpn.get(account) - rql_filter = R() - rql_filter &= R().product.id.eq(product) - rql_filter &= R().account.id.eq(account) - tc = client.ns('tier').configs.filter(rql_filter).first() - if tc: - for param in tc['params']: - if param['id'] == 'awsApnId': - awsmpn['account'] = param.get('value', '-') - return param.get('value', '-') - return '-' - - -def warm_up_tcs(client, products): - rql_filter = R() - rql_filter &= R().product.id.oneof(products) - tcs = client.ns('tier').configs.filter(rql_filter).all() - for tc in tcs: - if not awsmpn.get(f'{tc["account"]["id"]}_{tc["product"]["id"]}'): - for param in tc['params']: - if param['id'] == 'awsApnId': - awsmpn[f'{tc["account"]["id"]}_{tc["product"]["id"]}'] = param.get('value', '-') - - -def get_awsmpn(account, product): - return awsmpn.get(f'{account}_{product}', '-') - - -def generate(client, parameters, progress_callback): - warm_up_tcs(client, parameters['products']['choices']) - subscriptions_rql = R() - if not parameters.get("products") or len(parameters['products']['choices']) < 1: - raise RuntimeError("AWS products was not selected") - if parameters.get("date"): - subscriptions_rql &= R().events.created.at.ge(parameters['date']['after']) - subscriptions_rql &= R().events.created.at.le(parameters['date']['before']) - subscriptions_rql &= R().product.id.oneof(parameters['products']['choices']) - subscriptions_rql &= R().status.ne('draft') - subscriptions = client.assets.filter(subscriptions_rql) - total_subscriptions = subscriptions.count() - progress = 0 - for subscription in subscriptions: - yield ( - subscription['id'], - subscription.get('external_id', "-"), - subscription['status'], - subscription['marketplace']['name'], - subscription['product']['id'], - convert_to_datetime(subscription['events']['created']['at']), - get_asset_parameter(subscription, "awsAccountId"), - get_asset_parameter(subscription, "awsAccountEmail"), - get_value(subscription['tiers'], "customer", "external_id"), - get_value(subscription['tiers'], "customer", "name"), - get_value(subscription['tiers']["customer"], "contact_info", "address_line1"), - get_value(subscription['tiers']["customer"], "contact_info", "address_line2"), - get_value(subscription['tiers']["customer"], "contact_info", "city"), - get_value(subscription['tiers']["customer"], "contact_info", "state"), - get_value(subscription['tiers']["customer"], "contact_info", "postal_code"), - get_value(subscription['tiers']["customer"], "contact_info", "country"), - get_value(subscription['tiers']["customer"]["contact_info"], "contact", "email"), - get_asset_parameter(subscription, "isGovernmentEntity"), - get_asset_parameter(subscription, "useAccountFor"), - get_asset_parameter(subscription, "orderMode"), - get_value(subscription['tiers'], "tier1", "external_id"), - get_value(subscription['tiers'], "tier1", "name"), - get_value(subscription['tiers']["tier1"], "contact_info", "address_line1"), - get_value(subscription['tiers']["tier1"], "contact_info", "address_line2"), - get_value(subscription['tiers']["tier1"], "contact_info", "city"), - get_value(subscription['tiers']["tier1"], "contact_info", "state"), - get_value(subscription['tiers']["tier1"], "contact_info", "postal_code"), - get_value(subscription['tiers']["tier1"], "contact_info", "country"), - get_value(subscription['tiers']["tier1"]["contact_info"], "contact", "email"), - # get_aws_mpn(client, get_value(subscription['tiers'], "tier1", 'id'), subscription['product']['id']) - get_awsmpn(get_value(subscription['tiers'], "tier1", 'id'), subscription['product']['id']) - ) - progress += 1 - progress_callback(progress, total_subscriptions) diff --git a/reports/aws_products/template.xlsx b/reports/aws_products/template.xlsx deleted file mode 100644 index 21a006c59ccfd7354f51748e86e96d8e0c537567..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10576 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 EKbV76NdN!< From 183eab7b64fa69733572ca820a0caec56874d026 Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 16:58:57 -0400 Subject: [PATCH 07/15] Delete reports/billing_requests directory --- reports/billing_requests/Readme.md | 6 --- reports/billing_requests/__init__.py | 0 reports/billing_requests/entrypoint.py | 65 ------------------------- reports/billing_requests/template.xlsx | Bin 9038 -> 0 bytes 4 files changed, 71 deletions(-) delete mode 100644 reports/billing_requests/Readme.md delete mode 100644 reports/billing_requests/__init__.py delete mode 100644 reports/billing_requests/entrypoint.py delete mode 100644 reports/billing_requests/template.xlsx diff --git a/reports/billing_requests/Readme.md b/reports/billing_requests/Readme.md deleted file mode 100644 index fb69323..0000000 --- a/reports/billing_requests/Readme.md +++ /dev/null @@ -1,6 +0,0 @@ -# Billing Requests Report -This report provides a view of all billing transactions generated by syndication partners, in other words, NOT by Ingram Micro Cloud - -Report accepts to limit the output by: -* List of products -* List of marketplaces \ No newline at end of file diff --git a/reports/billing_requests/__init__.py b/reports/billing_requests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/reports/billing_requests/entrypoint.py b/reports/billing_requests/entrypoint.py deleted file mode 100644 index 851fb04..0000000 --- a/reports/billing_requests/entrypoint.py +++ /dev/null @@ -1,65 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2021, CloudBlue -# All rights reserved. -# - -from connect.client import R - -from reports.utils import convert_to_datetime, get_basic_value, get_value - - -def generate(client, parameters, progress_callback): - requests = _get_requests(client, parameters) - - progress = 0 - total = requests.count() - - for request in requests: - connection = request['asset']['connection'] - yield ( - request['id'], - convert_to_datetime(request['period']['from']), - convert_to_datetime(request['period']['to']), - get_basic_value(request['period'], 'delta'), - get_basic_value(request['period'], 'uom'), - get_value(request['asset']['tiers'], 'customer', 'id'), - get_value(request['asset']['tiers'], 'customer', 'name'), - get_value(request['asset']['tiers'], 'customer', 'external_id'), - get_value(request['asset']['tiers'], 'tier1', 'id'), - get_value(request['asset']['tiers'], 'tier1', 'name'), - get_value(request['asset']['tiers'], 'tier1', 'external_id'), - get_value(request['asset']['tiers'], 'tier2', 'id'), - get_value(request['asset']['tiers'], 'tier2', 'name'), - get_value(request['asset']['tiers'], 'tier2', 'external_id'), - get_value(request['asset']['connection'], 'provider', 'id'), - get_value(request['asset']['connection'], 'provider', 'name'), - get_value(request['asset']['connection'], 'vendor', 'id'), - get_value(request['asset']['connection'], 'vendor', 'name'), - get_value(request['asset'], 'product', 'id'), - get_value(request['asset'], 'product', 'name'), - get_value(request, 'asset', 'id'), - get_value(request, 'asset', 'external_id'), - get_value(request, 'asset', 'status'), - get_value(request['asset'], 'connection', 'type'), - get_value(connection, 'hub', 'id') if 'hub' in connection else '', - get_value(connection, 'hub', 'name') if 'hub' in connection else '', - ) - progress += 1 - progress_callback(progress, total) - - -def _get_requests(client, parameters): - query = R() - query &= R().created.ge(parameters['date']['after']) - query &= R().created.le(parameters['date']['before']) - query &= R().asset.connection.provider.id.ne('PA-239-689') - - if parameters.get('product') and parameters['product']['all'] is False: - query &= R().asset.product.id.oneof(parameters['product']['choices']) - if parameters.get('mkp') and parameters['mkp']['all'] is False: - query &= R().asset.marketplace.id.oneof(parameters['mkp']['choices']) - if parameters.get('hub') and parameters['hub']['all'] is False: - query &= R().asset.connection.hub.id.oneof(parameters['hub']['choices']) - - return client.ns('subscriptions').requests.filter(query) diff --git a/reports/billing_requests/template.xlsx b/reports/billing_requests/template.xlsx deleted file mode 100644 index 02f095400292b65102bb39ea92c8b7002342836f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9038 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 From 73ff4ab2e0d585665f85ebd8c835ca065ecd5697 Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:02:17 -0400 Subject: [PATCH 08/15] Delete reports/billing_requests_line_item directory --- reports/billing_requests_line_item/Readme.md | 7 -- .../billing_requests_line_item/__init__.py | 0 .../billing_requests_line_item/entrypoint.py | 74 ------------------ .../billing_requests_line_item/template.xlsx | Bin 9214 -> 0 bytes 4 files changed, 81 deletions(-) delete mode 100644 reports/billing_requests_line_item/Readme.md delete mode 100644 reports/billing_requests_line_item/__init__.py delete mode 100644 reports/billing_requests_line_item/entrypoint.py delete mode 100644 reports/billing_requests_line_item/template.xlsx diff --git a/reports/billing_requests_line_item/Readme.md b/reports/billing_requests_line_item/Readme.md deleted file mode 100644 index cf60b89..0000000 --- a/reports/billing_requests_line_item/Readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# Billing Requests Report at line item level -This report provides a view of all billing transactions generated for a given period of time -The generated report will provide a row for each item on the billing request and will include vendor billing requests and provider ones if any. -Report accepts to limit the output by: -* List of products -* List of marketplaces -* List of hubs \ No newline at end of file diff --git a/reports/billing_requests_line_item/__init__.py b/reports/billing_requests_line_item/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/reports/billing_requests_line_item/entrypoint.py b/reports/billing_requests_line_item/entrypoint.py deleted file mode 100644 index 52d1907..0000000 --- a/reports/billing_requests_line_item/entrypoint.py +++ /dev/null @@ -1,74 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2021, CloudBlue -# All rights reserved. -# - -from connect.client import R - -from reports.utils import convert_to_datetime, get_basic_value, get_value - - -def generate(client, parameters, progress_callback): - requests = _get_requests(client, parameters) - - progress = 0 - total = requests.count() - - for request in requests: - connection = request['asset']['connection'] - for item in request['items']: - yield ( - request['id'], - convert_to_datetime(request['period']['from']), - convert_to_datetime(request['period']['to']), - get_basic_value(request['period'], 'delta'), - get_basic_value(request['period'], 'uom'), - get_basic_value(item['billing'], 'cycle_number'), - get_basic_value(item, 'global_id'), - get_basic_value(item, 'display_name'), - get_basic_value(item, 'item_type'), - get_basic_value(item, 'type'), - get_basic_value(item, 'mpn'), - get_basic_value(item, 'period'), - get_basic_value(item, 'quantity'), - get_value(request['asset']['tiers'], 'customer', 'id'), - get_value(request['asset']['tiers'], 'customer', 'name'), - get_value(request['asset']['tiers'], 'customer', 'external_id'), - get_value(request['asset']['tiers'], 'tier1', 'id'), - get_value(request['asset']['tiers'], 'tier1', 'name'), - get_value(request['asset']['tiers'], 'tier1', 'external_id'), - get_value(request['asset']['tiers'], 'tier2', 'id'), - get_value(request['asset']['tiers'], 'tier2', 'name'), - get_value(request['asset']['tiers'], 'tier2', 'external_id'), - get_value(request['asset']['connection'], 'provider', 'id'), - get_value(request['asset']['connection'], 'provider', 'name'), - get_value(request['asset']['connection'], 'vendor', 'id'), - get_value(request['asset']['connection'], 'vendor', 'name'), - get_value(request['asset'], 'product', 'id'), - get_value(request['asset'], 'product', 'name'), - get_value(request, 'asset', 'id'), - get_value(request, 'asset', 'external_id'), - get_value(request, 'asset', 'status'), - get_value(request['asset'], 'connection', 'type'), - get_value(connection, 'hub', 'id') if 'hub' in connection else '', - get_value(connection, 'hub', 'name') if 'hub' in connection else '', - ) - progress += 1 - progress_callback(progress, total) - - -def _get_requests(client, parameters): - query = R() - query &= R().created.ge(parameters['date']['after']) - query &= R().created.le(parameters['date']['before']) - query &= R().asset.connection.provider.id.ne('PA-239-689') - - if parameters.get('product') and parameters['product']['all'] is False: - query &= R().asset.product.id.oneof(parameters['product']['choices']) - if parameters.get('mkp') and parameters['mkp']['all'] is False: - query &= R().asset.marketplace.id.oneof(parameters['mkp']['choices']) - if parameters.get('hub') and parameters['hub']['all'] is False: - query &= R().asset.connection.hub.id.oneof(parameters['hub']['choices']) - - return client.ns('subscriptions').requests.filter(query) diff --git a/reports/billing_requests_line_item/template.xlsx b/reports/billing_requests_line_item/template.xlsx deleted file mode 100644 index 48e479ef06546efdde88155e740c343050092dbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9214 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 Date: Wed, 1 Nov 2023 17:02:25 -0400 Subject: [PATCH 09/15] Delete reports/im_syndication_products_availability directory --- .../Readme.md | 3 -- .../__init__.py | 0 .../entrypoint.py | 41 ------------------- 3 files changed, 44 deletions(-) delete mode 100644 reports/im_syndication_products_availability/Readme.md delete mode 100644 reports/im_syndication_products_availability/__init__.py delete mode 100644 reports/im_syndication_products_availability/entrypoint.py diff --git a/reports/im_syndication_products_availability/Readme.md b/reports/im_syndication_products_availability/Readme.md deleted file mode 100644 index 43136c4..0000000 --- a/reports/im_syndication_products_availability/Readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Syndication products list for dragon - -This report provides a json report to populate dragon tool \ No newline at end of file diff --git a/reports/im_syndication_products_availability/__init__.py b/reports/im_syndication_products_availability/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/reports/im_syndication_products_availability/entrypoint.py b/reports/im_syndication_products_availability/entrypoint.py deleted file mode 100644 index 7517429..0000000 --- a/reports/im_syndication_products_availability/entrypoint.py +++ /dev/null @@ -1,41 +0,0 @@ -from connect.client import R - -def generate( - client=None, - parameters=None, - progress_callback=None, - renderer_type=None, - extra_context_callback=None, -): - syndication_group = 'PRG-5440-3996' - products=client.ns( - 'catalog' - ).collection( - 'groups' - )[syndication_group].products.all().order_by('name') - total_products = products.count() - progress = 0 - for prod in products: - product = client.products[prod['id']].get() - output = { - 'id': product['id'], - 'name': product['name'], - 'vendor_id': product['owner']['id'], - 'vendor_name': product['owner']['name'] - } - rql = R() - rql &= R().product.id.eq(product['id']) - rql &= R().status.eq('listed') - listings = client.listings.filter(rql).all() - marketplaces = [] - for listing in listings: - marketplaces.append( - { - 'id': listing['contract']['marketplace']['id'], - 'name': listing['contract']['marketplace']['name'] - } - ) - output['marketplaces'] = marketplaces - yield output - progress += 1 - progress_callback(progress, total_products) From 600f373b75ec9a04f662a89010086241e28f76d0 Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:02:32 -0400 Subject: [PATCH 10/15] Delete reports/sonicwall_subscriptions directory --- reports/sonicwall_subscriptions/Readme.md | 11 -- reports/sonicwall_subscriptions/__init__.py | 0 reports/sonicwall_subscriptions/entrypoint.py | 127 ------------------ .../templates/xlsx/template.xlsx | Bin 9333 -> 0 bytes 4 files changed, 138 deletions(-) delete mode 100644 reports/sonicwall_subscriptions/Readme.md delete mode 100644 reports/sonicwall_subscriptions/__init__.py delete mode 100644 reports/sonicwall_subscriptions/entrypoint.py delete mode 100644 reports/sonicwall_subscriptions/templates/xlsx/template.xlsx diff --git a/reports/sonicwall_subscriptions/Readme.md b/reports/sonicwall_subscriptions/Readme.md deleted file mode 100644 index 0c67793..0000000 --- a/reports/sonicwall_subscriptions/Readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# SonicWall Subscription List Report - -This report provides a view of all subscriptions available at your account with exclusive parameters from SonicWall Products - -Report accepts to limit the output by: - -* Subscription creation date range -* List of products -* List of marketplaces -* Billing period -* Subscription status \ No newline at end of file diff --git a/reports/sonicwall_subscriptions/__init__.py b/reports/sonicwall_subscriptions/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/reports/sonicwall_subscriptions/entrypoint.py b/reports/sonicwall_subscriptions/entrypoint.py deleted file mode 100644 index 61cba8b..0000000 --- a/reports/sonicwall_subscriptions/entrypoint.py +++ /dev/null @@ -1,127 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2021, CloudBlue -# All rights reserved. -# - -from connect.client import R - -from reports.utils import convert_to_datetime, get_value, get_asset_parameter - -HEADERS = ( - 'Subscription ID', 'Subscription External ID', 'Subscription Type', - 'Creation date', 'Updated date', 'Status', 'Billing Period', - 'Anniversary Day', 'Anniversary Month', 'Contract ID', 'Contract Name', - 'Customer ID', 'Customer Name', 'Customer External ID', - 'Tier 1 ID', 'Tier 1 Name', 'Tier 1 External ID', - 'Tier 2 ID', 'Tier 2 Name', 'Tier 2 External ID', - 'Provider Account ID', 'Provider Account name', - 'Vendor Account ID', 'Vendor Account Name', - 'Product ID', 'Product Name', 'Hub ID', 'Hub Name', - 'Original PO Number', 'Vendor Subscription ID', -) - - -def generate( - client=None, - parameters=None, - progress_callback=None, - renderer_type=None, - extra_context_callback=None, -): - subscriptions = _get_subscriptions(client, parameters) - total = subscriptions.count() - progress = 0 - if renderer_type == 'csv': - yield HEADERS - progress += 1 - total += 1 - progress_callback(progress, total) - - for subscription in subscriptions: - if renderer_type == 'json': - yield { - HEADERS[idx].replace(' ', '_').lower(): value - for idx, value in enumerate(_process_line(subscription)) - } - else: - yield _process_line(subscription) - progress += 1 - progress_callback(progress, total) - - -def _get_subscriptions(client, parameters): - query = R() - if parameters.get('date') and parameters['date']['after'] != '': - query &= R().events.created.at.ge(parameters['date']['after']) - query &= R().events.created.at.le(parameters['date']['before']) - if parameters.get('product') and parameters['product']['all'] is False: - query &= R().product.id.oneof(parameters['product']['choices']) - if parameters.get('mkp') and parameters['mkp']['all'] is False: - query &= R().marketplace.id.oneof(parameters['mkp']['choices']) - if parameters.get('period') and parameters['period']['all'] is False: - query &= R().billing.period.uom.oneof(parameters['period']['choices']) - if parameters.get('status') and parameters['status']['all'] is False: - query &= R().status.oneof(parameters['status']['choices']) - - return client.ns('subscriptions').assets.filter(query) - - -def calculate_period(delta, uom): - if delta == 1: - if uom == 'monthly': - return 'Monthly' - return 'Yearly' - else: - if uom == 'monthly': - return f'{int(delta)} Months' - return f'{int(delta)} Years' - - -def get_anniversary_day(subscription_billing): - if 'anniversary' in subscription_billing and 'day' in subscription_billing['anniversary']: - return subscription_billing['anniversary']['day'] - return '-' - - -def get_anniversary_month(subscription_billing): - if 'anniversary' in subscription_billing and 'month' in subscription_billing['anniversary']: - return subscription_billing['anniversary']['month'] - return '-' - -def _process_line(subscription): - return ( - subscription.get('id'), - subscription.get('external_id', '-'), - get_value(subscription, 'connection', 'type'), - convert_to_datetime(subscription['events']['created']['at']), - convert_to_datetime(subscription['events']['updated']['at']), - subscription.get('status'), - calculate_period( - subscription['billing']['period']['delta'], - subscription['billing']['period']['uom'], - ) if 'billing' in subscription else '-', - get_anniversary_day(subscription['billing']) if 'billing' in subscription else '-', - get_anniversary_month(subscription['billing']) if 'billing' in subscription else '-', - subscription['contract']['id'] if 'contract' in subscription else '-', - subscription['contract']['name'] if 'contract' in subscription else '-', - get_value(subscription.get('tiers', ''), 'customer', 'id'), - get_value(subscription.get('tiers', ''), 'customer', 'name'), - get_value(subscription.get('tiers', ''), 'customer', 'external_id'), - get_value(subscription.get('tiers', ''), 'tier1', 'id'), - get_value(subscription.get('tiers', ''), 'tier1', 'name'), - get_value(subscription.get('tiers', ''), 'tier1', 'external_id'), - get_value(subscription.get('tiers', ''), 'tier2', 'id'), - get_value(subscription.get('tiers', ''), 'tier2', 'name'), - get_value(subscription.get('tiers', ''), 'tier2', 'external_id'), - get_value(subscription['connection'], 'provider', 'id'), - get_value(subscription['connection'], 'provider', 'name'), - get_value(subscription['connection'], 'vendor', 'id'), - get_value(subscription['connection'], 'vendor', 'name'), - get_value(subscription, 'product', 'id'), - get_value(subscription, 'product', 'name'), - get_value(subscription['connection'], 'hub', 'id'), - get_value(subscription['connection'], 'hub', 'name'), - get_asset_parameter(subscription, 'previous_contract_number'), - get_asset_parameter(subscription, 'vendor_subscription_id'), - ) diff --git a/reports/sonicwall_subscriptions/templates/xlsx/template.xlsx b/reports/sonicwall_subscriptions/templates/xlsx/template.xlsx deleted file mode 100644 index 81e9fed82e494b91b118c94b599783d71a1e75b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9333 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 K`5O6epZ*X3QZx|& From 21f1a6165ccd107b311be3af90a4d34768bf4b4b Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:02:40 -0400 Subject: [PATCH 11/15] Delete reports/ms_products directory --- reports/ms_products/__init__.py | 0 reports/ms_products/entrypoint.py | 357 ------------------------------ reports/ms_products/readme.md | 8 - reports/ms_products/template.xlsx | Bin 9214 -> 0 bytes 4 files changed, 365 deletions(-) delete mode 100644 reports/ms_products/__init__.py delete mode 100644 reports/ms_products/entrypoint.py delete mode 100644 reports/ms_products/readme.md delete mode 100644 reports/ms_products/template.xlsx diff --git a/reports/ms_products/__init__.py b/reports/ms_products/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/reports/ms_products/entrypoint.py b/reports/ms_products/entrypoint.py deleted file mode 100644 index 0de7af2..0000000 --- a/reports/ms_products/entrypoint.py +++ /dev/null @@ -1,357 +0,0 @@ -from cnct import R -from reports.utils import ( - convert_to_datetime, - convert_to_datetime_subscription, - Progress, - delta, - get_parameter, - get_ta_parameter, -) -from concurrent import futures - - -HEADERS = ( - 'Request Type', 'Request ID', 'Product ID', 'Product Name', 'Vendor ID', 'Vendor Name', - 'Request Created At', 'Subscription Created At', 'Subscription ID', 'Subscription Status', - 'Subscription External ID', 'Subscription Customer', 'Customer external id', - 'Customer Country', 'Tier 1 Company name', 'Tier 1 External Id', 'Tier 1 Country location', - 'Tier 2 Company name', 'Tier 2 External Id', 'Tier 2 Country location', 'Item ID', 'Item MPN', - 'Item Description', 'Item Period', 'Item Old Quantity', 'Item Quantity', 'Item delta', - 'Provider ID', 'Provider Name', 'Source MKP', 'MKP Name', 'Contract Type', - 'Microsoft Tier1 Domain', 'Microsoft Subscription ID', 'Microsoft Customer ID', - 'Microsoft Order ID', 'Microsoft Subscription Plan', 'Microsoft Tier1 MPN', -) - -TC_CACHE = {} - -PRODUCTS = [ - 'PRD-814-505-018', - 'PRD-561-716-033', - 'PRD-275-843-418', - 'PRD-812-485-361', - 'PRD-587-782-348', - 'PRD-102-273-313', - 'PRD-376-475-231', - 'PRD-108-220-568', - 'PRD-757-861-019', - 'PRD-546-033-870', - 'PRD-245-602-328', - 'PRD-721-371-117', - 'PRD-813-681-506', - 'PRD-612-640-519', - 'PRD-812-360-509' - ] - -def generate( - client=None, - parameters=None, - progress_callback=None, - renderer_type=None, - extra_context_callback=None, -): - init_tc_cache() - #limit = client.default_limit - client.default_limit = 1000 - # populate_ta_cache(parameters, client) - #client.default_limit = limit - subscriptions_rql = R() - - if parameters.get("date"): - subscriptions_rql &= R().events.created.at.ge(parameters['date']['after']) - subscriptions_rql &= R().events.created.at.le(parameters['date']['before']) - subscriptions_rql &= R().status.eq("approved") - subscriptions_rql &= R().type.eq("vendor") - if parameters.get('mkp') and parameters['mkp']['all'] is False: - subscriptions_rql &= R().asset.marketplace.id.oneof(parameters['mkp']['choices']) - subscriptions_rql &= R().asset.product.id.oneof(PRODUCTS) - - subscriptions = ( - client.ns('subscriptions') - .collection('requests') - .filter(subscriptions_rql) - .order_by("-events.created.at") - ) - total_subscriptions = subscriptions.count() - - request_types = ["purchase", "change", "cancel"] - requests_rql = R() - if parameters.get("date"): - requests_rql &= R().created.ge(parameters['date']['after']) - requests_rql &= R().created.le(parameters['date']['before']) - requests_rql &= R().status.eq("approved") - requests_rql &= R().asset.connection.type.eq('production') - requests_rql &= R().asset.product.id.oneof(PRODUCTS) - if parameters.get('mkp') and parameters['mkp']['all'] is False: - requests_rql &= R().asset.marketplace.id.oneof(parameters['mkp']['choices']) - requests_rql &= R().type.oneof(request_types) - requests = client.requests.filter(requests_rql) - - total_requests = requests.count() - total_progress = total_subscriptions + total_requests - progress = Progress(progress_callback, total_progress) - - ex = futures.ThreadPoolExecutor() - - if renderer_type == 'csv': - yield HEADERS - - - wait_for = [] - for request in requests: - wait_for.append( - ex.submit( - get_request_record, - client, - request, - progress, - ) - ) - progress.increment() - - for future in futures.as_completed(wait_for): - results = future.result() - for result in results: - if renderer_type == 'json': - yield { - HEADERS[idx].replace(' ', '_').lower(): value - for idx, value in enumerate(result) - } - else: - yield result - - wait_for = [] - for subscription in subscriptions: - wait_for.append( - ex.submit( - get_subscription_record, - client, - subscription, - progress, - ) - ) - progress.increment() - - for future in futures.as_completed(wait_for): - results = future.result() - for result in results: - if renderer_type == 'json': - yield { - HEADERS[idx].replace(' ', '_').lower(): value - for idx, value in enumerate(result) - } - else: - yield result - - -def get_request_record(client, request, progress): - param_values = get_product_specifics(request, client) - output = [] - for item in request["asset"]["items"]: - try: - if item["quantity"] == "0" and item["old_quantity"] == "0": - continue - output.append( - [ - request["type"].capitalize(), - request["id"], - request["asset"]["product"]["id"], - request["asset"]["product"]["name"], - request["asset"]["connection"]["vendor"]['id'], - request["asset"]["connection"]["vendor"]["name"], - convert_to_datetime(request["created"]), - convert_to_datetime(request["asset"]["events"]["created"]["at"]), - request["asset"]["id"], - request["asset"]["status"], - request["asset"]["external_id"], - request["asset"]["tiers"]["customer"]["name"], - ( - request["asset"]["tiers"]["customer"]["external_id"] - if "external_id" in request["asset"]["tiers"]["customer"] - else request["asset"]["tiers"]["customer"]["external_uid"] - ), - request["asset"]["tiers"]["customer"]["contact_info"]["country"], - request["asset"]["tiers"]["tier1"]["name"], - ( - request["asset"]["tiers"]["tier1"]["external_id"] - if "external_id" in request["asset"]["tiers"]["tier1"] - else request["asset"]["tiers"]["tier1"]["external_uid"] - ), - request["asset"]["tiers"]["tier1"]["contact_info"]["country"], - ( - request["asset"]["tiers"]["tier2"]["name"] - if "name" in request["asset"]["tiers"]["tier2"] - else "-" - ), - ( - request["asset"]["tiers"]["tier2"]["external_id"] - if "external_id" in request["asset"]["tiers"]["tier2"] - else "-" - ), - ( - request["asset"]["tiers"]["tier2"]["contact_info"]["country"] - if request["asset"]["tiers"]["tier2"] - and "country" in request["asset"]["tiers"]["tier2"]["contact_info"] - else "-" - ), - item["global_id"], - item["mpn"], - item["display_name"], - item.get("period", item.get("item_type")), - item["old_quantity"], - item["quantity"], - delta(item["old_quantity"], item["quantity"]), - request["asset"]["connection"]["provider"]["id"], - request["asset"]["connection"]["provider"]["name"], - request["asset"]["marketplace"]["id"], - request["asset"]["marketplace"]["name"], - request["asset"]["contract"].get("type", "distribution").capitalize(), - param_values["microsoft_domain"], - param_values["subscription_id"], - param_values["ms_customer_id"], - param_values["microsoft_order_id"], - param_values["microsoft_plan_subscription_id"], - param_values["microsoft_tier1_mpn"], - ] - ) - except Exception: - pass - return output - - -def get_subscription_record(client, subscription, progress): - param_values = get_product_specifics(subscription, client) - output = [] - try: - for item in subscription["items"]: - output.append( - [ - subscription["type"].capitalize() + " Billing", - subscription["id"], - subscription["asset"]["product"]["id"], - subscription["asset"]["product"]["name"], - subscription["asset"]["connection"]["vendor"]['id'], - subscription["asset"]["connection"]["vendor"]["name"], - convert_to_datetime_subscription(subscription["events"]["created"]["at"]), - convert_to_datetime_subscription(subscription["asset"]["events"]["created"]["at"]), - subscription["asset"]["id"], - subscription["asset"]["status"], - subscription["asset"]["external_id"], - subscription["asset"]["tiers"]["customer"]["name"], - ( - subscription["asset"]["tiers"]["customer"]["external_id"] - if "external_id" in subscription["asset"]["tiers"]["customer"] - else subscription["asset"]["tiers"]["customer"]["external_uid"] - ), - subscription["asset"]["tiers"]["customer"]["contact_info"]["country"], - subscription["asset"]["tiers"]["tier1"]["name"], - ( - subscription["asset"]["tiers"]["tier1"]["external_id"] - if "external_id" in subscription["asset"]["tiers"]["tier1"] - else subscription["asset"]["tiers"]["tier1"]["external_uid"] - ), - subscription["asset"]["tiers"]["tier1"]["contact_info"]["country"], - ( - subscription["asset"]["tiers"]["tier2"]["name"] - if "tier2" in subscription["asset"]["tiers"] - else "-" - ), - ( - subscription["asset"]["tiers"]["tier2"]["external_id"] - if "tier2" in subscription["asset"]["tiers"] - else "-" - ), - ( - subscription["asset"]["tiers"]["tier2"]["contact_info"]["country"] - if "tier2" in subscription["asset"]["tiers"] - else "-" - ), - item["global_id"], - item["mpn"], - item["display_name"], - item.get("period", item.get("item_type")), - 0, - ( - "unlimited" if item["quantity"] == -1 else item["quantity"] - ), - ( - "unlimited" if item["quantity"] == -1 else item["quantity"] - ), - subscription["asset"]["connection"]["provider"]["id"], - subscription["asset"]["connection"]["provider"]["name"], - subscription["asset"]["marketplace"]["id"], - subscription["asset"]["marketplace"]["name"], - ( - "Syndication" - if "CRU" in subscription["asset"]["contract"]["id"] - else "Distribution" - ), - param_values["microsoft_domain"], - param_values["subscription_id"], - param_values["ms_customer_id"], - param_values["microsoft_order_id"], - param_values["microsoft_plan_subscription_id"], - param_values["microsoft_tier1_mpn"], - ] - ) - except Exception as e: - print(e) - return output - - -def get_product_specifics(request, client): - values = { - "microsoft_domain": "-", - "subscription_id": "-", - "ms_customer_id": "-", - "microsoft_order_id": "-", - "microsoft_plan_subscription_id": "-", - "microsoft_tier1_mpn": "-", - } - if request["asset"]["connection"]["vendor"]["id"] == "VA-888-104": - values["microsoft_domain"] = get_parameter(request, "microsoft_domain") - sub_id = get_parameter(request, "subscription_id") - if sub_id == "-": - sub_id = get_parameter(request, "microsoft_subscription_id") - values["subscription_id"] = sub_id - cust_id = get_parameter(request, "ms_customer_id") - if cust_id == "-": - cust_id = get_parameter(request, "customer_id") - values["ms_customer_id"] = cust_id - order_id = get_parameter(request, "microsoft_order_id") - if order_id == "-": - order_id = get_parameter(request, "csp_order_id") - values["microsoft_plan_subscription_id"] = get_parameter( - request, - "microsoft_plan_subscription_id", - ) - values["microsoft_order_id"] = order_id - values["microsoft_tier1_mpn"] = get_param_mpn(request, client) - return values - -def init_tc_cache(): - for product in PRODUCTS: - TC_CACHE[product] = {} - -def get_param_mpn(request, client): - if request['asset']['tiers']['tier1']['id'] in TC_CACHE[request['asset']['product']['id']]: - return TC_CACHE[request['asset']['product']['id']][request['asset']['tiers']['tier1']['id']] - mpn = get_ta_parameter(request, 'tier1', 'tier1_mpn', client) - TC_CACHE[request['asset']['product']['id']][request['asset']['tiers']['tier1']['id']] = mpn - return mpn - -def populate_ta_cache(parameters, client): - rql = R() - rql &= R().product.id.oneof(PRODUCTS) - if parameters.get('mkp') and parameters['mkp']['all'] is False: - rql &= R().marketplace.id.oneof(parameters['mkp']['choices']) - tcs = client.ns('tier').collection('configs').filter(rql) - for tc in tcs: - if tc['product']['id'] not in TC_CACHE: - TC_CACHE[tc['product']['id']] = {} - TC_CACHE[tc['product']['id']][tc['account']['id']] = get_param_value(tc['params'], 'tier1_mpn') - -def get_param_value(params, param_id): - for param in params: - if param_id == param['id']: - return param['value'] if 'value' in param else '-' - return '-' \ No newline at end of file diff --git a/reports/ms_products/readme.md b/reports/ms_products/readme.md deleted file mode 100644 index 53647e5..0000000 --- a/reports/ms_products/readme.md +++ /dev/null @@ -1,8 +0,0 @@ -# Microsoft Products transactions report - -This report provides an overview of all requests and billing requests for a given range of dates. -Report includes: - * All syndicated and direct transactions - * Microsoft products specific data - -**IMPORTANT**: Select the Microsoft products only \ No newline at end of file diff --git a/reports/ms_products/template.xlsx b/reports/ms_products/template.xlsx deleted file mode 100644 index 5cc3d5aad79b61bd7103516e458ea512cf1e5ab6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9214 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 Date: Wed, 1 Nov 2023 17:03:02 -0400 Subject: [PATCH 12/15] Delete reports/usage_files_status directory --- reports/usage_files_status/Readme.md | 3 - reports/usage_files_status/__init__.py | 0 reports/usage_files_status/entrypoint.py | 88 ------------------ .../templates/xlsx/template.xlsx | Bin 8848 -> 0 bytes 4 files changed, 91 deletions(-) delete mode 100644 reports/usage_files_status/Readme.md delete mode 100644 reports/usage_files_status/__init__.py delete mode 100644 reports/usage_files_status/entrypoint.py delete mode 100644 reports/usage_files_status/templates/xlsx/template.xlsx diff --git a/reports/usage_files_status/Readme.md b/reports/usage_files_status/Readme.md deleted file mode 100644 index 7b6b484..0000000 --- a/reports/usage_files_status/Readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Usage File Status - -This report provides an export of usage files that had been created more than 24 hours ago and are not closed at the moment of report execution. diff --git a/reports/usage_files_status/__init__.py b/reports/usage_files_status/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/reports/usage_files_status/entrypoint.py b/reports/usage_files_status/entrypoint.py deleted file mode 100644 index 0231273..0000000 --- a/reports/usage_files_status/entrypoint.py +++ /dev/null @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (c) 2021, CloudBlue -# All rights reserved. -# - -from connect.client import R -from reports.utils import convert_to_datetime, get_value -from datetime import datetime - -HEADERS = ( - 'id', - 'vendor id', - 'vendor', - 'product id', - 'product', - 'provider id', - 'provider name', - 'marketplace id', - 'marketplace', - 'records uploaded', - 'records pending', - 'records accepted', - 'records closed', - 'created at', - 'accepted at', - 'closed at', - 'status', -) - - -def generate( - client=None, - parameters=None, - progress_callback=None, - renderer_type=None, - extra_context_callback=None, -): - usage_files = _get_uf(client, parameters) - total = usage_files.count() - progress = 0 - now = datetime.now() - if renderer_type == 'csv': - yield HEADERS - total += 1 - progress += 1 - progress_callback(progress, total) - for uf in usage_files: - hours, rest = divmod((now - datetime.strptime(get_value(uf['events'], 'created', 'at'), '%Y-%m-%dT%H:%M:%S+00:00')).total_seconds(), 3600) - if int(hours) <= 24: - continue - if renderer_type == 'json': - yield { - HEADERS[idx].replace(' ', '_').lower(): value - for idx, value in enumerate(_process_line(uf)) - } - else: - yield _process_line(uf) - progress += 1 - progress_callback(progress, total) - - -def _process_line(usage_file): - return ( - usage_file['id'], - usage_file['vendor']['id'], - usage_file['vendor']['name'], - usage_file['product']['id'], - usage_file['product']['name'], - usage_file['provider']['id'], - usage_file['provider']['name'], - usage_file['marketplace']['id'], - usage_file['marketplace']['name'], - usage_file['stats'].get('uploaded', 0), - usage_file['stats'].get('pending', 0), - usage_file['stats'].get('accepted', 0), - usage_file['stats'].get('closed', 0), - convert_to_datetime(get_value(usage_file['events'], 'created', 'at')), - convert_to_datetime(get_value(usage_file['events'], 'accepted', 'at')), - convert_to_datetime(get_value(usage_file['events'], 'closed', 'at')), - usage_file['status'], - ) - - -def _get_uf(client, parameters): - rql = R() - rql &= R().status.oneof(['pending', 'accepted']) - return client.ns('usage').collection('files').filter(rql).order_by('-created.at') \ No newline at end of file diff --git a/reports/usage_files_status/templates/xlsx/template.xlsx b/reports/usage_files_status/templates/xlsx/template.xlsx deleted file mode 100644 index f8e4231b917413c384b4a8200ab241828c36a369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8848 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 From fed61ea02897c967c0f4be983e6bbdf54155bf27 Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:12:56 -0400 Subject: [PATCH 13/15] Update reports.json --- reports.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reports.json b/reports.json index 12911be..f2ec85e 100644 --- a/reports.json +++ b/reports.json @@ -6,7 +6,7 @@ "reports":[ { "name":"TS Subscriptions", - "readme_file":"reports/TS_products/readme.md", + "readme_file":"reports/TS_products/Readme.md", "template":"reports/TS_products/template.xlsx", "start_row":2, "start_col":1, From 8585b9ce21c7fe2b08ed50c4280252eeb3eb21d9 Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:29:55 -0400 Subject: [PATCH 14/15] Update entrypoint.py --- reports/TS_products/entrypoint.py | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/reports/TS_products/entrypoint.py b/reports/TS_products/entrypoint.py index 94e3c2d..3e5914f 100644 --- a/reports/TS_products/entrypoint.py +++ b/reports/TS_products/entrypoint.py @@ -7,20 +7,8 @@ -def warm_up_tcs(client, products): - rql_filter = R() - rql_filter &= R().product.id.oneof(products) - tcs = client.ns('tier').configs.filter(rql_filter).all() - for tc in tcs: - if not awsmpn.get(f'{tc["account"]["id"]}_{tc["product"]["id"]}'): - for param in tc['params']: - if param['id'] == 'awsApnId': - awsmpn[f'{tc["account"]["id"]}_{tc["product"]["id"]}'] = param.get('value', '-') - - def generate(client, parameters, progress_callback): - warm_up_tcs(client, parameters['products']['choices']) subscriptions_rql = R() if not parameters.get("products") or len(parameters['products']['choices']) < 1: raise RuntimeError("AWS products was not selected") @@ -40,9 +28,7 @@ def generate(client, parameters, progress_callback): subscription['marketplace']['name'], subscription['product']['id'], convert_to_datetime(subscription['events']['created']['at']), - get_asset_parameter(subscription, "vendor_subscription_id"), - get_asset_parameter(subscription, "customer_purchase_order_number") - + get_asset_parameter(subscription, "vendor_subscription_id") ) progress += 1 progress_callback(progress, total_subscriptions) From 65a1598a4104fbea5b9d14b23399f48c2c8c267e Mon Sep 17 00:00:00 2001 From: IMC-BeatrizMartinez <100316373+IMC-BeatrizMartinez@users.noreply.github.com> Date: Wed, 1 Nov 2023 17:43:06 -0400 Subject: [PATCH 15/15] Update entrypoint.py --- reports/TS_products/entrypoint.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/reports/TS_products/entrypoint.py b/reports/TS_products/entrypoint.py index 3e5914f..906e7bf 100644 --- a/reports/TS_products/entrypoint.py +++ b/reports/TS_products/entrypoint.py @@ -1,4 +1,4 @@ -from cnct import R +from connect.client import R from reports.utils import ( convert_to_datetime, get_asset_parameter, @@ -10,8 +10,7 @@ def generate(client, parameters, progress_callback): subscriptions_rql = R() - if not parameters.get("products") or len(parameters['products']['choices']) < 1: - raise RuntimeError("AWS products was not selected") + if parameters.get("date"): subscriptions_rql &= R().events.created.at.ge(parameters['date']['after']) subscriptions_rql &= R().events.created.at.le(parameters['date']['before'])