def import_candlepin_data(mkt_product_usage=[], checkin_interval=1, from_splice_server="NA", force_import=False): if not mkt_product_usage: mkt_product_usage = MarketingProductUsage.objects.all() quarantined = [] for pu in mkt_product_usage: if isinstance(pu.date, basestring): # We must convert from str to datetime for ReportServer to be able to process this data pu.date = utils.convert_to_datetime(pu.date) if isinstance(pu.updated, basestring): # We must convert from str to datetime for ReportServer to be able to process this data pu.updated = utils.convert_to_datetime(pu.updated) if isinstance(pu.created, basestring): # We must convert from str to datetime for ReportServer to be able to process this data pu.created = utils.convert_to_datetime(pu.created) subscriptions = [] for p in pu.product_info: this_product = Product.objects.filter(product_id=p["product"])[0] this_pool = Pool.objects.filter(product_id=p["product"])[0] mydict = {} mydict["product_account"] = p["account"] mydict["product_id"] = p["product"] mydict["product_name"] = this_product.name mydict["product_contract"] = p["contract"] mydict["product_quantity"] = p["quantity"] mydict["pool_uuid"] = this_pool.uuid mydict["pool_provided_products"] = this_pool.provided_products mydict["pool_start"] = this_pool.start_date mydict["pool_end"] = this_pool.end_date mydict["pool_active"] = this_pool.active mydict["pool_quantity"] = this_pool.quantity mydict["pool_sla"] = p["sla"] mydict["pool_support"] = p["support_level"] subscriptions.append(mydict) #product_info = utils.obj_to_json(subscriptions) #facts = utils.obj_to_json(pu.facts) product_info = subscriptions facts = pu.facts _LOG.info("TYPE PROVIDED PRODUCTS ") _LOG.info(type(product_info)) rd = MarketingReportData( instance_identifier = pu.instance_identifier, status = pu.entitlement_status, date = pu.date, created = pu.created, updated = pu.updated, hour = pu.date.strftime(constants.hr_fmt), systemid = pu.facts["systemid"], cpu_sockets = pu.facts["cpu_dot_cpu_socket(s)"], facts = facts, environment = pu.splice_server, splice_server = pu.splice_server, product_info = product_info, record_identifier = (pu.splice_server + str(pu.instance_identifier) + pu.date.strftime(constants.hr_fmt) ) ) try: rd.save(safe=True) _LOG.info('recording: ' + str(pu.product_info[0]["product"])) except NotUniqueError: _LOG.info("Ignorning NotUniqueError for: %s" % (rd)) except OperationError as oe: _LOG.info("could not import:" + str(pu) + "Exception: " + str(oe)) quarantined.append(rd) _LOG.info('import complete') return quarantined
def drop_collections(self): MarketingReportData.drop_collection() QuarantinedReportData.drop_collection()