Example #1
0
def configure(config_files):
    group = cfg.OptGroup(name='test', title='group for test')
    args = None
    CONF(args=args, project=group.name, default_config_files=config_files)
    CONF.register_group(group)
    logging.setup(CONF, group.name)
    defalut_logging.captureWarnings(True)
Example #2
0
def list_agent_opts():
    from gogamechen2 import common
    group = cfg.OptGroup(common.NAME)
    CONF = cfg.CONF
    CONF.register_group(group)
    from goperation.manager.rpc.agent.config import rpc_endpoint_opts
    cfg.set_defaults(rpc_endpoint_opts, module='gogamechen2.api.rpc')
    return rpc_endpoint_opts
Example #3
0
def list_agent_opts():
    from gopdb import common
    group = cfg.OptGroup(common.DB)
    CONF = cfg.CONF
    CONF.register_group(group)
    from goperation.manager.rpc.agent.config import rpc_endpoint_opts
    from gopdb.api.rpc.impl.config import db_opts
    from gopdb.api.rpc.impl.mysql.config import mysql_db_opts
    cfg.set_defaults(rpc_endpoint_opts, module='gopdb.api.rpc')
    return rpc_endpoint_opts + db_opts + mysql_db_opts
Example #4
0
def configure(name, config_files, config_dirs=None):
    group = cfg.OptGroup(name=name, title='group of goperation %s' % name)
    args = None
    if config_dirs is not None:
        args = []
        if isinstance(config_dirs, basestring):
            config_dirs = [
                config_dirs,
            ]
        for _dir in config_dirs:
            args.extend(['--config-dir', _dir])
    if isinstance(config_files, basestring):
        config_files = [
            config_files,
        ]

    # set default of goperation
    set_all_default()
    service_config.set_default_for_default_log_levels([])

    # call cli opts before CONF init
    service_config.cliopts()
    CONF(args=args, project=group.name, default_config_files=config_files)
    CONF.register_group(group)
    # set base config
    service_config.configure()
    # reg base opts
    CONF.register_opts(service_base_opts)
    # set log config
    logging.setup(CONF, group.name)
    default_logging.captureWarnings(True)
    if systemutils.LINUX:
        if not CONF.repo:
            raise RuntimeError('rpm repo is not set')
        repofile = '/etc/yum.repos.d/goputil.repo'
        cf = ConfigParser.ConfigParser()
        if not os.path.exists(repofile):
            cf.add_section('goputil')
            cf.set('goputil', 'name', 'Goperation util rpm source')
            cf.set('goputil', 'baseurl', CONF.repo)
            cf.set('goputil', 'enabled', '1')
            cf.set('goputil', 'gpgcheck', '0')
            with open(repofile, 'wb') as f:
                cf.write(f)
        else:
            cf.read(repofile)
            if cf.get('goputil', 'baseurl') != CONF.repo:
                cf.set('goputil', 'baseurl', CONF.repo)
            with open(repofile, 'wb') as f:
                cf.write(f)
    return group
Example #5
0
        # regex=REGEXPASS,
        secret=True,
        help='logdb db rw user passwd'),
    cfg.StrOpt(
        'logdb_ro_user',
        # regex=REGEXUSER,
        help='logdb db ro user name'),
    cfg.StrOpt(
        'logdb_ro_passwd',
        # regex=REGEXPASS,
        secret=True,
        help='logdb db ro user passwd'),
]

gameserver_group = cfg.OptGroup(name='%s.%s' %
                                (common.NAME, common.GAMESERVER),
                                title='gameserver group')
gmserver_group = cfg.OptGroup(name='%s.%s' % (common.NAME, common.GMSERVER),
                              title='gm server group')
crossserver_group = cfg.OptGroup(name='%s.%s' %
                                 (common.NAME, common.CROSSSERVER),
                                 title='cross server group')


def list_game_opts():
    _sources_opts = copy.deepcopy(sources_opts)
    _datadb_opts = copy.deepcopy(datadb_opts)
    _logdb_opts = copy.deepcopy(logdb_opts)
    cfg.set_defaults(_datadb_opts,
                     datadb_user='******',
                     datadb_ro_user='******')
