Commit graph

1470 commits

Author SHA1 Message Date
Toshio Kuratomi
7e7eafb3e3 Make lack of boto call fail_json instead of sys.exit
Fixes #994
2015-03-26 12:12:39 -07:00
Brian Coca
5d776936cc Merge pull request #256 from SDFE/route53_connect_params
Use aws connect calls that allow boto profile use
2015-03-26 14:34:24 -04:00
Brian Coca
68daec05f2 Merge pull request #254 from SDFE/ec2_vpc_connect_params
use simpler ec2_connect ec2 util call
2015-03-26 14:17:27 -04:00
Brandon W Maister
efa4d04284 Make cache_subnet_group default to empty security groups
Since they can't be specified together, it seems like setting the
default to no security groups is the right option.
2015-03-26 13:56:46 -04:00
Brandon W Maister
3cb2346312 Add cache_subnet_group to elasticache module
According to the [docs] cache subnet groups are required inside a VPC.

[docs]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheSubnetGroups.html
2015-03-26 13:56:46 -04:00
Brian Coca
0771dd12ca Merge pull request #1004 from bcoca/s3_fixes
S3 fixes
2015-03-26 12:39:36 -04:00
Brian Coca
e5ed49d6c7 added patch to workaround some s3 connection faliures 2015-03-26 11:23:32 -04:00
Tor Åke Fransson
360409cee8 Merge remote-tracking branch 'origin/devel' into digitalocean-user-data
Conflicts:
	cloud/digital_ocean/digital_ocean.py
2015-03-26 14:05:57 +01:00
Tor Åke Fransson
3f17ec489b Remove all reference to obsolete client_id and rename api_key to the for v2 more correct api_token 2015-03-26 13:56:39 +01:00
Tor Åke Fransson
41875984e5 Make digital_ocean ssh command use API v2 2015-03-26 09:57:35 +01:00
Brian Coca
f6c9d555a0 Merge pull request #976 from jsmartin/asg_doc_fix
Re-wording of feature.
2015-03-25 22:12:35 -04:00
Brian Coca
6570d48657 refactrored connection exception handling, added check to see if we actually get a connection before proceeding
Fixes #964
2015-03-25 21:40:13 -04:00
Brian Coca
79844506db Merge pull request #341 from axilleas/digitalocean_docs
digital_ocean: Add note about using API v1
2015-03-25 15:16:03 -04:00
Tor Åke Fransson
69911ec86e WIP: DigitalOcean API version 2 with user_data option 2015-03-25 16:43:11 +01:00
Toshio Kuratomi
9464277f4f Merge pull request #993 from smashwilson/docker-deployed-by-image
[docker] Compare container's configured image instead of running image
2015-03-24 12:55:33 -07:00
Ash Wilson
9ce2fc718a Only fetch details when necessary. 2015-03-24 11:18:15 -04:00
Ash Wilson
47f4c3f2e5 Compare container images to Config.Image. 2015-03-24 11:07:12 -04:00
Sarah Zelechoski
43cd4ebd2e fix syntax in last example 2015-03-24 10:31:34 -04:00
James Martin
3bd2b7c8aa Re-wording of feature. 2015-03-20 14:59:34 -04:00
Toshio Kuratomi
5399f3744f Fix review comments from @bcoca in #745 2015-03-20 09:52:19 -07:00
Toshio Kuratomi
9e9fa6a451 Merge branch 'fix-ec2_asg' of https://github.com/m-o-e/ansible-modules-core into m-o-e-fix-ec2_asg 2015-03-20 09:43:05 -07:00
Toshio Kuratomi
a78de50801 Minor code formatting 2015-03-19 22:38:06 -07:00
Rowan Wookey
37412219d5 Fixed group name not being passed to wait_for_new_instances when replacing instances
Fixed group_name not being passed to wait_for_elb
Minor code clean up
2015-03-19 22:38:06 -07:00
James Martin
1c96ff32a1 check lb for instance healthy and some refactoring of rolling replace functions.
Optionally waiting for new instances to be in viable state on ASG creation/update.

