From eafc15004c5706df6df98b6bc1066ad0334b796e Mon Sep 17 00:00:00 2001 From: Erik Bergenholtz Date: Wed, 12 Mar 2014 13:51:03 -0400 Subject: [PATCH] Renames all doc references from Savanna to Sahara Change-Id: I5249a5a9fcf5ac80c16ef9dfb8c50dcfbfd6f8b8 Implements: blueprint savanna-renaming-docs --- doc/source/_templates/sidebarlinks.html | 4 +- doc/source/architecture.rst | 2 +- doc/source/conf.py | 14 +-- doc/source/devref/development.environment.rst | 38 ++++---- doc/source/devref/development.guidelines.rst | 20 ++-- doc/source/devref/devstack.rst | 8 +- doc/source/devref/gerrit.rst | 6 +- doc/source/devref/how_to_participate.rst | 16 ++-- doc/source/devref/jenkins.rst | 4 +- doc/source/devref/launchpad.rst | 26 +++--- doc/source/devref/plugin.spi.rst | 10 +- doc/source/devref/plugins.rst | 16 ++-- doc/source/devref/quickstart.rst | 34 +++---- doc/source/horizon/dashboard.user.guide.rst | 38 ++++---- doc/source/horizon/dev.environment.guide.rst | 44 ++++----- doc/source/horizon/installation.guide.rst | 32 +++---- doc/source/images/hdp-plugin-architecture.png | Bin 101701 -> 159620 bytes ...chitecture.png => sahara-architecture.png} | Bin doc/source/index.rst | 8 +- doc/source/overview.rst | 30 +++--- doc/source/restapi/index.rst | 2 +- doc/source/restapi/rest_api_v1.0.rst | 88 +++++++++--------- doc/source/restapi/rest_api_v1.1_EDP.rst | 82 ++++++++-------- doc/source/userdoc/diskimagebuilder.rst | 12 +-- doc/source/userdoc/edp.rst | 86 ++++++++--------- doc/source/userdoc/features.rst | 44 ++++----- doc/source/userdoc/guest-requirements.rst | 4 +- doc/source/userdoc/hadoop-swift.rst | 4 +- doc/source/userdoc/hdp_plugin.rst | 14 +-- doc/source/userdoc/installation.guide.rst | 60 ++++++------ doc/source/userdoc/overview.rst | 10 +- doc/source/userdoc/plugins.rst | 2 +- doc/source/userdoc/registering_image.rst | 4 +- doc/source/userdoc/statuses.rst | 44 ++++----- doc/source/userdoc/vanilla_plugin.rst | 2 +- 35 files changed, 404 insertions(+), 404 deletions(-) rename doc/source/images/{savanna-architecture.png => sahara-architecture.png} (100%) diff --git a/doc/source/_templates/sidebarlinks.html b/doc/source/_templates/sidebarlinks.html index 0f8ba58938..af88d86175 100644 --- a/doc/source/_templates/sidebarlinks.html +++ b/doc/source/_templates/sidebarlinks.html @@ -1,7 +1,7 @@

Useful Links