Example #6
0
    def __init__(self):
        super(RpcAgentManager, self).__init__(target=target_server(self.agent_type, CONF.host, fanout=True))
        interface, self.ipnetwork = get_network(self.local_ip)
        if not self.ipnetwork:
            raise RuntimeError('can not find local ip netmask')
        LOG.debug('Local ip %s/%s on interface %s' % (self.local_ip, self.ipnetwork.netmask, interface))
        global DISK
        DISK = psutil.disk_usage(self.work_path).total/(1024*1024)
        # agent id
        self._agent_id = None
        # port and port and disk space info
        conf = CONF[manager_common.AGENT]
        self.conf = conf
        self.ports_range = validators['type:ports_range_list'](conf.ports_range) if conf.ports_range else []
        # zone mark
        self.zone = conf.zone
        self.dnsnames = conf.dnsnames
        # key: port, value endpoint name
        self.allocked_ports = {}
        # left ports
        self.left_ports = set()
        for p_range in self.ports_range:
            down, up = map(int, p_range.split('-'))
            if down < 1024:
                raise ValueError('Port 1-1024 is not allowed')
            for port in range(down, up):
                self.left_ports.add(port)

        # init metadata
        self._metadata = super(RpcAgentManager, self).metadata
        self._metadata.setdefault('agent_type', self.agent_type)
        self._metadata.setdefault('zone', self.zone)
        self._metadata.setdefault('dnsnames', conf.dnsnames)
        # init httpclient
        self.client = AgentManagerClient(httpclient=get_http())
        # init filemanager
        self.filemanager = FileManager(conf=conf,
                                       threadpool=threadpool,
                                       infoget=lambda x: self.client.file_show(x)['data'][0])

        # init endpoint
        if conf.endpoints:
            # endpoint class must be singleton
            for endpoint in conf.endpoints:
                endpoint_group = cfg.OptGroup(endpoint.lower(),
                                              title='endpopint of %s' % endpoint)
                CONF.register_group(endpoint_group)
                CONF.register_opts(rpc_endpoint_opts, endpoint_group)
                endpoint_class = '%s.%s' % (CONF[endpoint_group.name].module,
                                            self.agent_type.capitalize())
                try:
                    cls = importutils.import_class(endpoint_class)
                except Exception:
                    LOG.error('Import class %s of %s fail' % (endpoint_class, endpoint_group.name))
                    raise
                else:
                    obj = cls(manager=self)
                    if not isinstance(obj, RpcAgentEndpointBase):
                        raise TypeError('Endpoint string %s not base from RpcEndpointBase')
                    self.endpoints.add(obj)
        self.endpoint_lock = lockutils.Semaphores()
        self.websockets = dict()
        self.reporter = OnlinTaskReporter(self)
Example #7
0
group_id = 97
platform = 'ios'

a = 'C:\\Users\\loliz_000\\Desktop\\etc\\goperation\\goperation.conf'
b = 'C:\\Users\\loliz_000\\Desktop\\etc\\goperation\\gcenter.conf'
c = 'C:\\Users\\loliz_000\\Desktop\\etc\\goperation\\endpoints\gogamechen3.server.conf'

from goperation.manager import common as manager_common
from goperation import config as goperation_config

# create a new project and group named gcenter
name = manager_common.SERVER
# init goperation config
main_group = goperation_config.configure(name, [a, b, c])
from simpleservice.ormdb.config import database_opts

endpoint_group = cfg.OptGroup(common.NAME,
                              title='endpopint of %s' % common.NAME)
CONF.register_group(endpoint_group)
CONF.register_opts(database_opts, endpoint_group)

session = endpoint_session(readonly=True)

query = session.query(func.max(GameArea.show_id)).select_from(AppEntity)
query = query.join(AppEntity.areas, isouter=True)
query = query.filter(
    and_(AppEntity.group_id == group_id, AppEntity.platform == platform))
last_show_id = query.scalar() or 0

print last_show_id
Example #8
0
from simpleutil.config import cfg
from simpleutil.config.cfg import types

