Initial thoughts on PG service
This commit is contained in:
parent
b4ee207181
commit
161720becc
68
billingstack/payment_gateway/service.py
Normal file
68
billingstack/payment_gateway/service.py
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
"""
|
||||||
|
A service that does calls towards the PGP web endpoint or so
|
||||||
|
"""
|
||||||
|
|
||||||
|
import functools
|
||||||
|
import re
|
||||||
|
from oslo.config import cfg
|
||||||
|
from billingstack.openstack.common import log as logging
|
||||||
|
from billingstack.openstack.common import rpc
|
||||||
|
from billingstack.openstack.common.rpc import service as rpc_service
|
||||||
|
from stevedore.named import NamedExtensionManager
|
||||||
|
from billingstack import exceptions
|
||||||
|
from billingstack import utils
|
||||||
|
from billingstack.central.rpcapi import CentralAPI
|
||||||
|
|
||||||
|
|
||||||
|
cfg.CONF.import_opt('host', 'billingstack.netconf')
|
||||||
|
cfg.CONF.import_opt('host', 'billingstack.payment_gateway.rpcapi')
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Service(rpc_service.Service):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
kwargs.update(
|
||||||
|
host=cfg.CONF.host,
|
||||||
|
topic=cfg.CONF.central_topic,
|
||||||
|
)
|
||||||
|
|
||||||
|
super(Service, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
# Get a storage connection
|
||||||
|
self.central_api = CentralAPI()
|
||||||
|
|
||||||
|
def pg_provider_get(self, ctxt, pg_info):
|
||||||
|
"""
|
||||||
|
Work out a PGC config either from pg_info or via ctxt fetching it from central.
|
||||||
|
Return the appropriate PGP for this info.
|
||||||
|
|
||||||
|
:param ctxt: Request context
|
||||||
|
:param pg_info: Payment Gateway Config...
|
||||||
|
"""
|
||||||
|
|
||||||
|
def account_add(self, ctxt, values, pg_config=None):
|
||||||
|
"""
|
||||||
|
Create an Account on the underlying provider
|
||||||
|
|
||||||
|
:param values: The account values
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __getattr__(self, name):
|
||||||
|
"""
|
||||||
|
Proxy onto the storage api if there is no local method present..
|
||||||
|
|
||||||
|
For now to avoid to have to write up every method once more here...
|
||||||
|
"""
|
||||||
|
if hasattr(self, name):
|
||||||
|
return getattr(self, name)
|
||||||
|
|
||||||
|
f = getattr(self.provider, name)
|
||||||
|
if not f:
|
||||||
|
raise AttributeError
|
||||||
|
|
||||||
|
@functools.wraps(f)
|
||||||
|
def _wrapper(*args, **kw):
|
||||||
|
return f(*args, **kw)
|
||||||
|
setattr(self, name, _wrapper)
|
||||||
|
return _wrapper
|
33
bin/billingstack-pg-gateway
Normal file
33
bin/billingstack-pg-gateway
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# Copyright 2012 Managed I.T.
|
||||||
|
#
|
||||||
|
# Author: Kiall Mac Innes <kiall@managedit.ie>
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
import sys
|
||||||
|
import eventlet
|
||||||
|
from oslo.config import cfg
|
||||||
|
from billingstack.openstack.common import log as logging
|
||||||
|
from billingstack.openstack.common import service
|
||||||
|
from billingstack import utils
|
||||||
|
from billingstack.central import service as central_service
|
||||||
|
|
||||||
|
eventlet.monkey_patch()
|
||||||
|
|
||||||
|
utils.read_config('billingstack', sys.argv)
|
||||||
|
|
||||||
|
logging.setup('billingstack')
|
||||||
|
|
||||||
|
launcher = service.launch(central_service.Service(),
|
||||||
|
cfg.CONF['service:payment_gateway'].workers)
|
||||||
|
launcher.wait()
|
Loading…
x
Reference in New Issue
Block a user