55
66 :license: MIT, see LICENSE for more details.
77"""
8- from SoftLayer .utils import NestedDict , query_filter , query_filter_date
9- from calendar import monthrange
10- from datetime import datetime , timedelta
8+ import calendar
9+ import datetime
10+
11+ from SoftLayer import utils
12+
1113import math
1214import time
1315
@@ -19,83 +21,82 @@ class BillingManager(object):
1921 """
2022
2123 def _format_date (self , date ):
22- """
24+ """format date.
2325
24- :param dt:
25- :return:
26+ :param dt: YY-MM-DD
2627 """
2728 result = date .replace ('T' , ' ' )
2829 return result [0 :10 ]
2930
3031 def _get_month_delta (self , date1 , date2 ):
31- """
32+ """get month
3233
33- :param date1:
34- :param date2:
35- :return:
34+ :param date1: YY-MM-DD
35+ :param date2: YY-MM-DD
36+ :return: delta
3637 """
3738 delta = 0
3839 while True :
39- mdays = monthrange (date1 .year , date1 .month )[1 ]
40- date1 += timedelta (days = mdays )
40+ mdays = calendar . monthrange (date1 .year , date1 .month )[1 ]
41+ date1 += datetime . timedelta (days = mdays )
4142 if date1 <= date2 :
4243 delta += 1
4344 else :
4445 break
4546 return delta
4647
4748 def __init__ (self , client ):
48- """
49+ """init
4950
50- :param client:
51- :return:
51+ :param client
52+ :return: billing account info
5253 """
5354 self .client = client
5455 self .account = self .client ['Account' ]
5556 self .billing_order = self .client ['Billing_Order' ]
5657
5758 def get_info (self ):
58- """
59+ """get info
5960
6061 :return: billing account info
6162 """
6263 result = self .account .getBillingInfo ()
6364 return result
6465
6566 def get_balance (self ):
66- """
67+ """get balance
6768
6869 :return: billing account info
6970 """
7071 result = self .account .getBalance ()
7172 return result
7273
7374 def get_next_balance (self ):
74- """
75+ """get next balance
7576
7677 :return: billing account info
7778 """
7879 result = self .account .getNextInvoiceTotalAmount ()
7980 return result
8081
8182 def get_latest_bill_date (self ):
82- """
83+ """get latest balance
8384
8485 :return: billing account info
8586 """
8687 result = self .account .getLatestBillDate ()
8788 return result
8889
8990 def get_next_bill_items (self ):
90- """
91+ """get next bill items
9192
9293 :return: billing account info
9394 """
9495 result = self .account .getAllBillingItems ()
9596 return result
9697
9798 def list_resources (self , from_date = None , to_date = None , ** kwargs ):
98- """ Retrieve a list of all ordered resources along with their costing.
99+ """Retrieve a list of all ordered resources along with their costing.
99100
100101 :param dict \\ *\\ *kwargs: response-level option (limit)
101102 :returns: Returns a list of dictionaries representing the
@@ -110,20 +111,22 @@ def list_resources(self, from_date=None, to_date=None, **kwargs):
110111 ])
111112 params ['mask' ] = "mask[%s]" % ',' .join (items )
112113
113- _filter = NestedDict ({})
114+ _filter = utils . NestedDict ({})
114115 user = self .account .getCurrentUser (mask = 'mask[id]' )
115- _filter ['orders' ]['userRecordId' ] = query_filter (user ['id' ])
116+ _filter ['orders' ]['userRecordId' ] = utils . query_filter (user ['id' ])
116117 date_format = '%Y-%m-%d'
117118
118119 if from_date and to_date :
119- _filter ['orders' ]['createDate' ] = query_filter_date (from_date ,
120- to_date )
120+ _filter ['orders' ]['createDate' ] = utils . query_filter_date (
121+ from_date , to_date )
121122 elif from_date :
122123 from_date_filter = '>=' + ' ' + from_date
123- _filter ['orders' ]['createDate' ] = query_filter (from_date_filter )
124+ _filter ['orders' ]['createDate' ] = utils .query_filter (
125+ from_date_filter )
124126 elif to_date :
125127 to_date_filter = '<=' + ' ' + to_date
126- _filter ['orders' ]['createDate' ] = query_filter (to_date_filter )
128+ _filter ['orders' ]['createDate' ] = utils .query_filter (
129+ to_date_filter )
127130 orders = self .account .getOrders (filter = _filter .to_dict ())
128131 result = []
129132
@@ -150,28 +153,31 @@ def list_resources(self, from_date=None, to_date=None, **kwargs):
150153 cancellation_date = item ['billingItem' ]['cancellationDate' ]
151154
152155 if 'hourlyRecurringFee' not in item ['billingItem' ]:
153- create_date = datetime .strptime (
156+ create_date = datetime .datetime . strptime (
154157 self ._format_date (
155158 item ['billingItem' ]['createDate' ]), date_format )
156159 if cancellation_date :
157- cancel_date = datetime .strptime (
160+ cancel_date = datetime .datetime . strptime (
158161 self ._format_date (
159162 item ['billingItem' ]['cancellationDate' ]),
160163 date_format )
161164 usedmonths = self ._get_month_delta (create_date ,
162165 cancel_date )
163166 else :
164- now = datetime .strptime (
165- self ._format_date (str (datetime .now ())),
167+ now = datetime .datetime . strptime (
168+ self ._format_date (str (datetime .datetime . now ())),
166169 date_format )
167170 usedmonths = self ._get_month_delta (create_date , now )
168171
169172 usedmonths += 1
170173
171- cost += float (billing_order .getOrderTotalOneTime (
172- id = order ['id' ]) +
173- billing_order .getOrderTotalRecurring (
174- id = order ['id' ]) * usedmonths )
174+ cost += float (
175+ billing_order .getOrderTotalOneTime (
176+ id = order ['id' ]
177+ ) + billing_order .getOrderTotalRecurring (
178+ id = order ['id' ]
179+ ) * usedmonths
180+ )
175181
176182 elif not cancellation_date :
177183 virtual_guest = self .account .getHourlyVirtualGuests (
@@ -187,9 +193,9 @@ def list_resources(self, from_date=None, to_date=None, **kwargs):
187193 ['currentHourlyCharge' ]
188194
189195 else :
190- create_date = datetime .strptime (
196+ create_date = datetime .datetime . strptime (
191197 self ._format_date (creation_date ), date_format )
192- cancel_date = datetime .strptime (
198+ cancel_date = datetime .datetime . strptime (
193199 self ._format_date (cancellation_date ), date_format )
194200 d1_ts = time .mktime (create_date .timetuple ())
195201 d2_ts = time .mktime (cancel_date .timetuple ())
0 commit comments