Giter Site home page Giter Site logo

stackstorm-salt's Introduction

SaltStack Integration Pack

Pack which allows integration with SaltStack.

Requirements

This pack depends on the salt Python library which requires the following dependencies to be installed:

  • SSL development headers and libraries (libssl-dev package on Ubuntu)
  • Swig (swig package on Ubuntu)

Those requirements need to be installed on the server where the actions will be running on and where the StackStorm packs are installed.

Usage Options

Scenario 1: ST2 Installed on a Salt Master

Configuration

If ST2 is installed on the master, no local configuration is required.

Examples

    st2 run salt.client matches='web*' module=test.ping
    st2 run salt.client module=pkg.install kwargs='{"pkgs":["git","httpd"]}'

    st2 run salt.bootstrap instance_id=<uuid> provider=my-nova name=web.example.com

Scenario 2: ST2 Using Salt NetAPI

Configuration

Copy the example configuration in salt.yaml.example to /opt/stackstorm/configs/salt.yaml and edit as required.

It must contain this:

---
api_url: https://salt.example.com
username: stella
password: clams

Note : When modifying the configuration in /opt/stackstorm/configs/ please remember to tell StackStorm to load these new values by running st2ctl reload --register-configs

Examples

    st2 run salt.runner_manage.up
    st2 run salt.runner_job.list_jobs kwargs='{"ext_source":"blah"}'
    st2 run salt.local_pillar.items args=this,that

One can also use the generic "runner" action to execute arbitrary runners and execution modules.

    st2 run salt.runner module=manage.down
    st2 run salt.local module=grains.get args=os
    st2 run salt.local module=pillar.items args=thing1,thing2

Actions

Saltstack runner/execution module function calls are represented as Stackstorm actions. Considering Saltstack's archive execution module, every function would be exposed as an Stackstorm action.

Stackstorm actions for this pack are namespaced relative to their Saltstack NetAPI client name and module name. Thus having the form:

[NetAPI client name]_[module name].[function name]

An action named runner_manage.down calls the down function from the manage runner.

Runner Actions

  • runner_cache.clear_all
  • runner_cache.clear_grains
  • runner_cache.clear_mine_func
  • runner_cache.clear_mine
  • runner_cache.clear_pillar
  • runner_cache.grains
  • runner_cache.mine
  • runner_cache.pillar
  • runner_cloud.action
  • runner_cloud.full_query
  • runner_cloud.list_images
  • runner_cloud.list_locations
  • runner_cloud.list_sizes
  • runner_cloud.profile
  • runner_cloud.query
  • runner_cloud.select_query
  • runner_jobs.active
  • runner_jobs.list_jobs
  • runner_manage.down
  • runner_manage.status
  • runner_manage.up
  • runner_manage.versions
  • runner_pillar.show_pillar
  • runner_pillar.show_top
  • runner_thin.generate

Execution Module Actions

  • local_archive.gzip
  • local_archive.rar
  • local_archive.tar
  • local_archive.unrar
  • local_archive.unzip
  • local_archive.zip_
  • local_cloud.action
  • local_cloud.create
  • local_cloud.destroy
  • local_cloud.network_create
  • local_cloud.profile_
  • local_cloud.virtual_interface_create
  • local_cloud.volume_attach
  • local_cloud.volume_create
  • local_cloud.volume_delete
  • local_cloud.volume_detach
  • local_cmdmod.run_chroot
  • local_cmdmod.run
  • local_cmdmod.script
  • local_cp.get_file
  • local_cp.get_url
  • local_cp.push_dir
  • local_cp.push
  • local_cron.ls
  • local_cron.rm_env
  • local_cron.rm_job
  • local_cron.set_env
  • local_cron.set_job
  • local_data.cas
  • local_data.dump
  • local_data.getval
  • local_data.update
  • local_event.fire_master
  • local_event.fire
  • local_event.send
  • local_file.access
  • local_file.chgrp
  • local_file.chown
  • local_file.directory_exists
  • local_file.file_exists
  • local_file.find
  • local_file.manage_file
  • local_file.mkdir
  • local_file.remove
  • local_file.replace
  • local_file.search
  • local_file.symlink
  • local_file.touch
  • local_file.truncate
  • local_grains.append
  • local_grains.delval
  • local_grains.get
  • local_grains.remove
  • local_grains.setval
  • local_hosts.add_hosts
  • local_hosts.get_alias
  • local_hosts.get_ip
  • local_hosts.rm_host
  • local_hosts.set_host
  • local_htpasswd.useradd
  • local_htpasswd.userdel
  • local_mine.delete
  • local_mine.get
  • local_mine.send
  • local_mine.update
  • local_network.connect
  • local_network.interface_ip
  • local_network.ipaddrs
  • local_network.ping
  • local_network.subnets
  • local_pillar.get
  • local_pip.freeze
  • local_pip.install
  • local_pip.uninstall
  • local_pkg.install
  • local_pkg.refresh_db
  • local_pkg.remove
  • local_puppet.disable
  • local_puppet.enable
  • local_puppet.fact
  • local_puppet.noop
  • local_puppet.run
  • local_puppet.status
  • local_puppet.summary
  • local_ret.get_fun
  • local_ret.get_jids
  • local_ret.get_jid
  • local_ret.get_minions
  • local_saltutil.sync_all
  • local_saltutil.sync_grains
  • local_saltutil.sync_modules
  • local_saltutil.sync_outputters
  • local_saltutil.sync_renderers
  • local_saltutil.sync_returners
  • local_saltutil.sync_states
  • local_saltutil.sync_utils
  • local_schedule.add
  • local_schedule.delete
  • local_schedule.disable_job
  • local_schedule.enable_job
  • local_schedule.run_job
  • local_service.available
  • local_service.restart
  • local_service.start
  • local_service.status
  • local_service.stop
  • local_shadow.del_password
  • local_shadow.gen_password
  • local_shadow.set_expire
  • local_state.highstate
  • local_state.single
  • local_state.sls
  • local_supervisord.add
  • local_supervisord.custom
  • local_supervisord.remove
  • local_supervisord.reread
  • local_supervisord.restart
  • local_supervisord.start
  • local_supervisord.stop
  • local_systemd.available
  • local_systemd.disable
  • local_systemd.enable
  • local_systemd.restart
  • local_systemd.start
  • local_systemd.stop
  • local_systemd.systemctl_reload
  • local_test.cross_test
  • local_test.echo
  • local_test.ping
  • local_useradd.add
  • local_useradd.chshell
  • local_useradd.delete

