| # |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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 |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # 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. |
| # |
| # |
| define hdp::package( |
| $ensure = present, |
| $package_type = undef, |
| $size = 64, |
| $java_needed = true, |
| $lzo_needed = false |
| ) |
| { |
| |
| $pt = $package_type ? { |
| undef => $name, |
| default => $package_type |
| } |
| |
| hdp::package::process_pkg { $name: |
| ensure => $ensure, |
| package_type => $pt, |
| size => $size, |
| java_needed => $java_needed, |
| lzo_needed => $lzo_needed |
| } |
| } |
| |
| define hdp::package::process_pkg( |
| $ensure = present, |
| $package_type, |
| $size, |
| $java_needed, |
| $lzo_needed |
| ) |
| { |
| |
| |
| debug("##Processing package: $ensure,$package_type,$size,$java_needed,$lzo_needed") |
| |
| include hdp::params |
| |
| if hdp_is_empty($hdp::params::alt_package_names[$package_type]) { |
| hdp_fail("No packages for $package_type") |
| } |
| |
| if hdp_is_empty($hdp::params::alt_package_names[$package_type][$size]) { |
| |
| if hdp_is_empty($hdp::params::alt_package_names[$package_type][ALL]) { |
| hdp_fail("No packages for $package_type") |
| } |
| else { |
| $packages_list_by_size = $hdp::params::alt_package_names[$package_type][ALL] |
| } |
| } |
| else { |
| $packages_list_by_size = $hdp::params::alt_package_names[$package_type][$size] |
| |
| } |
| if hdp_is_empty($packages_list_by_size[$hdp::params::hdp_os_type]) { |
| |
| if hdp_is_empty($packages_list_by_size[ALL]) { |
| hdp_fail("No packages for $package_type") |
| } |
| else { |
| $packages_list = $packages_list_by_size[ALL] |
| } |
| } |
| else { |
| $packages_list = $packages_list_by_size[$hdp::params::hdp_os_type] |
| } |
| |
| debug("##Packages list: $packages_list") |
| |
| if (($java_needed == true) and ($ensure == 'present')){ |
| hdp::java::package{ $name: |
| size => $size |
| } |
| } |
| |
| if (($lzo_needed == true) and ($ensure == 'present')){ |
| Hdp::Lzo::Package<|title == $size|> |
| } |
| |
| if ($ensure == 'uninstalled') { |
| $ensure_actual = 'purged' |
| } else { |
| $ensure_actual = $ensure |
| } |
| $tag = regsubst($name,' ','-',G) |
| if $packages_list != $hdp::params::NOTHING { |
| package{ $packages_list: |
| ensure => $ensure_actual, |
| tag => $tag |
| } |
| } |
| anchor{ "hdp::package::${name}::begin": } -> Package<|tag == $tag|> -> anchor{ "hdp::package::${name}::end": } |
| |
| if (($java_needed == true)and ($ensure == 'present')) { |
| Anchor["hdp::package::${name}::begin"] -> Hdp::Java::Package[$name] -> Anchor["hdp::package::${name}::end"] |
| } |
| } |
| |
| # Removes the specified package using shell command appropriate for current OS type. |
| # Method DOES NOT resolve package name via hdp::params. |
| # If package does not exist or is not installed, command does nothing. |
| define hdp::package::remove_pkg( |
| $package_type, |
| ) |
| { |
| |
| # TODO: For non-rpm based systems, provide appropriate command |
| exec { "remove_package ${package_type}": |
| path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", |
| command => $hdp::params::hdp_os_type ? { |
| default => "rpm -e --allmatches ${package_type} ; true" |
| }, |
| } |
| |
| } |