{% if READTHEDOCS %} diff --git a/doc/source/architecture.rst b/doc/source/architecture.rst index 789187ed23..689930ece7 100644 --- a/doc/source/architecture.rst +++ b/doc/source/architecture.rst @@ -1,7 +1,7 @@ Architecture ============ -.. image:: images/savanna-architecture.png +.. image:: images/sahara-architecture.png :width: 800 px :scale: 99 % :align: left diff --git a/doc/source/conf.py b/doc/source/conf.py index a4a6a9a51d..c0d50c6f12 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -55,8 +55,8 @@ source_suffix = '.rst' master_doc = 'index' # General information about the project. -project = u'Savanna' -copyright = u'2013, OpenStack Foundation' +project = u'Sahara' +copyright = u'2014, OpenStack Foundation' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -122,7 +122,7 @@ if on_rtd: # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". -html_title = 'Savanna' +html_title = 'Sahara' # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None @@ -189,7 +189,7 @@ html_sidebars = { #html_file_suffix = None # Output file base name for HTML help builder. -htmlhelp_basename = 'SavannaDoc' +htmlhelp_basename = 'SaharaDoc' # -- Options for LaTeX output -------------------------------------------------- @@ -238,7 +238,7 @@ latex_documents = [ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - ('index', 'savanna', u'Savanna', + ('index', 'sahara', u'Sahara', [u'OpenStack Foundation'], 1) ] @@ -252,8 +252,8 @@ man_pages = [ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - ('index', 'Savanna', u'Savanna', - u'OpenStack Foundation', 'Savanna', 'Savanna', + ('index', 'Sahara', u'Sahara', + u'OpenStack Foundation', 'Sahara', 'Sahara', 'Miscellaneous'), ] diff --git a/doc/source/devref/development.environment.rst b/doc/source/devref/development.environment.rst index e80aa224d8..6dff83316a 100644 --- a/doc/source/devref/development.environment.rst +++ b/doc/source/devref/development.environment.rst @@ -1,24 +1,24 @@ Setting Up a Development Environment ==================================== -This page describes how to point a local running Savanna instance to remote OpenStack. +This page describes how to point a local running Sahara instance to remote OpenStack. You should be able to debug and test your changes without having to deploy. -Setup Local Environment with Savanna inside DevStack ----------------------------------------------------- +Setup Local Environment with Sahara inside DevStack +--------------------------------------------------- -The easiest way to have local Savanna environment with DevStack is to include -Savanna component in DevStack. +The easiest way to have local Sahara environment with DevStack is to include +Sahara component in DevStack. .. toctree:: :maxdepth: 1 devstack -After you install DevStack with Savanna included you can rejoin screen with -``rejoin-stack.sh`` command and switch to ``savanna`` tab. Here you can manage -savanna service as other OpenStack services. Savanna source code is located at -``$DEST/savanna`` which is usually ``/opt/stack/savanna``. +After you install DevStack with Sahara included you can rejoin screen with +``rejoin-stack.sh`` command and switch to ``sahara`` tab. Here you can manage +sahara service as other OpenStack services. Sahara source code is located at +``$DEST/sahara`` which is usually ``/opt/stack/sahara``. Setup Local Environment with external OpenStack ----------------------------------------------- @@ -52,8 +52,8 @@ On Fedora-based distributions (e.g., Fedora/RHEL/CentOS/Scientific Linux): .. sourcecode:: console - $ git clone git://github.com/openstack/savanna.git - $ cd savanna + $ git clone git://github.com/openstack/sahara.git + $ cd sahara 3. Prepare virtual environment: @@ -65,9 +65,9 @@ On Fedora-based distributions (e.g., Fedora/RHEL/CentOS/Scientific Linux): .. sourcecode:: console - $ cp ./etc/savanna/savanna.conf.sample-basic ./etc/savanna/savanna.conf + $ cp ./etc/sahara/sahara.conf.sample-basic ./etc/sahara/sahara.conf -5. Look through the savanna.conf and change parameters which default values do +5. Look through the sahara.conf and change parameters which default values do not suite you. Set ``os_auth_host`` to the address of OpenStack keystone. If you are using Neutron instead of Nova Network add ``use_neutron = True`` to @@ -76,23 +76,23 @@ also specify ``use_namespaces = True``. .. note:: - Config file can be specified for ``savanna-api`` command using ``--config-file`` flag. + Config file can be specified for ``sahara-api`` command using ``--config-file`` flag. 6. Create database schema: .. sourcecode:: console - $ tox -evenv -- savanna-db-manage --config-file etc/savanna/savanna.conf upgrade head + $ tox -evenv -- sahara-db-manage --config-file etc/sahara/sahara.conf upgrade head -7. To start Savanna call: +7. To start Sahara call: .. sourcecode:: console - $ tox -evenv -- savanna-api --config-file etc/savanna/savanna.conf -d + $ tox -evenv -- sahara-api --config-file etc/sahara/sahara.conf -d -Setup local OpenStack dashboard with Savanna plugin ---------------------------------------------------- +Setup local OpenStack dashboard with Sahara plugin +-------------------------------------------------- .. toctree:: :maxdepth: 1 diff --git a/doc/source/devref/development.guidelines.rst b/doc/source/devref/development.guidelines.rst index b188a6d8ff..a3e8af8f85 100644 --- a/doc/source/devref/development.guidelines.rst +++ b/doc/source/devref/development.guidelines.rst @@ -4,7 +4,7 @@ Development Guidelines Coding Guidelines ----------------- -For all the code in Savanna we have a rule - it should pass `PEP 8`_. +For all the code in Sahara we have a rule - it should pass `PEP 8`_. To check your code against PEP 8 run: @@ -14,22 +14,22 @@ To check your code against PEP 8 run: .. note:: For more details on coding guidelines see file ``HACKING.rst`` in the root - of Savanna repo. + of Sahara repo. Testing Guidelines ------------------ -Savanna has a suite of tests that are run on all submitted code, +Sahara has a suite of tests that are run on all submitted code, and it is recommended that developers execute the tests themselves to catch regressions early. Developers are also expected to keep the test suite up-to-date with any submitted code changes. -Unit tests are located at ``savanna/tests``. +Unit tests are located at ``sahara/tests``. -Savanna's suite of unit tests can be executed in an isolated environment +Sahara's suite of unit tests can be executed in an isolated environment with `Tox`_. To execute the unit tests run the following from the root of -Savanna repo: +Sahara repo: .. sourcecode:: console @@ -39,9 +39,9 @@ Savanna repo: Documentation Guidelines ------------------------ -All Savanna docs are written using Sphinx / RST and located in the main repo +All Sahara docs are written using Sphinx / RST and located in the main repo in ``doc`` directory. You can add/edit pages here to update -https://savanna.readthedocs.org/en/latest/ site. +http://docs.openstack.org/developer/sahara site. The documentation in docstrings should follow the `PEP 257`_ conventions (as mentioned in the `PEP 8`_ guidelines). @@ -74,7 +74,7 @@ To make docs generation process faster you can use: $ SPHINX_DEBUG=1 tox -e docs -or to avoid savanna reinstallation to virtual env each time you want to rebuild +or to avoid sahara reinstallation to virtual env each time you want to rebuild docs you can use the following command (it could be executed only after running ``tox -e docs`` first time): @@ -86,7 +86,7 @@ running ``tox -e docs`` first time): .. note:: For more details on documentation guidelines see file HACKING.rst in the root - of Savanna repo. + of Sahara repo. .. _PEP 8: http://www.python.org/dev/peps/pep-0008/ diff --git a/doc/source/devref/devstack.rst b/doc/source/devref/devstack.rst index fdbf6c047b..a3a4e4c735 100644 --- a/doc/source/devref/devstack.rst +++ b/doc/source/devref/devstack.rst @@ -86,7 +86,7 @@ Now we are going to install DevStack in VM we just created. So, connect to VM wi # But only use the top end of the network by using a /27 and starting at the 224 octet. FLOATING_RANGE=192.168.55.224/27 - # Enable auto assignment of floating IPs. By default Savanna expects this setting to be enabled + # Enable auto assignment of floating IPs. By default Sahara expects this setting to be enabled EXTRA_OPTS=(auto_assign_floating_ip=True) # Enable logging @@ -97,12 +97,12 @@ Now we are going to install DevStack in VM we just created. So, connect to VM wi # access to install prerequisites and fetch repositories. # OFFLINE=True -3. If you would like to have Savanna included into devstack add the following lines to ``localrc``: +3. If you would like to have Sahara included into devstack add the following lines to ``localrc``: .. sourcecode:: bash - # Enable Savanna - ENABLED_SERVICES+=,savanna + # Enable Sahara + ENABLED_SERVICES+=,sahara 4. Start DevStack: diff --git a/doc/source/devref/gerrit.rst b/doc/source/devref/gerrit.rst index 794f25e118..f17cf13fa8 100644 --- a/doc/source/devref/gerrit.rst +++ b/doc/source/devref/gerrit.rst @@ -1,11 +1,11 @@ Code Reviews with Gerrit ======================== -Savanna uses the `Gerrit`_ tool to review proposed code changes. The review site +Sahara uses the `Gerrit`_ tool to review proposed code changes. The review site is http://review.openstack.org. Gerrit is a complete replacement for Github pull requests. `All Github pull -requests to the Savanna repository will be ignored`. +requests to the Sahara repository will be ignored`. See `Gerrit Workflow Quick Reference`_ for information about how to get started using Gerrit. See `Gerrit, Jenkins and Github`_ for more detailed @@ -13,4 +13,4 @@ documentation on how to work with Gerrit. .. _Gerrit: http://code.google.com/p/gerrit .. _Gerrit, Jenkins and Github: http://wiki.openstack.org/GerritJenkinsGithub -.. _Gerrit Workflow Quick Reference: http://wiki.openstack.org/GerritWorkflow \ No newline at end of file +.. _Gerrit Workflow Quick Reference: http://wiki.openstack.org/GerritWorkflow diff --git a/doc/source/devref/how_to_participate.rst b/doc/source/devref/how_to_participate.rst index c3590fda96..25c9c32d9f 100644 --- a/doc/source/devref/how_to_participate.rst +++ b/doc/source/devref/how_to_participate.rst @@ -4,13 +4,13 @@ How to Participate Getting started --------------- -* Create account on `Github `_ +* Create account on `Github `_ (if you don't have one) * Make sure that your local git is properly configured by executing ``git config --list``. If not, configure ``user.name``, ``user.email`` -* Create account on `Launchpad `_ +* Create account on `Launchpad `_ (if you don't have one) * Subscribe to `OpenStack general mail-list `_ @@ -28,9 +28,9 @@ Getting started * Subscribe to code-reviews. Go to your settings on http://review.openstack.org * Go to ``watched projects`` - * Add ``openstack/savanna``, ``openstack/savanna-dashboard``, - ``openstack/savanna-extra``, ``openstack/python-savannaclient``, - ``openstack/savanna-image-elements`` + * Add ``openstack/sahara``, ``openstack/sahara-dashboard``, + ``openstack/sahara-extra``, ``openstack/python-saharaclient``, + ``openstack/sahara-image-elements`` How to stay in touch with the community? @@ -38,9 +38,9 @@ How to stay in touch with the community? * If you have something to discuss use `OpenStack development mail-list `_. - Prefix mail subject with ``[Savanna]`` + Prefix mail subject with ``[Sahara]`` -* Join ``#savanna`` IRC channel on `freenode `_ +* Join ``#sahara`` IRC channel on `freenode `_ * Join public weekly meetings on *Thursdays at 18:00 UTC* on ``#openstack-meeting-alt`` IRC channel @@ -49,7 +49,7 @@ How to stay in touch with the community? How to send your first patch on review? --------------------------------------- -* Checkout Savanna code from `Github `_ +* Checkout Sahara code from `Github `_ * Carefully read https://wiki.openstack.org/wiki/Gerrit_Workflow diff --git a/doc/source/devref/jenkins.rst b/doc/source/devref/jenkins.rst index c706bf9b58..e2c5e1aa18 100644 --- a/doc/source/devref/jenkins.rst +++ b/doc/source/devref/jenkins.rst @@ -1,7 +1,7 @@ Continuous Integration with Jenkins =================================== -Each change made to Savanna core code is tested with unit and integration tests and style checks flake8. +Each change made to Sahara core code is tested with unit and integration tests and style checks flake8. Unit tests and style checks are performed on public `OpenStack Jenkins `_ managed by `Zuul `_. Unit tests are checked using both python 2.6 and python 2.7. @@ -14,4 +14,4 @@ Also a test job is launched on a created Cluster to verify Hadoop work. All integration tests are launched by `Jenkins `_ on internal Mirantis OpenStack Lab. Jenkins keeps a pool of VMs to run tests in parallel. Still integration testing may take a while. -The integration tests result is +1 or -1 to *Verify* column in a code review from *savanna-ci* user. \ No newline at end of file +The integration tests result is +1 or -1 to *Verify* column in a code review from *savanna-ci* user. diff --git a/doc/source/devref/launchpad.rst b/doc/source/devref/launchpad.rst index 518f406b85..8ee6701ef1 100644 --- a/doc/source/devref/launchpad.rst +++ b/doc/source/devref/launchpad.rst @@ -1,8 +1,8 @@ Project hosting with Launchpad ============================== -`Launchpad`_ hosts the Savanna project. The Savanna project homepage on Launchpad is -http://launchpad.net/savanna. +`Launchpad`_ hosts the Sahara project. The Sahara project homepage on Launchpad is +http://launchpad.net/sahara. Launchpad credentials --------------------- @@ -18,31 +18,31 @@ OpenStack-related sites. These sites include: Mailing list ------------ -The mailing list email is ``savanna-all@lists.launchpad.net``. To participate in the mailing list: +The mailing list email is ``sahara-all@lists.launchpad.net``. To participate in the mailing list: -#. Join the `Savanna Team`_ on Launchpad. -#. Subscribe to the list on the `Savanna Team`_ page on Launchpad. +#. Join the `Sahara Team`_ on Launchpad. +#. Subscribe to the list on the `Sahara Team`_ page on Launchpad. -The mailing list archives are at https://lists.launchpad.net/savanna-all +The mailing list archives are at https://lists.launchpad.net/sahara-all Bug tracking ------------ -Report Savanna bugs at https://bugs.launchpad.net/savanna +Report Sahara bugs at https://bugs.launchpad.net/sahara Feature requests (Blueprints) ----------------------------- -Savanna uses Launchpad Blueprints to track feature requests. Blueprints are at -https://blueprints.launchpad.net/savanna. +Sahara uses Launchpad Blueprints to track feature requests. Blueprints are at +https://blueprints.launchpad.net/sahara. Technical support (Answers) --------------------------- -Savanna uses Launchpad Answers to track Savanna technical support questions. The Savanna -Answers page is at https://answers.launchpad.net/savanna +Sahara uses Launchpad Answers to track Sahara technical support questions. The Sahara +Answers page is at https://answers.launchpad.net/sahara .. _Launchpad: http://launchpad.net -.. _Wiki: http://wiki.openstack.org/savanna -.. _Savanna Team: https://launchpad.net/~savanna-all \ No newline at end of file +.. _Wiki: http://wiki.openstack.org/sahara +.. _Sahara Team: https://launchpad.net/~sahara-all diff --git a/doc/source/devref/plugin.spi.rst b/doc/source/devref/plugin.spi.rst index fb4645ff8b..d0fae529a0 100644 --- a/doc/source/devref/plugin.spi.rst +++ b/doc/source/devref/plugin.spi.rst @@ -75,7 +75,7 @@ For instance, plugin can ask for additional VMs for the management tool. configure_cluster(cluster) ~~~~~~~~~~~~~~~~~~~~~~~~~~ -Configures cluster on provisioned by savanna VMs. +Configures cluster on provisioned by Sahara VMs. In this function plugin should perform all actions like adjusting OS, installing required packages (including Hadoop, if needed), configuring Hadoop, etc. *Returns*: None @@ -109,7 +109,7 @@ convert(config, plugin_name, version, template_name, cluster_template_create) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Provides plugin with ability to create cluster based on plugin-specific config. -Savanna expects plugin to fill in all the required fields. +Sahara expects plugin to fill in all the required fields. The last argument is the function that plugin should call to save the Cluster Template. See “Cluster Lifecycle for Config File Mode” section below for clarification. @@ -117,7 +117,7 @@ See “Cluster Lifecycle for Config File Mode” section below for clarification on_terminate_cluster(cluster) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -When user terminates cluster, Savanna simply shuts down all the cluster VMs. This method is guaranteed to be invoked before that, allowing plugin to do some clean-up. +When user terminates cluster, Sahara simply shuts down all the cluster VMs. This method is guaranteed to be invoked before that, allowing plugin to do some clean-up. *Returns*: None @@ -220,7 +220,7 @@ An instance created for cluster. +---------------+---------+---------------------------------------------------------+ | nova_info | object | Nova Instance object. | +---------------+---------+---------------------------------------------------------+ -| username | string | Username, that Savanna uses for establishing remote | +| username | string | Username, that Sahara uses for establishing remote | | | | connections to instance. | +---------------+---------+---------------------------------------------------------+ | hostname | string | Same as instance_name. | @@ -261,7 +261,7 @@ Group of instances. +----------------------+--------+--------------------------------------------------------+ | count | int | Number of instances in this Node Group. | +----------------------+--------+--------------------------------------------------------+ -| username | string | Username used by Savanna to establish remote | +| username | string | Username used by Sahara to establish remote | | | | connections to instances. | +----------------------+--------+--------------------------------------------------------+ | configuration | dict | Merged dictionary of node configurations and cluster | diff --git a/doc/source/devref/plugins.rst b/doc/source/devref/plugins.rst index 10eb4f48be..834e60c0dd 100644 --- a/doc/source/devref/plugins.rst +++ b/doc/source/devref/plugins.rst @@ -1,22 +1,22 @@ Pluggable Provisioning Mechanism ================================ -Savanna could be integrated with 3rd party management tools like Apache Ambari +Sahara could be integrated with 3rd party management tools like Apache Ambari and Cloudera Management Console. The integration is achieved using plugin mechanism. -In short, responsibilities are divided between Savanna core and plugin as -follows. Savanna interacts with user and provisions infrastructure (VMs). +In short, responsibilities are divided between Sahara core and plugin as +follows. Sahara interacts with user and provisions infrastructure (VMs). Plugin installs and configures Hadoop cluster on the VMs. Optionally Plugin -could deploy management and monitoring tools for the cluster. Savanna +could deploy management and monitoring tools for the cluster. Sahara provides plugin with utility methods to work with VMs. -A plugin must extend `savanna.plugins.provisioning:ProvisioningPluginBase` +A plugin must extend `sahara.plugins.provisioning:ProvisioningPluginBase` class and implement all the required methods. Read :doc:`plugin.spi` for details. -The `instance` objects provided by Savanna have `remote` property which +The `instance` objects provided by Sahara have `remote` property which could be used to work with VM. The `remote` is a context manager so you can use it in `with instance.remote:` statements. The list of available -commands could be found in `savanna.utils.remote.InstanceInteropHelper`. -See Vanilla plugin source for usage examples. \ No newline at end of file +commands could be found in `sahara.utils.remote.InstanceInteropHelper`. +See Vanilla plugin source for usage examples. diff --git a/doc/source/devref/quickstart.rst b/doc/source/devref/quickstart.rst index 2f001761de..2a30b32a67 100644 --- a/doc/source/devref/quickstart.rst +++ b/doc/source/devref/quickstart.rst @@ -4,11 +4,11 @@ Quickstart guide This guide will help you to setup vanilla Hadoop cluster using :doc:`../userdoc/rest_api_v1.0`. -1. Install Savanna ------------------- +1. Install Sahara +----------------- * If you want to hack the code follow :doc:`development.environment`. -* If you just want to install and use Savanna follow :doc:`../userdoc/installation.guide`. +* If you just want to install and use Sahara follow :doc:`../userdoc/installation.guide`. 2. Keystone endpoints setup @@ -17,7 +17,7 @@ This guide will help you to setup vanilla Hadoop cluster using To use CLI tools, such as OpenStack's python clients, we should specify environment variables with addresses and credentials. Let's mind that we have keystone at ``127.0.0.1:5000`` with tenant ``admin``, credentials ``admin:nova`` -and Savanna API at ``127.0.0.1:8386``. Here is a list of commands to set env: +and Sahara API at ``127.0.0.1:8386``. Here is a list of commands to set env: .. sourcecode:: console @@ -68,8 +68,8 @@ images yourself: .. sourcecode:: console $ ssh user@hostname - $ wget http://savanna-files.mirantis.com/savanna-0.3-vanilla-1.2.1-ubuntu-13.04.qcow2 - $ glance image-create --name=savanna-0.3-vanilla-1.2.1-ubuntu-13.04 \ + $ wget http://sahara-files.mirantis.com/savanna-0.3-vanilla-1.2.1-ubuntu-13.04.qcow2 + $ glance image-create --name=sahara-0.3-vanilla-1.2.1-ubuntu-13.04 \ --disk-format=qcow2 --container-format=bare < ./savanna-0.3-vanilla-1.2.1-ubuntu-13.04.qcow2 @@ -78,8 +78,8 @@ images yourself: .. sourcecode:: console $ ssh user@hostname - $ wget http://savanna-files.mirantis.com/savanna-0.3-vanilla-1.2.1-fedora-19.qcow2 - $ glance image-create --name=savanna-0.3-vanilla-1.2.1-fedora-19 \ + $ wget http://sahara-files.mirantis.com/savanna-0.3-vanilla-1.2.1-fedora-19.qcow2 + $ glance image-create --name=sahara-0.3-vanilla-1.2.1-fedora-19 \ --disk-format=qcow2 --container-format=bare < ./savanna-0.3-vanilla-1.2.1-fedora-19.qcow2 @@ -90,11 +90,11 @@ Save image id. You can get image id from command ``glance image-list``: .. sourcecode:: console - $ glance image-list --name savanna-0.3-vanilla-1.2.1-ubuntu-13.04 + $ glance image-list --name sahara-0.3-vanilla-1.2.1-ubuntu-13.04 +--------------------------------------+-----------------------------------------+ | ID | Name | +--------------------------------------+-----------------------------------------+ - | 3f9fc974-b484-4756-82a4-bff9e116919b | savanna-0.3-vanilla-1.2.1-ubuntu-13.04 | + | 3f9fc974-b484-4756-82a4-bff9e116919b | sahara-0.3-vanilla-1.2.1-ubuntu-13.04 | +--------------------------------------+-----------------------------------------+ $ export IMAGE_ID="3f9fc974-b484-4756-82a4-bff9e116919b" @@ -103,7 +103,7 @@ Save image id. You can get image id from command ``glance image-list``: 4. Register image in Image Registry ----------------------------------- -* Now we will actually start to interact with Savanna. +* Now we will actually start to interact with Sahara. .. sourcecode:: console @@ -115,7 +115,7 @@ Save image id. You can get image id from command ``glance image-list``: $ sudo pip install httpie -* Send POST request to Savanna API to register image with username ``ubuntu``. +* Send POST request to Sahara API to register image with username ``ubuntu``. .. sourcecode:: console @@ -156,7 +156,7 @@ Save image id. You can get image id from command ``glance image-list``: }, "minDisk": 0, "minRam": 0, - "name": "savanna-0.3-vanilla-1.2.1-ubuntu-13.04", + "name": "sahara-0.3-vanilla-1.2.1-ubuntu-13.04", "progress": 100, "status": "ACTIVE", "tags": [ @@ -200,7 +200,7 @@ following content: "node_processes": ["tasktracker", "datanode"] } -Send POST requests to Savanna API to upload NodeGroup templates: +Send POST requests to Sahara API to upload NodeGroup templates: .. sourcecode:: console @@ -212,7 +212,7 @@ Send POST requests to Savanna API to upload NodeGroup templates: You can list available NodeGroup templates by sending the following request to -Savanna API: +Sahara API: .. sourcecode:: console @@ -294,7 +294,7 @@ following content: ] } -Send POST request to Savanna API to upload Cluster template: +Send POST request to Sahara API to upload Cluster template: .. sourcecode:: console @@ -328,7 +328,7 @@ your own keypair in in Horizon UI, or using the command line client: nova keypair-add stack --pub-key $PATH_TO_PUBLIC_KEY -Send POST request to Savanna API to create and start the cluster: +Send POST request to Sahara API to create and start the cluster: .. sourcecode:: console diff --git a/doc/source/horizon/dashboard.user.guide.rst b/doc/source/horizon/dashboard.user.guide.rst index 7b6f6043f7..16e57a1867 100644 --- a/doc/source/horizon/dashboard.user.guide.rst +++ b/doc/source/horizon/dashboard.user.guide.rst @@ -1,15 +1,15 @@ -Savanna UI User Guide -===================== +Sahara UI User Guide +==================== -This guide assumes that you already have savanna-api and the Savanna Dashboard configured and running. +This guide assumes that you already have sahara-api and the Sahara Dashboard configured and running. If you require assistance with that, please see the installation guides. -Launching a cluster via the Savanna Dashboard ---------------------------------------------- +Launching a cluster via the Sahara Dashboard +-------------------------------------------- Registering an Image -------------------- -1) Navigate to the "Savanna" tab in the dashboard, then click on the "Image Registry" panel. +1) Navigate to the "Sahara" tab in the dashboard, then click on the "Image Registry" panel. 2) From that page, click on the "Register Image" button at the top right. @@ -24,7 +24,7 @@ Registering an Image Create Node Group Templates --------------------------- -1) Navigate to the "Savanna" tab in the dashboard, then click on the "Node Group Templates" panel. +1) Navigate to the "Sahara" tab in the dashboard, then click on the "Node Group Templates" panel. 2) From that page, click on the "Create Template" button at the top right. @@ -43,7 +43,7 @@ Create Node Group Templates Create a Cluster Template ------------------------- -1) Navigate to the "Savanna" tab in the dashboard, then click on the "Cluster Templates" panel. +1) Navigate to the "Sahara" tab in the dashboard, then click on the "Cluster Templates" panel. 2) From that page, click on the "Create Template" button at the top right. @@ -64,7 +64,7 @@ Create a Cluster Template Launching a Cluster ------------------- -1) Navigate to the "Savanna" tab in the dashboard, then click on the "Clusters" panel. +1) Navigate to the "Sahara" tab in the dashboard, then click on the "Clusters" panel. 2) Click on the "Launch Cluster" button at the top right. @@ -85,7 +85,7 @@ Launching a Cluster Scaling a Cluster ----------------- -1) From the Savanna/Clusters page, click on the "Scale Cluster" button of the row that contains the cluster that you want to scale. +1) From the Sahara/Clusters page, click on the "Scale Cluster" button of the row that contains the cluster that you want to scale. 2) You can adjust the numbers of instances for existing Node Group Templates. @@ -102,11 +102,11 @@ Data Sources ------------ Data Sources are where the input and output from your jobs are housed. -1) From the Savanna/Data Sources page, click on the "Create Data Source" button at the top right. +1) From the Sahara/Data Sources page, click on the "Create Data Source" button at the top right. 2) Give your Data Source a name. -3) Enter the URL to the Data Source. For a Swift object, the url will look like .savanna/. The "swift://" is automatically added for you. +3) Enter the URL to the Data Source. For a Swift object, the url will look like .sahara/. The "swift://" is automatically added for you. 4) Enter the username and password for the Data Source. @@ -120,14 +120,14 @@ Job Binaries ------------ Job Binaries are where you define/upload the source code (mains and libraries) for your job. -1) From the Savanna/Job Binaries page, click on the "Create Job Binary" button at the top right. +1) From the Sahara/Job Binaries page, click on the "Create Job Binary" button at the top right. 2) Give your Job Binary a name (this can be different than the actual filename). 3) Choose the type of storage for your Job Binary. - - For "Swift Internal", you will need to enter the URL of your binary (.savanna/) as well as the username and password. - - For "Savanna internal database", you can choose from a pre-existing "job binary internal", "Create a script" or "Upload a new file". + - For "Swift Internal", you will need to enter the URL of your binary (.sahara/) as well as the username and password. + - For "Sahara internal database", you can choose from a pre-existing "job binary internal", "Create a script" or "Upload a new file". 4) Enter an optional description. @@ -139,7 +139,7 @@ Jobs ---- Jobs are where you define the type of job you'd like to run as well as which "Job Binaries" are required. -1) From the Savanna/Jobs page, click on the "Create Job" button at the top right. +1) From the Sahara/Jobs page, click on the "Create Job" button at the top right. 2) Give your Job a name. @@ -157,7 +157,7 @@ Job Executions -------------- Job Executions are what you get by "Launching" a job. You can monitor the status of your job to see when it has completed its run. -1) From the Savanna/Jobs page, find the row that contains the job you want to launch and click on the "Launch Job" button at the right side of that row. +1) From the Sahara/Jobs page, find the row that contains the job you want to launch and click on the "Launch Job" button at the right side of that row. 2) Choose the cluster (already running--see `Launching a Cluster`_ above) on which you would like the job to run. @@ -168,9 +168,9 @@ Job Executions are what you get by "Launching" a job. You can monitor the statu - Additional configuration properties can be defined by clicking on the "Add" button. - An example configuration entry might be mapred.mapper.class for the Name and org.apache.oozie.example.SampleMapper for the Value. -5) Click on "Launch". To monitor the status of your job, you can navigate to the Savanna/Job Executions panel. +5) Click on "Launch". To monitor the status of your job, you can navigate to the Sahara/Job Executions panel. Additional Notes ---------------- -1) Throughout the Savanna UI, you will find that if you try to delete an object that you will not be able to delete it if another object depends on it. +1) Throughout the Sahara UI, you will find that if you try to delete an object that you will not be able to delete it if another object depends on it. An example of this would be trying to delete a Job that has an existing Job Execution. In order to be able to delete that job, you would first need to delete any Job Executions that relate to that job. diff --git a/doc/source/horizon/dev.environment.guide.rst b/doc/source/horizon/dev.environment.guide.rst index c8e87fada2..3050fbaba7 100644 --- a/doc/source/horizon/dev.environment.guide.rst +++ b/doc/source/horizon/dev.environment.guide.rst @@ -1,28 +1,28 @@ -Savanna UI Dev Environment Setup -============================================ +Sahara UI Dev Environment Setup +=============================== Install as a part of DevStack ----------------------------- -The easiest way to have local Savanna UI environment with DevStack is to -include Savanna component in DevStack. +The easiest way to have local Sahara UI environment with DevStack is to +include Sahara component in DevStack. .. toctree:: :maxdepth: 1 ../devref/devstack -After Savanna installation as a part of DevStack Horizon will contain Savanna -tab. Savanna dashboard source code will be located at -``$DEST/savanna_dashboard`` which is usually ``/opt/stack/savanna_dashboard``. +After Sahara installation as a part of DevStack Horizon will contain Sahara +tab. Sahara dashboard source code will be located at +``$DEST/sahara_dashboard`` which is usually ``/opt/stack/sahara_dashboard``. -Isolated Dashboard for Savanna ------------------------------- +Isolated Dashboard for Sahara +----------------------------- These installation steps suite for two purposes: * to setup dev environment - * to setup isolated Dashboard for Savanna + * to setup isolated Dashboard for Sahara Note that the host where you're going to perform installation has to be able to connected to all OpenStack endpoints. You can list all available @@ -77,7 +77,7 @@ and set right value for variables: .. sourcecode:: python OPENSTACK_HOST = "ip of your controller" - SAVANNA_URL = "url for savanna (e.g. "http://localhost:8386/v1.1")" + SAVANNA_URL = "url for sahara (e.g. "http://localhost:8386/v1.1")" If you are using Neutron instead of Nova Network: @@ -92,43 +92,43 @@ If you are not using nova-network with auto_assign_floating_ip=True, also set: AUTO_ASSIGNMENT_ENABLED = False .. -5. Clone savanna-dashboard sources from ``https://github.com/openstack/savanna-dashboard.git`` +5. Clone sahara-dashboard sources from ``https://github.com/openstack/sahara-dashboard.git`` .. sourcecode:: console - $ git clone https://github.com/openstack/savanna-dashboard.git + $ git clone https://github.com/openstack/sahara-dashboard.git -6. Export SAVANNA_DASHBOARD_HOME environment variable with path to savanna-dashboard folder. E.g.: +6. Export SAVANNA_DASHBOARD_HOME environment variable with path to sahara-dashboard folder. E.g.: .. sourcecode:: console - $ export SAVANNA_DASHBOARD_HOME=$(pwd)/savanna-dashboard + $ export SAVANNA_DASHBOARD_HOME=$(pwd)/sahara-dashboard -7. Install savanna-dashboard module to horizon's venv. Go to horizon folder and execute: +7. Install sahara-dashboard module to horizon's venv. Go to horizon folder and execute: .. sourcecode:: console $ .venv/bin/pip install $SAVANNA_DASHBOARD_HOME -8. Create a symlink to savanna-dashboard source +8. Create a symlink to sahara-dashboard source .. sourcecode:: console - $ ln -s $SAVANNA_DASHBOARD_HOME/savannadashboard .venv/lib/python2.7/site-packages/savannadashboard + $ ln -s $SAVANNA_DASHBOARD_HOME/saharadashboard .venv/lib/python2.7/site-packages/saharadashboard -9. In ``openstack_dashboard/settings.py`` add savanna to +9. In ``openstack_dashboard/settings.py`` add sahara to .. sourcecode:: python HORIZON_CONFIG = { - 'dashboards': ('nova', 'syspanel', 'settings', 'savanna'), + 'dashboards': ('nova', 'syspanel', 'settings', 'sahara'), -and add savannadashboard to +and add saharadashboard to .. sourcecode:: python INSTALLED_APPS = ( - 'savannadashboard', + 'saharadashboard', .... 10. Start horizon diff --git a/doc/source/horizon/installation.guide.rst b/doc/source/horizon/installation.guide.rst index 223c11c34d..02e55044d5 100644 --- a/doc/source/horizon/installation.guide.rst +++ b/doc/source/horizon/installation.guide.rst @@ -1,10 +1,10 @@ -Savanna UI Installation Guide -============================= +Sahara UI Installation Guide +============================ -Savanna UI is a plugin for OpenStack Dashboard. There are two ways to install +Sahara UI is a plugin for OpenStack Dashboard. There are two ways to install it. One is to plug it into existing Dashboard installation and another is -to setup another Dashboard and plug Savanna UI there. The first approach -advantage is that you will have Savanna UI in the very same Dashboard with +to setup another Dashboard and plug Sahara UI there. The first approach +advantage is that you will have Sahara UI in the very same Dashboard with which you work with OpenStack. The disadvantage is that you have to tweak your Dashboard configuration in order to enable the plugin. The second approach does not have this disadvantage. @@ -17,12 +17,12 @@ approach see :doc:`/horizon/dev.environment.guide` 1) OpenStack environment (Folsom, Grizzly or Havana version) installed. -2) Savanna installed, configured and running, see :doc:`/userdoc/installation.guide`. +2) Sahara installed, configured and running, see :doc:`/userdoc/installation.guide`. -2. Savanna Dashboard Installation +2. Sahara Dashboard Installation --------------------------------- -1) Go to the machine where Dashboard resides and install Savanna UI: +1) Go to the machine where Dashboard resides and install Sahara UI: For RDO: @@ -35,29 +35,29 @@ approach see :doc:`/horizon/dev.environment.guide` .. sourcecode:: console - $ sudo pip install savanna-dashboard + $ sudo pip install sahara-dashboard .. - This will install latest stable release of Savanna UI. If you want to install master branch of Savanna UI: + This will install latest stable release of Sahara UI. If you want to install master branch of Sahara UI: .. sourcecode:: console - $ sudo pip install 'http://tarballs.openstack.org/savanna-dashboard/savanna-dashboard-master.tar.gz' + $ sudo pip install 'http://tarballs.openstack.org/sahara-dashboard/sahara-dashboard-master.tar.gz' -2) Configure OpenStack Dashboard. In ``settings.py`` add savanna to +2) Configure OpenStack Dashboard. In ``settings.py`` add sahara to .. sourcecode:: python HORIZON_CONFIG = { - 'dashboards': ('nova', 'syspanel', 'settings', ..., 'savanna'), + 'dashboards': ('nova', 'syspanel', 'settings', ..., 'sahara'), .. - and also add savannadashboard to + and also add saharadashboard to .. sourcecode:: python INSTALLED_APPS = ( - 'savannadashboard', + 'saharadashboard', .... .. @@ -106,4 +106,4 @@ If you are not using nova-network with auto_assign_floating_ip=True, also set: .. - You can check that service has been started successfully. Go to Horizon URL and if installation is correct you'll be able to see the Savanna tab. + You can check that service has been started successfully. Go to Horizon URL and if installation is correct you'll be able to see the Sahara tab. diff --git a/doc/source/images/hdp-plugin-architecture.png b/doc/source/images/hdp-plugin-architecture.png index 973ebb3920429036a6fc7a93386221da0ff3e219..aada367610907472fe498a3ff2605db2a512f863 100644 GIT binary patch literal 159620 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 diff --git a/doc/source/images/savanna-architecture.png b/doc/source/images/sahara-architecture.png similarity index 100% rename from doc/source/images/savanna-architecture.png rename to doc/source/images/sahara-architecture.png diff --git a/doc/source/index.rst b/doc/source/index.rst index f3efb6a4c3..6c52a3c991 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -1,7 +1,7 @@ -Welcome to Savanna! +Welcome to Sahara! =================== -Savanna project aims to provide users with simple means to provision a Hadoop +Sahara project aims to provide users with simple means to provision a Hadoop cluster at OpenStack by specifying several parameters like Hadoop version, cluster topology, nodes hardware details and a few more. @@ -13,7 +13,7 @@ Overview overview architecture - Roadmap + Roadmap User guide @@ -85,7 +85,7 @@ Developer Guide devref/how_to_build_oozie -**Background Concepts for Savanna** +**Background Concepts for Sahara** .. toctree:: :maxdepth: 1 diff --git a/doc/source/overview.rst b/doc/source/overview.rst index 7002917312..b8343d5757 100644 --- a/doc/source/overview.rst +++ b/doc/source/overview.rst @@ -8,10 +8,10 @@ Apache Hadoop is an industry standard and widely adopted MapReduce implementatio The aim of this project is to enable users to easily provision and manage Hadoop clusters on OpenStack. It is worth mentioning that Amazon provides Hadoop for several years as Amazon Elastic MapReduce (EMR) service. -Savanna aims to provide users with simple means to provision Hadoop clusters +Sahara aims to provide users with simple means to provision Hadoop clusters by specifying several parameters like Hadoop version, cluster topology, nodes hardware details -and a few more. After user fills in all the parameters, Savanna deploys the cluster in a few minutes. -Also Savanna provides means to scale already provisioned cluster by adding/removing worker nodes on demand. +and a few more. After user fills in all the parameters, Sahara deploys the cluster in a few minutes. +Also Sahara provides means to scale already provisioned cluster by adding/removing worker nodes on demand. The solution will address following use cases: @@ -31,11 +31,11 @@ Key features are: Details ------- -The Savanna product communicates with the following OpenStack components: +The Sahara product communicates with the following OpenStack components: -* Horizon - provides GUI with ability to use all of Savanna’s features; +* Horizon - provides GUI with ability to use all of Sahara’s features; * Keystone - authenticates users and provides security token that is used to work with the OpenStack, - hence limiting user abilities in Savanna to his OpenStack privileges; + hence limiting user abilities in Sahara to his OpenStack privileges; * Nova - is used to provision VMs for Hadoop Cluster; * Glance - Hadoop VM images are stored there, each image containing an installed OS and Hadoop; the pre-installed Hadoop should give us good handicap on node start-up; @@ -49,7 +49,7 @@ The Savanna product communicates with the following OpenStack components: General Workflow ---------------- -Savanna will provide two level of abstraction for API and UI based on the addressed use cases: +Sahara will provide two level of abstraction for API and UI based on the addressed use cases: cluster provisioning and analytics as a service. For the fast cluster provisioning generic workflow will be as following: @@ -57,13 +57,13 @@ For the fast cluster provisioning generic workflow will be as following: * select Hadoop version; * select base image with or without pre-installed Hadoop: - * for base images without Hadoop pre-installed Savanna will support pluggable deployment engines integrated with vendor tooling; + * for base images without Hadoop pre-installed Sahara will support pluggable deployment engines integrated with vendor tooling; * define cluster configuration, including size and topology of the cluster and setting the different type of Hadoop parameters (e.g. heap size): * to ease the configuration of such parameters mechanism of configurable templates will be provided; -* provision the cluster: Savanna will provision VMs, install and configure Hadoop; +* provision the cluster: Sahara will provision VMs, install and configure Hadoop; * operation on the cluster: add/remove nodes; * terminate the cluster when it’s not needed anymore. @@ -88,7 +88,7 @@ For analytic as a service generic workflow will be as following: User’s Perspective ------------------ -While provisioning cluster through Savanna, user operates on three types of entities: Node Group Templates, Cluster Templates and Clusters. +While provisioning cluster through Sahara, user operates on three types of entities: Node Group Templates, Cluster Templates and Clusters. A Node Group Template describes a group of nodes within cluster. It contains a list of hadoop processes that will be launched on each instance in a group. Also a Node Group Template may provide node scoped configurations for those processes. @@ -97,21 +97,21 @@ This kind of templates encapsulates hardware parameters (flavor) for the node VM A Cluster Template is designed to bring Node Group Templates together to form a Cluster. A Cluster Template defines what Node Groups will be included and how many instances will be created in each. Some of Hadoop Configurations can not be applied to a single node, but to a whole Cluster, so user can specify this kind of configurations in a Cluster Template. -Savanna enables user to specify which processes should be added to an anti-affinity group within a Cluster Template. If a process is included into an anti-affinity +Sahara enables user to specify which processes should be added to an anti-affinity group within a Cluster Template. If a process is included into an anti-affinity group, it means that VMs where this process is going to be launched should be scheduled to different hardware hosts. The Cluster entity represents a Hadoop Cluster. It is mainly characterized by VM image with pre-installed Hadoop which will be used for cluster deployment. User may choose one of pre-configured Cluster Templates to start a Cluster. To get access to VMs after a Cluster has started, user should specify a keypair. -Savanna provides several constraints on Hadoop cluster topology. JobTracker and NameNode processes could be run either on a single +Sahara provides several constraints on Hadoop cluster topology. JobTracker and NameNode processes could be run either on a single VM or two separate ones. Also cluster could contain worker nodes of different types. Worker nodes could run both TaskTracker and DataNode, -or either of these processes alone. Savanna allows user to create cluster with any combination of these options, +or either of these processes alone. Sahara allows user to create cluster with any combination of these options, but it will not allow to create a non working topology, for example: a set of workers with DataNodes, but without a NameNode. Each Cluster belongs to some tenant determined by user. Users have access only to objects located in tenants they have access to. Users could edit/delete only objects they created. Naturally admin users have full access to every object. -That way Savanna complies with general OpenStack access policy. +That way Sahara complies with general OpenStack access policy. Integration with Swift ---------------------- @@ -133,6 +133,6 @@ To get more information on how to enable Swift support see :doc:`userdoc/hadoop- Pluggable Deployment and Monitoring ----------------------------------- -In addition to the monitoring capabilities provided by vendor-specific Hadoop management tooling, Savanna will provide pluggable integration with external monitoring systems such as Nagios or Zabbix. +In addition to the monitoring capabilities provided by vendor-specific Hadoop management tooling, Sahara will provide pluggable integration with external monitoring systems such as Nagios or Zabbix. Both deployment and monitoring tools will be installed on stand-alone VMs, thus allowing a single instance to manage/monitor several clusters at once. diff --git a/doc/source/restapi/index.rst b/doc/source/restapi/index.rst index daab04e6dc..596473ece4 100644 --- a/doc/source/restapi/index.rst +++ b/doc/source/restapi/index.rst @@ -1,4 +1,4 @@ -Savanna REST API docs +Sahara REST API docs ********************* .. toctree:: diff --git a/doc/source/restapi/rest_api_v1.0.rst b/doc/source/restapi/rest_api_v1.0.rst index bf5dd335b1..4db9ecef7d 100644 --- a/doc/source/restapi/rest_api_v1.0.rst +++ b/doc/source/restapi/rest_api_v1.0.rst @@ -1,31 +1,31 @@ -Savanna REST API v1.0 +Sahara REST API v1.0 ********************* .. note:: - REST API v1.0 corresponds to Savanna v0.2.X + REST API v1.0 corresponds to Sahara v0.2.X 1 General API information ========================= -This section contains base info about the Savanna REST API design. +This section contains base info about the Sahara REST API design. 1.1 Authentication and Authorization ------------------------------------ -The Savanna API uses the Keystone Identity Service as the default authentication service. -When Keystone is enabled, users who submit requests to the Savanna service must provide an authentication token +The Sahara API uses the Keystone Identity Service as the default authentication service. +When Keystone is enabled, users who submit requests to the Sahara service must provide an authentication token in X-Auth-Token request header. User could obtain the token by authenticating to the Keystone endpoint. For more information about Keystone, see the OpenStack Identity Developer Guide. Also with each request user must specify OpenStack tenant in url path like that: '/v1.0/{tenant_id}/clusters'. -Savanna will perform the requested operation in that tenant using provided credentials. Therefore, user will be able +Sahara will perform the requested operation in that tenant using provided credentials. Therefore, user will be able to create and manage clusters only within tenants he have access to. 1.2 Request / Response Types ---------------------------- -The Savanna API supports the JSON data serialization format. +The Sahara API supports the JSON data serialization format. This means that for requests that contain a body, the Content-Type header must be set to the MIME type value "application/json". Also, clients should accept JSON serialized responses by specifying the Accept header with the MIME type value "application/json" or adding ".json" extension to the resource name. @@ -48,8 +48,8 @@ or 1.3 Faults ---------- -The Savanna API returns an error response if a failure occurs while processing a request. -Savanna uses only standard HTTP error codes. 4xx errors indicate problems in the particular +The Sahara API returns an error response if a failure occurs while processing a request. +Sahara uses only standard HTTP error codes. 4xx errors indicate problems in the particular request being sent from the client and 5xx errors indicate server-side problems. The response body will contain richer information about the cause of the error. @@ -84,7 +84,7 @@ Plugin object provides information about what Hadoop distribution/version it can +-----------------+-------------------------------------------------------------------+-----------------------------------------------------+ | Verb | URI | Description | +=================+===================================================================+=====================================================+ -| GET | /v1.0/{tenant_id}/plugins | Lists all plugins registered in Savanna. | +| GET | /v1.0/{tenant_id}/plugins | Lists all plugins registered in Sahara. | +-----------------+-------------------------------------------------------------------+-----------------------------------------------------+ | GET | /v1.0/{tenant_id}/plugins/{plugin_name} | Shows short information about specified plugin. | +-----------------+-------------------------------------------------------------------+-----------------------------------------------------+ @@ -115,7 +115,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/plugins + GET http://sahara/v1.0/775181/plugins **response** @@ -157,7 +157,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/plugins/vanilla + GET http://sahara/v1.0/775181/plugins/vanilla **response** @@ -197,7 +197,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/plugins/vanilla/1.2.1 + GET http://sahara/v1.0/775181/plugins/vanilla/1.2.1 **response** @@ -274,7 +274,7 @@ The request body should contain configuration file. .. sourcecode:: http - POST http://savanna/v1.0/775181/plugins/some-plugin/1.1/convert-config + POST http://sahara/v1.0/775181/plugins/some-plugin/1.1/convert-config **response** @@ -341,7 +341,7 @@ The request body should contain configuration file. **Description** Image Registry is a tool for managing images. Each plugin provides a list of required tags an image should have. -Savanna also requires username to login into instance's OS for remote operations execution. +Sahara also requires username to login into instance's OS for remote operations execution. Image Registry provides an ability to add/remove tags to images and define OS username. @@ -385,7 +385,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/images + GET http://sahara/v1.0/775181/images **response** @@ -401,7 +401,7 @@ This operation does not require a request body. { "status": "ACTIVE", "username": "ec2-user", - "name": "fedoraSwift_hadoop_savanna_v02", + "name": "fedoraSwift_hadoop_sahara_v02", "tags": [ "vanilla", "1.2.1" @@ -437,7 +437,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/images?tags=vanilla + GET http://sahara/v1.0/775181/images?tags=vanilla **response** @@ -453,7 +453,7 @@ This operation does not require a request body. { "status": "ACTIVE", "username": "ec2-user", - "name": "fedoraSwift_hadoop_savanna_v02", + "name": "fedoraSwift_hadoop_sahara_v02", "tags": [ "vanilla", "1.2.1" @@ -491,7 +491,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f + GET http://sahara/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f **response** @@ -506,7 +506,7 @@ This operation does not require a request body. "image": { "status": "ACTIVE", "username": "ec2-user", - "name": "fedoraSwift_hadoop_savanna_v02", + "name": "fedoraSwift_hadoop_sahara_v02", "tags": [ "vanilla", "1.2.1" @@ -540,7 +540,7 @@ This operation returns registered image. .. sourcecode:: http - POST http://savanna/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f + POST http://sahara/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f .. sourcecode:: json @@ -562,7 +562,7 @@ This operation returns registered image. "image": { "status": "ACTIVE", "username": "ec2-user", - "name": "fedoraSwift_hadoop_savanna_v02", + "name": "fedoraSwift_hadoop_sahara_v02", "tags": [], "minDisk": 0, "progress": 100, @@ -595,7 +595,7 @@ This operation does not require a request body. .. sourcecode:: http - DELETE http://savanna/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f + DELETE http://sahara/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f **response** @@ -622,7 +622,7 @@ Add Tags to Image. .. sourcecode:: http - POST http://savanna/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f/tag + POST http://sahara/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f/tag .. sourcecode:: json @@ -643,7 +643,7 @@ Add Tags to Image. "image": { "status": "ACTIVE", "username": "ec2-user", - "name": "fedoraSwift_hadoop_savanna_v02", + "name": "fedoraSwift_hadoop_sahara_v02", "tags": ["tag1", "some_other_tag"], "minDisk": 0, "progress": 100, @@ -676,7 +676,7 @@ Removes Tags form Image. .. sourcecode:: http - POST http://savanna/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f/untag + POST http://sahara/v1.0/775181/images/daa50c37-b11b-4f3d-a586-e5dcd0a4110f/untag .. sourcecode:: json @@ -697,7 +697,7 @@ Removes Tags form Image. "image": { "status": "ACTIVE", "username": "ec2-user", - "name": "fedoraSwift_hadoop_savanna_v02", + "name": "fedoraSwift_hadoop_sahara_v02", "tags": ["tag1"], "minDisk": 0, "progress": 100, @@ -755,7 +755,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/node-group-templates + GET http://sahara/v1.0/775181/node-group-templates **response** @@ -828,7 +828,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/node-group-templates/ea34d320-09d7-4dc1-acbf-75b57cec81c9 + GET http://sahara/v1.0/775181/node-group-templates/ea34d320-09d7-4dc1-acbf-75b57cec81c9 **response** @@ -878,7 +878,7 @@ This operation returns created Node Group Template. .. sourcecode:: http - POST http://savanna/v1.0/775181/node-group-templates + POST http://sahara/v1.0/775181/node-group-templates .. sourcecode:: json @@ -927,7 +927,7 @@ This operation returns created Node Group Template. .. sourcecode:: http - POST http://savanna/v1.0/775181/node-group-templates + POST http://sahara/v1.0/775181/node-group-templates .. sourcecode:: json @@ -1005,7 +1005,7 @@ This operation does not require a request body. .. sourcecode:: http - DELETE http://savanna/v1.0/775181/node-group-templates/060afabe-f4b3-487e-8d48-65c5bb5eb79e + DELETE http://sahara/v1.0/775181/node-group-templates/060afabe-f4b3-487e-8d48-65c5bb5eb79e **response** @@ -1058,7 +1058,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/cluster-templates + GET http://sahara/v1.0/775181/cluster-templates **response** @@ -1142,7 +1142,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/cluster-templates/c365b7dd-9b11-492d-a119-7ae023c19b51 + GET http://sahara/v1.0/775181/cluster-templates/c365b7dd-9b11-492d-a119-7ae023c19b51 **response** @@ -1221,7 +1221,7 @@ This operation returns created Cluster Template. .. sourcecode:: http - POST http://savanna/v1.0/775181/cluster-templates + POST http://sahara/v1.0/775181/cluster-templates .. sourcecode:: json @@ -1307,7 +1307,7 @@ This operation returns created Cluster Template. .. sourcecode:: http - POST http://savanna/v1.0/775181/node-group-templates + POST http://sahara/v1.0/775181/node-group-templates .. sourcecode:: json @@ -1416,7 +1416,7 @@ This operation does not require a request body. .. sourcecode:: http - DELETE http://savanna/v1.0/775181/cluster-templates/9d72bc1a-8d38-493e-99f3-ebca4ec99ad8 + DELETE http://sahara/v1.0/775181/cluster-templates/9d72bc1a-8d38-493e-99f3-ebca4ec99ad8 **response** @@ -1471,7 +1471,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/clusters + GET http://sahara/v1.0/775181/clusters **response** @@ -1586,7 +1586,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.0/775181/clusters/c365b7dd-9b11-492d-a119-7ae023c19b51 + GET http://sahara/v1.0/775181/clusters/c365b7dd-9b11-492d-a119-7ae023c19b51 **response** @@ -1696,7 +1696,7 @@ This operation returns created Cluster. .. sourcecode:: http - POST http://savanna/v1.0/775181/clusters + POST http://sahara/v1.0/775181/clusters .. sourcecode:: json @@ -1805,7 +1805,7 @@ This operation returns created Cluster. .. sourcecode:: http - POST http://savanna/v1.0/775181/clusters + POST http://sahara/v1.0/775181/clusters .. sourcecode:: json @@ -1951,7 +1951,7 @@ This operation returns updated Cluster. .. sourcecode:: http - PUT http://savanna/v1.0/775181/clusters/9d7g51a-8123-424e-sdsr3-eb222ec989b1 + PUT http://sahara/v1.0/775181/clusters/9d7g51a-8123-424e-sdsr3-eb222ec989b1 .. sourcecode:: json @@ -2123,7 +2123,7 @@ This operation does not require a request body. .. sourcecode:: http - DELETE http://savanna/v1.0/775181/clusters/9d7g51a-8123-424e-sdsr3-eb222ec989b1 + DELETE http://sahara/v1.0/775181/clusters/9d7g51a-8123-424e-sdsr3-eb222ec989b1 **response** diff --git a/doc/source/restapi/rest_api_v1.1_EDP.rst b/doc/source/restapi/rest_api_v1.1_EDP.rst index d9f4393889..820f022c5b 100644 --- a/doc/source/restapi/rest_api_v1.1_EDP.rst +++ b/doc/source/restapi/rest_api_v1.1_EDP.rst @@ -1,9 +1,9 @@ -Savanna REST API v1.1 (EDP) -*************************** +Sahara REST API v1.1 (EDP) +************************** .. note:: - REST API v1.1 corresponds to Savanna v0.3.X + REST API v1.1 corresponds to Sahara v0.3.X 1. General information ====================== @@ -17,7 +17,7 @@ REST API V1.1 is :doc:`edp` REST API. It covers the majority of new functions re **Description** A Data Source object provides the location of input or output for MapReduce jobs and may reference different types of storage. -Savanna doesn't perform any validation checks for data source locations. +Sahara doesn't perform any validation checks for data source locations. **Data Source ops** @@ -53,7 +53,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/data-sources + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/data-sources **response** @@ -126,7 +126,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/data-sources/151d0c0c-464f-4724-96a6-4732d0ca62e1 + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/data-sources/151d0c0c-464f-4724-96a6-4732d0ca62e1 **response** @@ -170,7 +170,7 @@ This operation returns the created Data Source. .. sourcecode:: http - POST http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/data-sources + POST http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/data-sources .. sourcecode:: json @@ -218,7 +218,7 @@ This operation returns the created Data Source. .. sourcecode:: http - POST http://savanna:8386/v1.1/e262c255a7de4a0ab0434bafd75660cd/data-sources + POST http://sahara:8386/v1.1/e262c255a7de4a0ab0434bafd75660cd/data-sources .. sourcecode:: json @@ -272,7 +272,7 @@ This operation does not require a request body. .. sourcecode:: http - DELETE http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/data-sources/af7dc864-6331-4c30-80f5-63d74b667eaf + DELETE http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/data-sources/af7dc864-6331-4c30-80f5-63d74b667eaf **response** @@ -286,7 +286,7 @@ This operation does not require a request body. **Description** -Job Binary Internals are objects for storing job binaries in the Savanna internal database. +Job Binary Internals are objects for storing job binaries in the Sahara internal database. A Job Binary Internal contains raw data of executable Jar files, Pig or Hive scripts. **Job Binary Internal ops** @@ -325,7 +325,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals **response** @@ -375,7 +375,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals/d2498cbf-4589-484a-a814-81436c18beb3 + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals/d2498cbf-4589-484a-a814-81436c18beb3 **response** @@ -415,7 +415,7 @@ The request body should contain raw data (file) or script text. .. sourcecode:: http - PUT http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals/script.pig + PUT http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals/script.pig **response** @@ -446,7 +446,7 @@ Normal Response Code: 204 (NO CONTENT) Errors: none -Removes Job Binary Internal object from Savanna's db +Removes Job Binary Internal object from Sahara's db This operation returns nothing. @@ -457,7 +457,7 @@ This operation does not require a request body. .. sourcecode:: http - DELETE http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals/4833dc4b-8682-4d5b-8a9f-2036b47a0996 + DELETE http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals/4833dc4b-8682-4d5b-8a9f-2036b47a0996 **response** @@ -486,7 +486,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals/4248975-3c82-4206-a58d-6e7fb3a563fd/data + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binary-internals/4248975-3c82-4206-a58d-6e7fb3a563fd/data **response** @@ -501,7 +501,7 @@ This operation does not require a request body. **Description** -Job Binaries objects are designed to create links to certain binaries stored either in Savanna internal db or in Swift. +Job Binaries objects are designed to create links to certain binaries stored either in Sahara internal db or in Swift. **Job Binaries ops** @@ -539,7 +539,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries **response** @@ -555,7 +555,7 @@ This operation does not require a request body. { "description": "", "extra": {}, - "url": "savanna-db://d2498cbf-4589-484a-a814-81436c18beb3", + "url": "sahara-db://d2498cbf-4589-484a-a814-81436c18beb3", "tenant_id": "11587919cc534bcbb1027a161c82cf58", "created_at": "2013-10-15 12:36:59.375060", "updated_at": null, @@ -565,7 +565,7 @@ This operation does not require a request body. { "description": "", "extra": {}, - "url": "savanna-db://22f1d87a-23c8-483e-a0dd-cb4a16dde5f9", + "url": "sahara-db://22f1d87a-23c8-483e-a0dd-cb4a16dde5f9", "tenant_id": "11587919cc534bcbb1027a161c82cf58", "created_at": "2013-10-15 12:43:52.265899", "updated_at": null, @@ -606,7 +606,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries/a716a9cd-9add-4b12-b1b6-cdb71aaef350 + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries/a716a9cd-9add-4b12-b1b6-cdb71aaef350 **response** @@ -649,7 +649,7 @@ This operation shows information about the created Job Binary. .. sourcecode:: http - POST http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries + POST http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries .. sourcecode:: json @@ -707,7 +707,7 @@ This operation does not require a request body. .. sourcecode:: http - DELETE http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries/07f86352-ee8a-4b08-b737-d705ded5ff9c + DELETE http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries/07f86352-ee8a-4b08-b737-d705ded5ff9c **response** @@ -736,7 +736,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries/84248975-3c82-4206-a58d-6e7fb3a563fd/data + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/job-binaries/84248975-3c82-4206-a58d-6e7fb3a563fd/data **response** @@ -794,7 +794,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs **response** @@ -815,7 +815,7 @@ This operation does not require a request body. { "description": "", "extra": {}, - "url": "savanna-db://d2498cbf-4589-484a-a814-81436c18beb3", + "url": "sahara-db://d2498cbf-4589-484a-a814-81436c18beb3", "tenant_id": "11587919cc534bcbb1027a161c82cf58", "created_at": "2013-10-15 12:36:59.375060", "updated_at": null, @@ -828,7 +828,7 @@ This operation does not require a request body. { "description": "", "extra": {}, - "url": "savanna-db://22f1d87a-23c8-483e-a0dd-cb4a16dde5f9", + "url": "sahara-db://22f1d87a-23c8-483e-a0dd-cb4a16dde5f9", "tenant_id": "11587919cc534bcbb1027a161c82cf58", "created_at": "2013-10-15 12:43:52.265899", "updated_at": null, @@ -886,7 +886,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/7600373c-d262-45c6-845f-77f339f3e503 + GET http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/7600373c-d262-45c6-845f-77f339f3e503 **response** @@ -941,7 +941,7 @@ This operation shows information about the created Job object. .. sourcecode:: http - POST http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs + POST http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs .. sourcecode:: json @@ -971,7 +971,7 @@ This operation shows information about the created Job object. { "description": "", "extra": {}, - "url": "savanna-db://d2498cbf-4589-484a-a814-81436c18beb3", + "url": "sahara-db://d2498cbf-4589-484a-a814-81436c18beb3", "tenant_id": "11587919cc534bcbb1027a161c82cf58", "created_at": "2013-10-15 12:36:59.375060", "updated_at": null, @@ -983,7 +983,7 @@ This operation shows information about the created Job object. { "description": "", "extra": {}, - "url": "savanna-db://22f1d87a-23c8-483e-a0dd-cb4a16dde5f9", + "url": "sahara-db://22f1d87a-23c8-483e-a0dd-cb4a16dde5f9", "tenant_id": "11587919cc534bcbb1027a161c82cf58", "created_at": "2013-10-15 12:43:52.265899", "updated_at": null, @@ -1017,7 +1017,7 @@ This operation does not require a request body. .. sourcecode:: http - DELETE http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/07f86352-ee8a-4b08-b737-d705ded5ff9c + DELETE http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/07f86352-ee8a-4b08-b737-d705ded5ff9c **response** @@ -1047,7 +1047,7 @@ This REST call is used just for hints and doesn't force the user to apply any of .. sourcecode:: http - GET http://savanna/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/config-hints/Jar + GET http://sahara/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/config-hints/Jar **response** @@ -1142,7 +1142,7 @@ This operation returns the created Job Execution object. Note that different job .. sourcecode:: http - POST http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/65afed9c-dad7-4658-9554-b7b4e1ca908f/execute + POST http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/65afed9c-dad7-4658-9554-b7b4e1ca908f/execute .. sourcecode:: json @@ -1206,7 +1206,7 @@ This operation returns the created Job Execution object. Note that different job .. sourcecode:: http - POST http://savanna:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/65afed9c-dad7-4658-9554-b7b4e1ca908f/execute + POST http://sahara:8386/v1.1/11587919cc534bcbb1027a161c82cf58/jobs/65afed9c-dad7-4658-9554-b7b4e1ca908f/execute .. sourcecode:: json @@ -1303,7 +1303,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.1/11587919cc534bcbb1027a161c82cf58/job-executions + GET http://sahara/v1.1/11587919cc534bcbb1027a161c82cf58/job-executions **response** @@ -1437,7 +1437,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.1/11587919cc534bcbb1027a161c82cf58/job-executions/e63bdc21-0126-4fd2-90c6-5163d16f31df + GET http://sahara/v1.1/11587919cc534bcbb1027a161c82cf58/job-executions/e63bdc21-0126-4fd2-90c6-5163d16f31df **response** @@ -1467,7 +1467,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.1/11587919cc534bcbb1027a161c82cf58/job-executions/4a911624-1e25-4650-bd1d-382d19695708/refresh-status + GET http://sahara/v1.1/11587919cc534bcbb1027a161c82cf58/job-executions/4a911624-1e25-4650-bd1d-382d19695708/refresh-status **response** @@ -1497,7 +1497,7 @@ This operation does not require a request body. .. sourcecode:: http - GET http://savanna/v1.1/11587919cc534bcbb1027a161c82cf58/job-executions/4a911624-1e25-4650-bd1d-382d19695708/refresh-status + GET http://sahara/v1.1/11587919cc534bcbb1027a161c82cf58/job-executions/4a911624-1e25-4650-bd1d-382d19695708/refresh-status **response** @@ -1529,7 +1529,7 @@ This operation does not require a request body. .. sourcecode:: http - DELETE http://savanna/v1.1/job-executions//d7g51a-8123-424e-sdsr3-eb222ec989b1 + DELETE http://sahara/v1.1/job-executions//d7g51a-8123-424e-sdsr3-eb222ec989b1 **response** @@ -1543,7 +1543,7 @@ This operation does not require a request body. Job Execution object ==================== -The following json response represents Job Execution object returned from Savanna +The following json response represents Job Execution object returned from Sahara .. sourcecode:: json diff --git a/doc/source/userdoc/diskimagebuilder.rst b/doc/source/userdoc/diskimagebuilder.rst index aaa89aebca..bba4387d8d 100644 --- a/doc/source/userdoc/diskimagebuilder.rst +++ b/doc/source/userdoc/diskimagebuilder.rst @@ -9,12 +9,12 @@ simplify task of building such images we use code that alters how the image is built, or runs within the chroot to prepare the image. -Elements for building vanilla images are stored in `Savanna extra repository `_ +Elements for building vanilla images are stored in `Sahara extra repository `_ .. note:: - Savanna requires images with cloud-init package installed: + Sahara requires images with cloud-init package installed: * `For Fedora `_ * `For Ubuntu `_ @@ -22,7 +22,7 @@ Elements for building vanilla images are stored in `Savanna extra repository /execute* REST method. -In some cases Savanna generates configuration values or parameters automatically. Values set explicitly by the user during launch will override those generated by Savanna. +In some cases Sahara generates configuration values or parameters automatically. Values set explicitly by the user during launch will override those generated by Sahara. Generation of Swift Properties for Data Sources +++++++++++++++++++++++++++++++++++++++++++++++ -If a job is run with data sources in Swift, Savanna will automatically generate Swift username and password configuration values based on the credentials in the data sources. If the input and output data sources are both in Swift, it is expected that they specify the same credentials. +If a job is run with data sources in Swift, Sahara will automatically generate Swift username and password configuration values based on the credentials in the data sources. If the input and output data sources are both in Swift, it is expected that they specify the same credentials. The Swift credentials can be set explicitly with the following configuration values: +------------------------------------+ | Name | +====================================+ - | fs.swift.service.savanna.username | + | fs.swift.service.sahara.username | +------------------------------------+ - | fs.swift.service.savanna.password | + | fs.swift.service.sahara.password | +------------------------------------+ Additional Details for Hive jobs ++++++++++++++++++++++++++++++++ -Savanna will automatically generate values for the ``INPUT`` and ``OUTPUT`` parameters required by Hive based on the specified data sources. +Sahara will automatically generate values for the ``INPUT`` and ``OUTPUT`` parameters required by Hive based on the specified data sources. Additional Details for Pig jobs +++++++++++++++++++++++++++++++ -Savanna will automatically generate values for the ``INPUT`` and ``OUTPUT`` parameters required by Pig based on the specified data sources. +Sahara will automatically generate values for the ``INPUT`` and ``OUTPUT`` parameters required by Pig based on the specified data sources. For Pig jobs, ``arguments`` should be thought of as command line arguments separated by spaces and passed to the ``pig`` shell. @@ -203,49 +203,49 @@ values to the ``main`` method: Data Source objects are not used with Java job types. Instead, any input or output paths must be passed to the ``main`` method using one of the above two methods. Furthermore, if Swift data sources are used the configuration values listed in `Generation of Swift Properties for Data Sources`_ must be passed with one of the above two methods and set in the configuration by ``main``. -The ``edp-wordcount`` example bundled with Savanna shows how to use configuration values, arguments, and Swift data paths in a Java job type. +The ``edp-wordcount`` example bundled with Sahara shows how to use configuration values, arguments, and Swift data paths in a Java job type. -Special Savanna URLs +Special Sahara URLs -------------------- -Savanna uses custom URLs to refer to objects stored in Swift or the Savanna internal database. These URLs are not meant to be used -outside of Savanna. +Sahara uses custom URLs to refer to objects stored in Swift or the Sahara internal database. These URLs are not meant to be used +outside of Sahara. -Savanna Swift URLs have the form: +Sahara Swift URLs have the form: - ``swift://container.savanna/object`` + ``swift://container.sahara/object`` -Savanna internal database URLs have the form: +Sahara internal database URLs have the form: - ``savanna-db://savanna-generated-uuid`` + ``sahara-db://sahara-generated-uuid`` EDP Requirements ================ -The OpenStack installation and the cluster launched from Savanna must meet the following minimum requirements in order for EDP to function: +The OpenStack installation and the cluster launched from Sahara must meet the following minimum requirements in order for EDP to function: OpenStack Services ------------------ -When a job is executed, binaries are first uploaded to a job tracker and then moved from the job tracker's local filesystem to HDFS. Therefore, there must be an instance of HDFS available to the nodes in the Savanna cluster. +When a job is executed, binaries are first uploaded to a job tracker and then moved from the job tracker's local filesystem to HDFS. Therefore, there must be an instance of HDFS available to the nodes in the Sahara cluster. If the Swift service *is not* running in the OpenStack installation - + Job binaries may only be stored in the Savanna internal database + + Job binaries may only be stored in the Sahara internal database + Data sources require a long-running HDFS If the Swift service *is* running in the OpenStack installation - + Job binaries may be stored in Swift or the Savanna internal database + + Job binaries may be stored in Swift or the Sahara internal database + Data sources may be in Swift or a long-running HDFS Cluster Processes ----------------- -At a minimum the Savanna cluster must run a single instance of these processes to support EDP: +At a minimum the Sahara cluster must run a single instance of these processes to support EDP: * jobtracker * namenode @@ -270,23 +270,23 @@ finished. Two config parameters control the behaviour of periodic clusters: - * periodic_enable - if set to 'False', Savanna will do nothing to a transient + * periodic_enable - if set to 'False', Sahara will do nothing to a transient cluster once the job it was created for is completed. If it is set to 'True', then the behaviour depends on the value of the next parameter. * use_identity_api_v3 - set it to 'False' if your OpenStack installation - does not provide Keystone API v3. In that case Savanna will not terminate + does not provide Keystone API v3. In that case Sahara will not terminate unneeded clusters. Instead it will set their state to 'AwaitingTermination' meaning that they could be manually deleted by a user. If the parameter is - set to 'True', Savanna will itself terminate the cluster. The limitation is + set to 'True', Sahara will itself terminate the cluster. The limitation is caused by lack of 'trusts' feature in Keystone API older than v3. -If both parameters are set to 'True', Savanna works with transient clusters in +If both parameters are set to 'True', Sahara works with transient clusters in the following manner: 1. When a user requests for a job to be executed on a transient cluster, - Savanna creates such a cluster. - 2. Savanna drops the user's credentials once the cluster is created but + Sahara creates such a cluster. + 2. Sahara drops the user's credentials once the cluster is created but prior to that it creates a trust allowing it to operate with the cluster instances in the future without user credentials. - 3. Once a cluster is not needed, Savanna terminates its instances using the - stored trust. Savanna drops the trust after that. + 3. Once a cluster is not needed, Sahara terminates its instances using the + stored trust. Sahara drops the trust after that. diff --git a/doc/source/userdoc/features.rst b/doc/source/userdoc/features.rst index 89b001ed6b..bb49216003 100644 --- a/doc/source/userdoc/features.rst +++ b/doc/source/userdoc/features.rst @@ -16,7 +16,7 @@ Swift Integration If you want to work with Swift, e.g. to run jobs on data located in Swift or put jobs` result into it, you need to use patched Hadoop and Swift. For more info about this patching and configuring see :doc:`hadoop-swift`. There is a number of possible configs for Swift which can be set, but -currently Savanna automatically set information about swift filesystem implementation, location awareness, URL and tenant name for authorization. +currently Sahara automatically set information about swift filesystem implementation, location awareness, URL and tenant name for authorization. The only required information that is still needed to be set are username and password to access Swift. So you need to explicitly specify these parameters while launching the job. E.g. : @@ -33,7 +33,7 @@ determined from tenant name from configs. Actually, account=tenant. ${provider} was designed to provide an opportunity to work with several Swift installations. E.g. it is possible to read data from one Swift installation and write it to another one. -But as for now, Savanna automatically generates configs only for one Swift installation +But as for now, Sahara automatically generates configs only for one Swift installation with name "savanna". Currently user can only enable/disable Swift for a Hadoop cluster. But there is a blueprint about making Swift access @@ -53,9 +53,9 @@ All volumes are attached during Cluster creation/scaling operations. Neutron and Nova Network support -------------------------------- -OpenStack Cluster may use Nova Network or Neutron as a networking service. Savanna supports both, but when deployed, -a special configuration for networking should be set explicitly. By default Savanna will behave as if Nova Network is used. -If OpenStack Cluster uses Neutron, then ``use_neutron`` option should be set to ``True`` in Savanna configuration file. In +OpenStack Cluster may use Nova Network or Neutron as a networking service. Sahara supports both, but when deployed, +a special configuration for networking should be set explicitly. By default Sahara will behave as if Nova Network is used. +If OpenStack Cluster uses Neutron, then ``use_neutron`` option should be set to ``True`` in Sahara configuration file. In addition, if the OpenStack Cluster supports network namespaces, set the ``use_namespaces`` option to ``True`` .. sourcecode:: cfg @@ -63,30 +63,30 @@ addition, if the OpenStack Cluster supports network namespaces, set the ``use_na use_neutron=True use_namespaces=True -Savanna Dashboard should also be configured properly to support Neutron. ``SAVANNA_USE_NEUTRON`` should be set to ``True`` in +Sahara Dashboard should also be configured properly to support Neutron. ``SAHARA_USE_NEUTRON`` should be set to ``True`` in OpenStack Dashboard ``local_settings.py`` configuration file. .. sourcecode:: python - SAVANNA_USE_NEUTRON=True + SAHARA_USE_NEUTRON=True Floating IP Management ---------------------- -Savanna needs to access instances through ssh during a Cluster setup. To establish a connection Savanna may +Sahara needs to access instances through ssh during a Cluster setup. To establish a connection Sahara may use both: fixed and floating IP of an Instance. By default ``use_floating_ips`` parameter is set to ``True``, so -Savanna will use Floating IP of an Instance to connect. In this case, user has two options for how to make all instances +Sahara will use Floating IP of an Instance to connect. In this case, user has two options for how to make all instances get a floating IP: * Nova Network may be configured to assign floating IPs automatically by setting ``auto_assign_floating_ip`` to ``True`` in ``nova.conf`` * User may specify a floating IP pool for each Node Group directly. Note: When using floating IPs for management (``use_floating_ip=True``) **every** instance in the Cluster should have a floating IP, -otherwise Savanna will not be able to work with it. +otherwise Sahara will not be able to work with it. -If ``use_floating_ips`` parameter is set to ``False`` Savanna will use Instances' fixed IPs for management. In this case -the node where Savanna is running should have access to Instances' fixed IP network. When OpenStack uses Neutron for +If ``use_floating_ips`` parameter is set to ``False`` Sahara will use Instances' fixed IPs for management. In this case +the node where Sahara is running should have access to Instances' fixed IP network. When OpenStack uses Neutron for networking, user will be able to choose fixed IP network for all instances in a Cluster. Anti-affinity @@ -94,7 +94,7 @@ Anti-affinity One of the problems in Hadoop running on OpenStack is that there is no ability to control where machine is actually running. We cannot be sure that two new virtual machines are started on different physical machines. As a result, any replication with cluster is not reliable because all replicas may turn up on one physical machine. -Anti-affinity feature provides an ability to explicitly tell Savanna to run specified processes on different compute nodes. This +Anti-affinity feature provides an ability to explicitly tell Sahara to run specified processes on different compute nodes. This is especially useful for Hadoop datanode process to make HDFS replicas reliable. .. _`enable-anti-affinity`: @@ -123,16 +123,16 @@ possible. Hadoop supports data-locality feature and can schedule jobs to tasktracker nodes that are local for input stream. In this case tasktracker could communicate directly with local data node. -Savanna supports topology configuration for HDFS and Swift data sources. +Sahara supports topology configuration for HDFS and Swift data sources. To enable data-locality set ``enable_data_locality`` parameter to ``True`` in -Savanna configuration file +Sahara configuration file .. sourcecode:: cfg enable_data_locality=True -In this case two files with topology must be provided to Savanna. +In this case two files with topology must be provided to Sahara. Options ``compute_topology_file`` and ``swift_topology_file`` parameters control location of files with compute and swift nodes topology descriptions correspondingly. @@ -164,18 +164,18 @@ to swift nodes. Hadoop versions after 1.2.0 support four-layer topology (https://issues.apache.org/jira/browse/HADOOP-8468). To enable this feature -set ``enable_hypervisor_awareness`` option to ``True`` in Savanna configuration -file. In this case Savanna will add compute node ID as a second level of +set ``enable_hypervisor_awareness`` option to ``True`` in Sahara configuration +file. In this case Sahara will add compute node ID as a second level of topology for Virtual Machines. Heat Integration ---------------- -Savanna may use `OpenStack Orchestration engine `_ (aka Heat) to provision nodes for Hadoop cluster. -To make Savanna work with Heat the following steps are required: +Sahara may use `OpenStack Orchestration engine `_ (aka Heat) to provision nodes for Hadoop cluster. +To make Sahara work with Heat the following steps are required: * Your OpenStack installation must have 'orchestration' service up and running -* Savanna must contain the following configuration parameter in *savanna.conf*: +* Sahara must contain the following configuration parameter in *sahara.conf*: .. sourcecode:: cfg @@ -211,4 +211,4 @@ The following features are supported in the new Heat engine: | Nova Network support | TBD | https://launchpad.net/bugs/1259176 | +-----------------------------------------+-------------------------+-----------------------------------------+ | Elastic Data Processing | Not affected | | -+-----------------------------------------+-------------------------+-----------------------------------------+ \ No newline at end of file ++-----------------------------------------+-------------------------+-----------------------------------------+ diff --git a/doc/source/userdoc/guest-requirements.rst b/doc/source/userdoc/guest-requirements.rst index d711de4b05..76203592f9 100644 --- a/doc/source/userdoc/guest-requirements.rst +++ b/doc/source/userdoc/guest-requirements.rst @@ -1,7 +1,7 @@ Requirements for Guests ======================= -Savanna manages guests of various platforms (for example Ubuntu, Fedora, RHEL, and CentOS) with various versions of the Hadoop ecosystem projects installed. There are common requirements for all guests, and additional requirements based on the plugin that is used for cluster deployment. +Sahara manages guests of various platforms (for example Ubuntu, Fedora, RHEL, and CentOS) with various versions of the Hadoop ecosystem projects installed. There are common requirements for all guests, and additional requirements based on the plugin that is used for cluster deployment. Common Requirements ------------------- @@ -22,7 +22,7 @@ If the Vanilla Plugin is used for cluster deployment the guest is required to ha * Apache Hadoop installed * 'hadoop' user created -See :doc:`hadoop-swift` for information on using Swift with your Savanna cluster (for EDP support Swift integration is currently required). +See :doc:`hadoop-swift` for information on using Swift with your Sahara cluster (for EDP support Swift integration is currently required). To support EDP, the following components must also be installed on the guest: diff --git a/doc/source/userdoc/hadoop-swift.rst b/doc/source/userdoc/hadoop-swift.rst index 6c1257f317..b629365072 100644 --- a/doc/source/userdoc/hadoop-swift.rst +++ b/doc/source/userdoc/hadoop-swift.rst @@ -6,7 +6,7 @@ marriage. There were two steps to achieve this: * Hadoop side: https://issues.apache.org/jira/browse/HADOOP-8545 This patch is not merged yet and is still being developed, so that's why there is an ability to get the latest-version jar file from CDN: - http://savanna-files.mirantis.com/hadoop-swift/hadoop-swift-latest.jar + http://sahara-files.mirantis.com/hadoop-swift/hadoop-swift-latest.jar * Swift side: https://review.openstack.org/#/c/21015 This patch is merged into Grizzly. If you want to make it work in Folsom see the instructions in the section below. @@ -69,7 +69,7 @@ Hadoop patching --------------- You may build jar file by yourself choosing the latest patch from https://issues.apache.org/jira/browse/HADOOP-8545. Or you may get the latest -one from CDN http://savanna-files.mirantis.com/hadoop-swift/hadoop-swift-latest.jar +one from CDN http://sahara-files.mirantis.com/hadoop-swift/hadoop-swift-latest.jar You need to put this file to hadoop libraries (e.g. /usr/lib/share/hadoop/lib) into each job-tracker and task-tracker node in cluster. The main step in this section is to configure core-site.xml file on each of this node. diff --git a/doc/source/userdoc/hdp_plugin.rst b/doc/source/userdoc/hdp_plugin.rst index 562384a42d..0283e79c5a 100644 --- a/doc/source/userdoc/hdp_plugin.rst +++ b/doc/source/userdoc/hdp_plugin.rst @@ -1,7 +1,7 @@ Hortonworks Data Plaform Plugin =============================== -The Hortonworks Data Platform (HDP) Savanna plugin provides a way to provision HDP clusters on OpenStack using templates in a single click and in an easily repeatable fashion. As seen from the architecture diagram below, the Savanna controller serves as the glue between Hadoop and OpenStack. The HDP plugin mediates between the Savanna controller and Apache Ambari in order to deploy and configure Hadoop on OpenStack. Core to the HDP Plugin is Apache Ambari that is used as the orchestrator for deploying the HDP stack on OpenStack. +The Hortonworks Data Platform (HDP) Sahara plugin provides a way to provision HDP clusters on OpenStack using templates in a single click and in an easily repeatable fashion. As seen from the architecture diagram below, the Sahara controller serves as the glue between Hadoop and OpenStack. The HDP plugin mediates between the Sahara controller and Apache Ambari in order to deploy and configure Hadoop on OpenStack. Core to the HDP Plugin is Apache Ambari that is used as the orchestrator for deploying the HDP stack on OpenStack. .. image:: ../images/hdp-plugin-architecture.png :width: 800 px @@ -27,7 +27,7 @@ The HDP Plugin performs the following four primary functions during cluster crea Images ------ -The Savanna HDP plugin can make use of either minimal (operating system only) images or pre-populated HDP images. The base requirement for both is that the image is cloud-init enabled and contains a supported operating system (see http://docs.hortonworks.com/HDPDocuments/HDP1/HDP-1.2.4/bk_hdp1-system-admin-guide/content/sysadminguides_ha_chap2_3.html). +The Sahara HDP plugin can make use of either minimal (operating system only) images or pre-populated HDP images. The base requirement for both is that the image is cloud-init enabled and contains a supported operating system (see http://docs.hortonworks.com/HDPDocuments/HDP1/HDP-1.2.4/bk_hdp1-system-admin-guide/content/sysadminguides_ha_chap2_3.html). The advantage of a pre-populated image is that provisioning time is accelerated, as packages do not need to be downloaded and installed which make up the majority of the time spent in the provisioning cycle. @@ -60,9 +60,9 @@ Any packages that are not installed in a pre-populated image will automatically There are two VM images provided for use with the HDP Plugin: 1. `centos-6_64-hdp-1.3.qcow2 `_: This image contains most of the requisite packages necessary for HDP deployment. The packages contained herein correspond to the HDP 1.3 release. The operating system is a minimal CentOS 6.4 cloud-init enabled install. This image can only be used to provision HDP 1.3 hadoop clusters. -2. `centos-6-64-hdp-vanilla.qcow2 `_: This image provides only a minimal install of CentOS 6.4 and is cloud-init enabled. This image can be used to provision any versions of HDP supported by Savanna. +2. `centos-6-64-hdp-vanilla.qcow2 `_: This image provides only a minimal install of CentOS 6.4 and is cloud-init enabled. This image can be used to provision any versions of HDP supported by Sahara. -HDP plugin requires an image to be tagged in Savanna Image Registry with +HDP plugin requires an image to be tagged in Sahara Image Registry with two tags: 'hdp' and '' (e.g. '1.3.2'). Also in the Image Registry you will need to specify username for an image. @@ -76,8 +76,8 @@ The HDP plugin currently has the following limitations: * Currently, the HDP plugin provides support for HDP 1.3. Once HDP2 is released, support for this version will be provided. * Swift integration is not yet implemented. -* It is not possible to decrement the number of node-groups or hosts per node group in a Savanna generated cluster. -* Only the following services are available to be deployed via Savanna: +* It is not possible to decrement the number of node-groups or hosts per node group in a Sahara generated cluster. +* Only the following services are available to be deployed via Sahara: * Ambari * Nagios * Ganglia @@ -95,6 +95,6 @@ Prior to Hadoop cluster creation, the HDP plugin will perform the following vali * Ensure the deployment of one Ambari Server instance to the cluster * Ensure that each defined node group had an associated Ambari Agent configured -The HDP Plugin and Savanna Support +The HDP Plugin and Sahara Support ---------------------------------- A Hortonworks supported version of HDP OpenStack plugin will become available at a future date. For more information, please contact Hortonworks. diff --git a/doc/source/userdoc/installation.guide.rst b/doc/source/userdoc/installation.guide.rst index 8a2b0267b1..74e22e9503 100644 --- a/doc/source/userdoc/installation.guide.rst +++ b/doc/source/userdoc/installation.guide.rst @@ -1,8 +1,8 @@ -Savanna Installation Guide +Sahara Installation Guide ========================== We recommend you install in a way that will can keep your system in a -consistent state. Ways we recommend to install Savanna are: +consistent state. Ways we recommend to install Sahara are: * Install via `Fuel `_ @@ -18,7 +18,7 @@ To install with Fuel 1. Start by following `Quickstart `_ to install and setup OpenStack -2. Enable Savanna service during installation +2. Enable Sahara service during installation @@ -29,21 +29,21 @@ To install with RDO `_ to install and setup OpenStack. -2. Install the savanna-api service with, +2. Install the sahara-api service with, .. sourcecode:: console - $ yum install openstack-savanna + $ yum install openstack-sahara .. -3. Configure the savanna-api service to your liking. The configuration - file is located in ``/etc/savanna/savanna.conf``. +3. Configure the sahara-api service to your liking. The configuration + file is located in ``/etc/sahara/sahara.conf``. -4. Start the savanna-api service with, +4. Start the sahara-api service with, .. sourcecode:: console - $ service openstack-savanna-api start + $ service openstack-sahara-api start .. @@ -74,77 +74,77 @@ To install into a virtual environment $ sudo easy_install pip $ sudo pip install virtualenv -2. Setup virtual environment for Savanna: +2. Setup virtual environment for sahara: .. sourcecode:: console - $ virtualenv savanna-venv + $ virtualenv sahara-venv .. - This will install python virtual environment into ``savanna-venv`` directory + This will install python virtual environment into ``sahara-venv`` directory in your current working directory. This command does not require super user privileges and could be executed in any directory current user has write permission. -3. You can install the latest Savanna release version from pypi: +3. You can install the latest sahara release version from pypi: .. sourcecode:: console - $ savanna-venv/bin/pip install savanna + $ sahara-venv/bin/pip install sahara .. - Or you can get Savanna archive from ``_ and install it using pip: + Or you can get Sahara archive from ``_ and install it using pip: .. sourcecode:: console - $ savanna-venv/bin/pip install 'http://tarballs.openstack.org/savanna/savanna-master.tar.gz' + $ sahara-venv/bin/pip install 'http://tarballs.openstack.org/sahara/sahara-master.tar.gz' .. - Note that savanna-master.tar.gz contains the latest changes and might not be stable at the moment. - We recommend browsing ``_ and selecting the latest stable release. + Note that sahara-master.tar.gz contains the latest changes and might not be stable at the moment. + We recommend browsing ``_ and selecting the latest stable release. 4. After installation you should create configuration file. Sample config file location - depends on your OS. For Ubuntu it is ``/usr/local/share/savanna/savanna.conf.sample-basic``, - for Red Hat - ``/usr/share/savanna/savanna.conf.sample-basic``. Below is an example for Ubuntu: + depends on your OS. For Ubuntu it is ``/usr/local/share/sahara/sahara.conf.sample-basic``, + for Red Hat - ``/usr/share/sahara/sahara.conf.sample-basic``. Below is an example for Ubuntu: .. sourcecode:: console - $ mkdir savanna-venv/etc - $ cp savanna-venv/share/savanna/savanna.conf.sample-basic savanna-venv/etc/savanna.conf + $ mkdir sahara-venv/etc + $ cp sahara-venv/share/sahara/sahara.conf.sample-basic sahara-venv/etc/sahara.conf .. - check each option in savanna-venv/etc/savanna.conf, and make necessary changes + check each option in sahara-venv/etc/sahara.conf, and make necessary changes 5. Create database schema: .. sourcecode:: console - $ savanna-venv/bin/python savanna-venv/bin/savanna-db-manage --config-file savanna-venv/etc/savanna.conf upgrade head + $ sahara-venv/bin/python sahara-venv/bin/sahara-db-manage --config-file sahara-venv/etc/sahara.conf upgrade head .. -6. To start Savanna call: +6. To start Sahara call: .. sourcecode:: console - $ savanna-venv/bin/python savanna-venv/bin/savanna-api --config-file savanna-venv/etc/savanna.conf + $ sahara-venv/bin/python sahara-venv/bin/sahara-api --config-file sahara-venv/etc/sahara.conf .. Note: ----- -One of the :doc:`Savanna features `, Anti-Affinity, requires a Nova adjustment. +One of the :doc:`Sahara features `, Anti-Affinity, requires a Nova adjustment. See :ref:`Enabling Anti-Affinity ` for details. But that is purely optional. -Make sure that your operating system is not blocking Savanna port (default: 8386). +Make sure that your operating system is not blocking Sahara port (default: 8386). You may need to configure iptables in CentOS and some other operating systems. To get the list of all possible options run: .. sourcecode:: console - $ savanna-venv/bin/python savanna-venv/bin/savanna-api --help + $ sahara-venv/bin/python sahara-venv/bin/sahara-api --help -Further consider reading :doc:`overview` for general Savanna concepts and +Further consider reading :doc:`overview` for general Sahara concepts and :doc:`plugins` for specific plugin features/requirements diff --git a/doc/source/userdoc/overview.rst b/doc/source/userdoc/overview.rst index 71bc2c69b3..92574d331e 100644 --- a/doc/source/userdoc/overview.rst +++ b/doc/source/userdoc/overview.rst @@ -4,7 +4,7 @@ Getting Started Clusters -------- -A cluster deployed by Savanna consists of node groups. Node groups vary by +A cluster deployed by Sahara consists of node groups. Node groups vary by their role, parameters and number of machines. The picture below illustrates example of Hadoop cluster consisting of 3 node groups each having different role (set of processes). @@ -24,7 +24,7 @@ VMs. Templates --------- -In order to simplify cluster provisioning Savanna employs concept of templates. +In order to simplify cluster provisioning Sahara employs concept of templates. There are two kind of templates: node group template and cluster template. The former is used to create node groups, the later - clusters. Essentially templates have the very same parameters as corresponding entities. Their aim @@ -54,16 +54,16 @@ Image Registry -------------- OpenStack starts VMs based on pre-built image with installed OS. The image -requirements for Savanna depend on plugin and Hadoop version. Some plugins +requirements for Sahara depend on plugin and Hadoop version. Some plugins require just basic cloud image and install Hadoop on VMs from scratch. Some plugins might require images with pre-installed Hadoop. -The Savanna Image Registry is a feature which helps filter out images during +The Sahara Image Registry is a feature which helps filter out images during cluster creation. See :doc:`registering_image` for details on how to work with Image Registry. Features -------- -Savanna has several interesting features. The full list could be found there: +Sahara has several interesting features. The full list could be found there: :doc:`features` diff --git a/doc/source/userdoc/plugins.rst b/doc/source/userdoc/plugins.rst index e2c969de7a..6d194fd7ea 100644 --- a/doc/source/userdoc/plugins.rst +++ b/doc/source/userdoc/plugins.rst @@ -2,7 +2,7 @@ Provisioning Plugins ==================== This page lists all available provisioning plugins. In general a plugin -enables Savanna to deploy a specific Hadoop version/distribution in +enables Sahara to deploy a specific Hadoop version/distribution in various topologies and with management/monitoring tools. * :doc:`vanilla_plugin` - deploys Vanilla Apache Hadoop diff --git a/doc/source/userdoc/registering_image.rst b/doc/source/userdoc/registering_image.rst index 04b6253add..377554ace0 100644 --- a/doc/source/userdoc/registering_image.rst +++ b/doc/source/userdoc/registering_image.rst @@ -1,12 +1,12 @@ Registering an Image ==================== -Savanna deploys cluster of machines based on images stored in Glance. +Sahara deploys cluster of machines based on images stored in Glance. Each plugin has its own requirements on image contents, see specific plugin documentation for details. A general requirement for an image is to have cloud-init package installed. -Savanna requires image to be registered in Savanna Image Registry order to work with it. +Sahara requires image to be registered in Sahara Image Registry order to work with it. A registered image must have two properties set: * username - a name of the default cloud-init user. diff --git a/doc/source/userdoc/statuses.rst b/doc/source/userdoc/statuses.rst index f3516c0115..d9fb2a85e4 100644 --- a/doc/source/userdoc/statuses.rst +++ b/doc/source/userdoc/statuses.rst @@ -1,11 +1,11 @@ -Savanna Cluster Statuses Overview -================================= +Sahara Cluster Statuses Overview +================================ -All Savanna Cluster operations are performed in multiple steps. A Cluster object -has a ``Status`` attribute which changes when Savanna finishes one step of +All Sahara Cluster operations are performed in multiple steps. A Cluster object +has a ``Status`` attribute which changes when Sahara finishes one step of operations and starts another one. -Savanna supports three types of Cluster operations: +Sahara supports three types of Cluster operations: * Create a new Cluster * Scale/Shrink an existing Cluster * Delete an existing Cluster @@ -16,7 +16,7 @@ Creating a new Cluster 1. Validating ~~~~~~~~~~~~~ -Before performing any operations with OpenStack environment, Savanna validates +Before performing any operations with OpenStack environment, Sahara validates user input. There are two types of validations, that are done: @@ -35,38 +35,38 @@ This status means that the Provisioning plugin performs some infrastructural upd 3. Spawning ~~~~~~~~~~~ -Savanna sends requests to OpenStack for all resources to be created: +Sahara sends requests to OpenStack for all resources to be created: * VMs * Volumes - * Floating IPs (if Savanna is configured to use Floating IPs) + * Floating IPs (if Sahara is configured to use Floating IPs) It takes some time for OpenStack to schedule all required VMs and Volumes, -so Savanna wait until all of them are in ``Active`` state. +so Sahara wait until all of them are in ``Active`` state. 4. Waiting ~~~~~~~~~~ -Savanna waits while VMs' operating systems boot up and all internal infrastructure +Sahara waits while VMs' operating systems boot up and all internal infrastructure components like networks and volumes are attached and ready to use. 5. Preparing ~~~~~~~~~~~~ -Savanna preparers a Cluster for starting. This step includes generating ``/etc/hosts`` -file, so that all instances could access each other by a hostname. Also Savanna +Sahara preparers a Cluster for starting. This step includes generating ``/etc/hosts`` +file, so that all instances could access each other by a hostname. Also Sahara updates ``authorized_keys`` file on each VM, so that communications could be done without passwords. 6. Configuring ~~~~~~~~~~~~~~ -Savanna pushes service configurations to VMs. Both XML based configurations and +Sahara pushes service configurations to VMs. Both XML based configurations and environmental variables are set on this step. 7. Starting ~~~~~~~~~~~ -Savanna is starting Hadoop services on Cluster's VMs. +Sahara is starting Hadoop services on Cluster's VMs. 8. Active ~~~~~~~~~ @@ -80,19 +80,19 @@ Scaling/Shrinking an existing Cluster 1. Validating ~~~~~~~~~~~~~ -Savanna checks the scale/shrink request for validity. The Plugin method called +Sahara checks the scale/shrink request for validity. The Plugin method called for performing Plugin specific checks is different from creation validation method. 2. Scaling ~~~~~~~~~~ -Savanna performs database operations updating all affected existing Node Groups +Sahara performs database operations updating all affected existing Node Groups and creating new ones. 3. Adding Instances ~~~~~~~~~~~~~~~~~~~ -State similar to ``Spawning`` while Custer creation. Savanna adds required amount +State similar to ``Spawning`` while Custer creation. Sahara adds required amount of VMs to existing Node Groups and creates new Node Groups. 4. Configuring @@ -105,14 +105,14 @@ with a new ``/etc/hosts`` file. 5. Decommissioning ~~~~~~~~~~~~~~~~~~ -Savanna stops Hadoop services on VMs that will be deleted from a Cluster. +Sahara stops Hadoop services on VMs that will be deleted from a Cluster. Decommissioning Data Node may take some time because Hadoop rearranges data replicas around the Cluster, so that no data will be lost after tht VM is deleted. 6. Deleting Instances ~~~~~~~~~~~~~~~~~~~~~ -Savanna sends requests to OpenStack to release unneeded resources: +Sahara sends requests to OpenStack to release unneeded resources: * VMs * Volumes * Floating IPs (if they are used) @@ -137,9 +137,9 @@ Error State If Cluster creation fails, the Cluster will get into ``Error`` state. This state means the Cluster may not be able to perform any operations normally. This cluster will stay in database until it is manually deleted. The reason of -failure may be found in Savanna logs. +failure may be found in Sahara logs. -If an error occurs during ``Adding Instances`` operation, Savanna will first +If an error occurs during ``Adding Instances`` operation, Sahara will first try to rollback this operation. If rollback is impossible or fails itself, then -the Cluster will also get into ``Error`` state. \ No newline at end of file +the Cluster will also get into ``Error`` state. diff --git a/doc/source/userdoc/vanilla_plugin.rst b/doc/source/userdoc/vanilla_plugin.rst index 425ae7b922..cc7c42391b 100644 --- a/doc/source/userdoc/vanilla_plugin.rst +++ b/doc/source/userdoc/vanilla_plugin.rst @@ -15,7 +15,7 @@ Keep in mind that if you want to use "Swift Integration" feature ( :doc:`feature Hadoop must be patched with implementation of Swift File System. For more information about patching required by "Swift Integration" feature see :doc:`hadoop-swift`. -Vanilla plugin requires an image to be tagged in Savanna Image Registry with +Vanilla plugin requires an image to be tagged in Sahara Image Registry with two tags: 'vanilla' and '' (e.g. '1.2.1'). Also you should specify username of default cloud-user used in the Image: