Commit graph

630 commits

Author SHA1 Message Date
James Laska
dbd3194e9c Resolves issue#6067 by allowing exact_count=0 2014-02-19 16:29:15 -05:00
James Cammarata
9dd9487692 Merge branch 'mohangk-fix_rds_modify_security_group' into devel 2014-02-15 09:34:46 -06:00
James Cammarata
7eb2a4c290 Merge branch 'fix_rds_modify_security_group' of https://github.com/mohangk/ansible into mohangk-fix_rds_modify_security_group 2014-02-14 14:43:42 -06:00
Bruce Pennypacker
899811f339 Added wait_timeout parameter 2014-02-14 20:16:58 +00:00
Richard Isaacson
bab91f9ed8 Merge pull request #6015 from angstwad/docfix
Spelling correction.
2014-02-14 11:04:44 -06:00
Paul Durivage
0dbd5d3e18 Spelling correction 2014-02-14 10:47:27 -06:00
Amir H. Hajizamani
cf5b1620b7 Remove superfluous/invalid quote
Allow the example to be copy-pasted with minimal confusion about the error.
2014-02-14 16:44:55 +00:00
Peter Gehres
b5761750c4 Adding the region to the output of the ec2 module's creation of a new instance. 2014-02-13 22:40:49 -08:00
James Cammarata
fdb7c733c1 Updating CHANGELOG for the new validate_certs feature
Also removing validate_cert option from the cloudformation module docs,
as it does not use the standard ec2 connection.
2014-02-13 14:40:39 -06:00
James Cammarata
056d54ebd3 Adding 'validate_certs' option to EC2 modules
When disabled, the boto connection will be instantiated without validating
the SSL certificate from the target endpoint. This allows the modules to connect
to Eucalyptus instances running with self-signed certs without errors.

Fixes #3978
2014-02-13 12:32:49 -06:00
Isao Jonas
6f44e7b039 add security groups to elb_lb 2014-02-13 10:57:41 -06:00
Will Thames
c8127ea874 ec2 module fails when state is not absent
tagged_instances is initialised in a scope not visible
when state is not absent.
2014-02-13 19:51:33 +10:00
Pavel Antonov
e02cf2aab7 Refactore unused code 2014-02-12 17:06:58 -05:00
Pavel Antonov
dddd4b2522 Added modules description and examples 2014-02-12 17:06:58 -05:00
Pavel Antonov
df41ed90b8 Docker supports links and port binding. Added docker_image module 2014-02-12 17:06:58 -05:00
Michael DeHaan
0cdf8d3162 Merge pull request #5981 from angstwad/docfix
Documentation updates to rax_files, rax_files_objects
2014-02-12 14:21:10 -05:00
James Cammarata
a1b7a93b69 Modified cloudformation module to use common ec2 module functions
Fixes #3688
2014-02-12 12:54:47 -06:00
Paul Durivage
f18db0dd20 Doc updates 2014-02-12 11:22:15 -06:00
Isao Jonas
1602a80d76 added elasticache vpc security group ids 2014-02-12 09:06:15 -06:00
Michael DeHaan
f07091ed69 Merge pull request #5962 from sivel/rax-facts-docs-update
rax_facts and rax_keypair modules: update docs
2014-02-11 16:39:59 -05:00
Matt Martz
e8952a5a99 The OpenStack auth attributes apply to rax_keypair also 2014-02-11 14:25:13 -06:00
jctanner
fe94c0cd05 Merge pull request #5957 from sivel/rax-no-default-disk-config
rax module: Don't set a default for disk_config
2014-02-11 11:55:06 -05:00
Christopher H. Laco
471b1a7a47 Add rax_identity module
For some tasks, I need to drop the username/api_key into configuration
files. Rather than rely on how I'm calling the rax modules. It seemed
more appropriate to authenticate against Rackspace and return the wealth
of information contained in the pyrax identity payload with other
modules/templates.
2014-02-10 22:40:38 -05:00
Matt Martz
8095aa6584 Don't set a default disk_config. Defaulting to 'auto', causes issues with new images 2014-02-10 16:12:32 -06:00
Matt Martz
bd3c7c3efa The name parameter for search_opts is a regex string, so make sure we include start and end of string characters 2014-02-10 13:18:03 -06:00
zimbatm
4aaf8f9a4c library/digital_ocean: Adds the missing backups_enabled create option 2014-02-10 17:35:10 +00:00
Mohan Krishnan
fb3c8c90e5 Allow explict setting of vpc_security_groups to allow modification of security groups of RDS instances within a VPC 2014-02-10 14:01:45 +07:00
Michael DeHaan
d3c1b8de78 Merge pull request #5883 from amirhhz/improve-ec2-module-docs
Improve ec2 module docs
2014-02-09 14:07:35 -05:00
Scott Anderson
baf508a379 Change standard AWS access and secret key parameter names to aws_access_key and aws_secret_key. Fixes an authentication problem with the rds module and standardizes the naming convention on something more encompassing than ec2_*_key. 2014-02-08 18:35:26 -05:00
Matt Saunders
674969a7d8 Added user_data parameter to nova_compute module - currently no file parsing just text - Re issue #4992 2014-02-08 22:47:03 +00:00
Jon Chen
970997c764 fix linode typo 2014-02-07 20:47:57 -05:00
James Tanner
a62af82757 Make ec2 exact_count and count mutually exclusive 2014-02-07 13:42:43 -05:00
James Tanner
70ebb05190 Return a tagged_instances list for hosts that matched the count_tag 2014-02-07 13:07:34 -05:00
James Tanner
f101768a9d Make an example that sets the instance Names 2014-02-07 10:49:13 -05:00
James Tanner
005ef837d9 Update docstrings 2014-02-07 10:34:45 -05:00
James Tanner
fd919062cb Add exact_count and count_tag to the ec2 module. 2014-02-06 23:25:57 -05:00
Will Thames
7600c664fe Create a common EC2 connection argument spec for EC2 modules
Refactor the currently well-factored ec2 modules (i.e. those that already use ec2_connect) to
have a common argument spec. The idea is that new modules can use this spec without duplication
of code, and that new functionality can be added to the ec2 connection code (e.g. security
token argument)
2014-02-06 15:27:41 +10:00
willthames
27fc3b8006 Module to create EC2 snapshots
Two methods of creating a snapshot
* use volume_id
* use device_name and instance_id

