def get(self, request, *args, **kwargs): _pk = self.kwargs.get('roster_id', '') sym_link_roster(_pk) # cp install_salt.sh from master to minion _saltapi = SaltAPI(url=SALT_API_URL, username=SALT_API_USERNAME, password=SALT_API_PASSWORD) _cp_fun = 'cp.get_file' _cp_arg = [ 'salt://install_salt.sh', '/etc/salt/', ] _cp_payload = _saltapi.ssh_execution(tgt='*', fun=_cp_fun, arg=_cp_arg) # install salt-minion _sh_fun = 'cmd.run' _sh_arg = [ 'sudo sh /etc/salt/install_salt.sh', ] _sh_payload = _saltapi.ssh_execution(tgt='*', fun=_sh_fun, arg=_sh_arg) _payload = {} # dump payload for _host, _ret in _cp_payload.items(): _payload[_host] = _sh_payload[_host] if _ret[ 'return'] else _cp_payload[_host] # whatever return payload return Response(_payload, status=status.HTTP_200_OK)
def post(self, request, *args, **kwargs): _pk = request.data.get('roster_id', -1) sym_link_roster(_pk) _fun = request.data.get('cmds', '') _raw_args = request.data.get('args', '') _args = _raw_args.split(',') _saltapi = SaltAPI(url=SALT_API_URL, username=SALT_API_USERNAME, password=SALT_API_PASSWORD) _raw_payload = _saltapi.ssh_execution(tgt='*', fun=_fun, arg=_args) _payload = {} for _host, _ret in _raw_payload.items(): _payload[_host] = _ret if _ret.get('stderr') else text2html( _ret['return']) return Response(_payload, status=status.HTTP_200_OK)