from goperation.config import endpoint_load_opts
from goperation.manager import common as manager_common
from goperation.filemanager.config import filemanager_opts

CONF = cfg.CONF

agent_group = cfg.OptGroup(name=manager_common.AGENT,
                           title='Agent base options group')
CONF.register_group(agent_group)

rpc_agent_opts = [
    cfg.StrOpt('zone',
               default='all',
               regex='^[a-z][a-z0-9]+$',
               help='Agent zone mark'),
    cfg.IntOpt('websokcets',
               default=5,
               min=0,
               max=10,
               help='websocket sub process number'),
    cfg.ListOpt(
        'dnsnames',
        item_type=types.Hostname(),
        default=[],
        help='Agent dns hostnames',
    ),
    cfg.MultiOpt('ports_range',
                 item_type=cfg.types.PortRange(),
Example #9
0
import os
from goperation.manager.rpc.agent.application.taskflow import application
from goperation.manager.rpc.agent.application.taskflow import middleware
from goperation.manager.rpc.agent.application.taskflow import database
from goperation.manager.rpc.agent.application.taskflow import pipe
from simpleflow.utils.storage_utils import build_session
from simpleservice.ormdb.argformater import connformater

from simpleflow import api
from simpleflow.storage import Connection
from simpleflow.engines.engine import ParallelActionEngine

from simpleutil.config import cfg
from goperation.manager.rpc.agent.application.base import AppEndpointBase

test_group = cfg.OptGroup('testopt')


class TestFileManager():
    """测试用 file manager"""
    def __init__(self, update_base):
        self.update_base = update_base

    def get(self, target, download=True, timeout=None):
        for name in os.listdir(self.update_base):
            if name.startswith(target.source):
                target.realpath = os.path.join(self.update_base, name)
                return os.path.join(self.update_base, name)
        raise RuntimeError('No file found')

Example #10
0
from simpleutil.config import cfg

from fluttercomic import common

from fluttercomic.plugin.platforms import config

CONF = cfg.CONF

NAME = 'ipay'

group = cfg.OptGroup(name='%s.%s' % (common.NAME, NAME),
                     title='Fluttercomic Pay platform ipay')

ipay_opts = [
    cfg.StrOpt('appId', help='ipay appId'),
    cfg.StrOpt('appUid', help='ipay app userid'),
    cfg.IntOpt('waresId', help='ipay waresId'),
    cfg.StrOpt('signtype',
               default='RSA',
               choices=['RSA'],
               help='ipay signtype appId'),
    cfg.StrOpt('rsa_private',
               default='/etc/goperation/endpoints/platforms/ipay_private.key',
               help='ipay signtype rsa private key file'),
    cfg.StrOpt('rsa_public',
               default='/etc/goperation/endpoints/platforms/ipay_public.key',
               help='ipay signtype rsa public key file'),
    cfg.BoolOpt('h5', default=False, help='ipay signtype use h5 api'),
    cfg.UrlOpt('url_r', help='ipay pay with h5 post request url(success)'),
    cfg.UrlOpt('url_h', help='ipay pay with h5 post request url(fail)'),
]
Example #11
0
               # default='goperation-trusted-token',
               help='Trusted token, means a unlimit user, defalut is None'
               ),
]


fernet_opts = [
    cfg.StrOpt('fernet_key_repository',
               help='fernet key dir'),
    cfg.IntOpt('fernet_expire_days',
               default=1, min=1, max=7,
               help='fernet expire max day'),
]


manager_group = cfg.OptGroup(name=common.NAME,
                             title='Manager base options')

CONF.register_group(manager_group)
# goperation opts for manager
CONF.register_opts(goperation_opts, manager_group)
# database for manager
CONF.register_opts(database_opts, manager_group)
# redis for manager
CONF.register_opts(redis_opts, manager_group)
manager_conf = CONF[manager_group.name]

# rabbit for manager
rabbit_group = cfg.OptGroup(name='rabbit', title='Manager RabbitMQ base group')
CONF.register_opts(rpc_base_opts, rabbit_group)
CONF.register_opts(amqp_opts, rabbit_group)
CONF.register_opts(rabbit_opts, rabbit_group)
Example #12
0
from simpleutil.config import cfg