The latter is more useful with inventory
2014-02-06 09:44:43 +10:00
jctanner
7fcf6cebfe Merge pull request #5881 from willthames/ec2_keys
Minor tweaks to simplify examples and documentation
2014-02-05 15:50:19 -05:00
jctanner
c13161993a Merge pull request #5410 from willthames/rds_snapshot
rds module: add snapshot capabilities
2014-02-05 15:23:08 -05:00
Amir H. Hajizamani
843f4e7d7c Neaten up example YAML with 2-space indenting 2014-02-05 15:14:44 +00:00
Amir H. Hajizamani
7c38e8a225 Example should put instance_ids list in quotes for avoid YAML error 2014-02-05 15:12:41 +00:00
Amir H. Hajizamani
b0bc2bd86a Fix missing quote mark in route53 doc example 2014-02-05 13:59:31 +00:00
willthames
e0c245f1ae Minor tweaks to simplify examples and documentation
Made a few things more consistent with the bulk of the other EC2
modules and removed an unnecessary check that is handled by
AnsibleModule
2014-02-05 22:25:44 +10:00
jctanner
a877b8b030 Merge pull request #5624 from mattsoftware/route53_ttl
Enable changes to ttl of a record to be propogated to route53
2014-02-04 11:11:44 -08:00
Timur Batyrshin
658c15930e reword "except Error as e:" into "except Error, e:" to be compatible with Python 2.5 (#5852) 2014-02-03 13:00:40 -06:00
Eugene Brevdo
553b42516e ec2_vol supports name / id to mount volume on instance
* volume_size no longer required if name/id are provided
* id is volume-id
* name is volume Name tag
* special checking is provided
2014-01-30 10:27:40 -08:00
Matt Martz
7498f212fc Update docs for rax_facts to include parameters added for other OpenStack clouds 2014-01-30 07:59:31 -07:00
jctanner
086cf0acb7 Merge pull request #5745 from angstwad/cf-module-revert
Add Rackspace Cloud Files module
2014-01-29 17:01:57 -08:00
jctanner
434c78f263 Merge pull request #5744 from angstwad/revert
Add Rackspace Cloud Files containers module
2014-01-29 16:36:42 -08:00
jctanner
203a66eb48 Merge pull request #4865 from claco/rax_queue
Add rax_queue module to create/delete Rackspace Cloud Queues
2014-01-29 16:28:43 -08:00
jctanner
360f06b41d Merge pull request #5806 from sivel/rax-mod-utils-improvements
Rax mod utils improvements
2014-01-29 16:17:06 -08:00
jctanner
6c1f75c688 Merge pull request #5132 from sivel/rax-keypair
Add rax_keypair module
2014-01-29 16:15:29 -08:00
jctanner
6265128c9e Merge pull request #4941 from sivel/rax-clb-shared-vip
Add ability to specify a VirtualIP ID for sharing a VIP with another LB
2014-01-29 16:14:29 -08:00
Michael DeHaan
83f43b82ad ansible -> ansibleworks 2014-01-28 20:29:41 -05:00
Matt Martz
07c76d7ec9 Update rax module DOCUMENTATION with new auth options 2014-01-28 13:59:49 -06:00
James Tanner
1584d8f01b Add ec2_vol snapshot example from #4189 2014-01-28 09:58:13 -05:00
jctanner
fca8ec3d3c Merge pull request #4508 from willthames/ec2_vol_snapshot
Added ability to create EC2 volume from snapshot
2014-01-28 06:22:14 -08:00
James Tanner
5cbe24913f Fix start/stop example in ec2 2014-01-27 17:48:42 -05:00
James Tanner
1641361057 Merge branch 'feat/ec2_start_stop' of git://github.com/Geryon/ansible into Geryon-feat/ec2_start_stop 2014-01-27 17:39:24 -05:00
jctanner
b8d3c0f865 Merge pull request #5506 from mohangk/fix_elb_register_new_instance
Fix exception being thrown for new instance registration with ELB
2014-01-27 12:19:44 -08:00
jctanner
821858ed08 Merge pull request #5380 from dhml/devel
ec2_group: rules can't reference containing group fix #5309
2014-01-27 11:41:21 -08:00
Mohan Krishnan
0f95961e33 Fix exception being thrown for new instance
Currently if we are trying to register an instance that has not yet
been registered with the elb an exception is thrown.
2014-01-27 20:18:55 +07:00
willthames
de659af82b Added the ability to add volumes to instances at creation time
This allows a volume to be cloned from a snapshot, a brand new
volume to be created, or an ephemeral volumes to be associated
at time of instance creation.

This avoids any race conditions associated with creating extra volumes
after instance creation (e.g. writes happening before the volume is
mounted).

In addition, this allows the root volume to be edited
2014-01-25 12:38:41 +10:00
James Tanner
17f0c9e477 Refactor ec2_elb_lb to use shared module snippet code 2014-01-24 15:33:41 -05:00
James Tanner
512c02b7d2 Fix missing description key 2014-01-24 15:13:01 -05:00
James Tanner
53b7a495ca Merge branch 'add_ec2_elb_lb_module' of git://github.com/jsdalton/ansible into jsdalton-add_ec2_elb_lb_module 2014-01-24 15:11:54 -05:00
Christopher H. Laco
745a480e5c Add rax_queue module to create/delete Rackspace Cloud Queues 2014-01-24 11:14:25 -05:00
Paul Durivage
2090e75e12 Use dict constructors 2014-01-23 22:05:46 -06:00
Paul Durivage
d8bf5033ec Fix revert artifacts, doc update 2014-01-23 22:05:36 -06:00
James Tanner
4b80156267 Standardize some parameters in ec2_key 2014-01-23 22:22:09 -05:00
jctanner
cbb2a4ce9b Merge pull request #5256 from zbal/ec2_keys
Add ec2_key module.
2014-01-23 19:14:46 -08:00
Paul Durivage
b24474ae58 Remove dict comprehension; use dict constructor 2014-01-23 21:05:52 -06:00
Paul Durivage
0a0ed538b2 Resolve revert conflicts 2014-01-23 20:43:31 -06:00
Paul Durivage
0cabb2fcc4 Imperfect revert w/ artifacts.
Revert "Revert "Merge pull request #5540 from angstwad/cf-container-module""

This reverts commit c3408f205e.

Conflicts:
	library/cloud/rax_files
2014-01-23 20:31:44 -06:00
Paul Durivage
95a436980a Doc updates; fix YAML problems 2014-01-23 19:19:35 -06:00
jctanner
3c455685bc Merge pull request #5603 from willthames/ec2_keypair_not_mandatory
key_name is not required when creating ec2 instances
2014-01-23 17:06:23 -08:00
Paul Durivage
48b09d85b4 Revert "Revert "Merge pull request #5496 from angstwad/cf-module""
This reverts commit b11d62270f.

Conflicts:
	library/cloud/rax_files_objects
2014-01-23 18:57:22 -06:00
Paul Durivage
d298d3bfb4 Update documentation; fix YAML problems 2014-01-23 18:56:00 -06:00
James Tanner
b11d62270f Revert "Merge pull request #5496 from angstwad/cf-module"
This reverts commit a807e3b9c8, reversing
changes made to df8ecdeded.
2014-01-23 18:27:49 -05:00
James Tanner
c3408f205e Revert "Merge pull request #5540 from angstwad/cf-container-module"
This reverts commit bedc616f74, reversing
changes made to a807e3b9c8.
2014-01-23 18:27:33 -05:00
James Tanner
bec35cc0c1 Revert "Fix docstrings in rax_files_objects"
This reverts commit e759832dd6.
2014-01-23 18:27:22 -05:00
James Tanner
e759832dd6 Fix docstrings in rax_files_objects 2014-01-23 18:10:17 -05:00
jctanner
bedc616f74 Merge pull request #5540 from angstwad/cf-container-module
Add module support for Rackspace Cloud Files Containers
2014-01-23 14:46:11 -08:00
jctanner
a807e3b9c8 Merge pull request #5496 from angstwad/cf-module
Module support for Rackspace Cloud Files
2014-01-23 14:26:40 -08:00
jctanner
df8ecdeded Merge pull request #5210 from sivel/rax-dns-record
rax_dns_record: Add rax_dns_record module
2014-01-23 14:13:38 -08:00
jctanner
339ab7b077 Merge pull request #5208 from sivel/rax-dns
Add rax_dns module
2014-01-23 14:03:44 -08:00
jctanner
07b6d6ffd6 Merge pull request #5690 from sivel/rax-regex-fix
rax module: Fix regex match
2014-01-21 06:54:06 -08:00
Rene Moser
a412eae9cd digital_ocean: added requirements in DOCUMENTATION 2014-01-21 14:09:21 +01:00
Dmitry Ivanov
62ef8dfbe0 [s3] Compatibility with fakes3. 2014-01-21 17:31:22 +07:00
Matt Martz
89fbc64b60 Fix regex match, the printf match should work with 0 or more numeric padding characters, not 1 or more 2014-01-20 16:43:42 -06:00
jctanner
1f1fa6c09a Merge pull request #5322 from bcrochet/neutron-fip-select
quantum_* modules: Neutron name change, keeping backward compatibility
2014-01-16 08:37:38 -08:00
willthames
238da3cb02 ec2_elb module: Minor improvements to documentation
ELB(s) cause a weird formatting behaviour - it appears as EL**s**
Added choices documentation to the state option
2014-01-16 13:14:44 +10:00
Michael DeHaan
6f49642286 All modules should be using /usr/bin/python in the shebang as ansible_python_interpreter processes this (see FAQ).
Fixing for standardization purposes.
2014-01-15 09:52:17 -05:00
Matt Paine
d392e067bf Enable changes to ttl of a record to be propogated to route53 2014-01-15 09:51:59 +10:00
willthames
8fb5a66944 keypair is not absolutely required when creating ec2 instances 2014-01-14 09:12:01 +10:00
Matt Martz
e3adaa648a Ensure the id attribute is returned for a node 2014-01-09 14:05:32 -06:00
willthames
c06b63ce82 Added ability to create EC2 volume from snapshot
ec2_vol module now takes optional snapshot argument
Added relevant module argument handler and documentation
2014-01-09 14:40:01 +10:00
Paul Durivage
a85e021640 Completed documentation and examples 2014-01-08 09:39:29 -06:00
Paul Durivage
e822ddd910 Add rax_files_objects module for Rackspace Cloud Files support
This squashed commit fixed typos, changed to Py 2.4 compatible exceptions
2014-01-08 09:36:04 -06:00
Paul Durivage
41be035a43 Add module support for Rackspace Cloud Files Containers 2014-01-07 17:01:59 -06:00
jctanner
7520bac8ce Merge pull request #5404 from sivel/rax-improvements
rax module: improvements
2014-01-07 15:52:35 -05:00
jctanner
9a69b1b0ec Merge pull request #5311 from willthames/ec2_refactor
ec2 modules: Move more responsibility to common EC2 module
2014-01-06 14:09:38 -08:00
Michael DeHaan
99616d0c80 Pass scrub_data by default, see response from DO here: https://www.digitalocean.com/blog 2013-12-30 20:21:15 -05:00
Mikhail Sobolev
8733b5da8b fix short/full description for elasticache 2013-12-26 14:35:57 -05:00
Michael DeHaan
0bdf615612 User report of DO not taking underscores so tweaking docs 2013-12-25 13:51:56 -05:00
Will Thames
b65486734a rds module: add snapshot capabilities
Add the ability to create snapshots and restore from them
Make instance creation, deletion, restore, and snapshotting idempotent
(really helps testing a playbook if you can run it multiple times)
2013-12-24 20:32:49 +10:00
David Hummel
c5433d9742 Check for group_name and cidr_ip. 2013-12-23 15:57:47 -05:00
David Hummel
bd67c6756a Add rule group_name parameter whose value can reference containing group name. 2013-12-20 16:06:55 -05:00
Joseph Tate
e868d00472 Add capability check for parameters on request_spot_instances 2013-12-19 18:16:56 -05:00
willthames
46a5f8c656 Make state=present the default for ec2_tag
Using `ec2_tag` module without the state argument
currently results in:
```
failed: [127.0.0.1] => {"failed": true, "parsed": false}
```
This fix makes `state=present` the default
2013-12-18 13:40:41 +10:00
jctanner
d3f94fe606 Merge pull request #5303 from mohangk/rds_postgres
Adds postgres support for Ansible RDS module
2013-12-17 14:56:21 -08:00
Brad P. Crochet
47f995ef64 Specify internal_network_name
This allow one to specify a specific internal network name for the case
where there is more than one nic on an instance. Without this, the list
of ports may not return the correct order. Therefore, it is necessary
to specify the exact internal network to attach the floating ip to
2013-12-17 14:24:30 -05:00
Brad P. Crochet
ab52efc7fb Add support for neutronclient
The quantum_* modules will now try neutronclient first, and fall back
to quantumclient. If that fails, error out.

The code now references neutron instead of quantum in all internal
cases.
2013-12-17 13:24:20 -05:00
willthames
12005a1cd0 Move more responsibility to common EC2 module
Moved `AWS_REGIONS` into `ec2` module
Created `ec2_connect` method in `ec2` module
Updated modules able to use `ec2_connect` and `AWS_REGIONS`
2013-12-17 14:07:24 +10:00
Troy C
038d030404 catch exposed cs.exceptions instead of novaclient 2013-12-16 09:33:29 -06:00
Mohan Krishnan
1dd2510e76 Adds postgres support for Ansible RDS module 2013-12-16 15:51:41 +08:00
Matt Martz
925eb1dca7 Don't import novaclient, exceptions are available via cs.exceptions 2013-12-13 19:34:46 -06:00
Matt Martz
b3744800fb Utilize ansible.module_utils.rax 2013-12-13 19:34:46 -06:00
Matt Martz
017c9d07d2 Initial commit of rax_keypair 2013-12-13 19:34:45 -06:00
Alex Coomans
dd3aea6e9b Add ability to disable the Source/Destination check on EC2 2013-12-13 18:06:03 -06:00
Troy C
3007a8af7e import novaclient.exceptions for cs.images.find
cs.images.find(human_id= throws novaclient.exceptions.NotFound,
resulting in the try/except block with
image = cs.images.find(name=image)  being skipped. catching
novaclient.exception.NotFound allows images to be specified with the
human readable name.

Example:
  tasks:
    - name: Server build request
      local_action:
        module: rax
        region: DFW
        image: Ubuntu 12.04 LTS (Precise Pangolin)

Also, the import is placed after try: import pyrax, because pyrax
imports novaclient and should fail if novaclient is missing.
2013-12-13 16:27:21 -06:00
Joseph Tate
080e70ab6e Added version_added for spot instance parameters 2013-12-13 15:01:58 -05:00
James Tanner
f55270e746 Set version_added for new_instance_name in cloud/rds module 2013-12-13 13:54:08 -05:00
Joseph Tate
40f9da351f Extend ec2 module to support spot instances 2013-12-13 13:43:30 -05:00
jctanner
66cad764d2 Merge pull request #5028 from retr0h/correct-nova-api-auth-check
Nova doesn't attempt to auth on obj instantiation
2013-12-13 08:36:27 -08:00
Vincent Viallet
db37528fd2 Bumped to v1.5 2013-12-13 08:59:52 +08:00
jctanner
6051ee0df5 Merge pull request #5052 from bpennypacker/promote_rename
cloud/rds module: added promote command & updated modify command to allow for renaming of database instances.
2013-12-12 15:15:34 -08:00
James Tanner
35cd043e25 Addresses #5276 update documentation for ec2_ami no_reboot parameter 2013-12-12 18:03:00 -05:00
evan82
01e8390a8f Fix ec2_ami no_reboot setting (currently it will not reboot instances to create the AMI)
Line 276: no_reboot = dict(default=True, type="bool"),

This should really default to False (When AMIs are created the machine will reboot before copying the disk).

"When enabled, Amazon EC2 does not shut down the instance before creating the image. When this option is used, file system integrity on the created image cannot be guaranteed."
2013-12-12 15:49:24 -07:00
jctanner
1688a7c776 Merge pull request #5231 from jeffnappi/patch-1
Corrected documentation in ec2_ami module - no_reboot defaults to yes
2013-12-12 14:18:14 -08:00
Nicholas DeClario
b2ea24bc08 Added ability to start and stop existing EC2 instances. 2013-12-12 17:16:59 -05:00
Jim Dalton
aa329b4b48 Make sure initial_state is initialized 2013-12-12 13:09:40 -08:00
Matt Martz
27fb55519c Add version_added for vip_id 2013-12-12 09:32:06 -06:00
Matt Martz
6c6dd09e23 Add ability to specify a VirtualIP ID for sharing a VIP with another LB 2013-12-12 09:32:06 -06:00
Vincent Viallet
30820437bb Minor typos and remove extra dependencies. 2013-12-12 12:30:22 +08:00
Vincent Viallet
1150b78bb0 Add ec2_key module. 2013-12-12 12:23:58 +08:00
Michael Gregson
3ac4611093 Rename digital_ocean_ssh to digital_ocean_sshkey per https://github.com/ansible/ansible/pull/4315#issuecomment-30286556 2013-12-11 12:03:53 -07:00
Jim Dalton
ac1e84d976 Account for instances that have not yet been registered. Fixes #5076 2013-12-09 19:38:03 -08:00
Jeffrey Nappi
2b82f7d75f Corrected documentation in ec2_ami module - no_reboot defaults to yes 2013-12-09 18:57:58 -07:00
John Dewey
6fe8496ab3 Made a few canges as I learn more about modules
* Set check_mode to False, am not supporting this ATM.
* Cleaned up delete/create() into single update().
* Return the group_id if created or found so tasks can be chained.
2013-12-07 12:04:31 -08:00
Matt Martz
ccf4199ac8 Initial commit of rax_dns_record 2013-12-06 17:03:08 -06:00
Matt Martz
afd55934fc Remove errant raise 2013-12-06 16:49:28 -06:00
Matt Martz
7b3aa5c205 Add state attribute to description 2013-12-06 16:10:00 -06:00
Matt Martz
c5f54a94f8 Initial commit of rax_dns module 2013-12-06 13:13:09 -06:00
David Hummel
614efadb7a Fix issue #5043: ec2_vpc module wait=yes state attribute retrieval 2013-12-05 10:47:22 -05:00
Michael DeHaan
71a5de6e72 Merge pull request #5168 from sivel/rax_clb_required_together
rax_required_together is a function
2013-12-04 19:11:58 -08:00
Matt Martz
d73251c342 rax_required_together is a function 2013-12-04 19:26:34 -06:00
Bruce Pennypacker
d3480c5630 fixed documentation & added rename example 2013-12-04 10:01:30 -05:00
John Dewey
4e547e1228 Added ability to manage nova floating IPs
This module is based off the ec2_eip module, but accounts for pools,
which is openstack related functionality.
2013-12-03 22:07:08 -08:00