Files View Install
Instantiate a Files view. For now it does only create a single instance of the file view for current cluster. It uses the Apache Ambari REST Api.
module.exports = header: 'Ambari Views', handler: ({options})->
url = ''
protocol = if options.config['api.ssl'] is 'true' then 'https' else 'http'
port = if protocol is 'https' then options.config['client.api.ssl.port'] else options.config['client.api.port']
url = "#{protocol}://#{options.fqdn}:#{port}"
Create the FILES View
@system.execute
header: 'FILES View'
if: options.views.files.enabled
cmd: """
curl --fail --insecure --user admin:#{options.admin_password} -i -H 'X-Requested-By: ambari' -X POST \
\"#{url}/api/v1/views/FILES/versions/#{options.views.files.version}/instances/RYBA_FILES_VIEW\" \
--data '#{JSON.stringify ViewInstanceInfo:options.views.files.configuration}'
"""
unless_exec: """
curl --fail --insecure --user admin:#{options.admin_password} -i -H 'X-Requested-By: ambari' -X GET \
\"#{url}/api/v1/views/FILES/versions/#{options.views.files.version}/instances/RYBA_FILES_VIEW\"
"""
Create the HIVE View
@system.execute
header: 'HIVE View'
if: options.views.hive.enabled
cmd: """
curl --fail --insecure --user admin:#{options.admin_password} -i -H 'X-Requested-By: ambari' -X POST \
\"#{url}/api/v1/views/HIVE/versions/#{options.views.hive.version}/instances/RYBA_HIVE_VIEW\" \
--data '#{JSON.stringify ViewInstanceInfo:options.views.hive.configuration}'
"""
unless_exec: """
curl --fail --insecure --user admin:#{options.admin_password} -i -H 'X-Requested-By: ambari' -X GET \
\"#{url}/api/v1/views/HIVE/versions/#{options.views.hive.version}/instances/RYBA_HIVE_VIEW\"
"""
# refers to hortonworks knowledge Base
# when trying to instantiate a hive view. Some table might bemissing in ambari's database
# its du to the fact that the page size for a row is to high (physical limit)
# the table must be created with TEST attribute instead of varying character (2800)
# @system.execute
# header: "Fix Ambari Database"
# unless_exec: db.cmd options.db, "select * from DS_JOBIMPL_1 limit 1"
# cmd: db.cmd options.db, """
# CREATE TABLE DS_JOBIMPL_154 (
# ds_id TEXT NOT NULL,
# ds_applicationid TEXT,
# ds_conffile TEXT,
# ds_dagid TEXT,
# ds_dagname TEXT,
# ds_database TEXT,
# ds_datesubmitted bigint,
# ds_duration bigint,
# ds_forcedcontent TEXT,
# ds_globalsettings TEXT,
# ds_logfile TEXT,
# ds_owner TEXT,
# ds_queryfile TEXT,
# ds_queryid TEXT,
# ds_referrer TEXT,
# ds_sessiontag TEXT,
# ds_sqlstate TEXT,
# ds_status TEXT,
# ds_statusdir TEXT,
# ds_statusmessage TEXT,
# ds_title TEXT
# );
# """
Create the TEZ View
@system.execute
header: 'TEZ View'
if: options.views.tez.enabled
cmd: """
curl --fail --insecure --user admin:#{options.admin_password} -i -H 'X-Requested-By: ambari' -X POST \
\"#{url}/api/v1/views/TEZ/versions/#{options.views.tez.version}/instances/RYBA_TEZ_VIEW\" \
--data '#{JSON.stringify ViewInstanceInfo:options.views.tez.configuration}'
"""
unless_exec: """
curl --fail --insecure --user admin:#{options.admin_password} -i -H 'X-Requested-By: ambari' -X GET \
\"#{url}/api/v1/views/TEZ/versions/#{options.views.tez.version}/instances/RYBA_TEZ_VIEW\"
"""
Create the Workflow Manager (Oozie) View
@system.execute
header: 'Workflow Manager View'
if: options.views.wfmanager.enabled
cmd: """
curl --fail --insecure --user admin:#{options.admin_password} -i -H 'X-Requested-By: ambari' -X POST \
\"#{url}/api/v1/views/WORKFLOW_MANAGER/versions/#{options.views.wfmanager.version}/instances/RYBA_OOZIE_VIEW\" \
--data '#{JSON.stringify ViewInstanceInfo:options.views.wfmanager.configuration}'
"""
unless_exec: """
curl --fail --insecure --user admin:#{options.admin_password} -i -H 'X-Requested-By: ambari' -X GET \
\"#{url}/api/v1/views/WORKFLOW_MANAGER/versions/#{options.views.wfmanager.version}/instances/RYBA_OOZIE_VIEW\"
"""