"""
Example of using a JSON document to provision solace
"""
import yaml
import logging
import libsolace
from libsolace.plugin import Plugin
from libsolace.Naming import name
from libsolace.util import get_key_from_settings
from libsolace.util import get_key_from_kwargs
@libsolace.plugin_registry.register
[docs]class YAMLClient(Plugin):
# the name used to call the plugin
plugin_name = "YAMLClient"
def __init__(self, settings=None, **kwargs):
"""
Example:
import libsolace.settingsloader as settings
import libsolace
clazz = libsolace.plugin_registry('YAMLClient', settings=settings)
yaml_client = clazz(settings=settings)
yaml_client.get_vpns_by_owner("SolaceTest", environment="au")
:param settings:
:param kwargs:
:return:
"""
logging.debug("Configuring with settings: %s" % settings)
self.settings = settings.__dict__ # type: dict
self.file = get_key_from_settings("CMDB_FILE", self.settings)
stream = open(self.file, 'r')
self.data = yaml.load(stream)
def get_vpns_by_owner(self, *args, **kwargs):
"""
return a LIST of vpns groups by some "owner", each VPN contains final config,
so all environment overrides and that should be taken care of here!
:param environment: the name of the environment
"""
owner_name = args[0] # type: str
vpns = self.data.get("VPNS").get(owner_name)
return vpns
def get_users_of_vpn(self, *args, **kwargs):
"""
Just return a list of users for a VPN
"""
vpn_name = args[0] # type: str
users = self.data.get("USERS").get(vpn_name)
return users
def get_queues_of_vpn(self, *args, **kwargs):
"""
As with VPN, all configs should be finalized before returned.
"""
vpn_name = args[0] # type: str
queues = self.data.get("QUEUES").get(vpn_name)
return queues