Commit Graph

8653 Commits (cc5957001cb15db4c536f25af85cc77753a02e7f)

Author SHA1 Message Date
Felix Fontein 2d98734ad5 Amazon modules: rename _facts with ansible_facts result to _info (#60178)
* aws_s3_bucket_facts -> aws_s3_bucket_info

* cloudformation_facts -> cloudformation_info

* cloudfront_facts -> cloudfront_info

* ecs_service_facts -> ecs_service_info

* efs_facts -> efs_info

* Add changelog and porting guide entry.

* lambda_facts -> lambda_info

* Improve examples.

* Add subsection on renamed modules.

* Add sentence on registering variables.

* Fix ReST.

* Instead of renaming lambda_facts, deprecate it and replace with new module.

* Rename internal variable.

* Re-add sanity ignores for lambda_facts.
5 years ago
Nilashish Chakraborty 6110dcc789
Add iosxr_lldp_interfaces resource module (#60411)
Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>
5 years ago
Matt Davis a40baf22fa
various mod_args fixes (#60290)
* various mod_args fixes

* filter task keywords when parsing actions from task_ds- prevents repeatedly banging on the pluginloader for things we know aren't modules/actions
* clean up module/action error messaging. Death to `no action in task!`- actually list the candidate modules/actions from the task if present.

* remove shadowed_module test

* previous discussion was that this behavior isn't worth the complexity or performance costs in mod_args

* fix/add test, remove module shadow logic

* address review feedback
5 years ago
Ganesh Nalawade 9efa00e762
Add [junos_lldp_global] model (#59712)
* Add [junos_lldp_global] model

*  Add new resource module junos_lldp_global
*  Targets model https://github.com/ansible/network/pull/30
*  Deprecate junos_lldp module

* Run lldp integration test only if protocol supported
5 years ago
Trishna Guha 0acf7be56a
Add nxos_lacp_interfaces resource module (#60313)
Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>
5 years ago
Matt Clay 25d396fdfc Fix testing of Windows binary modules. 5 years ago
Matt Clay d36919856f
Update integration tests. (#60447)
* Remove unnecessary ANSIBLE_CONFIG override.
* Fix pull integration test.
* Fix inventory_foreman integration test.
5 years ago
Sam Doran c485a1b91e
Fix sanity tests based on newer version of shellcheck (#60423)
- change egrep to grep -E
- store exit codes and check them directly
- ignore SC1091
5 years ago
Matt Martz 697b566971
Update units to pass on macOS (#60435)
* Update units to pass on macOS. Fixes #27810

* raising=False
5 years ago
The Magician 6cb5b67b22 Bug fixes for GCP modules (#60115) 5 years ago
The Magician be459c00bf Bug fixes for GCP modules (#60337) 5 years ago
The Magician 687da46a85 Bug fixes for GCP modules (#60338) 5 years ago
Marius Gedminas c71622b31a user: createhome=no home=/no/such/dir (#60310)
Fixes #60307.

This bug was introduced in commit d2edf1d435
("User - Create parent directories if they do not exist in the specified
home path (#51043)") and did not make it into any releases.
5 years ago
Chris Archibald 13403b3688 update to command (#60141) 5 years ago
Chris Archibald 5df9075386 New Module: na_ontap_ports (#59814)
* new module

* fixes
5 years ago
Nathan Swartz abc5654738 Fix netapp_e_iscsi_target chap secret size and clearing functionality. (#57135) 5 years ago
Nilashish Chakraborty 09f712c7f3
Add iosxr_lldp_global resource module (#60074)
Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>
5 years ago
Andrey Klychkov 3929dc00a1 unittests: remove unused imports (#60404) 5 years ago
Gonéri Le Bouder a3407682ed ansible-test: fix the vcenter+vcsim support
The vcenter provider allow one to use the `VMWARE_TEST_PLATFORM` to
manually select a test platform. The test platforms are:

- `govcsim`
- `static`
- and `worldstream`.

Before this commit, the `govcsim` value was ignored.

Example:

```shell
$ VMWARE_TEST_PLATFORM=govcsim ansible-test integration --python 3.7 needs/target/prepare_vmware_tests/
```
5 years ago
Miguel Angel Muñoz González 60a1545092 Fortinet's new module for fortios_switch_controller_vlan (#59630)
* Fortinet's new module for fortios_switch_controller_vlan

* Update fortios_switch_controller_vlan.py

* Update fortios_switch_controller_vlan.py
5 years ago
Miguel Angel Muñoz González f1a4ab0aa5 Fortinet's new module for fortios_switch_controller_virtual_port_pool (#59601)
* Fortinet's new module for fortios_switch_controller_virtual_port_pool

* Update fortios_switch_controller_virtual_port_pool.py

* Update fortios_switch_controller_virtual_port_pool.py
5 years ago
Miguel Angel Muñoz González 079a4408ab Fortinet's new module for fortios_switch_controller_switch_profile (#59683)
* Fortinet's new module for fortios_switch_controller_switch_profile

* Update fortios_switch_controller_switch_profile.py

* Update fortios_switch_controller_switch_profile.py
5 years ago
René Moser 602aded6ec
vultr: vultr_block_storage_facts to info (#60230) 5 years ago
Ganesh Nalawade 8cbfa75038
Add [junos_lacp] model (#59705)
* Add [junos_lacp] model

*  Add new resource module junos_lacp.
*  Targets model https://github.com/ansible-network/resource_module_models/pull/28

* Fix CI issues

* Fix CI failures
5 years ago
sushma-alethea 622a493ae0 icx: new module icx_ping (#59975)
* new module

* new module

* new terminal

* new terminal

* new cliconf

* new cliconf

* cliconf

* cliconf

* icx cliconf

* icx cliconf

* icx_cliconf

* icx test units module

* icx test units module

* icx units module

* icx units module

* icx banner unit test

* icx banner unit test

* PR changes resolved

* changes resolved

* Changes Resolved

* check_running_config changes resolved

* added notes

* added notes

* removed icx rst

* new changes

* new changes

* deleted icx rst

* icx .rst

* icx .rst

* modified platform_index.rst

* modified platform_index.rst

* modified platform_index.rst

* modified platform_index.rst

* changes resolved

* changes resolved

* PR comments resolved

* PR comments resolved

* Update platform_index.rst

PR comment resolved

* Update platform_index.rst

PR comment resolved

* new module icx_ping

* new changes

* Fixed bot error
5 years ago
Nilashish Chakraborty f4502a8f1c
Set eth0 to dhcp explicitly (#60305)
Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>
5 years ago
Ganesh Nalawade fdf48ed0b4
Add [junos_lacp_interfaces] resource module (#59708)
* Add [junos_lacp_interfaces] resource module

*  Add new resource module junos_lacp_interfaces.
*  Targets model https://github.com/ansible-network/resource_module_models/pull/36

* Fix sanity test failure
5 years ago
Jordan Borean 35b87b8633
Move windows test to another group (#60391) 5 years ago
Maxim Babushkin dda80c46e9 openssh_keypair - Add key ``comment`` to return output (#59268)
If the comment will be provided during the key creation, it will be
diplayed in the return values.
Same will be on the comment change.
5 years ago
Maxim Babushkin 27e414200f openssh_keypair - Add public key and key comment validation (#57993)
- Split the key validation to separate private and public.
- In case public key does not exist, recreate it.
- Validate comment of the key.
- In case comment changed, update the private and public keys.
5 years ago
Matt Clay 473bd6bb0a Relax boilerplate sanity tests.
This will avoid requiring boilerplate for documentation only python files.
5 years ago
Matt Clay 3fac6a0adb Fix ansible-test TypeVar type annotations. 5 years ago
The Magician 30ad73f1c1 Bug fixes for GCP modules (#60339) 5 years ago
Felix Fontein 8b68feb67e
acme_certificate: allow to download alternate certificate chains (#56334)
* Improve link handling.

* Also fetch alternate certificate chains.

* Add retrieve_all_alternates option.

* Simplify code.

* Forgot when condition.

* Add tests for retrieve_all_alternates.

* Fixes.

* Moved utility function for link parsing to module_utils.

* Fix grammar.
5 years ago
Felix Fontein 3290b8343c
docker: fix sanity errors (#60047)
* Remove sanity check errors.

* More linting.

* Forgot to update places.

* Remove choices which aren't provided in argspec.
5 years ago
Alex Stephen 2e90efd4a7 Changing GCP Facts modules to Info Modules (#60172)
* file changes, porting guide, changelog fragment, renaming autoscaler, removing rst links
* Apply suggestions from code review

Co-Authored-By: Alicia Cozine <879121+acozine@users.noreply.github.com>
Co-Authored-By: Felix Fontein <felix@fontein.de>
5 years ago
Chris Archibald b6202dde32 Allow firmware update for (SP, ACP, Shelf, Disk) (#58597)
* update

* Revert "update"

This reverts commit 84848f8291.

* correct module

* fixes
5 years ago
Sam Doran 2d266fbc87
Fix unit tests to work with pytest >= 5.0 (#60246)
pytest made a change in the way the message from ExceptionInfo objects was returned.

https://docs.pytest.org/en/latest/changelog.html#pytest-5-0-0-2019-06-28
5 years ago
Matt Clay 5a50fb35df Add sanity test for obsolete files.
This will help prevent accidental merging of content to recently obsoleted directories when adding new files.

It may also help contributors who have modified obsolete files understand where their changes should now be made.
5 years ago
Matt Clay cb68110296
Clean up ansible-test inventory templates. (#60321)
* Move ansible-test inventory templates.
* Remove obsolete inventoy.remote.template file.
5 years ago
Yaakov Selkowitz 93d9d64038 facts: fix double-counting of CPUs on POWER systems (#58360)
On POWER systems, /proc/cpuinfo provides a 'processor' entry as a
counter, and a 'cpu' entry with a description (similar to 'model name'
on x86). Support for POWER in get_cpu_facts was added via the 'cpu'
entry in commit 8746e692c1.  Subsequent
support for ARM64 in commit ce4ada93f9
used the 'processor' entry, resulting in double-counting of cores on
POWER systems.

When unit tests were later written for this code in
commit 55306906cf, the erroneous values
were just accepted in the test instead of being diagnosed.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
5 years ago
Matt Clay 2a9964ede8
Code cleanup in ansible-test. (#60318)
* Move ansible-test units code into separate dir.
* Fix --explain on "code smell" sanity tests.
* Add --strict-markers to pytest invoctaion.
* Fix classification of units code changes.
5 years ago
Matt Clay 6c09b5c659
Unit test cleanup. (#60315)
* Clean up option parsing unit tests.
* Remove unused unit test marker and import.
5 years ago
Nathan Swartz d61df0a9ba Lun mapping upstream dev (#57096)
* Fix hosts with same lun number conflict in netapp_e_lun_mapping.

This patch fixes an issue of when multiple hosts are created and then
subsequently volume(s) are mapped to them using the same specified number.

* Fix netapp_e_host module bug when lun=0

* Add thin-volumes to the netapp_e_lun_mapping update_mapping_info method.
5 years ago
Chris Archibald 48021a4200 add modify to snapshot policy (#59149) 5 years ago
Jordan Borean dbd082efe4
Ansible.AccessToken - Added shared util for managing a Windows access token (#60302)
* Ansible.AccessToken - Added shared util for managing a Windows access token

* Fix tests when running in CI

* More fixes for older servers

* More fixes for Server 2008
5 years ago
Felix Fontein 49e16922b2 Remove no longer necessary check (since elements is procesed for path). (#59953) 5 years ago
Ganesh Nalawade 309a58eafd
Add [junos_l2_interfaces] resource module (#59693)
* Add [junos_l2_interfaces] resource module

*  Add new resource module junos_lag_interfaces.
*  Targets model https://github.com/ansible-network/resource_module_models/pull/12
*  Deprecate junos_l2_interface module

* Fix CI failures

* Fix CI issues
5 years ago
Matt Clay df59f06d6a
Additional ansible-test path fixes. (#60300)
* Add missing ansible-test injector symlink.
* More ansible-test path fixes.
* Expand bin-symlinks docs.
5 years ago
Matt Clay 3777c2e93d Fix plugin names when loading all plugins. (#59950)
* Fix plugin names when loading all plugins.

Add an integration test to verify plugin __package__ and __name__ are correct.

* Make sure filter and test names are unique.

* Remove __package__ test.

On Python 2.x __package__ is not set, but it is on Python 3.x.
5 years ago
Abhijeet Kasurde d3624cf4a4
VMware: test - add missing datacenter parameter (#60273)
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
5 years ago
Matt Clay 39b3fc0926 Update ansible-test layout and payload handling. 5 years ago
Matt Clay 07051473f8 Disable failing inventory_docker_machine test. 5 years ago
Abhijeet Kasurde 647b78a09c
VMware: Check if datastore is valid (#58872)
Check validation of datastore selected using autoselect_datastore API.

Fixes: #58541

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
5 years ago
Matt Clay 57dc7ec265
Prepare ansible-test for inclusion in setup.py (#60294)
* Cache ansible version lookup.
* Fix method of determining ANSIBLE_ROOT.
* Clean up based on PyCharm inspections.
* Generate minimal PKG-INFO without setup.py.
* Use ANSIBLE_LIB_ROOT where possible.
* Use import instead of subprocess to get version.
* Fix install layout type.
* Correct required paths message for installs.
* Update list of files copied during delegation.
* Fix ansible-test entry point.
* Fix pylint issue.
* Fix version lookup on Python 2.x.
* Fix pylint issue.
* Remove unwanted print statement.
5 years ago
Andrew Gaffney b38cb37728
Transform octal escape sequences in mtab fields (#60122) 5 years ago
Sam Doran 9cb47832d1 Pin openshift <=0.9.0 to prevent test failures (#60245) 5 years ago
Sam Doran aa717661af Move assertion in unit test inside loop (#60232) 5 years ago
Toshio Kuratomi b0ec91e69e Autointerpreter table (#60148)
* Some framework for docs

* Separate CSS file for our site-specific CSS.
* Override the read-the-docs theme for tables so that tables don't
  always horizontally scroll
* Add a |br| substitution that lets us line break inside of tables
* Add |_| non-breaking-space substitution which is also for formatting
  tables
* Configure rstcheck to ignore all substitutions which are being added
  by sphinx in the conf.py

* Fix table of auto interpreter options

The table was being hardcoded at a certain width to work around a
read-the-docs theme bug.  Fix the bug instead and format the table using
better sphinx practices.

* Remove unused substitutions

We had substitutions defined that were never used in our documentation.
Remove those.

Also add to the rstcheck whitelist three substitutions which are defined
by sphinx itself, version, release, and today.
5 years ago
Matt Clay 97a0810e0f
Move ansible-test entry point. (#60281) 5 years ago
Jiri Hnidek 577bb88ad8 Added support for syspurpose to redhat_subscribtion module (#59850)
* Added several unit tests
* Added documentation for new syspurpose option and suboptions
* Simplified specification of module arguments
* Added new changelog file with fragments
5 years ago
Nathan Swartz 10543c8a4c Facts dev upstream (#57082)
* Improved netapp_e_facts module.

Added the following facts:
  - storage system segment size
  - cache block size capabilities
  - workload tags
  - storage array hosts
  - host groups
  - list of mapped volumes for each initiator

* Remove proxy specific facts from netapp_e_facts module

* Add unit tests for netapp_e_facts module.
5 years ago
Ganesh Nalawade 6f0aae256d
Add [junos_lldp_interfaces] model (#59720)
* Add [junos_lldp_interfaces] model

*  Add new resource module junos_lldp_interface
*  Targets model https://github.com/ansible-network/resource_module_models/pull/40
*  Deprecate junos_lldp_interface module

* Fix CI issues
5 years ago
Trishna Guha 87a568da0b
Add nxos_lacp resource module (#59717)
* Add nxos_lacp resource module

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>

* Add commands in module doc

Signed-off-by: Trishna Guha <trishnaguha17@gmail.com>
5 years ago
Nilashish Chakraborty a595c60d4c
Add eth0 in prepare_vyos_tests (#60212)
Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>
5 years ago
Jordan Borean 534a40c5cd
Move win target back a group (#60257) 5 years ago
Matt Clay 5f67b5a757 Move ansible-test coverage config to test/lib/ 5 years ago
Matt Clay 2e7d36a3f9
Fix placement and handling of ansible-test cloud config (#60253)
* Move cloud templates.
* Update paths for cloud config templates.
* Fix cloud config paths.
* Fix cloud-config classification.
5 years ago
Jordan Borean 81cb6f366a
Added group 7 to Windows groups - ci_complete (#60240) 5 years ago
ximon18 2cca9176a7 Added a Docker Machine dynamic inventory plugin (#54946)
* Added my Docker Machine dynamic inventory plugin (from https://github.com/ximon18/ansible-docker-machine-inventory-plugin) to begin the process of proposing it for inclusion in Ansible core. There are no integration tests yet. The docker_swarm inventory plugin has such tests but has some concerning note in its 'aliases' file about disabling docker due to test instability and also I wouldn't know at his point how to get Docker Machine installed on the integration test platform.
5 years ago
Jordan Borean 3a3727d200
Remove Python 2.6 from Windows tests (#60235) 5 years ago
silverwizard 5d8302120b Removed breaking type check from nagios module (#49568)
* Removed extraneous type check from nagios module, in order to allow python 3.x

* Removed now useless import types

* Added changelog fragment

* Update changelog.

* Rebased and removed check due to module adding earlier guardrails

* Updated changelog to mention earlier fix adding now completely removed guardrails

* Remove superfluous type checks. Fix docs type.

* Update ignore.txt.
5 years ago
Nilashish Chakraborty 7b90e8aec4
Add iosxr_lacp_resource module (#59724)
Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>
5 years ago
Sam Doran 47796af64f
Change dummy package name in yum/dnf tests to not collide with an actual package (#60225)
When targeting 'foo*' in tests, it pulled in packages other than the dummy packages in our testing repo that have many dependencies, some of which were causing tests to fail.

Also change 'bar' package name to avoid the same issue in the future.
5 years ago
Matt Clay 278044358c Split up ansible-test sanity test requirements. 5 years ago
Matt Clay a93a0c8fd6
Relocate validate-modules for easier testing. (#60214)
* Relocate module validator code and tests.
* Fix validate-modules entry point and imports.
* Fix paths and test entry points.
* Fix up unit tests.
* Fix shebang and execute bit.
5 years ago
Martin Krizek 164881d871 Remove UnsafeProxy (#59711)
* Remove UnsafeProxy

Move the work from UnsafeProxy to wrap_var and add support for bytes.
Where wrap_var is not needed, use AnsibleUnsafeBytes/AnsibleUnsafeText
directly.

Fixes #59606

* item is not always text

* Address issues from reviews

* ci_complete
5 years ago
Nathan Swartz e80f8048ee Fix netapp_e_volume wait-for-initialization to complete issue. (#58304)
* Fix netapp_e_volume wait-for-initialization to complete issue.

* Add unit tests for wait_for operations in netapp_e_volume module.
5 years ago
Wojciech Wypior d00aaf66d7 fixes assert statements in tests (#59998) 5 years ago
Wojciech Wypior ce1f25cffd adds module to manage apm acls (#59992) 5 years ago
Wojciech Wypior 77b323459f adds more modules to bigip provision (#59996) 5 years ago
Wojciech Wypior 7b97abf6a2 adds apm module to manage network access components for APM (#59993) 5 years ago
Wojciech Wypior 47e3ed8100 adds module to manage device self signed certificates (#59994) 5 years ago
Wojciech Wypior 0d92abad7d adds module to manage snat translations (#59995) 5 years ago
Jill R 4308b87d72 Don't truncate cidr_ipv6 addresses in ec2_group.py (#59106)
* Better cidr_ipv6 validation in ec2_group.py

* Improve warning/error handling, add changelog

* Update unit test for ipv6 validation

* Fix logic that was causing non /128 cidrs with host bits to not be handled
5 years ago
Marat Sharafutdinov 8751319820 Add wait_sleep parameter for the k8s module (#59714) (#59854) 5 years ago
sushma-alethea 92187ae53e icx: new module icx_command (#59903)
* new module

* new cliconf

* cliconf

* icx cliconf

* icx test units module

* icx units module

* icx banner unit test

* added notes

* new changes

* icx .rst

* modified platform_index.rst

* modified platform_index.rst

* changes resolved

* PR comments resolved

* Update platform_index.rst

PR comment resolved

* new module

* new cliconf

* cliconf

* icx cliconf

* icx test units module

* icx units module

* icx banner unit test

* added notes

* new changes

* icx .rst

* modified platform_index.rst

* modified platform_index.rst

* changes resolved

* PR comments resolved

* Update platform_index.rst

PR comment resolved

* new module icx_command

* PR issue

* new PR fix
5 years ago
Matt Clay 9e31cf7270 Avoid pylint error on Python 3.7. 5 years ago
Matt Clay 18867847f4
Split up "code smell" sanity tests. (#60174)
* Relocate ansible-only sanity tests.

* Get "code smell" sanity tests from multiple dirs.

- `test/lib/ansible_test/_data/sanity/code-smell/` - General purpose tests used for both Ansible and Ansible Collections.
- `test/sanity/code-smell/` - Tests specific to Ansible, will not be used for Ansible Collections.
5 years ago
Matt Clay 709a8c5026 Fix ansible-test classification of sanity changes. 5 years ago
Matt Clay 9da5908afb Fix ansible-test layout path generation. 5 years ago
Matt Clay 233efe0886 Add missing boilerplate. 5 years ago
Matt Clay d651bda123
Relocate ansible-test code. (#60147)
* Initial move of `test/runner/` content.

`test/runner/lib/` -> `test/lib/ansible_test/_internal/`
`test/runner/`     -> `test/lib/ansible_test/_internal/data/`

* Initial move of `test/sanity/` content.

`test/sanity/` -> `test/lib/ansible_test/_internal/data/sanity/` (except `test/sanity/ignore.txt`)

* Initial move of `test/units/pytest/` content.

`test/units/pytest/` -> `test/lib/ansible_test/_internal/data/pytest/`

* Follow-up move of `test/runner/unit/` content.

`test/lib/ansible_test/_internal/data/unit/` -> `test/lib/ansible_test/tests/unit/`

* Initial move of `ansible.cfg` content.

`test/units/ansible.cfg` -> `test/lib/ansible_test/_internal/data/units/ansible.cfg`
`test/env/ansible.cfg` -> `test/lib/ansible_test/_internal/data/env/ansible.cfg`

* Follow-up move of `data` directory.

`test/lib/ansible_test/_internal/data/` -> `test/lib/ansible_test/_data/`

* Update import statements.

* Add missing __init__.py for unit tests.

* Fix path references and miscellaneous issues.
5 years ago
Matt Martz 923e21836b
Move plugin loader playbook dir additions back to Playbook instead of PlaybookCLI (#59557)
* Move plugin loader playbook dir additions back to Playbook instead of PlaybookCLI. Fixes #59548

* Restore cli additions
5 years ago
Nathan Swartz acbffce079 Host dev upstream (#57086)
* Improve netapp_e_host module

Add host type strings for windows, windows cluster, linux and vmware to netapp_e_host module
Make host port information case-insensitive in netapp_e_host module
Fix port removal and default group.
Fix port reassignment in netapp_e_host module.
Fix port label or address change within existing host object in module netapp_e_host
Add unit and integration tests

* Created new unit test for netapp_e_host module
5 years ago
Wojciech Wypior 2af67f0dce fixes issue with RD encoding in names (#59990)
fixes issue with file download function on ASM file transfer endpoints
corrects doc fragments
removes not used parameters
corrects various sanity failures previously ignored across multiple modules
5 years ago
Nathan Swartz a9aeabb456 Improve netapp_e_storagepool and add units. (#57095)
Refactored module to use eseries base class
Removed E322 and E326 for netapp_e_storage module from the ignore.txt file
Updated version_added quotes in netapp_e_storagepool
5 years ago
Nilashish Chakraborty 2c432f8bc7
Add vyos_l3_interfaces resource module (#59929)
Signed-off-by: NilashishC <nilashishchakraborty8@gmail.com>
5 years ago
Daniel Mellado Area e3681c049c
Add junos vlans resource module (#59041) 5 years ago
Matt Clay b101fda4c6 Use constants to construct ansible-test paths. 5 years ago