Пример #1
0
def calc_cost(request, global_summary, unit_cost, unit_flag):
    today = datetime.datetime.today() 
    LOG.info(' ------^^^^global summary^^^^^-------- %s ' %(global_summary.summary))
    global_cost = global_cost_obj(request, '0')
    if (('total_cpu_usage' in global_summary.summary) and (unit_flag == 1)):
        global_cost.vcpus = float(global_summary.summary['total_cpu_usage'])  * float(unit_cost.vcpu)
        global_cost.ram = float(global_summary.summary['total_ram_usage']) * float(unit_cost.ram)
        global_cost.vdisk = float(global_summary.summary['total_disk_usage']) * float(unit_cost.vdisk)
        global_cost.total = global_cost.vcpus + global_cost.ram + global_cost.vdisk
        for usage in global_summary.usage_list:
         LOG.info(' ---$$--usage details-$$$$---- %s -----$-------- ' %(usage.__dict__))
         usage.total_cpu_cost = (float(usage.total_cpu_usage) * float(unit_cost.vcpu))
         usage.total_ram_cost = (float(usage.total_ram_usage) * float(unit_cost.ram))
         usage.total_disk_cost = (float(usage.total_disk_usage) * float(unit_cost.vdisk))
         usage.total_cost = usage.total_cpu_cost + usage.total_ram_cost + usage.total_disk_cost
         for instance in usage.instances:
                LOG.info(' ---$$--instance---- %s --- ' %(instance))
                cost_vcpus = float(instance['vcpus'])  * float(unit_cost.vcpu) * float(instance['hours'])
                cost_ram = float(instance['ram_size']) * float(unit_cost.ram)* float(instance['hours'])
                cost_vdisk = float(instance['disk_size']) * float(unit_cost.vdisk)* float(instance['hours'])
                instance['cost'] = float(cost_vcpus + cost_ram + cost_vdisk) 
                total_icost = instance['cost']
                LOG.info(' ---$$--instance cost-$$$$---- %s -----$-%s cost_vcpus------- ' %(instance, cost_vcpus))
                #try:
                 # instanceB = api.biller_get_ibill(request,  instance['id'])
                  #if instanceB['changed_on'] < _current_month():
                   #cost_vcpus+ =instanceB['total_vcpu']
                   #cost_ram += instanceB['total_ram']
                   #cost_vdisk +=instanceB['total_vdisk']
                   #total_icost +=instanceB['total_cost']
                #except :
                 #   LOG.exception('New instance bill')
                try:
                  instanceBill = api.biller_create_ibill(request,
                                          instance['id'],
                                          instance['name'],
                                          float(cost_vcpus),
                                          float(cost_ram),
                                          float(cost_vdisk),
                                          float(total_icost),
                                          today,
                                          True)
                 # messages.success(request, 'A Instance Bill Unit was successfully created.')
                  instanceBill1 = api.biller_get_ibill(request,  instance['id'])
                  LOG.info('instance get --- %s---'%instanceBill1.__dict__)
                except api_exceptions.ApiException, e:
                    LOG.exception('ApiException while creating Instance bill Unit\n')
         LOG.info(' ---$$--Updating  tenant usage of tenent ID : %s   =======-$$$$---- -----$-------- ' %(usage.tenant_id))
         tenant_usage(request, usage.tenant_id, 1)
         LOG.info(' ---$$--Updated tenant usage of tenent ID : %s   =======-$$$$---- -----$-------- ' %(usage.tenant_id))
