def _return_pub(self, msg, ret): ''' Send the return data back via the uxd socket ''' ret_stack = LaneStack( lanename=self.opts['id'], yid=ret['jid'], sockdirpath=self.opts['sock_dir'], dirpath=self.opts['cachedir']) ret_stack.Pk = raeting.packKinds.pack main_yard = RemoteYard( yid=0, prefix=self.opts['id'], dirpath=self.opts['sock_dir'] ) ret_stack.addRemote(main_yard) route = {'src': (self.opts['id'], ret_stack.local.name, 'jid_ret'), 'dst': (msg['route']['src'][0], None, 'remote_cmd')} ret['cmd'] = '_return' ret['id'] = self.opts['id'] try: oput = self.modules.value[ret['fun']].__outputter__ except (KeyError, AttributeError, TypeError): pass else: if isinstance(oput, str): ret['out'] = oput msg = {'route': route, 'load': ret} ret_stack.transmit(msg, ret_stack.uids.get('yard0')) ret_stack.serviceAll()
def _setup_stack(self, ryn="manor"): """ Setup and return the LaneStack and Yard used by by channel when global not already setup such as in salt-call to communicate to-from the minion """ role = self.opts.get("id") if not role: emsg = "Missing role('id') required to setup RAETReqChannel." log.error(emsg + "\n") raise ValueError(emsg) kind = self.opts.get("__role") # application kind 'master', 'minion', etc if kind not in kinds.APPL_KINDS: emsg = "Invalid application kind = '{0}' for RAETReqChannel.".format(kind) log.error(emsg + "\n") raise ValueError(emsg) if kind in [kinds.APPL_KIND_NAMES[kinds.applKinds.master], kinds.APPL_KIND_NAMES[kinds.applKinds.syndic]]: lanename = "master" elif kind in [kinds.APPL_KIND_NAMES[kinds.applKinds.minion], kinds.APPL_KIND_NAMES[kinds.applKinds.caller]]: lanename = "{0}_{1}".format(role, kind) else: emsg = "Unsupported application kind '{0}' for RAETReqChannel.".format(kind) log.error(emsg + "\n") raise ValueError(emsg) name = "channel" + nacling.uuid(size=18) stack = LaneStack(name=name, lanename=lanename, sockdirpath=self.opts["sock_dir"]) stack.Pk = raeting.PackKind.pack stack.addRemote(RemoteYard(stack=stack, name=ryn, lanename=lanename, dirpath=self.opts["sock_dir"])) log.debug("Created Channel Jobber Stack {0}\n".format(stack.name)) return stack
def _return_pub(self, msg, ret): ''' Send the return data back via the uxd socket ''' ret_stack = LaneStack(lanename=self.opts['id'], yid=ret['jid'], sockdirpath=self.opts['sock_dir'], dirpath=self.opts['cachedir']) ret_stack.Pk = raeting.packKinds.pack main_yard = RemoteYard(yid=0, prefix=self.opts['id'], dirpath=self.opts['sock_dir']) ret_stack.addRemote(main_yard) route = { 'src': (self.opts['id'], ret_stack.local.name, 'jid_ret'), 'dst': (msg['route']['src'][0], None, 'remote_cmd') } ret['cmd'] = '_return' ret['id'] = self.opts['id'] try: oput = self.modules.value[ret['fun']].__outputter__ except (KeyError, AttributeError, TypeError): pass else: if isinstance(oput, str): ret['out'] = oput msg = {'route': route, 'load': ret} ret_stack.transmit(msg, ret_stack.uids.get('yard0')) ret_stack.serviceAll()
def pub(self, tgt, fun, arg=(), expr_form='glob', ret='', jid='', timeout=5, **kwargs): ''' Publish the command! ''' payload_kwargs = self._prep_pub( tgt, fun, arg=arg, expr_form=expr_form, ret=ret, jid=jid, timeout=timeout, **kwargs) kind = self.opts['__role'] if kind == 'master': lanename = 'master' # self.opts.value.get('id', self.main.data.lanename) else: # workers currently are only supported for masters emsg = ("Invalid application kind '{0}' for client.".format(kind)) log.error(emsg + '\n') raise ValueError(emsg) name = 'client' + nacling.uuid(size=18) stack = LaneStack( name=name, lanename=lanename, sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack router_yard = RemoteYard( stack=stack, lanename=lanename, name='manor', dirpath=self.opts['sock_dir']) stack.addRemote(router_yard) route = {'dst': (None, router_yard.name, 'local_cmd'), 'src': (None, stack.local.name, None)} msg = {'route': route, 'load': payload_kwargs} stack.transmit(msg) stack.serviceAll() while True: time.sleep(0.01) stack.serviceAll() while stack.rxMsgs: msg, sender = stack.rxMsgs.popleft() ret = msg.get('return', {}) if 'ret' in ret: stack.server.close() return ret['ret'] stack.server.close() return ret
def pub(self, tgt, fun, arg=(), expr_form='glob', ret='', jid='', timeout=5, **kwargs): ''' Publish the command! ''' payload_kwargs = self._prep_pub(tgt, fun, arg=arg, expr_form=expr_form, ret=ret, jid=jid, timeout=timeout, **kwargs) kind = self.opts['__role'] if kind == 'master': lanename = 'master' # self.opts.value.get('id', self.main.data.lanename) else: # workers currently are only supported for masters emsg = ("Invalid application kind '{0}' for client.".format(kind)) log.error(emsg + '\n') raise ValueError(emsg) name = 'client' + nacling.uuid(size=18) stack = LaneStack(name=name, lanename=lanename, sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack router_yard = RemoteYard(stack=stack, lanename=lanename, name='manor', dirpath=self.opts['sock_dir']) stack.addRemote(router_yard) route = { 'dst': (None, router_yard.name, 'local_cmd'), 'src': (None, stack.local.name, None) } msg = {'route': route, 'load': payload_kwargs} stack.transmit(msg) stack.serviceAll() while True: time.sleep(0.01) stack.serviceAll() while stack.rxMsgs: msg, sender = stack.rxMsgs.popleft() ret = msg.get('return', {}) if 'ret' in ret: stack.server.close() return ret['ret'] stack.server.close() return ret
def _setup_stack(self, ryn='manor'): kind = self.opts.get('__role', '') # opts optional for master if kind: # not all uses of Raet SaltEvent has opts defined if kind not in kinds.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for RAET SaltEvent.". format(kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind != self.node: emsg = ("Mismatch between node = '{0}' and kind = '{1}' in " "RAET SaltEvent.".format(self.node, kind)) log.error(emsg + '\n') raise ValueError(emsg) if self.node in [ kinds.APPL_KIND_NAMES[kinds.applKinds.master], kinds.APPL_KIND_NAMES[kinds.applKinds.syndic] ]: # []'master', 'syndic'] lanename = 'master' elif self.node in [ kinds.APPL_KIND_NAMES[kinds.applKinds.minion], kinds.APPL_KIND_NAMES[kinds.applKinds.caller] ]: # ['minion', 'caller'] role = self.opts.get('id', '') # opts required for minion if not role: emsg = ("Missing role required to setup RAET SaltEvent.") log.error(emsg + "\n") raise ValueError(emsg) if not kind: emsg = "Missing kind required to setup RAET SaltEvent." log.error(emsg + '\n') raise ValueError(emsg) lanename = "{0}_{1}".format(role, kind) else: emsg = ( "Unsupported application node kind '{0}' for RAET SaltEvent.". format(self.node)) log.error(emsg + '\n') raise ValueError(emsg) name = 'event' + nacling.uuid(size=18) cachedir = self.opts.get('cachedir', os.path.join(syspaths.CACHE_DIR, self.node)) stack = LaneStack(name=name, lanename=lanename, sockdirpath=self.sock_dir) stack.Pk = raeting.PackKind.pack.value stack.addRemote( RemoteYard(stack=stack, lanename=lanename, name=ryn, dirpath=self.sock_dir)) return stack
def pub(self, tgt, fun, arg=(), expr_form='glob', ret='', jid='', timeout=5, **kwargs): ''' Publish the command! ''' payload_kwargs = self._prep_pub( tgt, fun, arg=arg, expr_form=expr_form, ret=ret, jid=jid, timeout=timeout, **kwargs) yid = nacling.uuid(size=18) stack = LaneStack( name=('client' + yid), yid=yid, lanename='master', sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack router_yard = RemoteYard( stack=stack, lanename='master', yid=0, name='manor', dirpath=self.opts['sock_dir']) stack.addRemote(router_yard) route = {'dst': (None, router_yard.name, 'local_cmd'), 'src': (None, stack.local.name, None)} msg = {'route': route, 'load': payload_kwargs} stack.transmit(msg) stack.serviceAll() while True: time.sleep(0.01) stack.serviceAll() while stack.rxMsgs: msg, sender = stack.rxMsgs.popleft() ret = msg.get('return', {}) if 'ret' in ret: stack.server.close() return ret['ret'] stack.server.close() return ret
def pub(self, tgt, fun, arg=(), expr_form='glob', ret='', jid='', timeout=5, **kwargs): ''' Publish the command! ''' payload_kwargs = self._prep_pub( tgt, fun, arg=arg, expr_form=expr_form, ret=ret, jid=jid, timeout=timeout, **kwargs) uid = nacling.uuid(size=18) stack = LaneStack( name=('client' + uid), uid=uid, lanename='master', sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack router_yard = RemoteYard( stack=stack, lanename='master', uid=0, name='manor', dirpath=self.opts['sock_dir']) stack.addRemote(router_yard) route = {'dst': (None, router_yard.name, 'local_cmd'), 'src': (None, stack.local.name, None)} msg = {'route': route, 'load': payload_kwargs} stack.transmit(msg) stack.serviceAll() while True: time.sleep(0.01) stack.serviceAll() while stack.rxMsgs: msg, sender = stack.rxMsgs.popleft() ret = msg.get('return', {}) if 'ret' in ret: stack.server.close() return ret['ret'] stack.server.close() return ret
def _setup(opts, ryn='manor'): ''' Setup the LaneStack lane_stack and RemoteYard lane_remote_yard global ''' global lane_stack, remote_yard # pylint: disable=W0602 role = opts.get('id') if not role: emsg = ("Missing role required to setup LaneStack.") log.error(emsg + "\n") raise ValueError(emsg) kind = opts.get('__role') # application kind 'master', 'minion', etc if kind not in kinds.APPL_KINDS: emsg = ( "Invalid application kind = '{0}' for LaneStack.".format(kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind in [ kinds.APPL_KIND_NAMES[kinds.applKinds.master], kinds.APPL_KIND_NAMES[kinds.applKinds.syndic] ]: lanename = 'master' elif kind == [ kinds.APPL_KIND_NAMES[kinds.applKinds.minion], kinds.APPL_KIND_NAMES[kinds.applKinds.caller] ]: lanename = "{0}_{1}".format(role, kind) else: emsg = ("Unsupported application kind '{0}' for LaneStack.".format( kind)) log.error(emsg + '\n') raise ValueError(emsg) name = 'lanestack' + nacling.uuid(size=18) lane_stack = LaneStack(name=name, lanename=lanename, sockdirpath=opts['sock_dir']) lane_stack.Pk = raeting.PackKind.pack.value log.debug("Created new LaneStack and local Yard named {0} at {1}\n" "".format(lane_stack.name, lane_stack.ha)) remote_yard = RemoteYard(stack=lane_stack, name=ryn, lanename=lanename, dirpath=opts['sock_dir']) lane_stack.addRemote(remote_yard) log.debug("Added to LaneStack {0} remote Yard named {1} at {2}\n" "".format(lane_stack.name, remote_yard.name, remote_yard.ha))
def _setup_stack(self, ryn='manor'): ''' Setup and return the LaneStack and Yard used by by channel when global not already setup such as in salt-call to communicate to-from the minion ''' role = self.opts.get('id') if not role: emsg = ("Missing role(\'id\') required to setup RAETReqChannel.") log.error(emsg + "\n") raise ValueError(emsg) kind = self.opts.get( '__role') # application kind 'master', 'minion', etc if kind not in kinds.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for RAETReqChannel.". format(kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind in [ kinds.APPL_KIND_NAMES[kinds.applKinds.master], kinds.APPL_KIND_NAMES[kinds.applKinds.syndic] ]: lanename = 'master' elif kind == [ kinds.APPL_KIND_NAMES[kinds.applKinds.minion], kinds.APPL_KIND_NAMES[kinds.applKinds.caller] ]: lanename = "{0}_{1}".format(role, kind) else: emsg = ("Unsupported application kind '{0}' for RAETReqChannel.". format(kind)) log.error(emsg + '\n') raise ValueError(emsg) name = 'channel' + nacling.uuid(size=18) stack = LaneStack(name=name, lanename=lanename, sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack stack.addRemote( RemoteYard(stack=stack, name=ryn, lanename=lanename, dirpath=self.opts['sock_dir'])) log.debug("Created Channel Jobber Stack {0}\n".format(stack.name)) return stack
def pub(self, tgt, fun, arg=(), expr_form='glob', ret='', jid='', timeout=5, **kwargs): ''' Publish the command! ''' payload_kwargs = self._prep_pub(tgt, fun, arg=arg, expr_form=expr_form, ret=ret, jid=jid, timeout=timeout, **kwargs) yid = salt.utils.gen_jid() basedirpath = os.path.join(self.opts['cachedir'], 'raet') stack = LaneStack(name=('client' + yid), yid=yid, lanename='master', basedirpath=basedirpath, sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack router_yard = RemoteYard(stack=stack, lanename='master', yid=0, dirpath=self.opts['sock_dir']) stack.addRemote(router_yard) route = { 'dst': (None, router_yard.name, 'local_cmd'), 'src': (None, stack.local.name, None) } msg = {'route': route, 'load': payload_kwargs} stack.transmit(msg) stack.serviceAll() while True: time.sleep(0.01) stack.serviceAll() for msg in stack.rxMsgs: ret = msg.get('return', {}) if 'ret' in ret: return ret['ret'] return ret
def _setup_caller_stack(self, opts): ''' Setup and return the LaneStack and Yard used by by channel when global not already setup such as in salt-call to communicate to-from the minion ''' role = opts.get('id') if not role: emsg = ("Missing role required to setup RAETChannel.") log.error(emsg + "\n") raise ValueError(emsg) kind = opts.get('__role') # application kind 'master', 'minion', etc if kind not in daemons.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for RAETChannel.".format( kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind == 'minion': lanename = "{0}_{1}".format(role, kind) else: emsg = ("Unsupported application kind '{0}' for RAETChannel.". format(kind)) log.error(emsg + '\n') raise ValueError(emsg) sockdirpath = opts['sock_dir'] stackname = 'caller' + nacling.uuid(size=18) stack = LaneStack(name=stackname, lanename=lanename, sockdirpath=sockdirpath) stack.Pk = raeting.packKinds.pack stack.addRemote( RemoteYard(stack=stack, name='manor', lanename=lanename, dirpath=sockdirpath)) log.debug("Created Caller Jobber Stack {0}\n".format(stack.name)) # name of Road Estate for this caller estatename = "{0}_{1}".format(role, kind) # name of Yard for this caller yardname = stack.local.name # return identifiers needed to route back to this callers master return (stack, estatename, yardname)
def _setup_stack(self, ryn='manor'): kind = self.opts.get('__role', '') # opts optional for master if kind: # not all uses of Raet SaltEvent has opts defined if kind not in kinds.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for RAET SaltEvent.".format(kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind != self.node: emsg = ("Mismatch between node = '{0}' and kind = '{1}' in " "RAET SaltEvent.".format(self.node, kind)) log.error(emsg + '\n') raise ValueError(emsg) if self.node in [kinds.APPL_KIND_NAMES[kinds.applKinds.master], kinds.APPL_KIND_NAMES[kinds.applKinds.syndic]]: # []'master', 'syndic'] lanename = 'master' elif self.node in [kinds.APPL_KIND_NAMES[kinds.applKinds.minion], kinds.APPL_KIND_NAMES[kinds.applKinds.caller]]: # ['minion', 'caller'] role = self.opts.get('id', '') # opts required for minion if not role: emsg = ("Missing role required to setup RAET SaltEvent.") log.error(emsg + "\n") raise ValueError(emsg) if not kind: emsg = "Missing kind required to setup RAET SaltEvent." log.error(emsg + '\n') raise ValueError(emsg) lanename = "{0}_{1}".format(role, kind) else: emsg = ("Unsupported application node kind '{0}' for RAET SaltEvent.".format(self.node)) log.error(emsg + '\n') raise ValueError(emsg) name = 'event' + nacling.uuid(size=18) cachedir = self.opts.get('cachedir', os.path.join(syspaths.CACHE_DIR, self.node)) stack = LaneStack( name=name, lanename=lanename, sockdirpath=self.sock_dir) stack.Pk = raeting.PackKind.pack.value stack.addRemote(RemoteYard(stack=stack, lanename=lanename, name=ryn, dirpath=self.sock_dir)) return stack
def _setup(opts, ryn='manor'): ''' Setup the LaneStack lane_stack and RemoteYard lane_remote_yard global ''' global lane_stack, remote_yard # pylint: disable=W0602 role = opts.get('id') if not role: emsg = ("Missing role required to setup LaneStack.") log.error(emsg + "\n") raise ValueError(emsg) kind = opts.get('__role') # application kind 'master', 'minion', etc if kind not in kinds.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for LaneStack.".format(kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind in [kinds.APPL_KIND_NAMES[kinds.applKinds.master], kinds.APPL_KIND_NAMES[kinds.applKinds.syndic]]: lanename = 'master' elif kind == [kinds.APPL_KIND_NAMES[kinds.applKinds.minion], kinds.APPL_KIND_NAMES[kinds.applKinds.caller]]: lanename = "{0}_{1}".format(role, kind) else: emsg = ("Unsupported application kind '{0}' for LaneStack.".format(kind)) log.error(emsg + '\n') raise ValueError(emsg) name = 'lanestack' + nacling.uuid(size=18) lane_stack = LaneStack(name=name, lanename=lanename, sockdirpath=opts['sock_dir']) lane_stack.Pk = raeting.PackKind.pack.value log.debug("Created new LaneStack and local Yard named {0} at {1}\n" "".format(lane_stack.name, lane_stack.ha)) remote_yard = RemoteYard(stack=lane_stack, name=ryn, lanename=lanename, dirpath=opts['sock_dir']) lane_stack.addRemote(remote_yard) log.debug("Added to LaneStack {0} remote Yard named {1} at {2}\n" "".format(lane_stack.name, remote_yard.name, remote_yard.ha))
def _setup_stack(self): ''' Setup and return the LaneStack and Yard used by by channel when global not already setup such as in salt-call to communicate to-from the minion ''' kind = self.opts.get('__role', '') # application kind 'master', 'minion', etc if not kind: emsg = ("Missing opts['__role']. required to setup RAETChannel.") log.error(emsg + "\n") raise ValueError(emsg) if kind == 'master': lanename = 'master' elif kind == 'minion': role = self.opts.get('id', '') if not role: emsg = ("Missing opts['id']. required to setup RAETChannel.") log.error(emsg + "\n") raise ValueError(emsg) lanename = role # add kind later else: emsg = ("Unsupported application kind '{0}' for RAETChannel " "Raet.".format(self.node)) log.error(emsg + '\n') raise ValueError(emsg) mid = self.opts.get('id', 'master') uid = nacling.uuid(size=18) name = 'channel' + uid stack = LaneStack(name=name, lanename=lanename, sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack stack.addRemote( RemoteYard(stack=stack, name='manor', lanename=lanename, dirpath=self.opts['sock_dir'])) log.debug("Created Channel Jobber Stack {0}\n".format(stack.name)) return stack
def _setup_jobber_stack(self): ''' Setup and return the LaneStack and Yard used by the jobber yard to communicate with the minion manor yard ''' role = self.opts.get('id', '') if not role: emsg = ("Missing role required to setup Jobber Lane.") log.error(emsg + "\n") raise ValueError(emsg) kind = self.opts['__role'] if kind not in kinds.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for Jobber lane.".format( kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind == 'minion': lanename = "{0}_{1}".format(role, kind) else: emsg = ("Unsupported application kind = '{0}' for Jobber Lane.". format(kind)) log.error(emsg + '\n') raise ValueError(emsg) sockdirpath = self.opts['sock_dir'] name = 'jobber' + nacling.uuid(size=18) stack = LaneStack(name=name, lanename=lanename, sockdirpath=sockdirpath) stack.Pk = raeting.PackKind.pack.value # add remote for the manor yard stack.addRemote( RemoteYard(stack=stack, name='manor', lanename=lanename, dirpath=sockdirpath)) console.concise("Created Jobber Stack {0}\n".format(stack.name)) return stack
def pub(self, tgt, fun, arg=(), expr_form='glob', ret='', jid='', timeout=5, **kwargs): ''' Publish the command! ''' payload_kwargs = self._prep_pub( tgt, fun, arg=arg, expr_form=expr_form, ret=ret, jid=jid, timeout=timeout, **kwargs) yid = salt.utils.gen_jid() stack = LaneStack( yid=yid, lanename='master', sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack router_yard = RemoteYard( prefix='master', yid=0, dirpath=self.opts['sock_dir']) stack.addRemote(router_yard) route = {'dst': (None, router_yard.name, 'local_cmd'), 'src': (None, stack.local.name, None)} msg = {'route': route, 'load': payload_kwargs} stack.transmit(msg) stack.serviceAll() while True: time.sleep(0.01) stack.serviceAll() for msg in stack.rxMsgs: return msg.get('return', {}).get('ret', {})
def _setup_caller_stack(self, opts): ''' Setup and return the LaneStack and Yard used by by channel when global not already setup such as in salt-call to communicate to-from the minion ''' mid = opts['id'] sockdirpath = opts['sock_dir'] uid = nacling.uuid(size=18) name = 'caller' + uid stack = LaneStack(name=name, lanename=mid, sockdirpath=sockdirpath) stack.Pk = raeting.packKinds.pack stack.addRemote( RemoteYard(stack=stack, name='manor', lanename=mid, dirpath=sockdirpath)) log.debug("Created Caller Jobber Stack {0}\n".format(stack.name)) return stack
def _setup_jobber_stack(self): ''' Setup and return the LaneStack and Yard used by the jobber to communicate to-from the minion ''' mid = self.opts['id'] yid = nacling.uuid(size=18) name = 'jobber' + yid stack = LaneStack( name=name, lanename=mid, sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack stack.addRemote(RemoteYard(stack=stack, name='manor', lanename=mid, dirpath=self.opts['sock_dir'])) console.concise("Created Jobber Stack {0}\n".format(stack.name)) return stack
def _setup_jobber_stack(self): ''' Setup and return the LaneStack and Yard used by the jobber to communicate to-from the minion ''' mid = self.opts['id'] yid = nacling.uuid(size=18) name = 'jobber' + yid stack = LaneStack(name=name, lanename=mid, sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack stack.addRemote( RemoteYard(stack=stack, name='manor', lanename=mid, dirpath=self.opts['sock_dir'])) console.concise("Created Jobber Stack {0}\n".format(stack.name)) return stack
def _setup_stack(self): ''' Setup and return the LaneStack and Yard used by by channel when global not already setup such as in salt-call to communicate to-from the minion ''' import wingdbstub mid = self.opts['id'] yid = nacling.uuid(size=18) name = 'channel' + yid stack = LaneStack(name=name, lanename=mid, sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack stack.addRemote(RemoteYard(stack=stack, name='manor', lanename=mid, dirpath=self.opts['sock_dir'])) log.debug("Created Channel Jobber Stack {0}\n".format(stack.name)) return stack
def _setup_jobber_stack(self): ''' Setup and return the LaneStack and Yard used by the jobber yard to communicate with the minion manor yard ''' role = self.opts.get('id', '') if not role: emsg = ("Missing role required to setup Jobber Lane.") log.error(emsg + "\n") raise ValueError(emsg) kind = self.opts['__role'] if kind not in kinds.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for Jobber lane.".format(kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind == 'minion': lanename = "{0}_{1}".format(role, kind) else: emsg = ("Unsupported application kind = '{0}' for Jobber Lane.".format(kind)) log.error(emsg + '\n') raise ValueError(emsg) sockdirpath = self.opts['sock_dir'] name = 'jobber' + nacling.uuid(size=18) stack = LaneStack( name=name, lanename=lanename, sockdirpath=sockdirpath) stack.Pk = raeting.packKinds.pack # add remote for the manor yard stack.addRemote(RemoteYard(stack=stack, name='manor', lanename=lanename, dirpath=sockdirpath)) console.concise("Created Jobber Stack {0}\n".format(stack.name)) return stack
def _setup_stack(self): ''' Setup and return the LaneStack and Yard used by by channel when global not already setup such as in salt-call to communicate to-from the minion ''' kind = self.opts.get('__role', '') # application kind 'master', 'minion', etc if not kind: emsg = ("Missing opts['__role']. required to setup RAETChannel.") log.error(emsg + "\n") raise ValueError(emsg) if kind == 'master': lanename = 'master' elif kind == 'minion': role = self.opts.get('id', '') if not role: emsg = ("Missing opts['id']. required to setup RAETChannel.") log.error(emsg + "\n") raise ValueError(emsg) lanename = role # add kind later else: emsg = ("Unsupported application kind '{0}' for RAETChannel " "Raet.".format(self.node)) log.error(emsg + '\n') raise ValueError(emsg) mid = self.opts.get('id', 'master') uid = nacling.uuid(size=18) name = 'channel' + uid stack = LaneStack(name=name, lanename=lanename, sockdirpath=self.opts['sock_dir']) stack.Pk = raeting.packKinds.pack stack.addRemote(RemoteYard(stack=stack, name='manor', lanename=lanename, dirpath=self.opts['sock_dir'])) log.debug("Created Channel Jobber Stack {0}\n".format(stack.name)) return stack
def _setup_caller_stack(self, opts): ''' Setup and return the LaneStack and Yard used by by channel when global not already setup such as in salt-call to communicate to-from the minion ''' role = opts.get('id') if not role: emsg = ("Missing role required to setup RAETChannel.") log.error(emsg + "\n") raise ValueError(emsg) kind = opts.get('__role') # application kind 'master', 'minion', etc if kind not in kinds.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for RAETChannel.".format(kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind in [kinds.APPL_KIND_NAMES[kinds.applKinds.minion], kinds.APPL_KIND_NAMES[kinds.applKinds.caller], ]: lanename = "{0}_{1}".format(role, kind) else: emsg = ("Unsupported application kind '{0}' for RAETChannel.".format(kind)) log.error(emsg + '\n') raise ValueError(emsg) sockdirpath = opts['sock_dir'] stackname = 'caller' + nacling.uuid(size=18) stack = LaneStack(name=stackname, lanename=lanename, sockdirpath=sockdirpath) stack.Pk = raeting.PackKind.pack.value stack.addRemote(RemoteYard(stack=stack, name='manor', lanename=lanename, dirpath=sockdirpath)) log.debug("Created Caller Jobber Stack {0}\n".format(stack.name)) return stack
def pub(self, tgt, fun, arg=(), tgt_type='glob', ret='', jid='', timeout=5, **kwargs): ''' Publish the command! ''' if 'expr_form' in kwargs: salt.utils.warn_until( 'Fluorine', 'The target type should be passed using the \'tgt_type\' ' 'argument instead of \'expr_form\'. Support for using ' '\'expr_form\' will be removed in Salt Fluorine.' ) tgt_type = kwargs.pop('expr_form') payload_kwargs = self._prep_pub( tgt, fun, arg=arg, tgt_type=tgt_type, ret=ret, jid=jid, timeout=timeout, **kwargs) kind = self.opts['__role'] if kind not in kinds.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for Raet LocalClient.".format(kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind in [kinds.APPL_KIND_NAMES[kinds.applKinds.master], kinds.APPL_KIND_NAMES[kinds.applKinds.syndic]]: lanename = 'master' else: emsg = ("Unsupported application kind '{0}' for Raet LocalClient.".format(kind)) log.error(emsg + '\n') raise ValueError(emsg) sockdirpath = self.opts['sock_dir'] name = 'client' + nacling.uuid(size=18) stack = LaneStack( name=name, lanename=lanename, sockdirpath=sockdirpath) stack.Pk = raeting.PackKind.pack.value manor_yard = RemoteYard( stack=stack, lanename=lanename, name='manor', dirpath=sockdirpath) stack.addRemote(manor_yard) route = {'dst': (None, manor_yard.name, 'local_cmd'), 'src': (None, stack.local.name, None)} msg = {'route': route, 'load': payload_kwargs} stack.transmit(msg) stack.serviceAll() while True: time.sleep(0.01) stack.serviceAll() while stack.rxMsgs: msg, sender = stack.rxMsgs.popleft() ret = msg.get('return', {}) if 'ret' in ret: stack.server.close() return ret['ret'] stack.server.close() return ret
def pub(self, tgt, fun, arg=(), expr_form='glob', ret='', jid='', timeout=5, **kwargs): ''' Publish the command! ''' payload_kwargs = self._prep_pub(tgt, fun, arg=arg, expr_form=expr_form, ret=ret, jid=jid, timeout=timeout, **kwargs) kind = self.opts['__role'] if kind not in kinds.APPL_KINDS: emsg = ("Invalid application kind = '{0}' for Raet LocalClient.". format(kind)) log.error(emsg + "\n") raise ValueError(emsg) if kind in [ kinds.APPL_KIND_NAMES[kinds.applKinds.master], kinds.APPL_KIND_NAMES[kinds.applKinds.syndic] ]: lanename = 'master' else: emsg = ("Unsupported application kind '{0}' for Raet LocalClient.". format(kind)) log.error(emsg + '\n') raise ValueError(emsg) sockdirpath = self.opts['sock_dir'] name = 'client' + nacling.uuid(size=18) stack = LaneStack(name=name, lanename=lanename, sockdirpath=sockdirpath) stack.Pk = raeting.packKinds.pack manor_yard = RemoteYard(stack=stack, lanename=lanename, name='manor', dirpath=sockdirpath) stack.addRemote(manor_yard) route = { 'dst': (None, manor_yard.name, 'local_cmd'), 'src': (None, stack.local.name, None) } msg = {'route': route, 'load': payload_kwargs} stack.transmit(msg) stack.serviceAll() while True: time.sleep(0.01) stack.serviceAll() while stack.rxMsgs: msg, sender = stack.rxMsgs.popleft() ret = msg.get('return', {}) if 'ret' in ret: stack.server.close() return ret['ret'] stack.server.close() return ret