billingstack/tools/load_samples.py
2013-04-25 13:59:30 -07:00

93 lines
2.5 KiB
Python

#!/usr/bin/env python
import sys
from oslo.config import cfg
from billingstack import service
from billingstack.samples import get_samples
from billingstack.storage import get_connection
from billingstack.openstack.common.context import get_admin_context
cfg.CONF.import_opt('storage_driver', 'billingstack.central',
group='service:central')
cfg.CONF.import_opt('state_path', 'billingstack.paths')
cfg.CONF.import_opt(
'database_connection',
'billingstack.storage.impl_sqlalchemy',
group='central:sqlalchemy')
SAMPLES = get_samples()
def get_fixture(name, fixture=0, values={}):
f = SAMPLES[name][fixture].copy()
f.update(values)
return f
if __name__ == '__main__':
service.prepare_service(sys.argv)
conn = get_connection()
samples = get_samples()
ctxt = get_admin_context()
currencies = {}
for c in samples['currency']:
currencies[c['name']] = conn.create_currency(ctxt, c)
languages = {}
for l in samples['language']:
languages[l['name']] = conn.create_language(ctxt, l)
country_data = {
"currency_name": currencies['nok']['name'],
"language_name": languages['nor']['name']}
merchant = conn.create_merchant(
ctxt, get_fixture('merchant', values=country_data))
customer = conn.create_customer(
ctxt, merchant['id'], get_fixture('customer', values=country_data))
#contact_info = get_fixture('contact_info')
#merchant_user = get_fixture('user')
#merchant_user['username'] = 'demo_merchant'
#merchant_user['contact_info'] = contact_info
#merchant_user = conn.user_add(
#ctxt, merchant['id'], merchant_user)
#customer_user = get_fixture('user')
#customer_user['username'] = 'demo_customer'
#customer_user['contact_info'] = contact_info
#customer_user['customer_id'] = customer['id']
#customer_user = conn.user_add(
# ctxt,
# merchant['id'],
# customer_user)
products = {}
for p in samples['product']:
products[p['name']] = conn.create_product(ctxt, merchant['id'], p)
values = {
'plan_items': [
{'product_id': products['memory']},
{'product_id': products['vcpus']},
{'product_id': products['root_disk_size']},
{'product_id': products['network.incoming.bytes']},
{'product_id': products['network.outgoing.bytes']}]}
plan = get_fixture('plan', values=values)
conn.create_plan(ctxt, merchant['id'], get_fixture('plan'))