stackstorm-salt's People

Contributors

armab avatar blag avatar bmarick avatar cognifloyd avatar emedvedev avatar enykeev avatar gtmanfred avatar jcockhren avatar kami avatar lakshmi-kannan avatar lindsayhill avatar nazunalika avatar nmaludy avatar nzlosh avatar pengyao avatar puneetk avatar tonybaloney avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stackstorm-salt's Issues

Stackstorm 3.4 appears to have broken my salt pack

I've verified my config is accurate and I can do basic things (test.ping for example) via curl on my stackstorm VM. Have rebooted, made sure the config in /opt/stackstorm/configs/salt.yaml is kosher, st2ctl reload --register-configs, and recently completed a full reinstall of stackstorm, same issue persists.

{
  "stdout": "",
  "stderr": "Traceback (most recent call last):
  File \"/opt/stackstorm/virtualenvs/salt/lib/python3.6/site-packages/salt/client/__init__.py\", line 335, in run_job
    **kwargs)
  File \"/opt/stackstorm/virtualenvs/salt/lib/python3.6/site-packages/salt/client/__init__.py\", line 1713, in pub
    raise SaltClientError
salt.exceptions.SaltClientError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File \"/opt/stackstorm/st2/lib/python3.6/site-packages/python_runner/python_action_wrapper.py\", line 334, in <module>
    obj.run()
  File \"/opt/stackstorm/st2/lib/python3.6/site-packages/python_runner/python_action_wrapper.py\", line 193, in run
    output = action.run(**self._parameters)
  File \"/opt/stackstorm/packs/salt/actions/client.py\", line 17, in run
    ret = cli.cmd(matches, module, kwarg=kwargs)
  File \"/opt/stackstorm/virtualenvs/salt/lib/python3.6/site-packages/salt/client/__init__.py\", line 701, in cmd
    **kwargs)
  File \"/opt/stackstorm/virtualenvs/salt/lib/python3.6/site-packages/salt/client/__init__.py\", line 339, in run_job
    'The salt master could not be contacted. Is master running?'
salt.exceptions.SaltClientError: The salt master could not be contacted. Is master running?
",
  "exit_code": 1,
  "result": "None"
}

Definitely not ruling out my own mistake here, but curious if anyone else has upgrade to stackstorm 3.4 and used the salt pack successfully?

Pack fails to install on Python 3.8

The pack fails to install on Python 3.8.
I found the solution was to install distro before installing the package.

While I can add that to the requirements, should we possibly switch to a newer version of the salt module?
By moving to a new version of the module we would loose Python2.7 support.

I am happy to submit the PR either way.
Just want feed back before I submit the PR

Not able to target remote minions

Hello,

I am trying to use the stackstorm with Salt integration. I am not able to target systems using api or gui. When I try using test.ping it works as expected however, a grains.get does not accept my target host or my args=os:

