예제 #1
0
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   
    
    
    
예제 #2
0
 def drop_collections(self):
     MarketingReportData.drop_collection()
     QuarantinedReportData.drop_collection()