add static provider

This commit is contained in:
peng.xu 2019-09-21 12:53:13 +08:00
parent b4ed4b2e35
commit 6acddae130
3 changed files with 38 additions and 1 deletions

View File

@ -37,6 +37,11 @@ if SD_PROVIDER == 'Kubernetes':
pod_patt=env.str('SD_ROSERVER_POD_PATT', ''),
label_selector=env.str('SD_LABEL_SELECTOR', '')
)
elif SD_PROVIDER == 'Static':
from sd.static_provider import StaticProviderSettings
SD_PROVIDER_SETTINGS = StaticProviderSettings(
hosts=env.list('SD_STATIC_HOSTS', [])
)
TESTING = env.bool('TESTING', False)
TESTING_WOSERVER = env.str('TESTING_WOSERVER', 'tcp://127.0.0.1:19530')

View File

@ -24,4 +24,4 @@ class ProviderManager:
def get_provider(cls, name):
return cls.PROVIDERS.get(name, None)
from sd import kubernetes_provider
from sd import kubernetes_provider, static_provider

32
sd/static_provider.py Normal file
View File

@ -0,0 +1,32 @@
import os, sys
if __name__ == '__main__':
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from utils import singleton
from sd import ProviderManager
class StaticProviderSettings:
def __init__(self, hosts):
self.hosts = hosts
@singleton
@ProviderManager.register_service_provider
class KubernetesProvider(object):
NAME = 'Static'
def __init__(self, settings, conn_mgr, **kwargs):
self.conn_mgr = conn_mgr
self.hosts = settings.hosts
def start(self):
for host in self.hosts:
self.add_pod(host, host)
def stop(self):
for host in self.hosts:
self.delete_pod(host)
def add_pod(self, name, ip):
self.conn_mgr.register(name, 'tcp://{}:19530'.format(ip))
def delete_pod(self, name):
self.conn_mgr.unregister(name)