[root@#### ~]# st2 --version
st2 2.10.4, on Python 2.7.5

test.ping result

[root@#### ~]# st2 run salt.local module=test.ping target=####
.
id: 5cb79dcb94482e74ed7dd0a8
status: succeeded
parameters: 
  module: test.ping
  target: ####
result: 
  exit_code: 0
  result:
    return:
    - ####: true
  stderr: 'st2.actions.python.SaltLocal: INFO     [salt] Payload to be sent: {''username'': ''************'', ''expr_form'': u''glob'', ''eauth'': u''pam'', ''tgt'': u''####'', ''fun'': u''test.ping'', ''password'': ''********'', ''client'': ''local''}
    st2.actions.python.SaltLocal: INFO     [salt] Request generated
    st2.actions.python.SaltLocal: INFO     [salt] Preparing to send
    '
  stdout: ''

Results of grains.get:

[root@#### ~]# st2 run salt.local module=grains.get args=os target=#### 
id: 5cb79e7c94482e74ed7dd0ab
status: failed
parameters: 
  args:
  - os
  module: grains.get
  target: ####
result: 
  exit_code: 1
  result: None
  stderr: "st2.actions.python.SaltLocal: INFO     [salt] Payload to be sent: {'username': '************', 'tgt': u'####', 'client': 'local', 'expr_form': u'glob', 'eauth': u'pam', 'arg': [u'os'], 'fun': u'grains.get', 'password': '********'}
st2.actions.python.SaltLocal: INFO     [salt] Request generated
st2.actions.python.SaltLocal: INFO     [salt] Preparing to send
Traceback (most recent call last):
  File "/opt/stackstorm/st2/lib/python2.7/site-packages/python_runner/python_action_wrapper.py", line 325, in <module>
    obj.run()
  File "/opt/stackstorm/st2/lib/python2.7/site-packages/python_runner/python_action_wrapper.py", line 184, in run
    output = action.run(**self._parameters)
  File "/opt/stackstorm/packs/salt/actions/local.py", line 54, in run
    return resp.json()
  File "/opt/stackstorm/st2/lib/python2.7/site-packages/requests/models.py", line 885, in json
    return complexjson.loads(self.text, **kwargs)
  File "/opt/stackstorm/st2/lib/python2.7/site-packages/simplejson/__init__.py", line 518, in loads
    return _default_decoder.decode(s)
  File "/opt/stackstorm/st2/lib/python2.7/site-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/opt/stackstorm/st2/lib/python2.7/site-packages/simplejson/decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
"
  stdout: ''

Looks like it's missing an argument but not sure where to add this. Seems more likely a syntax issue on my end.

JSON parse errors when running command

When ever I tried to run a command, I would receive a JSON parse error.
The way I was able to track down the error was by editing the actions/local.py.
Specifically, I had to print out the text of the request response.
That lead me to finding out I was having an authentication issue.

I have opened up a pull request to log the HTTP status code, at the debug level.
This felt like the best option as it prevents the leaking of sensitive data in the response body.
Please let me know if there is something else I missed in my PR.

Note - I added the logs from actions/local.py to actions/runner.py so that they match as well

Cannot run saltstack modules sucessfully.

Hey guys,

I got an issue when running saltstack modules in ST2 web console, it seems all of saltstack modules cannot be run successfully. Does python 2.7 is too old for st2? Can you help? I am looking forwarding to ur reply. Thanks.

Environment information:
St version: st2 2.2.1
St2client:Version: 2.2.1
Python version: Python 2.7.6
OS: Linux VM-27-161-ubuntu 3.13.0-105-generic #152-Ubuntu SMP Fri Dec 2 15:37:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Issue description:
When trying to run saltstack module via st2 web console and st2 server, I got the below errors: I got salt master and ST2 installed on the same box.

Running st2 run salt.local module=test.ping command on the server, still got the same error:

id: 5908609f43ff0a1b5eceff26
status: failed
parameters: 
  module: test.ping
result: 
  exit_code: 1
  result: None
  stderr: "Traceback (most recent call last):
  File "/opt/stackstorm/st2/local/lib/python2.7/site-packages/st2common/runners/python_action_wrapper.py", line 259, in <module>
    obj.run()
  File "/opt/stackstorm/st2/local/lib/python2.7/site-packages/st2common/runners/python_action_wrapper.py", line 155, in run
    output = action.run(**self._parameters)
  File "/opt/stackstorm/packs/salt/actions/local.py", line 35, in run
    data=kwargs)
  File "/opt/stackstorm/packs/salt/actions/lib/base.py", line 62, in generate_package
    clean_payload = sanitize_payload(('username', 'password'), self.data)
  File "/opt/stackstorm/packs/salt/actions/lib/utils.py", line 67, in sanitize_payload
    map(lambda k: data.update({k: "*" * len(payload[k])}), keys_to_sanitize)
  File "/opt/stackstorm/packs/salt/actions/lib/utils.py", line 67, in <lambda>
    map(lambda k: data.update({k: "*" * len(payload[k])}), keys_to_sanitize)
TypeError: object of type 'int' has no len()
"
  stdout: ''

Action-Aliases `salt-local state.highstate` doesn't apply highstate

When the salt.local action is called from the command line providing module=state.highstate and target, the high state is applied to the target machine. If the action is trigger via the action-alias, the result appears to apply the configuration changes but none are observred on the target machine. It seems like it's running with test=true.

salt.local from action-alias

id: 5defab2838b7e592a6f1332c
status: succeeded (5s elapsed)
parameters:
  args:
  - '[]'
  module: state.highstate
  target: automate*
result:
  exit_code: 0
  result:

salt.local from cli

id: 5df0064c38b7e592a6f13347
status: succeeded (5s elapsed)
parameters:
  module: state.highstate
  target: automate*
result:
  exit_code: 0
  result:

The only difference I can see between the 2 calls is that arg parameter is passed an empty list. This behaviour has been observed using salt-2018.3.4

Return codes are always 0

This is salt's fault, see saltstack/salt#37458, but I want to create an issue here in case there is any easier workaround for this, as well as a heads up to others looking for a solution. We never know when a salt action fails. I'm currently writing some parsing in local.py to go through data for a few different modules, but this is not an ideal solution.

Pack install failing on dependencys

Hi, I'm attempting to install this pack on a fresh stackstorm install on Centos7, and the install is failing at the dependency install stage. I have attempted to manually install the dependencies but the install is still failing.

I have attached the output of the install process below, any assistance you can provide would be greatly appreciated.

{
  "tasks": [
    {
      "liveaction_id": "5c781694d3bd7b7a70d323b3",
      "workflow": null,
      "created_at": "2019-02-28T17:12:52.257771+00:00",
      "updated_at": "2019-02-28T17:12:55.498995+00:00",
      "state": "succeeded",
      "result": {
        "result": {
          "salt": "Success."
        },
        "exit_code": 0,
        "stderr": "st2.actions.python.DownloadGitRepoAction: DEBUG    Removing existing pack salt in /opt/stackstorm/packs/salt to replace.
st2.actions.python.DownloadGitRepoAction: DEBUG    Moving pack from /root/3b70734330693e587ad74abfca29a85b to /opt/stackstorm/packs/.
",
        "stdout": ""
      },
      "id": "download pack",
      "execution_id": "5c781694d3bd7b7a70d323b4",
      "name": "download pack"
    },
    {
      "liveaction_id": "5c781697d3bd7b7a70d323b5",
      "workflow": null,
      "created_at": "2019-02-28T17:12:55.524742+00:00",
      "updated_at": "2019-02-28T17:12:56.772686+00:00",
      "state": "succeeded",
      "result": {
        "result": [
          "salt"
        ],
        "exit_code": 0,
        "stderr": "",
        "stdout": ""
      },
      "id": "make a prerun",
      "execution_id": "5c781697d3bd7b7a70d323b6",
      "name": "make a prerun"
    },
    {
      "liveaction_id": "5c781698d3bd7b7a70d323b7",
      "workflow": null,
      "created_at": "2019-02-28T17:12:56.797341+00:00",
      "updated_at": "2019-02-28T17:13:15.189299+00:00",
      "state": "failed",
      "result": {
        "result": "None",
        "exit_code": 1,
        "stderr": "st2.actions.python.SetupVirtualEnvironmentAction: DEBUG    Setting up virtualenv for pack \"salt\" (/opt/stackstorm/packs/salt)
st2.actions.python.SetupVirtualEnvironmentAction: INFO     Virtualenv path \"/opt/stackstorm/virtualenvs/salt\" doesn't exist
st2.actions.python.SetupVirtualEnvironmentAction: DEBUG    Creating virtualenv for pack \"salt\" in \"/opt/stackstorm/virtualenvs/salt\"
st2.actions.python.SetupVirtualEnvironmentAction: DEBUG    Creating virtualenv in \"/opt/stackstorm/virtualenvs/salt\" using Python binary \"/opt/stackstorm/st2/bin/python\"
st2.actions.python.SetupVirtualEnvironmentAction: DEBUG    Running command \"/opt/stackstorm/st2/bin/virtualenv -p /opt/stackstorm/st2/bin/python --no-download /opt/stackstorm/virtualenvs/salt\" to create virtualenv.
st2.actions.python.SetupVirtualEnvironmentAction: DEBUG    Installing base requirements
st2.actions.python.SetupVirtualEnvironmentAction: DEBUG    Installing requirement six>=1.9.0,<2.0 with command /opt/stackstorm/virtualenvs/salt/bin/pip install six>=1.9.0,<2.0.
st2.actions.python.SetupVirtualEnvironmentAction: DEBUG    Installing pack specific requirements from \"/opt/stackstorm/packs/salt/requirements.txt\"
st2.actions.python.SetupVirtualEnvironmentAction: DEBUG    Installing requirements from file /opt/stackstorm/packs/salt/requirements.txt with command /opt/stackstorm/virtualenvs/salt/bin/pip install -U -r /opt/stackstorm/packs/salt/requirements.txt.
Traceback (most recent call last):
  File \"/opt/stackstorm/st2/lib/python2.7/site-packages/python_runner/python_action_wrapper.py\", line 325, in <module>
    obj.run()
  File \"/opt/stackstorm/st2/lib/python2.7/site-packages/python_runner/python_action_wrapper.py\", line 184, in run
    output = action.run(**self._parameters)
  File \"/opt/stackstorm/packs/packs/actions/pack_mgmt/setup_virtualenv.py\", line 89, in run
    no_download=no_download)
  File \"/opt/stackstorm/st2/lib/python2.7/site-packages/st2common/util/virtualenvs.py\", line 121, in setup_pack_virtualenv
    logger=logger)
  File \"/opt/stackstorm/st2/lib/python2.7/site-packages/st2common/util/virtualenvs.py\", line 267, in install_requirements
    (requirements_file_path, stdout, stderr))
Exception: Failed to install requirements from \"/opt/stackstorm/packs/salt/requirements.txt\": Collecting salt (from -r /opt/stackstorm/packs/salt/requirements.txt (line 1))
Collecting salt-pepper (from -r /opt/stackstorm/packs/salt/requirements.txt (line 2))
  Using cached https://files.pythonhosted.org/packages/e1/27/df7411c22b6c5998a89861e9ba6652e78b7bd5f0d1e3cdaa57cd6522be3c/salt_pepper-0.7.5-py2-none-any.whl
Collecting requests (from -r /opt/stackstorm/packs/salt/requirements.txt (line 3))
  Using cached https://files.pythonhosted.org/packages/7d/e3/20f3d364d6c8e5d2353c72a67778eb189176f08e873c9900e10c0287b84b/requests-2.21.0-py2.py3-none-any.whl
Collecting PyYAML (from salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
Collecting tornado<6.0,>=4.2.1 (from salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
Collecting pycrypto>=2.6.1 (from salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/60/db/645aa9af249f059cc3a368b118de33889219e0362141e75d4eaf6f80f163/pycrypto-2.6.1.tar.gz
Collecting msgpack!=0.5.5,>=0.5 (from salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/6f/74/06f950e5a4c1fb94b676640b8fea839b80bffdc247144bd054dd5eed250e/msgpack-0.6.1-cp27-cp27mu-manylinux1_x86_64.whl
Collecting MarkupSafe (from salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/fb/40/f3adb7cf24a8012813c5edb20329eb22d5d8e2a0ecf73d21d6b85865da11/MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl
Collecting futures>=2.0 (from salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/2d/99/b2c4e9d5a30f6471e410a146232b4118e697fa3ffc06d6a65efde84debd0/futures-3.2.0-py2-none-any.whl
Collecting pyzmq>=2.2.0 (from salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/ea/e5/1be1bf5623911f098dd629b65abbee9331f17b5946d9693bc7b85fa5967a/pyzmq-18.0.0-cp27-cp27mu-manylinux1_x86_64.whl
Collecting Jinja2 (from salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl
Collecting urllib3<1.25,>=1.21.1 (from requests->-r /opt/stackstorm/packs/salt/requirements.txt (line 3))
  Using cached https://files.pythonhosted.org/packages/62/00/ee1d7de624db8ba7090d1226aebefab96a2c71cd5cfa7629d6ad3f61b79e/urllib3-1.24.1-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests->-r /opt/stackstorm/packs/salt/requirements.txt (line 3))
  Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Collecting idna<2.9,>=2.5 (from requests->-r /opt/stackstorm/packs/salt/requirements.txt (line 3))
  Using cached https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests->-r /opt/stackstorm/packs/salt/requirements.txt (line 3))
  Using cached https://files.pythonhosted.org/packages/9f/e0/accfc1b56b57e9750eba272e24c4dddeac86852c2bebd1236674d7887e8a/certifi-2018.11.29-py2.py3-none-any.whl
Collecting singledispatch (from tornado<6.0,>=4.2.1->salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/c5/10/369f50bcd4621b263927b0a1519987a04383d4a98fb10438042ad410cf88/singledispatch-3.4.0.3-py2.py3-none-any.whl
Collecting backports-abc>=0.4 (from tornado<6.0,>=4.2.1->salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/7d/56/6f3ac1b816d0cd8994e83d0c4e55bc64567532f7dc543378bd87f81cebc7/backports_abc-0.5-py2.py3-none-any.whl
Requirement already up-to-date: six in /opt/stackstorm/virtualenvs/salt/lib/python2.7/site-packages (from singledispatch->tornado<6.0,>=4.2.1->salt->-r /opt/stackstorm/packs/salt/requirements.txt (line 1))
Building wheels for collected packages: pycrypto
  Running setup.py bdist_wheel for pycrypto: started
  Running setup.py bdist_wheel for pycrypto: finished with status 'error'
  Complete output from command /opt/stackstorm/virtualenvs/salt/bin/python -u -c \"import setuptools, tokenize;__file__='/tmp/pip-build-yjYZcp/pycrypto/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\
\
', '\
');f.close();exec(compile(code, __file__, 'exec'))\" bdist_wheel -d /tmp/tmpnjofsXpip-wheel- --python-tag cp27:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-2.7
  creating build/lib.linux-x86_64-2.7/Crypto
  copying lib/Crypto/__init__.py -> build/lib.linux-x86_64-2.7/Crypto
  copying lib/Crypto/pct_warnings.py -> build/lib.linux-x86_64-2.7/Crypto
  creating build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/SHA224.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/SHA384.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/SHA.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/MD4.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/RIPEMD.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/MD2.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/HMAC.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/SHA512.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/hashalgo.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/SHA256.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  copying lib/Crypto/Hash/MD5.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
  creating build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/PKCS1_OAEP.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/DES.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/ARC4.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/XOR.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/CAST.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/PKCS1_v1_5.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/blockalgo.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/AES.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/ARC2.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/DES3.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  copying lib/Crypto/Cipher/Blowfish.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
  creating build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/asn1.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/_number_new.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/Counter.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/RFC1751.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/py21compat.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/randpool.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/py3compat.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  copying lib/Crypto/Util/number.py -> build/lib.linux-x86_64-2.7/Crypto/Util
  creating build/lib.linux-x86_64-2.7/Crypto/Random
  copying lib/Crypto/Random/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Random
  copying lib/Crypto/Random/_UserFriendlyRNG.py -> build/lib.linux-x86_64-2.7/Crypto/Random
  copying lib/Crypto/Random/random.py -> build/lib.linux-x86_64-2.7/Crypto/Random
  creating build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
  copying lib/Crypto/Random/Fortuna/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
  copying lib/Crypto/Random/Fortuna/SHAd256.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
  copying lib/Crypto/Random/Fortuna/FortunaGenerator.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
  copying lib/Crypto/Random/Fortuna/FortunaAccumulator.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
  creating build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
  copying lib/Crypto/Random/OSRNG/posix.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
  copying lib/Crypto/Random/OSRNG/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
  copying lib/Crypto/Random/OSRNG/fallback.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
  copying lib/Crypto/Random/OSRNG/nt.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
  copying lib/Crypto/Random/OSRNG/rng_base.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest
  copying lib/Crypto/SelfTest/st_common.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest
  copying lib/Crypto/SelfTest/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_ARC4.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_AES.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_ARC2.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_Blowfish.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_XOR.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_DES.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/common.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_pkcs1_oaep.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_CAST.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  copying lib/Crypto/SelfTest/Cipher/test_DES3.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_SHA256.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_MD2.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_HMAC.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_SHA384.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_RIPEMD.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_MD5.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_SHA.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/common.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_MD4.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_SHA224.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  copying lib/Crypto/SelfTest/Hash/test_SHA512.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
  copying lib/Crypto/SelfTest/Protocol/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
  copying lib/Crypto/SelfTest/Protocol/test_rfc1751.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
  copying lib/Crypto/SelfTest/Protocol/test_chaffing.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
  copying lib/Crypto/SelfTest/Protocol/test_KDF.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
  copying lib/Crypto/SelfTest/Protocol/test_AllOrNothing.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
  copying lib/Crypto/SelfTest/PublicKey/test_ElGamal.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
  copying lib/Crypto/SelfTest/PublicKey/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
  copying lib/Crypto/SelfTest/PublicKey/test_DSA.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
  copying lib/Crypto/SelfTest/PublicKey/test_RSA.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
  copying lib/Crypto/SelfTest/PublicKey/test_importKey.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
  copying lib/Crypto/SelfTest/Random/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
  copying lib/Crypto/SelfTest/Random/test_random.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
  copying lib/Crypto/SelfTest/Random/test_rpoolcompat.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
  copying lib/Crypto/SelfTest/Random/test__UserFriendlyRNG.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
  copying lib/Crypto/SelfTest/Random/Fortuna/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
  copying lib/Crypto/SelfTest/Random/Fortuna/test_FortunaAccumulator.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
  copying lib/Crypto/SelfTest/Random/Fortuna/test_FortunaGenerator.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
  copying lib/Crypto/SelfTest/Random/Fortuna/test_SHAd256.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
  copying lib/Crypto/SelfTest/Random/OSRNG/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
  copying lib/Crypto/SelfTest/Random/OSRNG/test_generic.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
  copying lib/Crypto/SelfTest/Random/OSRNG/test_nt.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
  copying lib/Crypto/SelfTest/Random/OSRNG/test_fallback.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
  copying lib/Crypto/SelfTest/Random/OSRNG/test_winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
  copying lib/Crypto/SelfTest/Random/OSRNG/test_posix.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
  copying lib/Crypto/SelfTest/Util/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
  copying lib/Crypto/SelfTest/Util/test_asn1.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
  copying lib/Crypto/SelfTest/Util/test_number.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
  copying lib/Crypto/SelfTest/Util/test_winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
  copying lib/Crypto/SelfTest/Util/test_Counter.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
  creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
  copying lib/Crypto/SelfTest/Signature/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
  copying lib/Crypto/SelfTest/Signature/test_pkcs1_15.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
  copying lib/Crypto/SelfTest/Signature/test_pkcs1_pss.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
  creating build/lib.linux-x86_64-2.7/Crypto/Protocol
  copying lib/Crypto/Protocol/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
  copying lib/Crypto/Protocol/KDF.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
  copying lib/Crypto/Protocol/Chaffing.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
  copying lib/Crypto/Protocol/AllOrNothing.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
  creating build/lib.linux-x86_64-2.7/Crypto/PublicKey
  copying lib/Crypto/PublicKey/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
  copying lib/Crypto/PublicKey/_RSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
  copying lib/Crypto/PublicKey/ElGamal.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
  copying lib/Crypto/PublicKey/_DSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
  copying lib/Crypto/PublicKey/DSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
  copying lib/Crypto/PublicKey/RSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
  copying lib/Crypto/PublicKey/pubkey.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
  copying lib/Crypto/PublicKey/_slowmath.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
  creating build/lib.linux-x86_64-2.7/Crypto/Signature
  copying lib/Crypto/Signature/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Signature
  copying lib/Crypto/Signature/PKCS1_v1_5.py -> build/lib.linux-x86_64-2.7/Crypto/Signature
  copying lib/Crypto/Signature/PKCS1_PSS.py -> build/lib.linux-x86_64-2.7/Crypto/Signature
  running build_ext
  running build_configure
  checking for gcc... no
  checking for cc... no
  checking for cl.exe... no
  configure: error: in `/tmp/pip-build-yjYZcp/pycrypto':
  configure: error: no acceptable C compiler found in $PATH
  See `config.log' for more details
  Traceback (most recent call last):
    File \"<string>\", line 1, in <module>
    File \"/tmp/pip-build-yjYZcp/pycrypto/setup.py\", line 456, in <module>
      core.setup(**kw)
    File \"/usr/lib64/python2.7/distutils/core.py\", line 152, in setup
      dist.run_commands()
    File \"/usr/lib64/python2.7/distutils/dist.py\", line 953, in run_commands
      self.run_command(cmd)
    File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command
      cmd_obj.run()
    File \"/opt/stackstorm/virtualenvs/salt/lib/python2.7/site-packages/wheel/bdist_wheel.py\", line 179, in run
      self.run_command('build')
    File \"/usr/lib64/python2.7/distutils/cmd.py\", line 326, in run_command
      self.distribution.run_command(command)
    File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command
      cmd_obj.run()
    File \"/usr/lib64/python2.7/distutils/command/build.py\", line 127, in run
      self.run_command(cmd_name)
    File \"/usr/lib64/python2.7/distutils/cmd.py\", line 326, in run_command
      self.distribution.run_command(command)
    File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command
      cmd_obj.run()
    File \"/tmp/pip-build-yjYZcp/pycrypto/setup.py\", line 251, in run
      self.run_command(cmd_name)
    File \"/usr/lib64/python2.7/distutils/cmd.py\", line 326, in run_command
      self.distribution.run_command(command)
    File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command
      cmd_obj.run()
    File \"/tmp/pip-build-yjYZcp/pycrypto/setup.py\", line 278, in run
      raise RuntimeError(\"autoconf error\")
  RuntimeError: autoconf error
  
  ----------------------------------------
  Running setup.py clean for pycrypto
Failed to build pycrypto
Installing collected packages: PyYAML, futures, singledispatch, backports-abc, tornado, pycrypto, msgpack, MarkupSafe, pyzmq, urllib3, chardet, idna, certifi, requests, Jinja2, salt, salt-pepper
  Running setup.py install for pycrypto: started
    Running setup.py install for pycrypto: finished with status 'error'
    Complete output from command /opt/stackstorm/virtualenvs/salt/bin/python -u -c \"import setuptools, tokenize;__file__='/tmp/pip-build-yjYZcp/pycrypto/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\
\
', '\
');f.close();exec(compile(code, __file__, 'exec'))\" install --record /tmp/pip-fhrSZV-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/stackstorm/virtualenvs/salt/include/site/python2.7/pycrypto:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/Crypto
    copying lib/Crypto/__init__.py -> build/lib.linux-x86_64-2.7/Crypto
    copying lib/Crypto/pct_warnings.py -> build/lib.linux-x86_64-2.7/Crypto
    creating build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA224.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA384.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/MD4.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/RIPEMD.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/MD2.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/HMAC.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA512.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/hashalgo.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/SHA256.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    copying lib/Crypto/Hash/MD5.py -> build/lib.linux-x86_64-2.7/Crypto/Hash
    creating build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/PKCS1_OAEP.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/DES.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/ARC4.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/XOR.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/CAST.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/PKCS1_v1_5.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/blockalgo.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/AES.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/ARC2.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/DES3.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    copying lib/Crypto/Cipher/Blowfish.py -> build/lib.linux-x86_64-2.7/Crypto/Cipher
    creating build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/asn1.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/_number_new.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/Counter.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/RFC1751.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/py21compat.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/randpool.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/py3compat.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    copying lib/Crypto/Util/number.py -> build/lib.linux-x86_64-2.7/Crypto/Util
    creating build/lib.linux-x86_64-2.7/Crypto/Random
    copying lib/Crypto/Random/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Random
    copying lib/Crypto/Random/_UserFriendlyRNG.py -> build/lib.linux-x86_64-2.7/Crypto/Random
    copying lib/Crypto/Random/random.py -> build/lib.linux-x86_64-2.7/Crypto/Random
    creating build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/SHAd256.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/FortunaGenerator.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    copying lib/Crypto/Random/Fortuna/FortunaAccumulator.py -> build/lib.linux-x86_64-2.7/Crypto/Random/Fortuna
    creating build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/posix.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/fallback.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/nt.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    copying lib/Crypto/Random/OSRNG/rng_base.py -> build/lib.linux-x86_64-2.7/Crypto/Random/OSRNG
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest
    copying lib/Crypto/SelfTest/st_common.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest
    copying lib/Crypto/SelfTest/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_ARC4.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_AES.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_ARC2.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_Blowfish.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_XOR.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_DES.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/common.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_pkcs1_oaep.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_CAST.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    copying lib/Crypto/SelfTest/Cipher/test_DES3.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Cipher
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA256.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD2.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_HMAC.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA384.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_RIPEMD.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD5.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/common.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_MD4.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA224.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    copying lib/Crypto/SelfTest/Hash/test_SHA512.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Hash
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_rfc1751.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_chaffing.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_KDF.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    copying lib/Crypto/SelfTest/Protocol/test_AllOrNothing.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Protocol
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_ElGamal.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_DSA.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_RSA.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    copying lib/Crypto/SelfTest/PublicKey/test_importKey.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/PublicKey
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test_random.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test_rpoolcompat.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    copying lib/Crypto/SelfTest/Random/test__UserFriendlyRNG.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/test_FortunaAccumulator.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/test_FortunaGenerator.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    copying lib/Crypto/SelfTest/Random/Fortuna/test_SHAd256.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/Fortuna
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_generic.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_nt.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_fallback.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    copying lib/Crypto/SelfTest/Random/OSRNG/test_posix.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Random/OSRNG
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_asn1.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_number.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_winrandom.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    copying lib/Crypto/SelfTest/Util/test_Counter.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Util
    creating build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/test_pkcs1_15.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
    copying lib/Crypto/SelfTest/Signature/test_pkcs1_pss.py -> build/lib.linux-x86_64-2.7/Crypto/SelfTest/Signature
    creating build/lib.linux-x86_64-2.7/Crypto/Protocol
    copying lib/Crypto/Protocol/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
    copying lib/Crypto/Protocol/KDF.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
    copying lib/Crypto/Protocol/Chaffing.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
    copying lib/Crypto/Protocol/AllOrNothing.py -> build/lib.linux-x86_64-2.7/Crypto/Protocol
    creating build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/_RSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/ElGamal.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/_DSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/DSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/RSA.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/pubkey.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    copying lib/Crypto/PublicKey/_slowmath.py -> build/lib.linux-x86_64-2.7/Crypto/PublicKey
    creating build/lib.linux-x86_64-2.7/Crypto/Signature
    copying lib/Crypto/Signature/__init__.py -> build/lib.linux-x86_64-2.7/Crypto/Signature
    copying lib/Crypto/Signature/PKCS1_v1_5.py -> build/lib.linux-x86_64-2.7/Crypto/Signature
    copying lib/Crypto/Signature/PKCS1_PSS.py -> build/lib.linux-x86_64-2.7/Crypto/Signature
    running build_ext
    running build_configure
    checking for gcc... no
    checking for cc... no
    checking for cl.exe... no
    configure: error: in `/tmp/pip-build-yjYZcp/pycrypto':
    configure: error: no acceptable C compiler found in $PATH
    See `config.log' for more details
    Traceback (most recent call last):
      File \"<string>\", line 1, in <module>
      File \"/tmp/pip-build-yjYZcp/pycrypto/setup.py\", line 456, in <module>
        core.setup(**kw)
      File \"/usr/lib64/python2.7/distutils/core.py\", line 152, in setup
        dist.run_commands()
      File \"/usr/lib64/python2.7/distutils/dist.py\", line 953, in run_commands
        self.run_command(cmd)
      File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command
        cmd_obj.run()
      File \"/opt/stackstorm/virtualenvs/salt/lib/python2.7/site-packages/setuptools/command/install.py\", line 61, in run
        return orig.install.run(self)
      File \"/usr/lib64/python2.7/distutils/command/install.py\", line 563, in run
        self.run_command('build')
      File \"/usr/lib64/python2.7/distutils/cmd.py\", line 326, in run_command
        self.distribution.run_command(command)
      File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command
        cmd_obj.run()
      File \"/usr/lib64/python2.7/distutils/command/build.py\", line 127, in run
        self.run_command(cmd_name)
      File \"/usr/lib64/python2.7/distutils/cmd.py\", line 326, in run_command
        self.distribution.run_command(command)
      File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command
        cmd_obj.run()
      File \"/tmp/pip-build-yjYZcp/pycrypto/setup.py\", line 251, in run
        self.run_command(cmd_name)
      File \"/usr/lib64/python2.7/distutils/cmd.py\", line 326, in run_command
        self.distribution.run_command(command)
      File \"/usr/lib64/python2.7/distutils/dist.py\", line 972, in run_command
        cmd_obj.run()
      File \"/tmp/pip-build-yjYZcp/pycrypto/setup.py\", line 278, in run
        raise RuntimeError(\"autoconf error\")
    RuntimeError: autoconf error
    
    ----------------------------------------
 (stderr:   Failed building wheel for pycrypto
Command \"/opt/stackstorm/virtualenvs/salt/bin/python -u -c \"import setuptools, tokenize;__file__='/tmp/pip-build-yjYZcp/pycrypto/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\
\
', '\
');f.close();exec(compile(code, __file__, 'exec'))\" install --record /tmp/pip-fhrSZV-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/stackstorm/virtualenvs/salt/include/site/python2.7/pycrypto\" failed with error code 1 in /tmp/pip-build-yjYZcp/pycrypto/
You are using pip version 9.0.1, however version 19.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
)
",
        "stdout": ""
      },
      "id": "install pack dependencies",
      "execution_id": "5c781698d3bd7b7a70d323b8",
      "name": "install pack dependencies"
    }
  ],
  "published": {}
}

Compounded test.ping

st2 run salt.local module=test.ping tgt_type=grain target='os:Ubuntu'

The above works but only accepts 1 grain.

How can I get this to work with compounded grains list?

ex.

st2 run salt-local module=test.ping tgt_type=grains target='os:Ubuntu AND env:prod'

Ideally, would like to have the above return all machines that match these grains.

Any suggestions as to where to start with this would be appreciated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.