예제 #1
0
파일: api.py 프로젝트: xfyecn/MiracleOps
 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)
예제 #2
0
파일: api.py 프로젝트: xfyecn/MiracleOps
 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)