def action(self): ''' Set up the uxd stack and behaviors ''' #import wingdbstub self.uxd_stack.value = LaneStack( lanename=self.opts.value.get('id', 'master'), yid=self.yid.value, sockdirpath=self.opts.value['sock_dir']) self.uxd_stack.value.Pk = raeting.packKinds.pack manor_yard = RemoteYard( yid=0, lanename=self.opts.value.get('id', 'master'), dirpath=self.opts.value['sock_dir']) self.uxd_stack.value.addRemote(manor_yard) self.remote.value = salt.daemons.masterapi.RemoteFuncs(self.opts.value) self.local.value = salt.daemons.masterapi.LocalFuncs( self.opts.value, self.access_keys.value) init = {} init['route'] = { 'src': (None, self.uxd_stack.value.local.name, None), 'dst': (None, 'yard0', 'worker_req') } self.uxd_stack.value.transmit(init, self.uxd_stack.value.uids.get('yard0')) self.uxd_stack.value.serviceAll()
def action(self): ''' Set up the uxd stack and behaviors ''' #name = "{0}{1}{2}".format(self.opts.value.get('id', self.main.data.name), #'worker', #self.yid.value) name = "worker{0}".format(self.yid.value) lanename = self.opts.value.get('id', self.main.data.lanename) self.stack.value = LaneStack(name=name, lanename=lanename, yid=self.yid.value, sockdirpath=self.opts.value['sock_dir']) self.stack.value.Pk = raeting.packKinds.pack manor_yard = RemoteYard(stack=self.stack.value, yid=0, name='manor', lanename=lanename, dirpath=self.opts.value['sock_dir']) self.stack.value.addRemote(manor_yard) self.remote.value = salt.daemons.masterapi.RemoteFuncs(self.opts.value) self.local.value = salt.daemons.masterapi.LocalFuncs( self.opts.value, self.access_keys.value) init = {} init['route'] = { 'src': (None, self.stack.value.local.name, None), 'dst': (None, manor_yard.name, 'worker_req') } self.stack.value.transmit( init, self.stack.value.fetchUidByName(manor_yard.name)) self.stack.value.serviceAll()
def action(self): ''' Set up the uxd stack and behaviors ''' name = "worker{0}".format(self.windex.value) # master application kind kind = self.opts.value['__role'] if kind == 'master': lanename = 'master' # self.local.data.lanename else: # workers currently are only supported for masters emsg = ("Invalid application kind '{0}' for worker.".format(kind)) log.error(emsg + '\n') raise ValueError(emsg) self.stack.value = LaneStack(name=name, lanename=lanename, sockdirpath=self.opts.value['sock_dir']) self.stack.value.Pk = raeting.packKinds.pack manor_yard = RemoteYard(stack=self.stack.value, name='manor', lanename=lanename, dirpath=self.opts.value['sock_dir']) self.stack.value.addRemote(manor_yard) self.remote_loader.value = salt.daemons.masterapi.RemoteFuncs( self.opts.value) self.local_loader.value = salt.daemons.masterapi.LocalFuncs( self.opts.value, self.access_keys.value) init = {} init['route'] = { 'src': (None, self.stack.value.local.name, None), 'dst': (None, manor_yard.name, 'worker_req') } self.stack.value.transmit( init, self.stack.value.fetchUidByName(manor_yard.name)) self.stack.value.serviceAll()
def action(self): ''' Pull the queue for functions to execute ''' while self.fun.value: exchange = self.fun.value.popleft() data = exchange.get('pub') match = getattr(self.matcher, '{0}_match'.format(data.get('tgt_type', 'glob')))(data['tgt']) if not match: return if 'user' in data: log.info('User {0[user]} Executing command {0[fun]} with jid ' '{0[jid]}'.format(data)) else: log.info('Executing command {0[fun]} with jid {0[jid]}'.format( data)) log.debug('Command details {0}'.format(data)) ex_yard = RemoteYard(yid=data['jid'], prefix=self.opts['id'], dirpath=self.opts['sock_dir']) self.uxd_stack.value.addRemote(ex_yard) process = multiprocessing.Process(target=self.proc_run, kwargs={'exchange': exchange}) process.start() process.join()
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 action(self): self.presence_req.value = deque() self.availables.value = set() self.alloweds.value = odict() self.aliveds.value = odict() self.reapeds.value = odict() # Create event stack name = 'event' + nacling.uuid(size=18) lanename = self.lane_stack.value.local.lanename sock_dir = self.lane_stack.value.local.dirpath ryn = 'manor' console.terse( "Create stack: name = {0}, lanename = {1}, sock_dir = {2}\n". format(name, lanename, sock_dir)) stack = LaneStack(name=name, lanename=lanename, sockdirpath=sock_dir) stack.addRemote( RemoteYard(stack=stack, lanename=lanename, name=ryn, dirpath=sock_dir)) self.event_stack.value = stack route = { 'dst': (None, ryn, 'presence_req'), 'src': (None, stack.local.name, None) } msg = {'route': route} stack.transmit(msg, stack.nameRemotes[ryn].uid) serviceLanes([stack, self.lane_stack.value])
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 __prep_stack(self): self.yid = salt.utils.gen_jid() self.connected = False self.stack = LaneStack(yid=self.yid, lanename=self.node, sockdirpath=self.sock_dir) self.stack.Pk = raeting.packKinds.pack self.router_yard = RemoteYard(lanename=self.node, yid=0, dirpath=self.sock_dir) self.stack.addRemote(self.router_yard) self.connect_pub()
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 __prep_stack(self): kind = self.opts.get('__role', '') # opts optional for master if kind: # not all uses of Raet SaltEvent has opts defined if kind not in daemons.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 == 'master': lanename = 'master' elif self.node in ['minion', 'syndic', 'call']: # see daemons.APPL_KINDS 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)) self.connected = False self.stack = LaneStack(name=name, lanename=lanename, sockdirpath=self.sock_dir) self.stack.Pk = raeting.packKinds.pack self.router_yard = RemoteYard(stack=self.stack, lanename=lanename, name='manor', dirpath=self.sock_dir) self.stack.addRemote(self.router_yard) self.connect_pub()
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 __prep_stack(self): if self.node == 'master': lanename = 'master' if self.opts: kind = self.opts.get('__role', '') # opts optional for master if kind and kind != self.node: emsg = ("Mismatch between node '{0}' and kind '{1}' in setup " "of SaltEvent on Raet.".format(self.node, kind)) log.error(emsg + '\n') raise ValueError(emsg) elif self.node == 'minion': role = self.opts.get('id', '') # opts required for minion if not role: emsg = ("Missing opts['id'] required by SaltEvent on Raet with " "node kind {0}.".format(self.node)) log.error(emsg + '\n') raise ValueError(emsg) kind = self.opts.get('__role', '') if kind != self.node: emsg = ("Mismatch between node '{0}' and kind '{1}' in setup " "of SaltEvent on Raet.".format(self.node, kind)) log.error(emsg + '\n') raise ValueError(emsg) lanename = role # add '_minion' else: emsg = ("Unsupported application node kind '{0}' for SaltEvent " "Raet.".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)) self.connected = False self.stack = LaneStack( name=name, lanename=lanename, sockdirpath=self.sock_dir) self.stack.Pk = raeting.packKinds.pack self.router_yard = RemoteYard( stack=self.stack, lanename=lanename, name='manor', dirpath=self.sock_dir) self.stack.addRemote(self.router_yard) self.connect_pub()
def __prep_stack(self): self.yid = nacling.uuid(size=18) name = 'event' + self.yid cachedir = self.opts.get('cachedir', os.path.join(syspaths.CACHE_DIR, self.node)) self.connected = False self.stack = LaneStack(name=name, uid=self.yid, lanename=self.node, sockdirpath=self.sock_dir) self.stack.Pk = raeting.packKinds.pack self.router_yard = RemoteYard(stack=self.stack, lanename=self.node, uid=0, name='manor', dirpath=self.sock_dir) self.stack.addRemote(self.router_yard) self.connect_pub()
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 _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 __prep_stack(self): self.yid = salt.utils.gen_jid() name = 'event' + self.yid cachedir = self.opts.get('cachedir', os.path.join(syspaths.CACHE_DIR, self.node)) basedirpath = os.path.abspath( os.path.join(cachedir, 'raet')) self.connected = False self.stack = LaneStack( name=name, yid=self.yid, lanename=self.node, basedirpath=basedirpath, sockdirpath=self.sock_dir) self.stack.Pk = raeting.packKinds.pack self.router_yard = RemoteYard( stack=self.stack, lanename=self.node, yid=0, dirpath=self.sock_dir) self.stack.addRemote(self.router_yard) self.connect_pub()
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 action(self): ''' Set up the uxd stack and behaviors ''' name = "{0}{1}{2}".format( self.opts.value.get('id', self.main.data.name), 'worker', self.yid.value) localname = name lanename = self.opts.value.get('id', self.main.data.lanename) basedirpath = os.path.abspath( os.path.join(self.opts.value['cachedir'], 'raet')) self.stack.value = LaneStack( name=name, #localname=localname, basedirpath=basedirpath, lanename=lanename, yid=self.yid.value, sockdirpath=self.opts.value['sock_dir']) self.stack.value.Pk = raeting.packKinds.pack manor_yard = RemoteYard(stack=self.stack.value, yid=0, lanename=lanename, dirpath=self.opts.value['sock_dir']) self.stack.value.addRemote(manor_yard) self.remote.value = salt.daemons.masterapi.RemoteFuncs(self.opts.value) self.local.value = salt.daemons.masterapi.LocalFuncs( self.opts.value, self.access_keys.value) init = {} init['route'] = { 'src': (None, self.stack.value.local.name, None), 'dst': (None, manor_yard.name, 'worker_req') } self.stack.value.transmit(init, self.stack.value.uids.get(manor_yard.name)) self.stack.value.serviceAll()
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