Properly updating properties and terminating group.
2015-03-19 22:38:06 -07:00
Toshio Kuratomi
fb1c92ffa4 Merge pull request #724 from ferrants/devel-metric_alarm_fix
check keys is in dim2 before evaluating
2015-03-19 12:46:43 -07:00
Brian Coca
5641b1ff73 undeprecated openstack modules as new ones are not making into release 2015-03-19 15:15:17 -04:00
moncho
3421712e05 Update docker.py
Fix typo that prevents use_tls 'encrypt' option from working properly.
2015-03-19 19:30:36 +01:00
Jaanus Torp
aca893cf43 Added support for tagging images in ec2_ami.py 2015-03-19 15:39:42 +00:00
Eric Johnson
c7381a92b8 Merge pull request #956 from rmarsagoogle/gce_net
Added multiple allowed ranges.
2015-03-19 06:09:18 -07:00
Toshio Kuratomi
76198a8223 Merge pull request #961 from nemunaire/fix-docker-version-print
[docker] Fix formating error when remote host doesn't have required version
2015-03-18 19:51:45 -07:00
Toshio Kuratomi
e338fef730 Add another valid status from downloading images 2015-03-18 18:27:01 -07:00
nemunaire
fce8c21176 Convert tuple items to string before format 2015-03-18 14:37:26 +01:00
Robert Marsa
74e94f2712 Added multiple allowed ranges. 2015-03-17 13:49:53 -07:00
Julien Syx
23fdba26b5 Fix the issue #931
Checking that the parameter doesn't exist. The old code had a bug when the parameter was 0.
2015-03-17 17:57:18 +01:00
Toshio Kuratomi
8658b82de7 Some code cleanup (removed unused variables and imports) 2015-03-16 11:58:03 -07:00
Toshio Kuratomi
34c4e0d495 Also use DOCKER_TLS_VERIFY env var to turn on tls verification 2015-03-16 11:43:52 -07:00
Toshio Kuratomi
ceda82603a Merge pull request #947 from ansible/docker-tls-none
When no use_tls is not specified and no tls parameters are given we need to not attempt tls.
2015-03-16 11:29:14 -07:00
Toshio Kuratomi
b0d194ea94 Fix a potential bug in docker pull 2015-03-15 11:22:07 -07:00
Toshio Kuratomi
d65d04b3f8 Merge pull request #904 from ansible/ec2_vpc-sort
Sort subnets by the order they are specified in the play
2015-03-15 11:19:07 -07:00
Toshio Kuratomi
5b4d7a2182 When no use_tls is not specified and no tls parameters are given we need to not attempt tls. 2015-03-14 22:59:17 -07:00
Alex Rowley
7d6cd3baaa cloud/amazon/s3: update documentation
update description to show that module can do more than just put files into s3
2015-03-13 21:08:30 +00:00
Toshio Kuratomi
45637176dc Merge branch 'volumes_from' of https://github.com/lorin/ansible-modules-core into lorin-volumes_from
Remove volumes_from altogether

Conflicts:
	cloud/docker/docker.py
2015-03-13 13:42:40 -07:00
Toshio Kuratomi
e4a5b46cfb Merge pull request #936 from ansible/docker-pid-mode
Make pid_mode parameter do minimum docker-py/docker server version checks
2015-03-13 11:50:46 -07:00
Toshio Kuratomi
81fc92bd66 Make state=running work for backwards compatibility with 1.8 2015-03-13 10:23:10 -07:00
Toshio Kuratomi
bddd02bfcb Fix lookup of parameter name to be pid instead of pid_mode 2015-03-13 07:31:55 -07:00
Toshio Kuratomi
9d0d54b9a6 Merge pull request #926 from ansible/docker-tls-alt-854
Alternative implementation of tls for docker
2015-03-12 23:41:28 -07:00
Toshio Kuratomi
cf9374f3ea Make pid_mode parameter do minimum docker-py/docker server version checks 2015-03-12 22:53:31 -07:00
Toshio Kuratomi
3a6cc86578 Fix for problems found by @dguerri
* TLSConfig['verify'] has to be set to False if we're only encrypting the
  connection, not verifying the host.
* tls_hostname was not set if tls_ca_cert was not present

https://github.com/ansible/ansible-modules-core/pull/926#issuecomment-78573877
2015-03-12 12:53:48 -07:00
Toshio Kuratomi
1add8ed9e5 Implement comments from @smashwilson:
* if tls_ca_cert is set then use tls to verify the server
* take tls_hostname from the environment variable DOCKER_TLS_HOSTNAME
  if it's not specified in the playbook

