Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Public cloud billing check tool

...

  1. Used in more than one enterprise in Abiquo

  2. Mapped to the reseller enterprise hierarchy but not present in the reseller organization

  3. Present in the reseller organization but not present mapped to Abiquo

If "verbose" is also selected, it will also print all the accounts of the organization.

With the "billing" option, the the tool will check the difference between AWS cost and Abiquo costs for each mapped account. If "verbose" is activated, the script will print the difference for all enterprises, otherwise it will only print entries with cost difference between AWS and Abiquo.

...

  • Check that all subscriptions from a CSP Azure Plan are mapped correctly to Abiquo enterprises

  • For Azure billing, check the costs of the last month at customer level, not subscription level.

To run the tool for Azure with the help option to discover the parameters, run the following command:

none
Code Block
language
java -jar public-cloud-billing-check-tool.jar azure -h 
Code Block
languagenone
Usage: <main class> azure [-bhvV] [-azp] [-c=<currencyCode>] [-cfp=<configYAMLPath>] [-d=<resellerDiscount>] [-m=<margin>] [-mt=<month>]
    

Here is an example of the help parameters output. The "-r" parameter is mandatory.

Code Block
-azp (--azureplan)      : Run the check for Azure Plan subscriptions in Abiquo
                 -r=<resellerId> [-y=<year>] [-ep=<excludedPublishers>[,<excludedPublishers>...]]... Check for Azure CSP customer costs and subscription mappings.
  -azp, --azureplan      Run the check for Azure Plan subscriptions in Abiquo with the CSP data
 -b, (--billing)             : Run check for billing information in Abiquo for the
last consolidated billing period -c, --currencyCode=<currencyCode>                      last consolidated billing period
Currency code used to retrieve billing line items, Default code is USD
  -cfp, --configPath=<configYAMLPath>-cfp (--configPath) VAL : Specify a different path for the config file.
                           The Specify a differentdefault path foris the configsame file.as Defaultwhere path is the same where the .jar is located
 -d, (--discount=<resellerDiscount>)                          : Define the discount necessary to substractsubtract tofrom total cost
 -ep, --excludedPublishers=<excludedPublishers>[,<excludedPublishers>...]

 -h,s (--helpseed)             : Path to seed file Showused thisto helpdecrypt messageaccess and exit.
-m, --margin=<margin>key tokens
       Desired margin to compare cost from CSP and Abiquo database. If difference is bigger than margin, it will be considered from database
 -r (--reseller)         : Enterprise ID of the reseller from which obtain the
    as an error. Default is 0   -mt, --month=<month>       Month of the billing period to check. Default ispricing previouscredentials
month -r,m (--reseller=<resellerId>margin) N         : Desired margin to compare cost from CSP and Abiquo
      Enterprise id of the reseller from which obtain the pricing credentials -v, --verbose         database. If the difference is Displaybigger morethan detailedmargin, informationit
about the process execution -V, --version              Print version information and exit. -y, --year=<year>  will be considered an error. Default is 0
Year of the billing period to check. Default is the year of the previous month

...

-oe (--onlyErrors)      : Configure script to only prompt errors or warnings
                           in logs
 -v (--verbose)          : Print more detailed information about the process
                           execution

Here is an example of running the tool on Azure using parameters:

Code Block
java -jar public-cloud-billing-check-tool.jar azure -azp

...

When verbose is activated, script will display a detailed list of all the CSP customers, and the respective enterprises which contains public cloud credentials of the same customer

 -b -cfp "/path/to/config.yml" -s "/path/to/seed/.store" -m 2 -v -r 10

And another example:

language
Code Block
none
java -jar /opt/abiquo-public-cloud-billing-check-tool/public-cloud-billing-check-tool.jar azure --azureplan --billing --configPath /home/ansible/config.yml --margin 0 --verbose --discount '0.15' --reseller 3

...

