CMR-OpenSearch is a web application developed by NASA EOSDIS to enable data discovery, search, and access across the CMR Earth Science data holdings via the OpenSearch standard.

License: ECL-2.0

Language: Ruby

Common Metadata Repository (CMR) OpenSearch

Visit NASA's EOSDIS CMR OpenSearch at:

The CMR OpenSearch documentation page is at:

Build Status


CMR OpenSearch is a web application developed by NASA EOSDIS to enable data discovery, search, and access across Earth Science data holdings by using an open standard. It provides an interface compliant with the OpenSearch 1.1 (Draft 5) specification by taking advantage of NASA's Common Metadata Repository (CMR) APIs for data discovery and access.


Copyright © 2007-2014 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Third-Party Licenses

See public/licenses.txt


  • Ruby 2.1.2
  • A Ruby version manager such as RVM or rbenv is strongly recommended.

Initial setup

Once the repository is cloned locally and Ruby 2.1.2 is installed, you must install the dependencies. If you don't have the bundler gem already installed, execute the command below in the project root directory:

gem install bundler   

or if you wish to install the bundler without documentation:

gem install bundler --no-rdoc --no-ri

Install all the gem dependencies:

bundle install    

Set up the required environment

The application requires the environment variables below to be set in order to run the web application:

URL of the internal / back-end CMR API instance endpoint. In a hosted environment, the application takes advantage of the direct access back-end interal URLs for increased performance in comparison to the public CMR API instance endpoint. For local installs or installs in non-CMR hosting environments, the catalog_rest_endpoint and the public_catalog_rest_endpoint should both point to the public CMR search API endpoint.

catalog_rest_endpoint = <internal endpoint for the CMR Search API instance used by the application>

URL of your specific CMR OpenSearch install:

opensearch_url = <CMR OpenSearch application URL>

URL of the public CMR search API instance used in OpenSearch results links in the response ATOM feed:

public_catalog_rest_endpoint = <public endpoint for the CMR Search API instance>

URL for the release page of the CMR OpenSearch application. The release page references appear on the user interface as well as in the search results:

release_page = <CMR OpenSearch EarthData release page>

The ATOM feed author email to be used for CMR entries in the matching ATOM results feed:

contact = <atom feed author email for each feed entry>

The environment specific postfix (such as dev,PT, TB etc.) for the internally generated client_id sent to echo in order to obtain an echo token:

mode = <postfix for client_id string used in obtaining echo tokens>

The ECHO REST endpoint used for obtaining user access tokens:

echo_rest_endpoint = <echo REST endpoint>

A CMR token with CMR collection tagging permissions in the respective CMR environment that the public_catalog_rest_endpoint points to:


URL for the CMR documentation page which appears in the OpenSearch web application footer:

documentation_page = <CMR documentation page URL>

Email for the NASA official responsible for the CMR OpenSearch application:

organization_contact_email = <email>

Full name for the NASA official responsible for CMR OpenSearch application:

organization_contact_name = <full name>

We provide default values for the above environment variables to enable running of the automated tests during CI (continuous integrations) builds. The application first looks for the configuration file:


If the file exists, the application loads the values of variables in the file in the Rails environment. Having a local config/application.yml file is an effective way to populate the environment variables that the application needs in order to run. A sample config/application.yml file is below:

current: &current
    opensearch_url: http://localhost:3000/
    mode: dev
    organization: Sample Organization Name
    organization_contact_name: ContactFirstName ContactLastName

    <<: *current
    CMR_ECHO_SYSTEM_TOKEN: "CMR system token with tagging permissions in the CMR environment that development uses"

    <<: *current
    CMR_ECHO_SYSTEM_TOKEN: "CMR system token with tagging permissions in the CMR PROD environment"

test: &test
    # test values are already defaulted to enable CI automated Rspec and cucumber tests

Run the automated Rspec and cucumber tests

Execute the commands below in the project root directory:


All tests should pass in less than 2 minutes.

Run the application

Execute the command below in the project root directory:

rails server

Open http://localhost:3000/opensearch in a local browser.

Project Statistics

Sourcerank 3
Repository Size 31.4 MB
Stars 0
Forks 3
Watchers 5
Open issues 0
Dependencies 109
Contributors 2
Tags 0
Last updated
Last pushed

Top Contributors See all

cduma Ronnie P

Something wrong with this page? Make a suggestion

Last synced: 2017-08-02 18:48:03 UTC

Login to resync this repository