cid-cmd 4.2.4__tar.gz → 4.2.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cid_cmd-4.2.4/cid_cmd.egg-info → cid_cmd-4.2.6}/PKG-INFO +1 -1
- cid_cmd-4.2.6/cid/_version.py +2 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/common.py +3 -9
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/quicksight/__init__.py +3 -1
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/quicksight/dataset.py +66 -10
- {cid_cmd-4.2.4 → cid_cmd-4.2.6/cid_cmd.egg-info}/PKG-INFO +1 -1
- cid_cmd-4.2.4/cid/_version.py +0 -2
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/LICENSE +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/MANIFEST.in +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/README.md +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/__init__.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/base.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/__init__.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/__init__.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/cid/compute.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/cid/ec2_running_cost.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/cid/s3_view.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/cid/summary_view.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/co/dataset.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/cudos/hourly_view.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/cudos/resource_view.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/kpi/kpi_ebs_snap.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/kpi/kpi_ebs_storage_all.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/kpi/kpi_instance_all.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/kpi/kpi_s3_storage_all.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/kpi/kpi_tracker.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/shared/customer_all.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/tao/dataset.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/trends/daily_anomaly_detection.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/trends/monthly_anomaly_detection.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/trends/monthly_bill_by_account.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/permissions/dashboard_permissions.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/permissions/dashboard_permissions_namespace.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/permissions/data_set_permissions.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/permissions/data_source_permissions.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/permissions/folder_permissions.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/cid/compute_savings_plan_eligible_spend.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/cid/ec2_running_cost.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/cid/ri_sp_mapping.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/cid/s3.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/cid/summary_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/all_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/auto_scale.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/auto_scale_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/ebs_volume.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/ebs_volume_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/ec2_instance.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/ec2_instance_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/ecs_service.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/ecs_service_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/idle.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/idle_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/lambda.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/lambda_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/license.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/license_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/rds_database.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/rds_instance_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/co/rds_storage_options.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/cudos/hourly_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/cudos/resource_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/kpi/first_kpi_instance_mapping_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/kpi/kpi_ebs_snap_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/kpi/kpi_ebs_storage_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/kpi/kpi_instance_all_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/kpi/kpi_s3_storage_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/kpi/last_kpi_tracker_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/account_map.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/account_map_cur2.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/account_map_dummy.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/aws_accounts.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/aws_regions.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/aws_service_category_map.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/business_units_map.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/cur.yaml +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/customer_all_unlimited.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/payer_account_name_map.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/ta_descriptions.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/tao/glue_table.json +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/tao/ta_org_view.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/trends/daily_anomaly_detection.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/trends/monthly_anomaly_detection.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/trends/monthly_bill_by_account.sql +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/resources.yaml +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/cli.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/commands/__init__.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/commands/command_base.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/commands/init_qs.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/exceptions.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/export.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/__init__.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/account_map.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/athena.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/cloudformation.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/csv2view.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/cur.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/cur_proxy.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/diff.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/glue.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/iam.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/organizations.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/parameter_store.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/quicksight/dashboard.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/quicksight/dashboard_patching.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/quicksight/datasource.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/quicksight/definition.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/quicksight/resource.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/quicksight/template.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/quicksight/version.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/randtime.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/s3.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/helpers/timezone.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/logger.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/plugin.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/test/python/test_csv2view.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/test/python/test_isolated_parameters.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/test/python/test_merge.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/utils.py +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid_cmd.egg-info/SOURCES.txt +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid_cmd.egg-info/dependency_links.txt +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid_cmd.egg-info/entry_points.txt +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid_cmd.egg-info/requires.txt +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid_cmd.egg-info/top_level.txt +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/pyproject.toml +0 -0
- {cid_cmd-4.2.4 → cid_cmd-4.2.6}/setup.cfg +0 -0
|
@@ -1668,17 +1668,11 @@ class Cid():
|
|
|
1668
1668
|
update_dataset = True
|
|
1669
1669
|
break
|
|
1670
1670
|
|
|
1671
|
-
identical =
|
|
1672
|
-
if isinstance(found_dataset, Dataset):
|
|
1673
|
-
identical = True
|
|
1674
|
-
for key in 'PhysicalTableMap LogicalTableMap OutputColumns ImportMode DataSetUsageConfiguration RowLevelPermissionDataSet FieldFolders RowLevelPermissionTagConfiguration DatasetParameters'.split():
|
|
1675
|
-
if found_dataset.raw.get(key) != compiled_dataset.get(key):
|
|
1676
|
-
logger.trace(f'not identical {key} {found_dataset.raw.get(key)} != {compiled_dataset.get(key)}')
|
|
1677
|
-
identical = False
|
|
1678
|
-
logger.trace(f'identical to existing = {identical}')
|
|
1671
|
+
identical = Dataset.datasets_are_identical(found_dataset, compiled_dataset) # check if dataset needs an update
|
|
1679
1672
|
|
|
1680
1673
|
if update_dataset and not identical:
|
|
1681
|
-
|
|
1674
|
+
merged_dataset = Dataset.merge_datasets(compiled_dataset, found_dataset)
|
|
1675
|
+
self.qs.update_dataset(merged_dataset)
|
|
1682
1676
|
if compiled_dataset.get("ImportMode") == "SPICE":
|
|
1683
1677
|
dataset_id = compiled_dataset.get('DataSetId')
|
|
1684
1678
|
schedules_definitions = []
|
|
@@ -261,7 +261,9 @@ class QuickSight(CidBase):
|
|
|
261
261
|
return True
|
|
262
262
|
except self.client.exceptions.AccessDeniedException as exc:
|
|
263
263
|
logger.debug(f'Cannot tag {arn} (AccessDenied).')
|
|
264
|
-
|
|
264
|
+
except self.client.exceptions.ClientError as exc:
|
|
265
|
+
logger.debug(f'Cannot tag {arn} ({exc}).')
|
|
266
|
+
return False
|
|
265
267
|
|
|
266
268
|
|
|
267
269
|
def get_tags(self, arn):
|
|
@@ -8,6 +8,12 @@ from cid.helpers.quicksight.resource import CidQsResource
|
|
|
8
8
|
|
|
9
9
|
logger = logging.getLogger(__name__)
|
|
10
10
|
|
|
11
|
+
DATASET_PROPERTIES = [
|
|
12
|
+
'AwsAccountId', 'DataSetId', 'Name', 'PhysicalTableMap', 'LogicalTableMap', 'ImportMode', 'ColumnGroups',
|
|
13
|
+
'RowLevelPermissionDataSet', 'RowLevelPermissionTagConfiguration', 'FieldFolders', 'ColumnLevelPermissionRules',
|
|
14
|
+
'DataSetUsageConfiguration', 'DatasetParameters', 'PerformanceConfiguration'
|
|
15
|
+
]
|
|
16
|
+
|
|
11
17
|
|
|
12
18
|
class Dataset(CidQsResource):
|
|
13
19
|
|
|
@@ -107,7 +113,15 @@ class Dataset(CidQsResource):
|
|
|
107
113
|
# take the first one and let's hope it is fine
|
|
108
114
|
root_lt = next(iter(dataset['LogicalTableMap'].values()))
|
|
109
115
|
|
|
110
|
-
|
|
116
|
+
renames = {}
|
|
117
|
+
for lt in dataset['LogicalTableMap'].values():
|
|
118
|
+
for dt in lt.get('DataTransforms', []):
|
|
119
|
+
if "RenameColumnOperation" in dt:
|
|
120
|
+
key = lt['Source'].get('PhysicalTableId', '') + '.' + dt["RenameColumnOperation"]['ColumnName']
|
|
121
|
+
renames[key] = dt["RenameColumnOperation"]['NewColumnName']
|
|
122
|
+
logger.trace(f'renames = {renames}')
|
|
123
|
+
|
|
124
|
+
projected_cols = next( # get the first DataTransform with ProjectOperation
|
|
111
125
|
ds['ProjectOperation']["ProjectedColumns"]
|
|
112
126
|
for ds in root_lt['DataTransforms']
|
|
113
127
|
if 'ProjectOperation' in ds
|
|
@@ -115,7 +129,7 @@ class Dataset(CidQsResource):
|
|
|
115
129
|
|
|
116
130
|
# Update each PhysicalTableMap with all columns from athena views
|
|
117
131
|
all_columns = []
|
|
118
|
-
for pt in dataset['PhysicalTableMap'].
|
|
132
|
+
for pt_id, pt in dataset['PhysicalTableMap'].items():
|
|
119
133
|
table_name = pt['RelationalTable']['Name']
|
|
120
134
|
database = pt['RelationalTable']['Schema']
|
|
121
135
|
columns = _get_athena_columns(table_name, database)
|
|
@@ -137,15 +151,20 @@ class Dataset(CidQsResource):
|
|
|
137
151
|
if col['Name'].lower() not in dataset_columns_names
|
|
138
152
|
] # BTW what if col is there but another type?
|
|
139
153
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
154
|
+
# FIXME: need to add RenameColumnOperation! col['Name'] => f"{col['Name']}[{table_name}]"
|
|
155
|
+
new_columns = [col for col in new_columns if col['Name'].lower() not in projected_cols] # avoid things that are already there (probably need to take renames into account)
|
|
156
|
+
new_columns = [col for col in new_columns if col['Name'] not in all_columns] # avoid adding 2nd time
|
|
143
157
|
|
|
144
158
|
logger.trace(f'dataset_columns_to_keep = {dataset_columns_to_keep}')
|
|
145
159
|
if new_columns:
|
|
146
|
-
logger.trace(f'new_columns = {new_columns}')
|
|
160
|
+
logger.trace(f'new_columns = {new_columns} from {pt_id}')
|
|
147
161
|
pt['RelationalTable']['InputColumns'] = dataset_columns_to_keep + new_columns
|
|
148
|
-
|
|
162
|
+
|
|
163
|
+
for col in new_columns:
|
|
164
|
+
col_name = col['Name']
|
|
165
|
+
if f'{pt_id}.{col_name}' in renames:
|
|
166
|
+
col_name = renames[f'{pt_id}.{col_name}']
|
|
167
|
+
all_columns.append(col_name)
|
|
149
168
|
|
|
150
169
|
# Add all needed calc fields
|
|
151
170
|
existing_create_columns = [dt.get("CreateColumnsOperation", {}).get('Columns', [None])[0] for dt in root_lt.get('DataTransforms', []) if dt.get("CreateColumnsOperation")]
|
|
@@ -172,12 +191,12 @@ class Dataset(CidQsResource):
|
|
|
172
191
|
# Add all new cols to projected columns
|
|
173
192
|
for col in set(all_columns):
|
|
174
193
|
if col.lower() not in [c.lower() for c in projected_cols]:
|
|
194
|
+
logger.trace(f'adding {col}')
|
|
175
195
|
projected_cols.append(col)
|
|
176
196
|
|
|
177
197
|
# filter out all columns that cannot be used for dataset creation
|
|
178
|
-
update_ = {key: value for key, value in dataset.items() if key in
|
|
198
|
+
update_ = {key: value for key, value in dataset.items() if key in DATASET_PROPERTIES}
|
|
179
199
|
logger.trace(f'update_ = {update_}')
|
|
180
|
-
|
|
181
200
|
return update_
|
|
182
201
|
|
|
183
202
|
|
|
@@ -217,4 +236,41 @@ class Dataset(CidQsResource):
|
|
|
217
236
|
for alias, join in join_clauses.items():
|
|
218
237
|
if isinstance(data['Data'].get(alias), dict) :
|
|
219
238
|
data['Data'][alias]['clause'] = join
|
|
220
|
-
return (yaml.safe_dump(data))
|
|
239
|
+
return (yaml.safe_dump(data))
|
|
240
|
+
|
|
241
|
+
@staticmethod
|
|
242
|
+
def datasets_are_identical(dataset1, dataset2):
|
|
243
|
+
''' Compare 2 datasets and returns True if no difference found
|
|
244
|
+
'''
|
|
245
|
+
if (not dataset1 and not dataset2):
|
|
246
|
+
return True
|
|
247
|
+
identical = False
|
|
248
|
+
if (dataset1 and not dataset2) or (not dataset1 and dataset2):
|
|
249
|
+
return identical
|
|
250
|
+
dataset1 = dataset1 if isinstance(dataset1, Dataset) else Dataset(dataset1)
|
|
251
|
+
dataset2 = dataset2 if isinstance(dataset2, Dataset) else Dataset(dataset2)
|
|
252
|
+
identical = True
|
|
253
|
+
for key in DATASET_PROPERTIES:
|
|
254
|
+
if key in ['AwsAccountId', 'DataSetId']:
|
|
255
|
+
continue
|
|
256
|
+
if dataset1.raw.get(key) != dataset2.raw.get(key):
|
|
257
|
+
logger.trace(f'not identical {key} {dataset1.raw.get(key)} != {dataset2.raw.get(key)}')
|
|
258
|
+
identical = False
|
|
259
|
+
logger.trace(f'identical to existing = {identical}')
|
|
260
|
+
return identical
|
|
261
|
+
|
|
262
|
+
@staticmethod
|
|
263
|
+
def merge_datasets(dataset1, dataset2):
|
|
264
|
+
''' merge high level 2 datasets. Not a deep merge.
|
|
265
|
+
'''
|
|
266
|
+
if not dataset2:
|
|
267
|
+
return dataset1
|
|
268
|
+
if not dataset1:
|
|
269
|
+
return dataset2
|
|
270
|
+
dataset1 = dataset1 if isinstance(dataset1, Dataset) else Dataset(dataset1)
|
|
271
|
+
dataset2 = dataset2 if isinstance(dataset2, Dataset) else Dataset(dataset2)
|
|
272
|
+
result = {}
|
|
273
|
+
for key in DATASET_PROPERTIES:
|
|
274
|
+
if dataset1.raw.get(key) or dataset2.raw.get(key):
|
|
275
|
+
result[key] = dataset1.raw.get(key) or dataset2.raw.get(key)
|
|
276
|
+
return result
|
cid_cmd-4.2.4/cid/_version.py
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/trends/daily_anomaly_detection.json
RENAMED
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/trends/monthly_anomaly_detection.json
RENAMED
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/datasets/trends/monthly_bill_by_account.json
RENAMED
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/permissions/dashboard_permissions.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/permissions/data_source_permissions.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/aws_service_category_map.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/customer_all_unlimited.sql
RENAMED
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/shared/payer_account_name_map.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/trends/daily_anomaly_detection.sql
RENAMED
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/trends/monthly_anomaly_detection.sql
RENAMED
|
File without changes
|
{cid_cmd-4.2.4 → cid_cmd-4.2.6}/cid/builtin/core/data/queries/trends/monthly_bill_by_account.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|