To exclude products from specific publishers from Azure billing, you can set a new system property "abiquo.azure.billing.parser.lineitem.publisher.ignore".
This property contains a string of publishers to exclude from billing line items in CSV format. For example "Microsoft Office". 
When you are using this property, for the public-cloud-billing-check-tool for Azure, you can use the "--excludedPublishers" option.

Azure example output

In verbose mode the tool will print a detailed list of all the CSP customers, and the respective enterprises that contain public cloud credentials of the same customer.

language
Code Block
none
2021-04-13 12:03:45,267 [main] INFO  com.abiquo.azureplans.Main - Customer "Customer Name" with identifier XXXXX-XXXXXX-XXXXXX-XXXXX
2021-04-13 12:03:45,267 [main] INFO  com.abiquo.azureplans.Main - 	- Enterprise "Abiquo Enterprise Name" with id 241
2021-04-13 12:03:45,267 [main] INFO  com.abiquo.azureplans.Main - 	- Enterprise "Abiquo Other Enterprise Name " with id 244

For the Azure plans check, in verbose mode, the tool will then create output as shown below. Without verbose mode, only warnings will be shown.

none
Code Block
language
2021-04-13 12:05:37,588 [main] INFO  com.abiquo.azureplans.Main - Customer on CSP "Customer X" with identifier XXXX-XXXX-XXXX-XXXX has all the subscriptions of the azure plan Azure plan with identifier XXXX-XXXX-XXXX-XXXX mapped to Abiquo enterprises
2021-04-13 12:05:44,989 [main] WARN  com.abiquo.azureplans.Main - There's 1 subscriptions missing in Abiquo from the Azure Plan of customer "Customer missing subscriptions" with identifier XXXX-XXXX-XXXX-XXXX. Present subscriptions in Abiquo are: 
-> "Subscription 1" with identifier XXXX-XXXX-XXXX-XXXX mapped to enterprise "Enterprise Abiquo 1" with id 502
-> "Subscription 2" with identifier XXXX-XXXX-XXXX-XXXX mapped to enterprise "Abiquo Enterprise 2" with id 508

...

You can specify a margin for the log levels of differences between the provider and Abiquo. Differences that are less than or equal to the margin will be INFO level, and differences larger than the margin will be WARN level.

none
Code Block
language
2021-04-21 10:43:58,678 WARN  com.abiquo.azureplans.Main - Customer "X" with identifier XXXX-XXXX-XXXX-XXXX has a summary cost of N USD, and in Abiquo database total for all the enterprises of same customer is N-1 USD.
2021-04-21 10:43:58,678 WARN  com.abiquo.azureplans.Main - There's a difference of 1 for customer "X" with identifier XXXX-XXXX-XXXX-XXXX
2021-04-21 10:43:58,678 WARN  com.abiquo.azureplans.Main - Detailed cost for every enterprise belonging to customer "X" with identifier XXXX-XXXX-XXXX-XXXX
2021-04-21 10:43:58,679 WARN  com.abiquo.azureplans.Main - 	-> Cost for enterprise "X Ent 1" with id 45 is X
2021-04-21 10:43:58,679 WARN  com.abiquo.azureplans.Main - 	-> Cost for enterprise "X Ent 2" with id 56 is X

Azure example errors

The tool tries to log all error messages without stopping. Most of those errors would be errors returned from the Azure CSP API.

A customer in Abiquo was not found in the Azure CSP. You should delete these credentials from Abiquo.

Code Block
languagenone
2021-04-21 10:39:50,956 ERROR com.abiquo.azureplans.Main - Customer with identifier XXXX-XXXX-XXXX-XXXX could not be found in Azure CSP. This could be due that the customer was deleted

...

A recently created customer won't have any costs for the last month, so the CSP API returns an error. The tool controls this condition, and logs an error.

body
Code Block
language
2021-04-21 10:43:51,220 ERROR com.abiquo.azureplans.Main - Customer "X" with identifier XXXX-XXXX-XXXX-XXXX does not have any summary cost. This could be due to the creation date of the customer. Execution will continue

...