All modules for which code is available
40 |- awspricingfull 41 |
├── docs_html ├── .nojekyll ├── objects.inv ├── _static │ ├── up.png │ ├── down.png │ ├── file.png │ ├── minus.png │ ├── plus.png │ ├── comment.png │ ├── up-pressed.png │ ├── ajax-loader.gif │ ├── comment-close.png │ ├── down-pressed.png │ ├── comment-bright.png │ ├── pygments.css │ ├── doctools.js │ ├── underscore.js │ ├── alabaster.css │ └── basic.css ├── _sources │ ├── napoleon │ │ ├── modules.txt │ │ ├── mainexample.txt │ │ └── awspricingfull.txt │ └── index.txt ├── .buildinfo ├── _modules │ └── index.html ├── search.html ├── napoleon │ ├── modules.html │ └── mainexample.html ├── py-modindex.html ├── index.html └── searchindex.js ├── docs_full ├── _build │ ├── html │ │ ├── .nojekyll │ │ ├── objects.inv │ │ ├── _static │ │ │ ├── up.png │ │ │ ├── down.png │ │ │ ├── file.png │ │ │ ├── minus.png │ │ │ ├── plus.png │ │ │ ├── comment.png │ │ │ ├── ajax-loader.gif │ │ │ ├── up-pressed.png │ │ │ ├── comment-close.png │ │ │ ├── down-pressed.png │ │ │ ├── comment-bright.png │ │ │ ├── pygments.css │ │ │ ├── doctools.js │ │ │ ├── underscore.js │ │ │ ├── alabaster.css │ │ │ └── basic.css │ │ ├── _sources │ │ │ ├── napoleon │ │ │ │ ├── modules.txt │ │ │ │ ├── mainexample.txt │ │ │ │ └── awspricingfull.txt │ │ │ └── index.txt │ │ ├── .buildinfo │ │ ├── _modules │ │ │ └── index.html │ │ ├── search.html │ │ ├── napoleon │ │ │ ├── modules.html │ │ │ └── mainexample.html │ │ ├── py-modindex.html │ │ └── index.html │ └── doctrees │ │ ├── index.doctree │ │ ├── environment.pickle │ │ └── napoleon │ │ ├── modules.doctree │ │ ├── mainexample.doctree │ │ └── awspricingfull.doctree ├── napoleon │ ├── modules.rst │ ├── mainexample.rst │ └── awspricingfull.rst ├── index.rst ├── make.bat ├── Makefile └── conf.py ├── setup.py ├── .gitattributes ├── .gitignore ├── LICENSE.md ├── README.md └── mainexample.py /docs_html/.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs_full/_build/html/.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs_html/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/objects.inv -------------------------------------------------------------------------------- /docs_html/_static/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/up.png -------------------------------------------------------------------------------- /docs_html/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/down.png -------------------------------------------------------------------------------- /docs_html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/file.png -------------------------------------------------------------------------------- /docs_html/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/minus.png -------------------------------------------------------------------------------- /docs_html/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/plus.png -------------------------------------------------------------------------------- /docs_html/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/comment.png -------------------------------------------------------------------------------- /docs_html/_static/up-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/up-pressed.png -------------------------------------------------------------------------------- /docs_full/_build/html/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/objects.inv -------------------------------------------------------------------------------- /docs_html/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/ajax-loader.gif -------------------------------------------------------------------------------- /docs_html/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/comment-close.png -------------------------------------------------------------------------------- /docs_html/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/down-pressed.png -------------------------------------------------------------------------------- /docs_full/_build/html/_static/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/up.png -------------------------------------------------------------------------------- /docs_full/napoleon/modules.rst: -------------------------------------------------------------------------------- 1 | src 2 | === 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | awspricingfull 8 | mainexample 9 | -------------------------------------------------------------------------------- /docs_html/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_html/_static/comment-bright.png -------------------------------------------------------------------------------- /docs_full/_build/doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/doctrees/index.doctree -------------------------------------------------------------------------------- /docs_full/_build/html/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/down.png -------------------------------------------------------------------------------- /docs_full/_build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/file.png -------------------------------------------------------------------------------- /docs_full/_build/html/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/minus.png -------------------------------------------------------------------------------- /docs_full/_build/html/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/plus.png -------------------------------------------------------------------------------- /docs_html/_sources/napoleon/modules.txt: -------------------------------------------------------------------------------- 1 | src 2 | === 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | awspricingfull 8 | mainexample 9 | -------------------------------------------------------------------------------- /docs_full/_build/html/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/comment.png -------------------------------------------------------------------------------- /docs_full/_build/doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/doctrees/environment.pickle -------------------------------------------------------------------------------- /docs_full/_build/html/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/ajax-loader.gif -------------------------------------------------------------------------------- /docs_full/_build/html/_static/up-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/up-pressed.png -------------------------------------------------------------------------------- /docs_full/_build/html/_sources/napoleon/modules.txt: -------------------------------------------------------------------------------- 1 | src 2 | === 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | awspricingfull 8 | mainexample 9 | -------------------------------------------------------------------------------- /docs_full/_build/html/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/comment-close.png -------------------------------------------------------------------------------- /docs_full/_build/html/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/down-pressed.png -------------------------------------------------------------------------------- /docs_full/_build/doctrees/napoleon/modules.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/doctrees/napoleon/modules.doctree -------------------------------------------------------------------------------- /docs_full/_build/html/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/html/_static/comment-bright.png -------------------------------------------------------------------------------- /docs_full/_build/doctrees/napoleon/mainexample.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/doctrees/napoleon/mainexample.doctree -------------------------------------------------------------------------------- /docs_full/_build/doctrees/napoleon/awspricingfull.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ilia-semenov/awspricingfull/HEAD/docs_full/_build/doctrees/napoleon/awspricingfull.doctree -------------------------------------------------------------------------------- /docs_full/napoleon/mainexample.rst: -------------------------------------------------------------------------------- 1 | mainexample module 2 | ================== 3 | 4 | .. automodule:: mainexample 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs_html/_sources/napoleon/mainexample.txt: -------------------------------------------------------------------------------- 1 | mainexample module 2 | ================== 3 | 4 | .. automodule:: mainexample 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs_full/napoleon/awspricingfull.rst: -------------------------------------------------------------------------------- 1 | awspricingfull module 2 | ===================== 3 | 4 | .. automodule:: awspricingfull 5 | :members: 6 | :show-inheritance: 7 | :inherited-members: 8 | -------------------------------------------------------------------------------- /docs_full/_build/html/_sources/napoleon/mainexample.txt: -------------------------------------------------------------------------------- 1 | mainexample module 2 | ================== 3 | 4 | .. automodule:: mainexample 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs_html/_sources/napoleon/awspricingfull.txt: -------------------------------------------------------------------------------- 1 | awspricingfull module 2 | ===================== 3 | 4 | .. automodule:: awspricingfull 5 | :members: 6 | :show-inheritance: 7 | :inherited-members: 8 | -------------------------------------------------------------------------------- /docs_full/_build/html/_sources/napoleon/awspricingfull.txt: -------------------------------------------------------------------------------- 1 | awspricingfull module 2 | ===================== 3 | 4 | .. automodule:: awspricingfull 5 | :members: 6 | :show-inheritance: 7 | :inherited-members: 8 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from distutils.core import setup 2 | setup(name='awspricingfull', 3 | version='3.0', 4 | py_modules=['awspricingfull'], 5 | url='https://github.com/ilia-semenov/awspricingfull', 6 | author='Ilia Semenov' 7 | ) 8 | -------------------------------------------------------------------------------- /docs_html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: bff7c6ca07ef72d40a1ed82dedb3183f 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /docs_full/_build/html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: bff7c6ca07ef72d40a1ed82dedb3183f 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /docs_full/index.rst: -------------------------------------------------------------------------------- 1 | .. awspricingfull documentation master file, created by 2 | sphinx-quickstart on Tue May 03 16:52:37 2016. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to awspricingfull's documentation! 7 | ========================================== 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | .. automodule:: awspricingfull 14 | 15 | 16 | Indices and tables 17 | ================== 18 | 19 | * :ref:`genindex` 20 | * :ref:`modindex` 21 | * :ref:`search` 22 | 23 | -------------------------------------------------------------------------------- /docs_html/_sources/index.txt: -------------------------------------------------------------------------------- 1 | .. awspricingfull documentation master file, created by 2 | sphinx-quickstart on Tue May 03 16:52:37 2016. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to awspricingfull's documentation! 7 | ========================================== 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | .. automodule:: awspricingfull 14 | 15 | 16 | Indices and tables 17 | ================== 18 | 19 | * :ref:`genindex` 20 | * :ref:`modindex` 21 | * :ref:`search` 22 | 23 | -------------------------------------------------------------------------------- /docs_full/_build/html/_sources/index.txt: -------------------------------------------------------------------------------- 1 | .. awspricingfull documentation master file, created by 2 | sphinx-quickstart on Tue May 03 16:52:37 2016. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to awspricingfull's documentation! 7 | ========================================== 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | .. automodule:: awspricingfull 14 | 15 | 16 | Indices and tables 17 | ================== 18 | 19 | * :ref:`genindex` 20 | * :ref:`modindex` 21 | * :ref:`search` 22 | 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Ilia Semenov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs_html/_modules/index.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 |
7 | 8 | 9 |51 | Please activate JavaScript to enable the search 52 | functionality. 53 |
54 |56 | From here you can search these documents. Enter your search 57 | words into the box below and click "search". Note that the search 58 | function will automatically search for all of the words. Pages 59 | containing fewer words won't appear in the result list. 60 |
61 | 66 | 67 |51 | Please activate JavaScript to enable the search 52 | functionality. 53 |
54 |56 | From here you can search these documents. Enter your search 57 | words into the box below and click "search". Note that the search 58 | function will automatically search for all of the words. Pages 59 | containing fewer words won't appear in the result list. 60 |
61 | 66 | 67 || 57 | a | ||
| 60 | |
61 | awspricingfull | 62 | |
| 65 | m | ||
| 68 | |
69 | mainexample | 70 | |
| 57 | a | ||
| 60 | |
61 | awspricingfull | 62 | |
| 65 | m | ||
| 68 | |
69 | mainexample | 70 | |
Simple main routine for awspricingfull module.
42 |Call the class corresponding to your needs (EC2Prices(), RDSPrices(), etc.), 43 | and use any method with parameters needed. See the awspricingfull documentation for reference.
44 |In a nutshell: To save CSV use save_csv method for instance of any of the functional classes 45 | (EC2Prices() - EC2, RDSPrices() - RDS, ELCPrices() - ElastiCache, RSPrices() - Redshift, DDBPrices() - DynamoDB). 46 | With save_csv use “reserved” or “ondemand” as first parameter, your path as second (home 47 | dir by default) and file name as third (conventional default). Also, to save prices for all 48 | the products use AllAWSPrices() class and same save_csv method with small difference - you 49 | can set the first parameter to “all” which will return all the pricing (reserved and on-demand 50 | for all the services).
51 |Method print_table is available for EC2Prices(), RDSPrices(), ELCPrices(), RSPrices(), DDBPrices(). It outputs 52 | the pricing in a table format to console. Prettytable library is required. Method takes only one parameter: 53 | “reserved” or “ondemand”. Not available for AllAWSPrices().
54 |Method print_json is available for all classes. It returns the pricing in a JSON format 55 | and does not output it to console. Method takes only one parameter: “reserved” or “ondemand” 56 | and additional “all” for AllAWSPrices().
57 |Created: Mar 26, 2015
58 |Updated: May 3, 2016
59 |@author: Ilia Semenov
60 |@version: 3.0
61 |Simple main routine for awspricingfull module.
42 |Call the class corresponding to your needs (EC2Prices(), RDSPrices(), etc.), 43 | and use any method with parameters needed. See the awspricingfull documentation for reference.
44 |In a nutshell: To save CSV use save_csv method for instance of any of the functional classes 45 | (EC2Prices() - EC2, RDSPrices() - RDS, ELCPrices() - ElastiCache, RSPrices() - Redshift, DDBPrices() - DynamoDB). 46 | With save_csv use “reserved” or “ondemand” as first parameter, your path as second (home 47 | dir by default) and file name as third (conventional default). Also, to save prices for all 48 | the products use AllAWSPrices() class and same save_csv method with small difference - you 49 | can set the first parameter to “all” which will return all the pricing (reserved and on-demand 50 | for all the services).
51 |Method print_table is available for EC2Prices(), RDSPrices(), ELCPrices(), RSPrices(), DDBPrices(). It outputs 52 | the pricing in a table format to console. Prettytable library is required. Method takes only one parameter: 53 | “reserved” or “ondemand”. Not available for AllAWSPrices().
54 |Method print_json is available for all classes. It returns the pricing in a JSON format 55 | and does not output it to console. Method takes only one parameter: “reserved” or “ondemand” 56 | and additional “all” for AllAWSPrices().
57 |Created: Mar 26, 2015
58 |Updated: May 3, 2016
59 |@author: Ilia Semenov
60 |@version: 3.0
61 |Contents:
42 |AWS Instances (EC2, ElastiCache, RDS, Redshift, DynamoDB) pricing retrieval project.
47 |Project contains one module which is designed to retrieve the AWS prices for 48 | five major AWS services that have reserved capacity involved: EC2, ElastiCache, 49 | RDS, Redshift and DynamoDB. The prices either On-Demand or Reserved (specified by user) can 50 | be retrieved to Command Line in JSON, Table (Prettytable) or CSV formats. CSV format 51 | option also saves the csv file to the folder specified by user, which is the main 52 | use case.
53 |The undocumented AWS pricing APIs are used as the sources. The same APIs serve 54 | the data to the AWS pricing pages. 55 | Both current and previous generation instance prices are retrieved.
56 |Update 2.0: New pricing scheme (noUpfront, allUpfront, PartialUpfront) compatibility for RDS and Redshift is added. Minor bugs fixed.
57 |Update 3.0: DynamoDB throughput capacity pricing is added. MariaDB and Aurora are added to RDS. New schema for AllPrices table introduced 58 | (DB and OS columns merged).
59 |Created: 25 March, 2015
60 |Updated: 3 May, 2016
61 |@author: Ilia Semenov
62 |@version: 3.0
63 |Contents:
42 |AWS Instances (EC2, ElastiCache, RDS, Redshift, DynamoDB) pricing retrieval project.
47 |Project contains one module which is designed to retrieve the AWS prices for 48 | five major AWS services that have reserved capacity involved: EC2, ElastiCache, 49 | RDS, Redshift and DynamoDB. The prices either On-Demand or Reserved (specified by user) can 50 | be retrieved to Command Line in JSON, Table (Prettytable) or CSV formats. CSV format 51 | option also saves the csv file to the folder specified by user, which is the main 52 | use case.
53 |The undocumented AWS pricing APIs are used as the sources. The same APIs serve 54 | the data to the AWS pricing pages. 55 | Both current and previous generation instance prices are retrieved.
56 |Update 2.0: New pricing scheme (noUpfront, allUpfront, PartialUpfront) compatibility for RDS and Redshift is added. Minor bugs fixed.
57 |Update 3.0: DynamoDB throughput capacity pricing is added. MariaDB and Aurora are added to RDS. New schema for AllPrices table introduced 58 | (DB and OS columns merged).
59 |Created: 25 March, 2015
60 |Updated: 3 May, 2016
61 |@author: Ilia Semenov
62 |@version: 3.0
63 |' + _('Hide Search Matches') + '
') 207 | .appendTo($('#searchbox')); 208 | } 209 | }, 210 | 211 | /** 212 | * init the domain index toggle buttons 213 | */ 214 | initIndexTable : function() { 215 | var togglers = $('img.toggler').click(function() { 216 | var src = $(this).attr('src'); 217 | var idnum = $(this).attr('id').substr(7); 218 | $('tr.cg-' + idnum).toggle(); 219 | if (src.substr(-9) == 'minus.png') 220 | $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); 221 | else 222 | $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); 223 | }).css('display', ''); 224 | if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { 225 | togglers.click(); 226 | } 227 | }, 228 | 229 | /** 230 | * helper function to hide the search marks again 231 | */ 232 | hideSearchWords : function() { 233 | $('#searchbox .highlight-link').fadeOut(300); 234 | $('span.highlighted').removeClass('highlighted'); 235 | }, 236 | 237 | /** 238 | * make the url absolute 239 | */ 240 | makeURL : function(relativeURL) { 241 | return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; 242 | }, 243 | 244 | /** 245 | * get the current relative url 246 | */ 247 | getCurrentURL : function() { 248 | var path = document.location.pathname; 249 | var parts = path.split(/\//); 250 | $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { 251 | if (this == '..') 252 | parts.pop(); 253 | }); 254 | var url = parts.join('/'); 255 | return path.substring(url.lastIndexOf('/') + 1, path.length - 1); 256 | }, 257 | 258 | initOnKeyListeners: function() { 259 | $(document).keyup(function(event) { 260 | var activeElementType = document.activeElement.tagName; 261 | // don't navigate when in search box or textarea 262 | if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { 263 | switch (event.keyCode) { 264 | case 37: // left 265 | var prevHref = $('link[rel="prev"]').prop('href'); 266 | if (prevHref) { 267 | window.location.href = prevHref; 268 | return false; 269 | } 270 | case 39: // right 271 | var nextHref = $('link[rel="next"]').prop('href'); 272 | if (nextHref) { 273 | window.location.href = nextHref; 274 | return false; 275 | } 276 | } 277 | } 278 | }); 279 | } 280 | }; 281 | 282 | // quick alias for translations 283 | _ = Documentation.gettext; 284 | 285 | $(document).ready(function() { 286 | Documentation.init(); 287 | }); -------------------------------------------------------------------------------- /docs_full/_build/html/_static/doctools.js: -------------------------------------------------------------------------------- 1 | /* 2 | * doctools.js 3 | * ~~~~~~~~~~~ 4 | * 5 | * Sphinx JavaScript utilities for all documentation. 6 | * 7 | * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | /** 13 | * select a different prefix for underscore 14 | */ 15 | $u = _.noConflict(); 16 | 17 | /** 18 | * make the code below compatible with browsers without 19 | * an installed firebug like debugger 20 | if (!window.console || !console.firebug) { 21 | var names = ["log", "debug", "info", "warn", "error", "assert", "dir", 22 | "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", 23 | "profile", "profileEnd"]; 24 | window.console = {}; 25 | for (var i = 0; i < names.length; ++i) 26 | window.console[names[i]] = function() {}; 27 | } 28 | */ 29 | 30 | /** 31 | * small helper function to urldecode strings 32 | */ 33 | jQuery.urldecode = function(x) { 34 | return decodeURIComponent(x).replace(/\+/g, ' '); 35 | }; 36 | 37 | /** 38 | * small helper function to urlencode strings 39 | */ 40 | jQuery.urlencode = encodeURIComponent; 41 | 42 | /** 43 | * This function returns the parsed url parameters of the 44 | * current request. Multiple values per key are supported, 45 | * it will always return arrays of strings for the value parts. 46 | */ 47 | jQuery.getQueryParameters = function(s) { 48 | if (typeof s == 'undefined') 49 | s = document.location.search; 50 | var parts = s.substr(s.indexOf('?') + 1).split('&'); 51 | var result = {}; 52 | for (var i = 0; i < parts.length; i++) { 53 | var tmp = parts[i].split('=', 2); 54 | var key = jQuery.urldecode(tmp[0]); 55 | var value = jQuery.urldecode(tmp[1]); 56 | if (key in result) 57 | result[key].push(value); 58 | else 59 | result[key] = [value]; 60 | } 61 | return result; 62 | }; 63 | 64 | /** 65 | * highlight a given string on a jquery object by wrapping it in 66 | * span elements with the given class name. 67 | */ 68 | jQuery.fn.highlightText = function(text, className) { 69 | function highlight(node) { 70 | if (node.nodeType == 3) { 71 | var val = node.nodeValue; 72 | var pos = val.toLowerCase().indexOf(text); 73 | if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { 74 | var span = document.createElement("span"); 75 | span.className = className; 76 | span.appendChild(document.createTextNode(val.substr(pos, text.length))); 77 | node.parentNode.insertBefore(span, node.parentNode.insertBefore( 78 | document.createTextNode(val.substr(pos + text.length)), 79 | node.nextSibling)); 80 | node.nodeValue = val.substr(0, pos); 81 | } 82 | } 83 | else if (!jQuery(node).is("button, select, textarea")) { 84 | jQuery.each(node.childNodes, function() { 85 | highlight(this); 86 | }); 87 | } 88 | } 89 | return this.each(function() { 90 | highlight(this); 91 | }); 92 | }; 93 | 94 | /* 95 | * backward compatibility for jQuery.browser 96 | * This will be supported until firefox bug is fixed. 97 | */ 98 | if (!jQuery.browser) { 99 | jQuery.uaMatch = function(ua) { 100 | ua = ua.toLowerCase(); 101 | 102 | var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || 103 | /(webkit)[ \/]([\w.]+)/.exec(ua) || 104 | /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || 105 | /(msie) ([\w.]+)/.exec(ua) || 106 | ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || 107 | []; 108 | 109 | return { 110 | browser: match[ 1 ] || "", 111 | version: match[ 2 ] || "0" 112 | }; 113 | }; 114 | jQuery.browser = {}; 115 | jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; 116 | } 117 | 118 | /** 119 | * Small JavaScript module for the documentation. 120 | */ 121 | var Documentation = { 122 | 123 | init : function() { 124 | this.fixFirefoxAnchorBug(); 125 | this.highlightSearchWords(); 126 | this.initIndexTable(); 127 | 128 | }, 129 | 130 | /** 131 | * i18n support 132 | */ 133 | TRANSLATIONS : {}, 134 | PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, 135 | LOCALE : 'unknown', 136 | 137 | // gettext and ngettext don't access this so that the functions 138 | // can safely bound to a different name (_ = Documentation.gettext) 139 | gettext : function(string) { 140 | var translated = Documentation.TRANSLATIONS[string]; 141 | if (typeof translated == 'undefined') 142 | return string; 143 | return (typeof translated == 'string') ? translated : translated[0]; 144 | }, 145 | 146 | ngettext : function(singular, plural, n) { 147 | var translated = Documentation.TRANSLATIONS[singular]; 148 | if (typeof translated == 'undefined') 149 | return (n == 1) ? singular : plural; 150 | return translated[Documentation.PLURALEXPR(n)]; 151 | }, 152 | 153 | addTranslations : function(catalog) { 154 | for (var key in catalog.messages) 155 | this.TRANSLATIONS[key] = catalog.messages[key]; 156 | this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); 157 | this.LOCALE = catalog.locale; 158 | }, 159 | 160 | /** 161 | * add context elements like header anchor links 162 | */ 163 | addContextElements : function() { 164 | $('div[id] > :header:first').each(function() { 165 | $('\u00B6'). 166 | attr('href', '#' + this.id). 167 | attr('title', _('Permalink to this headline')). 168 | appendTo(this); 169 | }); 170 | $('dt[id]').each(function() { 171 | $('\u00B6'). 172 | attr('href', '#' + this.id). 173 | attr('title', _('Permalink to this definition')). 174 | appendTo(this); 175 | }); 176 | }, 177 | 178 | /** 179 | * workaround a firefox stupidity 180 | * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 181 | */ 182 | fixFirefoxAnchorBug : function() { 183 | if (document.location.hash) 184 | window.setTimeout(function() { 185 | document.location.href += ''; 186 | }, 10); 187 | }, 188 | 189 | /** 190 | * highlight the search words provided in the url in the text 191 | */ 192 | highlightSearchWords : function() { 193 | var params = $.getQueryParameters(); 194 | var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; 195 | if (terms.length) { 196 | var body = $('div.body'); 197 | if (!body.length) { 198 | body = $('body'); 199 | } 200 | window.setTimeout(function() { 201 | $.each(terms, function() { 202 | body.highlightText(this.toLowerCase(), 'highlighted'); 203 | }); 204 | }, 10); 205 | $('' + _('Hide Search Matches') + '
') 207 | .appendTo($('#searchbox')); 208 | } 209 | }, 210 | 211 | /** 212 | * init the domain index toggle buttons 213 | */ 214 | initIndexTable : function() { 215 | var togglers = $('img.toggler').click(function() { 216 | var src = $(this).attr('src'); 217 | var idnum = $(this).attr('id').substr(7); 218 | $('tr.cg-' + idnum).toggle(); 219 | if (src.substr(-9) == 'minus.png') 220 | $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); 221 | else 222 | $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); 223 | }).css('display', ''); 224 | if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { 225 | togglers.click(); 226 | } 227 | }, 228 | 229 | /** 230 | * helper function to hide the search marks again 231 | */ 232 | hideSearchWords : function() { 233 | $('#searchbox .highlight-link').fadeOut(300); 234 | $('span.highlighted').removeClass('highlighted'); 235 | }, 236 | 237 | /** 238 | * make the url absolute 239 | */ 240 | makeURL : function(relativeURL) { 241 | return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; 242 | }, 243 | 244 | /** 245 | * get the current relative url 246 | */ 247 | getCurrentURL : function() { 248 | var path = document.location.pathname; 249 | var parts = path.split(/\//); 250 | $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { 251 | if (this == '..') 252 | parts.pop(); 253 | }); 254 | var url = parts.join('/'); 255 | return path.substring(url.lastIndexOf('/') + 1, path.length - 1); 256 | }, 257 | 258 | initOnKeyListeners: function() { 259 | $(document).keyup(function(event) { 260 | var activeElementType = document.activeElement.tagName; 261 | // don't navigate when in search box or textarea 262 | if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { 263 | switch (event.keyCode) { 264 | case 37: // left 265 | var prevHref = $('link[rel="prev"]').prop('href'); 266 | if (prevHref) { 267 | window.location.href = prevHref; 268 | return false; 269 | } 270 | case 39: // right 271 | var nextHref = $('link[rel="next"]').prop('href'); 272 | if (nextHref) { 273 | window.location.href = nextHref; 274 | return false; 275 | } 276 | } 277 | } 278 | }); 279 | } 280 | }; 281 | 282 | // quick alias for translations 283 | _ = Documentation.gettext; 284 | 285 | $(document).ready(function() { 286 | Documentation.init(); 287 | }); -------------------------------------------------------------------------------- /docs_full/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # awspricingfull documentation build configuration file, created by 4 | # sphinx-quickstart on Tue May 03 16:52:37 2016. 5 | # 6 | # This file is execfile()d with the current directory set to its 7 | # containing dir. 8 | # 9 | # Note that not all possible configuration values are present in this 10 | # autogenerated file. 11 | # 12 | # All configuration values have a default; values that are commented out 13 | # serve to show the default. 14 | 15 | import sys 16 | import os 17 | 18 | # If extensions (or modules to document with autodoc) are in another directory, 19 | # add these directories to sys.path here. If the directory is relative to the 20 | # documentation root, use os.path.abspath to make it absolute, like shown here. 21 | sys.path.insert(0,"C:\\Users\\isemenov\\workspace\\awspricingfull\\src") 22 | 23 | # -- General configuration ------------------------------------------------ 24 | 25 | # If your documentation needs a minimal Sphinx version, state it here. 26 | #needs_sphinx = '1.0' 27 | 28 | # Add any Sphinx extension module names here, as strings. They can be 29 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 30 | # ones. 31 | extensions = [ 32 | 'sphinx.ext.autodoc', 33 | 'sphinx.ext.coverage', 34 | 'sphinx.ext.viewcode', 35 | 'sphinx.ext.githubpages', 36 | 'sphinxcontrib.napoleon', 37 | ] 38 | 39 | # Add any paths that contain templates here, relative to this directory. 40 | templates_path = ['_templates'] 41 | 42 | # The suffix(es) of source filenames. 43 | # You can specify multiple suffix as a list of string: 44 | # source_suffix = ['.rst', '.md'] 45 | source_suffix = '.rst' 46 | 47 | # The encoding of source files. 48 | #source_encoding = 'utf-8-sig' 49 | 50 | # The master toctree document. 51 | master_doc = 'index' 52 | 53 | # General information about the project. 54 | project = u'awspricingfull' 55 | copyright = u'2016, Ilia Semenov' 56 | author = u'Ilia Semenov' 57 | 58 | # The version info for the project you're documenting, acts as replacement for 59 | # |version| and |release|, also used in various other places throughout the 60 | # built documents. 61 | # 62 | # The short X.Y version. 63 | version = u'3.0' 64 | # The full version, including alpha/beta/rc tags. 65 | release = u'3.0' 66 | 67 | # The language for content autogenerated by Sphinx. Refer to documentation 68 | # for a list of supported languages. 69 | # 70 | # This is also used if you do content translation via gettext catalogs. 71 | # Usually you set "language" from the command line for these cases. 72 | language = None 73 | 74 | # There are two options for replacing |today|: either, you set today to some 75 | # non-false value, then it is used: 76 | #today = '' 77 | # Else, today_fmt is used as the format for a strftime call. 78 | #today_fmt = '%B %d, %Y' 79 | 80 | # List of patterns, relative to source directory, that match files and 81 | # directories to ignore when looking for source files. 82 | # This patterns also effect to html_static_path and html_extra_path 83 | exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] 84 | 85 | # The reST default role (used for this markup: `text`) to use for all 86 | # documents. 87 | #default_role = None 88 | 89 | # If true, '()' will be appended to :func: etc. cross-reference text. 90 | #add_function_parentheses = True 91 | 92 | # If true, the current module name will be prepended to all description 93 | # unit titles (such as .. function::). 94 | #add_module_names = True 95 | 96 | # If true, sectionauthor and moduleauthor directives will be shown in the 97 | # output. They are ignored by default. 98 | #show_authors = False 99 | 100 | # The name of the Pygments (syntax highlighting) style to use. 101 | pygments_style = 'sphinx' 102 | 103 | # A list of ignored prefixes for module index sorting. 104 | #modindex_common_prefix = [] 105 | 106 | # If true, keep warnings as "system message" paragraphs in the built documents. 107 | #keep_warnings = False 108 | 109 | # If true, `todo` and `todoList` produce output, else they produce nothing. 110 | todo_include_todos = False 111 | 112 | 113 | # -- Options for HTML output ---------------------------------------------- 114 | 115 | # The theme to use for HTML and HTML Help pages. See the documentation for 116 | # a list of builtin themes. 117 | html_theme = 'alabaster' 118 | 119 | # Theme options are theme-specific and customize the look and feel of a theme 120 | # further. For a list of options available for each theme, see the 121 | # documentation. 122 | #html_theme_options = {} 123 | 124 | # Add any paths that contain custom themes here, relative to this directory. 125 | #html_theme_path = [] 126 | 127 | # The name for this set of Sphinx documents. 128 | # "