https://github.com/ansible/ansible-modules-core/pull/926#issuecomment-78542210
2015-03-12 11:07:22 -07:00
Ian Babrou
763f472f5b fixed: global name 'e' is not defined 2015-03-12 11:04:50 +03:00
Toshio Kuratomi
3e0cbc82f1 Alternative implementation of tls for docker
Alternative to #854
2015-03-11 20:37:27 -07:00
Toshio Kuratomi
31cc5f543f Fix for py2.6 (no dict comprehensions on py2.6) 2015-03-11 19:07:55 -07:00
Toshio Kuratomi
8ed415589a Initialize the value of vpc_id variable 2015-03-11 18:40:05 -07:00
Brian Coca
07d5b50e2c Merge pull request #903 from h3biomed/allow_default_subnet
Allow vpc_subnet_id to remain unspecified (see bc0c169)
2015-03-11 14:46:59 -04:00
Brian Coca
df835f8be9 Merge pull request #924 from hkariti/route53_public_zones
Fix KeyError in public zones in route53
2015-03-11 13:57:33 -04:00
Toshio Kuratomi
974075277d Also don't fail if files are different and overwrite is false for uploads (this mimics copy and template).
Related to #489
2015-03-11 08:59:38 -07:00
Hagai Kariti
d65f9aa3af Fix KeyError in public zones in route53 2015-03-11 17:30:20 +02:00
Toshio Kuratomi
ca32205c7b Documentation style changes 2015-03-11 08:26:16 -07:00
Toshio Kuratomi
47c6dae9f3 Merge pull request #490 from pgehres/devel
Issue #489: s3 should not fail on checksum mismtach when overwrite=no
2015-03-11 08:22:23 -07:00
Matt Martz
a4e65e8e6e Prevent an empty error message 2015-03-10 11:30:14 -05:00
Ian Babrou
9ecfde7551 not triggering reload for links and not string env variables 2015-03-09 22:49:00 +03:00
Ash Wilson
0969fd75c8 Use {0}, {1} style format indices for 2.6 compat 2015-03-09 12:54:22 -04:00
Ash Wilson
19664a96db Expect module env vars to override Dockerfile ones. 2015-03-09 12:17:39 -04:00
Ash Wilson
608ddbea29 Include bind mounts in VOLUMES check. 2015-03-09 11:20:14 -04:00
Ash Wilson
2c58eb3845 Exposed ports, env vars, volumes from the image.
This will account for settings that are provided by the hierarchy of
Dockerfiles used to construct your image, rather than only accounting
for settings provided to the module directly.
2015-03-09 10:32:10 -04:00
Ash Wilson
79db475316 Full image inspection and just repo tags
Hat tip to @bobrik.
2015-03-09 10:05:56 -04:00
Brian Coca
1c0623ab8d Merge pull request #890 from SamYaple/docker-pid-support
Add pid mode support to docker module
2015-03-07 20:27:42 -05:00
Ash Wilson
d046425049 Connect to Docker with optional TLS. 2015-03-06 18:04:36 -05:00
Ash Wilson
80aca4b936 Rework docker module states.
Organize each state into a distinct function for readability and composability.
Rework `present` to create but not start containers. Add a `restarted` state
to unconditionally restart a container and a `reloaded` state to restart a
container if and only if its configuration is incorrect. Store our most recent
knowledge about container states in a ContainerSet object. Improve the value
registered by this task to include not only the inspect data from any changed
containers, but also action counters in their native form, a summary message
for all actions taken, and a `reload_reasons` key to store a human-readable
diagnostic to determine why each container was reloaded.
2015-03-06 17:58:11 -05:00
Ash Wilson
7490223940 Pull newer image versions when requested. 2015-03-06 17:56:45 -05:00
Ash Wilson
fedbea682e Another documentation commit. 2015-03-06 17:56:37 -05:00
Toshio Kuratomi
edf1ac1ea6 Sort subnets by the order they are specified in the play
Fixes #172
2015-03-06 14:55:11 -08:00
Bret Martin
f16d8d9afb Allow vpc_subnet_id to remain unspecified (see bc0c169) 2015-03-06 14:59:27 -05:00
Sam Yaple
e1e74bdf33 Updated version and fixed default 2015-03-06 03:13:55 -06:00
Lev Popov
a15cce2d7f Allow to keep instance boot disk after instance deletion in google cloud module 2015-03-04 09:41:03 +01:00
Sam Yaple
74e922449b Add pid mode support to docker module
This allows setting the pid namespace for a container. Currently only
the 'host' pid namespace is supported.

