Skip to content

Commit

Permalink
Merge pull request #10 from jordiprats/master
Browse files Browse the repository at this point in the history
servergroup and download type
  • Loading branch information
jordiprats authored Dec 7, 2017
2 parents 79a6176 + a3c10a3 commit b810163
Show file tree
Hide file tree
Showing 7 changed files with 154 additions and 27 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,6 @@
/spec/fixtures/manifests
/spec/fixtures/modules
/Gemfile.lock
/.yardwarns
/.yardoc
/doc
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

## 0.1.10

* added **eypconf_group** fact
* added **eypconf_servergroup** fact
* added **download** type to download files checking if the resulting file is empty

## 0.1.9

* removed bool2httpd function
* removed **bool2httpd** function

## 0.1.8

Expand Down
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,23 @@ in ERB files you can call this module's functions using:
<%= scope.function_bool2onoff([@trace]) %>
```

to download a file you can use the download type:

```
download { 'salt':
url => 'https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm',
creates => '/tmp/test_repo_salt',
}
```

## Reference

### types

#### download

download a file using wget checking that the resulting file is not empty

### functions

#### bool2boolstr
Expand Down
25 changes: 0 additions & 25 deletions lib/facter/eypconf_group.rb

This file was deleted.

25 changes: 25 additions & 0 deletions lib/facter/eypconf_servergroup.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
if File.exists?('/opt/eypconf/id/servergroup.sh') then
servergroup = Facter::Util::Resolution.exec('bash /opt/eypconf/id/servergroup.sh').to_s
else
servergroup = Facter::Util::Resolution.exec('bash -c \'if [ -f /opt/eypconf/id/servergroup ]; then cat /opt/eypconf/id/server; fi\'')
end

unless servergroup.nil? or servergroup.empty?
Facter.add('eypconf_servergroup') do
setcode do
servergroup
end
end

Facter.add('eypconf_servergroup_uppercase') do
setcode do
servergroup.upcase
end
end

Facter.add('eypconf_servergroup_lowercase') do
setcode do
servergroup.downcase
end
end
end
47 changes: 47 additions & 0 deletions lib/puppet/provider/download/download_linux.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
Puppet::Type.type(:download).provide(:download_linux) do

def check_created_file(file)
if File.exists?(file)
if File.zero?(file)
self.debug("Found #{file} but empty")
return false
else
self.debug("Found #{file}")
return true
end
else
self.debug("Not found #{file}")
return false
end
end

def run_wget_command(url)

command = ["wget"]
command.push(url)
command.push("-O ", resource[:creates])

if resource[:cwd]
Dir.chdir resource[:cwd] do
run_command(command)
end
else
run_command(command)
end
end

private

def run_command(command)
command = command.join ' '
output = Puppet::Util::Execution.execute(command, {
:uid => 'root',
:gid => 'root',
:failonfail => false,
:combine => true,
:override_locale => true,
})
[output, $CHILD_STATUS.dup]
end

end
61 changes: 61 additions & 0 deletions lib/puppet/type/download.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
Puppet::Type.newtype(:download) do
@doc = 'download files'

newparam(:name) do
desc "An arbitrary tag for your own reference"
isnamevar
end

newproperty(:url) do
desc 'URL to download'

defaultto { @resource[:name] }

# If needing to run the SQL command, return a fake value that will trigger
# a sync, else return the expected SQL command so no sync takes place
def retrieve
if @resource.should_run_wget
return :notrun
else
return self.should
end
end

def sync
output, status = provider.run_wget_command(value)
self.fail("Error executing wget; returned #{status}: '#{output}'") unless status == 0
end
end

newparam(:cwd, :parent => Puppet::Parameter::Path) do
desc "The working directory under which the wget command should be executed."
defaultto("/tmp")
end

newparam(:creates) do
desc "file created"

def matches(value)
provider.check_created_file(value)
end
end

newparam(:refreshonly, :boolean => true) do
desc "If 'true', it will only be executed via a notify/subscribe event."

defaultto(:false)
newvalues(:true, :false)
end

def should_run_wget(refreshing = false)
creates_param = @parameters[:creates]
return false if !creates_param.nil? && !creates_param.value.nil? && creates_param.matches(creates_param.value)
return false if !refreshing && @parameters[:refreshonly].value == :true
true
end

def refresh
self.property(:command).sync if self.should_run_wget(true)
end

end

0 comments on commit b810163

Please sign in to comment.