Пример #2
0
def calc_cost(request, global_summary, unit_cost, unit_flag):
    today = datetime.datetime.today()
    LOG.info(' ------^^^^global summary^^^^^-------- %s ' %
             (global_summary.summary))
    global_cost = global_cost_obj(request, '0')
    if (('total_cpu_usage' in global_summary.summary) and (unit_flag == 1)):
        global_cost.vcpus = float(
            global_summary.summary['total_cpu_usage']) * float(unit_cost.vcpu)
        global_cost.ram = float(
            global_summary.summary['total_ram_usage']) * float(unit_cost.ram)
        global_cost.vdisk = float(
            global_summary.summary['total_disk_usage']) * float(
                unit_cost.vdisk)
        global_cost.total = global_cost.vcpus + global_cost.ram + global_cost.vdisk
        for usage in global_summary.usage_list:
            LOG.info(' ---$$--usage details-$$$$---- %s -----$-------- ' %
                     (usage.__dict__))
            usage.total_cpu_cost = (float(usage.total_cpu_usage) *
                                    float(unit_cost.vcpu))
            usage.total_ram_cost = (float(usage.total_ram_usage) *
                                    float(unit_cost.ram))
            usage.total_disk_cost = (float(usage.total_disk_usage) *
                                     float(unit_cost.vdisk))
            usage.total_cost = usage.total_cpu_cost + usage.total_ram_cost + usage.total_disk_cost
            for instance in usage.instances:
                LOG.info(' ---$$--instance---- %s --- ' % (instance))
                cost_vcpus = float(instance['vcpus']) * float(
                    unit_cost.vcpu) * float(instance['hours'])
                cost_ram = float(instance['ram_size']) * float(
                    unit_cost.ram) * float(instance['hours'])
                cost_vdisk = float(instance['disk_size']) * float(
                    unit_cost.vdisk) * float(instance['hours'])
                instance['cost'] = float(cost_vcpus + cost_ram + cost_vdisk)
                total_icost = instance['cost']
                LOG.info(
                    ' ---$$--instance cost-$$$$---- %s -----$-%s cost_vcpus------- '
                    % (instance, cost_vcpus))
                #try:
                # instanceB = api.biller_get_ibill(request,  instance['id'])
                #if instanceB['changed_on'] < _current_month():
                #cost_vcpus+ =instanceB['total_vcpu']
                #cost_ram += instanceB['total_ram']
                #cost_vdisk +=instanceB['total_vdisk']
                #total_icost +=instanceB['total_cost']
                #except :
                #   LOG.exception('New instance bill')
                try:
                    instanceBill = api.biller_create_ibill(
                        request, instance['id'], instance['name'],
                        float(cost_vcpus), float(cost_ram), float(cost_vdisk),
                        float(total_icost), today, True)
                    # messages.success(request, 'A Instance Bill Unit was successfully created.')
                    instanceBill1 = api.biller_get_ibill(
                        request, instance['id'])
                    LOG.info('instance get --- %s---' % instanceBill1.__dict__)
                except api_exceptions.ApiException, e:
                    LOG.exception(
                        'ApiException while creating Instance bill Unit\n')
            LOG.info(
                ' ---$$--Updating  tenant usage of tenent ID : %s   =======-$$$$---- -----$-------- '
                % (usage.tenant_id))
            tenant_usage(request, usage.tenant_id, 1)
            LOG.info(
                ' ---$$--Updated tenant usage of tenent ID : %s   =======-$$$$---- -----$-------- '
                % (usage.tenant_id))
Пример #3
0
            cost_vcpus = float(i['vcpus']) * float(unit_cost.vcpu) * float(
                i['hours'])
            cost_ram = float(i['ram_size']) * float(unit_cost.ram) * float(
                i['hours'])
            cost_vdisk = float(i['disk_size']) * float(
                unit_cost.vdisk) * float(i['hours'])
            i['cost'] = float(cost_vcpus + cost_ram + cost_vdisk)
            total_vcpu += cost_vcpus
            total_vram += cost_ram
            total_vdisk += cost_vdisk
            total_cost += i['cost']
            try:
                instanceBill = api.biller_create_ibill(request, i['id'],
                                                       i['name'],
                                                       float(cost_vcpus),
                                                       float(cost_ram),
                                                       float(cost_vdisk),
                                                       float(i['cost']), today,
                                                       True)
            except api_exceptions.ApiException, e:
                LOG.exception(
                    'ApiException while creating Instance billbill Unit\n')

            i['uptime_at'] = now - datetime.timedelta(seconds=i['uptime'])
            if i['ended_at']:
                terminated_instances.append(i)
            else:
                running_instances.append(i)
        usage.total_cost = total_cost
        try:
            LOG.exception('-----Tenent Creation Started -------')
Пример #4
0
            # with the 'timesince' filter.  Use of local time intentional
            LOG.info(' ---$$--instance---- %s --- ' %(i))
            cost_vcpus = float(i['vcpus'])  * float(unit_cost.vcpu)* float(i['hours'])
            cost_ram = float(i['ram_size']) * float(unit_cost.ram)* float(i['hours'])
            cost_vdisk = float(i['disk_size']) * float(unit_cost.vdisk)* float(i['hours'])
            i['cost'] = float(cost_vcpus + cost_ram + cost_vdisk)
            total_vcpu+=cost_vcpus 
            total_vram+=cost_ram
            total_vdisk+=cost_vdisk            
            total_cost+=i['cost']
            try:
              instanceBill = api.biller_create_ibill(request,
                                          i['id'],
                                          i['name'],
                                          float(cost_vcpus),
                                          float(cost_ram),
                                          float(cost_vdisk),
                                          float(i['cost']),
                                          today,
                                          True)
            except api_exceptions.ApiException, e:
                    LOG.exception('ApiException while creating Instance billbill Unit\n')

            i['uptime_at'] = now - datetime.timedelta(seconds=i['uptime'])
            if i['ended_at']:
                terminated_instances.append(i)
            else:
                running_instances.append(i)
        usage.total_cost=total_cost
        try:
         LOG.exception('-----Tenent Creation Started -------')