This requires Docker 1.4.1 and docker-py 1.0.0
2015-03-03 23:32:15 -06:00
Eric Johnson
bd8cfa2a24 Merge pull request #883 from nabam/gcloud-external-ip
Allow to spawn instances without external ip in google cloud module
2015-03-03 15:59:59 -08:00
Toshio Kuratomi
9f38f6e6a2 Small code cleanup 2015-03-03 12:07:42 -08:00
Brandon W Maister
7f5aea980a ec2: Apply all security groups at instance-creation
The code was picking out the first instance from the security groups
specified, even when multiple groups were specified. Now we use all of
them.
2015-03-03 13:03:08 -05:00
Lev Popov
94c1b55744 Allow to spawn instances without external ip in google cloud module 2015-03-03 15:29:47 +01:00
Brian Coca
72b49f4c71 Merge pull request #846 from mlaccetti/devel
Change s3 to use connect_to_region
2015-03-03 08:51:35 -05:00
Michael Laccetti
5e7605475d Moving the import to the top of the file and getting rid of the redundancy
I sure do wish I knew where the whitespace change was coming from, though. Frustrating.
2015-03-02 20:12:54 -05:00
Feanil Patel
4a195c64f1 Compare DNS names case insensitively. 2015-03-02 10:59:14 -05:00
James Cammarata
05904a7e17 Merge branch 'devel' of https://github.com/ansible/ansible-modules-core into devel 2015-02-27 11:01:46 -06:00
James Cammarata
db38d31f02 Updating version added fields for new alias parameters in route53 2015-02-27 11:00:21 -06:00
James Cammarata
49a493662a Merge branch 'route53-alias' of https://github.com/Coderah/ansible-modules-core into Coderah-route53-alias 2015-02-27 09:50:00 -06:00
James Cammarata
0c53b9033c Merge pull request #747 from barraponto/ec2_instance_info
Add ec2 instance tags and groups info
2015-02-27 09:41:08 -06:00
Monty Taylor
2e4091f31d One more OpenStack deprecation notice
Fixes #858
2015-02-27 07:05:03 -05:00
James Cammarata
fafb93490c Add private_zone parameter for route53
Fixes #473
2015-02-26 21:35:47 -06:00
Monty Taylor
cae8241ea7 Add deprecation notices for old OpenStack modules 2015-02-26 21:12:27 -05:00
Monty Taylor
dd4a6e86bd Deprecate old OpenStack modules
There are a completely new set of modules that do all of the things like
keystone v3 and auth_plugins and the like correctly. Structurally
upgrading these would have been massively disruptive and there is no
real good way to do so without breaking people.