from fluttercomic import common

from fluttercomic.plugin.platforms import config

CONF = cfg.CONF

NAME = 'weixin'


group = cfg.OptGroup(name='%s.%s' % (common.NAME, NAME), title='Fluttercomic WeiXin platform paypal')

weixin_opts = [
    cfg.StrOpt('appId',
               help='WeiXin app Id'),
    cfg.StrOpt('appName',
               help='WeiXin app name'),
    cfg.StrOpt('mchId',
           help='WeiXin mch_id'),
    cfg.StrOpt('secret',
               secret=True,
               help='WeiXin app secret'),
    cfg.StrOpt('package',
               default='Sign=WXPay',
               help='WeiXin package value'),
    cfg.StrOpt('cert',
               default='/etc/goperation/endpoints/wexin_cert.pem',
               help='WeiXin SSL apiclient cert'),
    cfg.StrOpt('key',
               default='/etc/goperation/endpoints/wexin_key.pem',
Example #13
0
import time
import simpleservice

from simpleutil.config import cfg
from goperation import config

from goperation.api.client import ManagerClient


a = 'C:\\Users\\loliz_000\\Desktop\\etc\\goperation\\goperation.conf'
b = 'C:\\Users\\loliz_000\\Desktop\\etc\\goperation\\gcenter.conf'
test_group = cfg.OptGroup(name='test')
config.configure(test_group, [a, b])

wsgi_url = '127.0.0.1'
wsgi_port = 7999


client = ManagerClient(wsgi_url, wsgi_port)


print client.ports_index(agent_id=1, endpoint='gopcdn', entity=1)



# ports_index(self, agent_id, endpoint, entity, body=None)
# ports_add(self, agent_id, endpoint, entity, body=None
# ports_delete(self, agent_id, endpoint, entity, ports, body=None)

from simpleservice.rpc.service import LauncheRpcServiceBase
from simpleservice.server import ServerWrapper
from simpleservice.server import launch
from simpleutil.config import cfg
from simpleutil.log import log as logging
from simpleservice.rpc.target import Target

CONF = cfg.CONF
LOG = logging.getLogger(__name__)

config_file = 'C:\\Users\\loliz_000\\Desktop\\etc\\agent.conf'
config_files = [
    config_file,
]

# config.set_default_for_default_log_levels(['routes=INFO', ])

CONF(project='agent', default_config_files=config_files)
config.configure()
agent_group = cfg.OptGroup(name='agent', title='agent options')
CONF.register_group(agent_group)
logging.setup(CONF, 'agent')
default_logging.captureWarnings(True)

servers = []
manager = base.ManagerBase(Target(topic='agent', namespace='manager'))
rpc_server = LauncheRpcServiceBase(manager)
wsgi_wrapper = ServerWrapper(rpc_server, workers=1)
servers.append(wsgi_wrapper)
launch(servers)
Example #15
0
import logging as default_logging
from simpleutil.config import cfg
from simpleutil.log import log as logging

from simpleutil.utils.threadgroup import ThreadGroup

from simpleservice import config as base_config

from goperation.filemanager import TargetFile
from goperation.filemanager import FileManager
from goperation.filemanager.config import filemanager_opts

CONF = cfg.CONF
LOG = logging.getLogger(__name__)

fmclient_group = cfg.OptGroup(name='fmclient',
                              title='test filemanager api wsgi server')


def configure(version=None, config_files=None):
    base_config.configure()
    CONF(project=fmclient_group.name,
         version=version,
         default_config_files=config_files)
    CONF.register_group(fmclient_group)
    logging.setup(CONF, fmclient_group.name)
    default_logging.captureWarnings(True)
    CONF.register_opts(filemanager_opts, group=fmclient_group)


def main():
    config_file = 'C:\\Users\\loliz_000\\Desktop\\etc\\filemanager\\filemanager.conf'
Example #16
0
def configure(config_files=None, config_dirs=None):
    from goperation.manager import common as manager_common
    from goperation import config as goperation_config

    # create a new project and group named gcenter
    name = manager_common.SERVER
    # init goperation config
    gcenter_group = goperation_config.configure(name, config_files,
                                                config_dirs)
    # init endpoint opts
    CONF.register_opts(goperation_config.endpoint_load_opts)

    from simpleutil.utils import importutils
    from simpleservice.wsgi.config import wsgi_server_options
    from simpleservice.wsgi.config import find_paste_abs

    from goperation import EXTEND_ROUTES
    from goperation import OPEN_ROUTES
    from goperation import CORE_ROUTES

    from goperation.manager.wsgi.config import route_opts

    from goperation.manager.wsgi.agent import routers as agent_routes
    from goperation.manager.wsgi.file import routers as file_routes
    from goperation.manager.wsgi.port import routers as port_routes
    from goperation.manager.wsgi.endpoint import routers as endpoint_routes
    from goperation.manager.wsgi.entity import routers as entity_routes
    from goperation.manager.wsgi.cache import routers as cache_routes
    from goperation.manager.wsgi.asyncrequest import routers as asyncrequest_routes
    from goperation.manager.wsgi.agent.scheduler import routers as scheduler_routes
    from goperation.manager.wsgi.agent.application import routers as application_routes

    # insert core routes
    CORE_ROUTES.extend([
        port_routes, entity_routes, endpoint_routes, agent_routes,
        scheduler_routes, application_routes, asyncrequest_routes,
        cache_routes, file_routes
    ])

    # set wsgi config
    CONF.register_opts(wsgi_server_options, group=gcenter_group)
    # set default of paste config
    goperation_config.set_wsgi_default()
    # add gcenter extend route
    CONF.register_opts(route_opts, gcenter_group)

    for cls in CONF[gcenter_group.name].routes:
        # route_class = '%s.Routers' % route
        EXTEND_ROUTES.append(importutils.import_module(cls))
        LOG.debug('Add extend route %s success' % cls)

    for cls in CONF[gcenter_group.name].publics:
        # route_class = '%s.Routers' % route
        OPEN_ROUTES.append(importutils.import_module(cls))
        LOG.debug('Add public route %s success' % cls)

    # set endpoint config
    if CONF.endpoints:
        for endpoint in CONF.endpoints:
            endpoint_group = cfg.OptGroup(endpoint.lower(),
                                          title='endpopint of %s' % endpoint)
            CONF.register_group(endpoint_group)
            CONF.register_opts(route_opts, endpoint_group)
            # add endpoint route
            for cls in CONF[endpoint_group.name].routes:
                EXTEND_ROUTES.append(importutils.import_module(cls))
                LOG.debug('Add endpoint route %s success' % cls)
            for cls in CONF[endpoint_group.name].publics:
                OPEN_ROUTES.append(importutils.import_module(cls))
                LOG.debug('Add endpoint public route %s success' % cls)

    paste_file_path = find_paste_abs(CONF[gcenter_group.name])
    return gcenter_group.name, paste_file_path
import logging as default_logging
from simpleutil.config import cfg
from simpleutil.log import log as logging

from simpleservice import config as base_config
from simpleservice.wsgi.config import wsgi_options
from simpleservice.server import LaunchWrapper
from simpleservice.server import launch
from simpleservice.wsgi.factory import app_factory
from simpleservice.wsgi.service import load_paste_app
from simpleservice.wsgi.service import LauncheWsgiServiceBase

CONF = cfg.CONF
LOG = logging.getLogger(__name__)

center_group = cfg.OptGroup(name='center', title='group of center')


def configure(version=None, config_files=None):
    base_config.configure()
    base_config.set_default_for_default_log_levels([
        'routes=INFO',
    ])
    CONF(project=center_group.name,
         version=version,
         default_config_files=config_files)
    CONF.register_group(center_group)
    logging.setup(CONF, center_group.name)
    default_logging.captureWarnings(True)
    CONF.register_opts(wsgi_options, group=center_group)
    # 确认paste_deploy配置文件