PyBizfly Billing
Client hỗ trợ sử dụng API được cung cấp bởi BizFly Billing version 4th một cách đơn giản cho nội bộ Bizfly.
Cài đặt
Cài đặt sử dụng thông quapip
pip install git+https://github.com/milkandpie/pybizfly-billing.git
hoặc thông quan mã nguồn
git clone https://github.com/milkandpie/pybizfly-billing.git
cd pybizfly-billing
python setup.py install
Yêu cầu
- Thông tin cấu hình Openstack được sử dụng cho Billing v4.
- Id của khách hàng (tenant_id).
- API url của Billing v4.
Cấu hình
Các giá trị trong openstack_credential
có thể lấy từ môi trường hoặc trực tiếp truyền vào khi khởi tạo client.
Giá trị api_url
là url api Billing v4. Có thể đặt biến môi trường với khóa là BILLING_API_URL
. Nếu không, giá trị mặc định là BILLING API V4
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
openstack_credential={
"OPENSTACK_AUTH_URL": "",
"KEYSTONE_TENANT_ADMIN": "",
"OPENSTACK_DEFAULT_PROJECT_DOMAIN_NAME": "",
"KEYSTONE_AUTH_PLUGIN": "",
"KEYSTONE_USER_ADMIN": "",
"KEYSTONE_PASSWORD_ADMIN": "",
"OPENSTACK_DEFAULT_USER_DOMAIN_NAME": "",
}
)
hoặc
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4'
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
Nếu sử dụng token của người sử dụng, tenant_id được truy xuất từ thông tin trong token, do đó không cần truyền vào như ví dụ dưới.
import pybilling
client = pybilling.BizFlyBillingClient(
api_url='https://dev-billing.bizflycloud.vn/api/v4'
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
Tính năng
PyBizfly hỗ trợ tất cả các tính năng được cung cấp bởi BizFly Cloud Cloud Server API cung cấp, bao gồm:
- Truy vấn thông tin các kế hoạch sản phẩm
- Truy vấn thông tin, đăng ký và sử dụng tài nguyên
- Truy vấn thông tin tài khoản
Sử dụng
PyBizfly Billing hỗ trợ truy vấn thông tin các kế hoạch sản phẩm. Kế hoạch
Ví dụ này biểu diễn cách liệt kê các kế hoạch của của sản phẩm CPU cùng với các quan hệ liên quan. Tạo client với lựa chọn with_access_token là False cho các request không cần xác thực.
import pybilling
client = pybilling.BizFlyBillingClient(with_access_token=False)
plans = client.plan().list(embedded=['product', 'unit_prices'], filter_str='product.name=@CPU')
print(plans)
Ví dụ này biểu diễn cách lấy thông tin chi tiết của một kế hoạch.
import pybilling
client = pybilling.BizFlyBillingClient(with_access_token=False)
cpu_plan = client.plan().get('07e17db4-6794-4af1-b33g-6fb78c2bf165', embedded=['product', 'unit_prices'])
print(cpu_plan)
PyBizfly hỗ trợ truy đăng ký, khai báo sử dụng và truy vấn thông tin tài nguyên theo khách hàng. Tài nguyên
Ví dụ này biểu diễn đăng ký sử dụng tài nguyên sử dụng sản phẩm Machine 20 GB trong 1 tháng.
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
subscription_service = client.subscription()
print(subscription_service.subscribe('machine_a_month', 'machine_01', '07e17db4-6794-4af1-b33g-6fb78c2bf165'))
Ví dụ này biểu diễn cập nhật sử dụng tài nguyên sử dụng sản phẩm Data Tranfer 20 GB trong tháng.
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
subscription_service = client.subscription()
print(subscription_service.log('data_transfer', 'machine_01', '07e17db4-6794-4af1-b33g-6fb78c2bf165', 100))
Ví dụ này biểu diễn kết thúc sử dụng tài nguyên sử dụng sản phẩm Data Tranfer 20 GB trong tháng.
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
subscription_service = client.subscription()
print(subscription_service.close('data_transfer', 'machine_01', '07e17db4-6794-4af1-b33g-6fb78c2bf165'))
Ví dụ dưới đây biểu diễn truy vấn sử dụng tài nguyên sử dụng sản phẩm Machine của tài khoản cùng với chi tiết sử dụng.
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
subscription_service = client.subscription()
print(subscription_service.get('2bfe6e25-2a69-40ba-abd9-fa364cbecc7f', embedded=['usages']))
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
subscription_service = client.subscription()
print(subscription_service.list(embedded=['usages'], filter_str='plan.summary==machine_a_month'))
Ví dụ dưới đây biểu diễn cách đổi kế hoạch sản phẩm Data transfer sang dùng thử.
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
subscription_service = client.subscription()
print(subscription_service.switch_plan('data_transfer', 'data_tf_01', '2bfe6e25-2a69-40ba-abd9-fa364cbecc7f',
switchable_plan_name='data_transfer_trial'))
Ví dụ dưới đây biểu diễn cách đổi kế hoạch sản phẩm Data transfer từ dùng thử lên trả phí.
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
subscription_service = client.subscription()
print(subscription_service.upgrade_trial('data_transfer_trial', 'data_tf_01', '2bfe6e25-2a69-40ba-abd9-fa364cbecc7f'))
Ví dụ dưới đây biểu diễn cách đóng tất cả các tài nguyên đã đăng ký theo id tài nguyên (resource_ref), ở region HaNoi
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
subscription_service = client.subscription()
print(subscription_service.unsubscribe('07625ccc-6f9f-c065-ba03-196db7sb7a55', region_name='HaNoi'))
PyBizfly Billing hỗ trợ truy vấn thông tin tài khoản thông qua token admin. Tài khoản
Ví dụ này biểu diễn cách liệt kê danh sách 25 tài khoản theo thời gian tạo với thứ tự đảo ngược.
import pybilling
client = pybilling.BizFlyBillingClient(
tenant_id='5a72fb63165b4d3fada838da329b94a3',
api_url='https://dev-billing.bizflycloud.vn/api/v4',
access_token='gAAAAABf9X2QuVi1tRJAoCt8jypeKRMlQ96q5sZJgW66XtAlkcbw8aAySJVLzcPHBqZEE8S1RrgYIMf5GsjJ38Tu8gaGiz_35vbyTOfLEDdsJxLBVcmWoVQJ6GkZ8aaYNz098SL5-6ar1xStpQqxIKPoJ9UOb2_T0m5g8HnN0gxzfKmTP9vzIWk'
)
accounts = client.account().list(sort='_created', ascending=False, limit=25)
print(accounts)