def generateReport()

in 5-app-infra/3-artifact-publish/docker/cdmc/report_engine/Control10.py [0:0]


    def generateReport(self):

        config = configparser.ConfigParser()
        config.read_string(self.config_file)

        print("Verifying Control 10" )
        results = searchCatalogAssets(self.org_id,self.project_id, str(config["DC_FILTERS"]["Control10_without_tag"]))
        for result in results:
            message = {
                "reportMetadata":self.report_metadata,
                "CdmcControlNumber":10,
                "Findings":str(config["FINDINGS"]["Control10_without_tag"]),
                "DataAsset":str(result.linked_resource),
                "RecommendedAdjustment":str(config["RECOMMENDATIONS"]["Control10_without_tag"]),
                "ExecutionTimestamp":str(time.time())
            }
            print("|---- Finding in asset:" + result.linked_resource)
            publishPubSubAvro(self.topic_project_id,self.topic,self.avsc_file,message)

        results = searchCatalogAssets(self.org_id,self.project_id, str(config["DC_FILTERS"]["Control10_without_ia"]))
        for result in results:
            message = {
                "reportMetadata":self.report_metadata,
                "CdmcControlNumber":10,
                "Findings":str(config["FINDINGS"]["Control10_without_ia"]),
                "DataAsset":str(result.linked_resource),
                "RecommendedAdjustment":str(config["RECOMMENDATIONS"]["Control10_without_ia"]),
                "ExecutionTimestamp":str(time.time())
            }
            print("|---- Finding in asset:" + result.linked_resource)
            publishPubSubAvro(self.topic_project_id,self.topic,self.avsc_file,message)

        bq_ia_rows = queryTable(str(config["SQL"]["project_id_10"]),
                                str(config["SQL"]["dataset_10"]),
                                str(config["SQL"]["sql_file_10_control_table"]))
        for row in bq_ia_rows:
            results = searchCatalogAssets(self.org_id,self.project_id, str(config["DC_FILTERS"]["Control10_control_table"])
                                              .replace("$data_location",row["data_location"])
                                              .replace("$sensitive_type",row["sensitive_type"])
                                              .replace("$subject_location",row["subject_location"])
                                              .replace("$ia_type",row["ia_type"])
                                         )
            for result in results:
                message = {
                    "reportMetadata":self.report_metadata,
                    "CdmcControlNumber":10,
                    "Findings":str(config["FINDINGS"]["Control10_control_table"]),
                    "DataAsset":str(result.linked_resource),
                    "RecommendedAdjustment":str(config["RECOMMENDATIONS"]["Control10_control_table"]),
                    "ExecutionTimestamp":str(time.time())
                }
                print("|---- Finding in asset:" + result.linked_resource)
                publishPubSubAvro(self.topic_project_id,self.topic,self.avsc_file,message)
        
        bq_iaca_rows = queryTable(str(config["SQL"]["project_id_10"]),
                                str(",".join([config["SQL"]["dataset_10"], config["SQL"]["dataset_82"]])),
                                str(config["SQL"]["sql_file_10_ca"]))
        for row in bq_iaca_rows:
            results = searchCatalogAssets(self.org_id,self.project_id, str(config["DC_FILTERS"]["Control10_ca"])
                                              .replace("$asset",row["aiad_asset_name"])
                                              .replace("$most_recent_assessment",row["last_ca_approval_date"].strftime('%Y-%m-%d'))
                                         )
            for result in results:
                message = {
                    "reportMetadata":self.report_metadata,
                    "CdmcControlNumber":10,
                    "Findings":str(config["FINDINGS"]["Control10_ca"]),
                    "DataAsset":str(result.linked_resource),
                    "RecommendedAdjustment":str(config["RECOMMENDATIONS"]["Control10_ca"]),
                    "ExecutionTimestamp":str(time.time())
                }
                print("|---- Finding in asset:" + result.linked_resource)
                publishPubSubAvro(self.topic_project_id,self.topic,self.avsc_file,message)