Commit Graph

3086 Commits (984777b3d022ff4bb4d5eda57efde52b1fb93875)

Author SHA1 Message Date
Matt Martz c55317a2bd
Update connection plugins to use correct, non-deprecated, methods (#52038)
* Update connection plugins to use correct, non-deprecated, methods

* Update tests to reflect calling become plugins
2019-02-11 13:44:54 -06:00
Matt Martz 445ff39f94
Become plugins (#50991)
* [WIP] become plugins

Move from hardcoded method to plugins for ease of use, expansion and overrides
  - load into connection as it is going to be the main consumer
  - play_context will also use to keep backwards compat API
  - ensure shell is used to construct commands when needed
  - migrate settings remove from base config in favor of plugin specific configs
  - cleanup ansible-doc
  - add become plugin docs
  - remove deprecated sudo/su code and keywords
  - adjust become options for cli
  - set plugin options from context
  - ensure config defs are avaialbe before instance
  - refactored getting the shell plugin, fixed tests
     - changed into regex as they were string matching, which does not work with random string generation
     - explicitly set flags for play context tests
 - moved plugin loading up front
 - now loads for basedir also
 - allow pyc/o for non m modules
 - fixes to tests and some plugins
 - migrate to play objects fro play_context
 - simiplify gathering
 -  added utf8 headers
 - moved option setting
 - add fail msg to dzdo
 - use tuple for multiple options on fail/missing
 - fix relative plugin paths
 - shift from play context to play
 - all tasks already inherit this from play directly
 - remove obsolete 'set play'
 - correct environment handling
 - add wrap_exe option to pfexec
 - fix runas to noop
 - fixed setting play context
 - added password configs
 - removed required false
 - remove from doc building till they are ready

future development:
  - deal with 'enable' and 'runas' which are not 'command wrappers' but 'state flags' and currently hardcoded in diff subsystems

* cleanup

  remove callers to removed func
  removed --sudo cli doc refs
  remove runas become_exe
  ensure keyerorr on plugin
  also fix backwards compat, missing method is attributeerror, not ansible error
  get remote_user consistently
  ignore missing system_tmpdirs on plugin load
  correct config precedence
  add deprecation
  fix networking imports
  backwards compat for plugins using BECOME_METHODS

* Port become_plugins to context.CLIARGS

This is a work in progress:
* Stop passing options around everywhere as we can use context.CLIARGS
  instead

* Refactor make_become_commands as asked for by alikins

* Typo in comment fix

* Stop loading values from the cli in more than one place

Both play and play_context were saving default values from the cli
arguments directly.  This changes things so that the default values are
loaded into the play and then play_context takes them from there.

* Rename BECOME_PLUGIN_PATH to DEFAULT_BECOME_PLUGIN_PATH

As alikins said, all other plugin paths are named
DEFAULT_plugintype_PLUGIN_PATH.  If we're going to rename these, that
should be done all at one time rather than piecemeal.

* One to throw away

This is a set of hacks to get setting FieldAttribute defaults to command
line args to work.  It's not fully done yet.

After talking it over with sivel and jimi-c this should be done by
fixing FieldAttributeBase and _get_parent_attribute() calls to do the
right thing when there is a non-None default.

What we want to be able to do ideally is something like this:

class Base(FieldAttributeBase):
    _check_mode = FieldAttribute([..] default=lambda: context.CLIARGS['check'])

class Play(Base):
    # lambda so that we have a chance to parse the command line args
    # before we get here.  In the future we might be able to restructure
    # this so that the cli parsing code runs before these classes are
    # defined.

class Task(Base):
    pass

And still have a playbook like this function:

---
- hosts:
  tasks:
  - command: whoami
    check_mode: True

(The check_mode test that is added as a separate commit in this PR will
let you test variations on this case).

There's a few separate reasons that the code doesn't let us do this or
a non-ugly workaround for this as written right now.  The fix that
jimi-c, sivel, and I talked about may let us do this or it may still
require a workaround (but less ugly) (having one class that has the
FieldAttributes with default values and one class that inherits from
that but just overrides the FieldAttributes which now have defaults)

* Revert "One to throw away"

This reverts commit 23aa883cbed11429ef1be2a2d0ed18f83a3b8064.

* Set FieldAttr defaults directly from CLIARGS

* Remove dead code

* Move timeout directly to PlayContext, it's never needed on Play

* just for backwards compat, add a static version of BECOME_METHODS to constants

* Make the become attr on the connection public, since it's used outside of the connection

* Logic fix

* Nuke connection testing if it supports specific become methods

* Remove unused vars

* Address rebase issues

* Fix path encoding issue

* Remove unused import

* Various cleanups

* Restore network_cli check in _low_level_execute_command

* type improvements for cliargs_deferred_get and swap shallowcopy to default to False

* minor cleanups

* Allow the su plugin to work, since it doesn't define a prompt the same way

* Fix up ksu become plugin

* Only set prompt if build_become_command was called

* Add helper to assist connection plugins in knowing they need to wait for a prompt

* Fix tests and code expectations

* Doc updates

* Various additional minor cleanups

* Make doas functional

* Don't change connection signature, load become plugin from TaskExecutor

* Remove unused imports

* Add comment about setting the become plugin on the playcontext

* Fix up tests for recent changes

* Support 'Password:' natively for the doas plugin

* Make default prompts raw

* wording cleanups. ci_complete

* Remove unrelated changes

* Address spelling mistake

* Restore removed test, and udpate to use new functionality

* Add changelog fragment

* Don't hard fail in set_attributes_from_cli on missing CLI keys

* Remove unrelated change to loader

* Remove internal deprecated FieldAttributes now

* Emit deprecation warnings now
2019-02-11 11:27:44 -06:00
James Cassell 953058d025 standardize connection variable names (#51776)
* standardize user/password connection vars

* docs: use ansible_user and ansible_password

* docs: var precedence for connection vars

* docs: ansible_become_pass -> ansible_become_password etc
2019-02-11 10:43:10 -05:00
Akira Yokochi 51061f8a5f fix a little typo in ini inventory doc (#52025) 2019-02-11 15:34:01 +00:00
Mariusz Mazur 34671a64b3 k8s_auth: new k8s module for handling auth (#50807)
* k8s*: add a reference to k8s_auth in all the modules' descriptions

* k8s_auth: new k8s module for handling auth

* k8s_auth: ignore E203

Can't use module_utils.urls, since that lacks user CA support, which is
a critical feature of what this module does.
2019-02-11 07:55:34 -05:00
Karsten Jakobsen e6ae688e47 netbox: inventory: Fix VMs do not have device_roles, but instead use roles (#50761)
This makes sure that roles show up as device_role when using VMs
2019-02-11 06:40:24 +01:00
Sloane Hertel bcefd61437 Allow default regions list to use flexible credential types (#51451) 2019-02-09 00:22:56 -05:00
Nathaniel Case 7ad238b358
Document httpapi and cliconf plugins (#49503)
* Create new documentation pages for httpapi and cliconf

* Add new documentation to plugins toctree and Makefile

* Add DOCUMENTATION to cliconf

* Apply suggestions from code review
2019-02-08 11:04:05 -05:00
Felix Fontein 0c2bb3da04 docker modules: various adjustments (#51700)
* Move docker_ module_utils into subpackage.

* Remove docker_ prefix from module_utils.docker modules.

* Adding jurisdiction for module_utils/docker to $team_docker.

* Making docker* unit tests community supported.

* Linting.

* Python < 2.6 is not supported.

* Refactoring docker-py version comments. Moving them to doc fragments. Cleaning up some indentations.
2019-02-08 08:16:11 +00:00
Jadi bf40b8d118 Fixed wrong limit on 'Fetch all deployments' sample (#51897)
Fixes: #51675 

the sample for 'Fetch all deployments' is "{{ lookup('k8s', kind='Deployment', namespace='testing') }}" but it should be "{{ lookup('k8s', kind='Deployment') }}"
2019-02-08 08:17:50 +05:30
rabin-io a682a0292d Update yaml.py example to include A colon for single host in a group (#51830)
* Update yaml.py exmaple to include A colon

took me some time to find that out, you can have a single host under a group without the A colon, but if you add another host also w/o A colon, they will be parsed as a single line.

* Update yaml.py
2019-02-07 14:15:40 -05:00
ftntcorecse e8209c23da Fortinet FortiManager Connection Plugin RC, plus associated utilities (#50336)
* PR Candidate for FortiManager Connection Plugin, plus associated Utilities.

* Update fortimanager.py

Adding additional comments

* Committing changes for PR as requested by Ansible Staff

* Minor doc change to kick off new shippable test. Unrelated code (not our stuff) caused a failure on the last test.

* Removed generic methods for get/set/etc. Moved a copy of FMGRLockCTX into the plugin for portability, and to left the original in the mod_utils/fortimanager.py as deprecated code for pre-2.7 customers still running on pyFMG and not the plugin.

Tested all playbooks and all modules, and all appears well.
2019-02-07 08:55:30 -05:00
Jordan Borean 146a89b612
psrp - do not display bootstrap wrapper for eachach task (#51779) 2019-02-06 12:05:15 +10:00
Sandra McCann eb6989ecbc Add note to network agnostic modules for supported platforms (#51617)
* added doc fragment to multiple network modules
2019-02-05 15:18:54 -06:00
Nathaniel Case d14f16e31b
Restconf HTTPAPI plugin and modules (#49476)
* Initial code for restconf support

*  Add restconf httpapi plugin
*  Add restonf_get module

* Fix some ConnectionError usage
2019-02-04 09:28:26 -05:00
vaneuk 2a0c356da9 added response_timestamps to ios_xr_command module (#50095) 2019-02-04 18:49:06 +05:30
Jim Rollenhagen 07605923e1 Simplify regex filter code (#50202)
This was written when we were redefining `bool` in the same module. As
we aren't doing this any longer, simplify it back to just calling
`bool()`.
2019-02-03 15:10:16 -05:00
Abhijeet Kasurde 18ed84b877 hashi_vault: add support for userpass authentication (#51538)
Added support for username and password authentication in hashi_vault
lookup plugin.

Fixes: #38878

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2019-02-02 12:32:53 +01:00
Anil Kumar Muraleedharan 004d8b03d4 Lenovo cnos l3interface (#51322)
* Adding cnos_l3_interface module in alignment with others vendors.
2019-02-01 09:17:52 -05:00
Nilashish Chakraborty beb2af83c1
frr: Add terminal and cliconf plugins (#51169)
* Added terminal plugin for FRR

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Added cliconf plugin for FRR

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Added cliconf plugin for FRR

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Override required methods

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Fix pep8 issues

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Add get_supported_protocols and minor error regex fix

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Remove unused imports

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Fix review comments

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Add get_diff and run_commands

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Set output to empty list

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Fix CI errors

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>
2019-02-01 17:56:31 +05:30
Juan Antonio Osorio bac19c3301 identity: Autodetect FreeIPA server with DNS (#50988)
* identity: Autodetect FreeIPA server with DNS

This adds the ability for the freeIPA related modules to be able to
auto-detect the IPA server through DNS.

This takes advantage of the fact that a lot of FreeIPA deployments
configure their hosts to use IPA as the nameserver.

This check is only used if we didn't set neither the ipa_host parameter,
nor the environment variable IPA_HOST.

* identity: Specify docs for DNS discovery of ipa_host

These docs specify that it can now default to DNS if the 'ipa-ca' entry
is available.
2019-02-01 08:19:05 +00:00
chronidev 240d1a6afb Add coherency between check and normal mode for copy plugin action see issue #24633 (#51582)
* Add coherency between check and normal mode see issue #24633

* Add changelog fragment for the PR

* Make change following PR comment

* Remove trailing whitespace
2019-02-01 13:47:23 +10:00
nikkytub 7dcacc1ce8 Added config-context as an opt-in (#50343)
* Added config-context as opt-in

* Added config-context description in the documentation
2019-01-31 22:01:16 +00:00
Abhijeet Kasurde 67f95cb499 Onepassword document fixes (#51527)
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2019-01-31 09:48:55 -05:00
vaneuk 2a432a093b added timestamps to ios_command module (#50323)
ios_command module now returns timestamps field, which shows command execution time
2019-01-31 18:11:53 +05:30
Jordan Borean 6a2aac487d
win_stat - add follow option and fix broken tests (#51522)
* win_stat - add follow option and fix broken tests

* fix docs issues
2019-01-31 15:56:06 +10:00
Brian Coca 4ac0c23db6
added unsafe toggle to vars_prompt (#49219)
* added unsafe toggle to vars_prompt

	fixes #47534
2019-01-30 15:01:13 -05:00
Jordan Borean 6d13acf1ff
Ignore AttributeError when trying to import p paramiko (#51243)
* Ignore AttributeError when trying to import p paramiko

* preserve import error
2019-01-30 09:40:21 +10:00
Brian Coca 50b40c47df aws_ec2 Implement the missing 'region discovery' (#51333)
* aws_ec2 Implement the missing 'region discovery'

  fixes #45288

  tries to use api as documented (which seems to fail in latest boto3 versions)
  and fallback to boto3 'hardcoded' list of regions

* fixes and cleanup, add error for worst case scenario

* fix tests, remove more unused code

* add load_name

* acually load the plugin

* set plugin as required

* reverted test changes, removed options tests

* fixes as per feedback and cleanup
2019-01-29 14:59:38 -06:00
Dag Wieers 870525d762 PSRP: Add read_timeout connection parameters (#46850)
* PSRP: Add read_timeout connection parameters

* Changed debug() into warning()

* Only expose when read_timeout is not set
2019-01-29 14:02:53 +10:00
Mattias Lindvall c34f85c788 Python3 fix: Decode output from popen in iocage connection (#41868)
* decode output from popen in iocage connection

* use ansibles to_native instead of stdlibs decode
2019-01-28 11:34:39 -05:00
Nilashish Chakraborty 92b0cd8e0e
Add more return values to *_config modules (#50702)
* Add more return values to *_config modules

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Add more rv

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Exclude from cli_config docs for now

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Add new rv docs for junos_config

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Fix CI errors

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Support date time for configurable backup path

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Change logic based on configurable path

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Remove unwanted import

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Fix docs

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Add filename rv

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Change dosc filename rv

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>

* Make new rv code more readable

Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>
2019-01-28 20:49:56 +05:30
Nathaniel Case 9336281a60
Standardize cliconf get_capabilities (#51147)
* Standardize cliconf get_capabilities

* Check for capabilities before querying them

* Try to be more helpful when unexpected things are found in get_capabilities

* Add flags param to get_config for compatibility
2019-01-28 08:24:44 -05:00
Ganesh Nalawade 70bf9b9919
Add backup filename and dir path option for config network modules (#50801)
* Add configurable backup path option for network config modules

Fixes #50283
Fixes #32724

*  Add back_options in network config module argspec
*  Handle backup path options in network action plugin

* Fix review comments

* Add integration tests

* Update changelog
2019-01-24 09:36:16 +05:30
Brian Coca 96b3ef5553
Doc fragments to plugins (#50172)
* promote doc_fragments into actual plugins

  change tests hardcoded path to doc fragments
  avoid sanity in fragments
  avoid improper testing of doc_fragments
  also change runner paths
 fix botmeta
 updated comment for fragments
 updated docs
2019-01-23 20:03:47 -05:00
Brian Coca 960388143f
faster config loading (#48333)
* faster config loading

  - used already loaded module var instead of doc functions
  - add preload to populate config defs cache
  - avoid debug work when not in debug
  - generators, force consumption
2019-01-23 12:06:54 -05:00
Sam Doran 9d4c0dc111 Catch sshpass authentication errors and don't retry multiple times to prevent account lockout (#50776)
* Catch SSH authentication errors and don't retry multiple times to prevent account lock out

Signed-off-by: Sam Doran <sdoran@redhat.com>

* Subclass AnsibleAuthenticationFailure from AnsibleConnectionFailure

Use comparison rather than range() because it's much more efficient.

Signed-off-by: Sam Doran <sdoran@redhat.com>

* Add tests

Signed-off-by: Sam Doran <sdoran@redhat.com>

* Make paramiko_ssh connection plugin behave the same way

Signed-off-by: Sam Doran <sdoran@redhat.com>

* Add changelog

Signed-off-by: Sam Doran <sdoran@redhat.com>
2019-01-23 11:32:25 -05:00
Matt Davis 2cb9ec9f0e fix include_vars non-ASCII error handling (#51198) 2019-01-22 19:35:34 -05:00
Nathaniel Case 8d4f7f5b56
Fix stray string in network_cli (#51142)
* Replace loose string that should be a byte string

* Replace byte string literals with string literals

* These, on the other hand, need to be byte strings
2019-01-22 09:07:04 -05:00
Thomas Morin 6ad9f87ce7 Update debug.py (#51041)
Changed "though" to "through"
2019-01-21 15:08:26 +05:30
Ganesh Nalawade f547c88ade
Fix connect_timeout config varaible in netconf connection (#51055)
*  Fetch connect_timeout value from get_options()
   instead of play_context
2019-01-21 12:21:09 +05:30
Ganesh Nalawade 1b6228fa10
Increase persistent command_timeout default value (#51056)
* Increase persistent command_timeout default value

*  Increase command_timeout default value from 10 to 30 sec
   to reduce frequent timeout issue for network connection
   types (netconf/network_cli/httpapi/napalm)

* Fix review comments
2019-01-21 10:50:52 +05:30
Matt Williams 919abe17f3 Fix Foreman returning host parameters (#51034)
Foreman (1.20) returns the `all_parameters` key as a list of dicts, not a dict of key-value pairs.
2019-01-18 15:56:57 -05:00
Alan Rominger baf59ccaac Put in documented default for gcp_compute filters (#50025) 2019-01-18 11:39:24 +00:00
Jordan Borean b7620c161a
win_updates - fix category return value to be a list (#51001)
* win_updates - fix category return value to be a list

* remove unstable test alias
2019-01-18 05:35:10 +10:00
Matt Clay a864247bd5 Encoding fixes for plugin loader and vault. (#51002) 2019-01-17 12:18:01 -05:00
Jordan Borean 9fa46e7f94 reboot - Fix connection timeout reset (#51000)
* only reset if we could retrieve the conn timeout
2019-01-17 10:45:41 -05:00
Martin Krizek 3dc5ba6186
Remove unnecessary calls to cache_block_tasks noop (#50715) 2019-01-17 08:29:26 +01:00
vaneuk e150943314 added timestamps to nxos_command module (#50261)
* added timestamps to nxos_command module

nxos_command module now returns timestamps field, which shows command execution time

* –fixed unit test failure for /lib/ansible/module_utils/basic

* cosmetic changes to align with PEP 8
2019-01-17 10:14:31 +05:30
Matt Clay b971ebd343 More path encoding fixes. 2019-01-16 15:44:50 -08:00