These modules should be kept around for several releases - they still
work for people - and they should get bug fixes. But they should not
take new features. New features should go to the os_ modules.
2015-02-26 10:00:49 -05:00
Brian Coca
ec755796c0 Merge pull request #827 from bcoca/ec2_ami_handle_exceptions
now captures connection exceptions and returns in 'nicer' module failure
2015-02-25 10:37:43 -05:00
Michael Laccetti
60e2e43f00 Change s3 to use connect_to_region
* Allows us to use Ansible/s3 for GovCloud when accessing a pre-existing bucket
2015-02-25 08:46:13 -05:00
Brian Coca
d2158708ff undeprecated docker_image until replacement actually arives 2015-02-23 12:43:10 -05:00
Toshio Kuratomi
c88259077e Merge pull request #698 from joelthompson/devel
ec2_group with purge_rules will purge too many rules.
2015-02-21 06:42:20 -08:00
Brian Coca
af31cb8faf now captures connection exceptions and returns in 'nicer' module failure 2015-02-20 09:28:11 -05:00
Jorge-Rodriguez
57f0d22482 Added optional parameter scheduler_hints. 2015-02-20 12:51:18 +02:00
Bret Martin
bc0c1692b5 ec2: make group only match group names in this VPC 2015-02-19 11:28:13 -05:00
Edward
3fbfd7351b Fixes #816 Backups not enabled on new droplets.
Convert backups_enabled string to lowercase. Similar to fix for private
networking.
2015-02-18 21:23:11 -05:00
Brian Coca
b787792908 Merge pull request #679 from marqc/fix_dns_create_container_issue
Fixes docker.errors.DockerException: 'dns' parameter has no effect on create_container()...
2015-02-18 15:44:16 -05:00
Brian Coca
53ef859ae4 fix instance=None documentation 2015-02-18 13:32:50 -05:00
Brian Coca
77241123a7 Revert "Revert "Don't use 'tenancy' in ec2 spot requests"" 2015-02-18 11:07:13 -05:00
Brian Coca
7c42182f47 Revert "Don't use 'tenancy' in ec2 spot requests" 2015-02-18 08:59:26 -05:00
Matt Martz
5824f78773 Merge pull request #798 from sivel/rax-boot-vol-v2
rax: add boot from volume support
2015-02-17 12:31:32 -06:00
Brian Coca
7e71121da5 Merge pull request #730 from SergeyZh/devel
Fixed broken volumes_from for client API >= 1.10
2015-02-17 11:49:16 -05:00
Matt Martz
3dbf65f63c DRY up duplicate code 2015-02-17 10:45:29 -06:00
Brian Coca
706be79f8f Merge pull request #528 from lander2k2/password_required
TODO: check if instance already exists and this is not meant to create it but modify it, not supported by current code which always tries to create when 'present'.
2015-02-16 19:04:09 -05:00
Brian Coca
ed8ded7127 Merge pull request #519 from lander2k2/public_ips
set network_config.public_ips attribute
2015-02-16 19:02:18 -05:00
Matt Martz
f1667ba53b Don't hardcode minimum for boot_volume_size 2015-02-16 17:58:47 -06:00
Matt Martz
d0e82fa3af Fix order of logic to determine required args 2015-02-16 17:58:47 -06:00
Matt Martz
b0dcff214a Add boot from volume functionality to rax and rax_cbs modules 2015-02-16 17:58:47 -06:00
Matt Martz
98d86529f4 Merge pull request #797 from sivel/rax-cbs-no-min-check
rax_cbs: Don't hardcode a minimum size of a volume
2015-02-16 17:54:51 -06:00
Brian Coca
6c4804e413 Merge pull request #22 from teamdoug/devel
Pull SSL certificate IDs from existing ELBs
2015-02-16 18:49:37 -05:00
Matt Martz
188138a40f Merge pull request #788 from sivel/rax-clb-100plus
rax_clb: Support accounts with more than 100 load balancers
2015-02-16 15:35:23 -06:00
Matt Martz
b4ce4f3722 Don't hardcode a minimum size of a volume 2015-02-16 15:33:14 -06:00
mcameron
24f8792bab More general output. 2015-02-16 15:08:39 +00:00
mcameron
8eb7870a5e Useful log output. 2015-02-16 14:58:53 +00:00
Matt Martz
d03e9540a6 Support accounts with more than 100 load balancers 2015-02-13 15:12:24 -06:00
Robert Marsa
584f210eea Added the ability to set an instance to forward ip. 2015-02-12 14:24:03 -08:00
Robert Marsa
ea1122d49f Added target_tags to gce_module. 2015-02-12 10:01:41 -08:00
Toshio Kuratomi
5165ff4e15 Merge pull request #769 from tpaz/devel
resolve issue 764
2015-02-11 07:29:05 -08:00
Tomer Paz
374dd06c8e resolve issue 764
https://github.com/ansible/ansible-modules-core/issues/764
added 'domainname' attribute in addition to existing 'hostname'.
That's the most elegant way to delegate domain name to docker-py...
2015-02-11 09:25:24 +02:00
moussa taifi
ab8b4c0270 Adds the currently available instance types for azure to the available dict(choices..... 2015-02-10 11:14:28 -05:00
Luc Bourlier
df53b85259 Don't use 'tenancy' in ec2 spot requests
The problem was introduced in commit f5789e8e. 'tenancy' is a parameter of
ec2.run_instances, but not in ec2.request_spot_instances. So it was breaking
the support for spot requests.
2015-02-10 13:43:11 +00:00
Capi Etheriel
5854f53cdc add ec2 instance tags and groups info 2015-02-09 18:46:20 -02:00
Coderah
aa2b1f033b add alias support to route53 module 2015-02-06 15:23:01 -08:00
Coderah
d92cd07156 add hosted_zone information to ec2_elb_lb return 2015-02-06 15:23:01 -08:00
Jean-Baptiste Barth
6090c4e109 Improve formatting after previous commit 2015-02-04 10:22:24 +01:00
Jean-Baptiste Barth
b451cbd37b EC2: move logic about terminated instances up (#423)
As stated in #423, the commit 7f11c3d broke ec2 spot instance launching
after 1.7.2. This is because it acts on the 'res' variable which have 2
different types in the method, and in case we request spot instances,
the resulting object is not a result of ec2.run_instances() but
ec2.request_spot_instances(). Actually this fix doesn't seem to be
relevant in the spot instances case, because by construction we won't
retrieve 'terminated' instances in the end.
2015-02-04 10:22:24 +01:00
moe
0d0205ad54 Woops, make collect/delete loop more efficient. 2015-02-04 06:13:52 +01:00
moe
047bd6f651 Fixes #744.
The following cases work for me now:
- Create new ASG with tags
- Update tags on ASG (create/change/delete)

In short, the module should now work as expected
wrt tagging. The previous code did not work at all
with latest boto for me (serialization errors) and
the logic was buggy anyway; e.g. removed tags
would never get deleted from ec2.
2015-02-04 05:56:19 +01:00
Sergey Zhukov
7baaf97a8b Fixed broken volumes_from for client API >= 1.10 2015-01-30 19:58:12 +03:00
Matt Ferrante
e1f2c570eb check keys is in dim2 before evaluating 2015-01-29 16:36:35 -05:00
Peter Mooshammer
0c49d9f6c6 adding disk_type option to choose from pd-ssd or pd-standard 2015-01-29 10:19:01 -08:00
Brian Coca
e2083bbe8a corrected version added for latest features 2015-01-28 12:55:05 -05:00
Brian Coca
82afff31a9 Merge pull request #718 from bcoca/rds_refactor_fixes
minor fixes on new rds refactor
2015-01-28 12:49:20 -05:00
Matt Martz
835f762cbb Merge pull request #672 from sivel/rax-cdb-db-fixups
rax_cdb_database: Remove unnecessary logic, return the database on delete
2015-01-28 11:46:58 -06:00
Brian Coca
a28ad0db83 minor fixes on new rds refactor 2015-01-28 12:36:04 -05:00
Brian Coca
c5d7f07aa0 Merge pull request #5 from willthames/rds_refactor
Rds refactor
2015-01-28 12:34:12 -05:00
Joel Thompson
01c4ff922f Fixes issue 697 -- only purge the grants that need to be purged 2015-01-24 00:52:37 -05:00
Toshio Kuratomi
670098af2d Spelling and grammar fix 2015-01-22 23:08:24 -08:00
calmera
d2c6791082 Update docker.py
Added some more documentation for the memory_limit and volume options.
2015-01-22 23:08:24 -08:00
Toshio Kuratomi
6f47416cec Merge pull request #641 from ansible/fix-640
Potential fix for 640
2015-01-22 21:45:10 -08:00
Toshio Kuratomi
ed15a71162 Merge pull request #677 from ryanobjc/devel
Fixes #581 - digitalocean module cannot create private_networking=true d...
2015-01-22 21:39:07 -08:00
Phillip Holmes
c5cb352262 Merge branch 'devel' of https://github.com/ansible/ansible-modules-core into ansible-devel 2015-01-22 15:04:55 -06:00
Toshio Kuratomi
1dca812662 Merge pull request #685 from bcoca/ec2_doc_form_fix
ec2 fix docs format
2015-01-21 23:40:06 -08:00
Brian Coca
9e1847ed03 ec2 fix docs format 2015-01-21 20:09:46 -05:00
Brian Coca
d66c3fcf51 moved defaulting to module constant to after when it is defined 2015-01-21 19:50:34 -05:00
Ryan Rawson
0162fc525d Fixes #581 - digitalocean module cannot create private_networking=true droplets 2015-01-21 16:04:15 -08:00
Doug Ellwanger
10aaa1137c Pull SSL certificate IDs from existing ELBs 2015-01-21 15:29:46 -08:00