in stacks/metrics_streamer.py [0:0]
def generate_dashboard(self):
""" Generate CW dashboards"""
_cw_role = aws_iam.Role(
self,
'role',
assumed_by=aws_iam.AccountPrincipal(self.central_account_dashboards),
role_name='CloudWatch-CrossAccountSharingRole'
)
_cfn_role = _cw_role.node.default_child
#Deploy the CW cross acct role only via us-east-1 stack
#SRINI TO REVIEW
_cfn_role.cfn_options.condition = core.CfnCondition(
self,
"regioncheck",
expression=core.Fn.condition_equals(core.Aws.REGION, "us-east-1")
)
managed_policies = [
'CloudWatchReadOnlyAccess',
'CloudWatchAutomaticDashboardsAccess'
]
for policy in managed_policies:
_cw_role.add_managed_policy(
aws_iam.ManagedPolicy.from_aws_managed_policy_name(
managed_policy_name=policy
)
)
dashboard_name_list, dashboards_category_list = self.generate_dashboard_sets()
for dashboard in set(dashboard_name_list):
widges_list = []
for metric_set in definition.metric_sets:
for metric in metric_set.metrics:
dashboard_name = metric.dashboard.dashboard_name
if dashboard_name == dashboard:
widges_list.append(
aws_cloudwatch.GraphWidget(
left=[CwMetric(
self,
id=f'data-gov-{metric.unique_id()}',
metric = metric
).cw_metric
],
title=metric.widget_title(),
width=10
)
)
else:
continue
self.dashboard = aws_cloudwatch.Dashboard(
self,
'dataset-dbs-'+dashboard,
dashboard_name=f'{dashboard}-{core.Aws.REGION}',
)
for widget in widges_list:
self.dashboard.add_widgets(
widget
)
for dashboard_cat in set(dashboards_category_list):
widges_list = []
temp_list = []
for metric_set in definition.metric_sets:
for metric in metric_set.metrics:
dashboard_name = metric.dashboard.dashboard_name
dashboards_category = getattr(metric.dashboard, 'dashboard_category')
if dashboards_category:
if dashboard_cat == dashboards_category:
if dashboard_name not in temp_list:
markdown = """