Skip to content

Commit

Permalink
(feat) adding helper functions, apply_manifest
Browse files Browse the repository at this point in the history
  • Loading branch information
tphoney committed Oct 5, 2018
1 parent bb47e6b commit ae8387e
Show file tree
Hide file tree
Showing 7 changed files with 202 additions and 23 deletions.
160 changes: 160 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
---
require: rubocop-rspec
inherit_from: .rubocop_todo.yml
AllCops:
TargetRubyVersion: '2.3'
Include:
- "**/*.rb"
Exclude:
- bin/*
- ".vendor/**/*"
- Gemfile
- Rakefile
- pkg/**/*
- spec/fixtures/**/*
- vendor/**/*
Metrics/LineLength:
Description: People have wide screens, use them.
Max: 200
RSpec/BeforeAfterAll:
Description: Beware of using after(:all) as it may cause state to leak between tests.
A necessary evil in acceptance testing.
Exclude:
- spec/acceptance/**/*.rb
RSpec/HookArgument:
Description: Prefer explicit :each argument, matching existing module's style
EnforcedStyle: each
RSpec/SubjectStub:
Exclude:
- 'spec/puppet/resource_api/base_context_spec.rb'
Style/BlockDelimiters:
Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to
be consistent then.
EnforcedStyle: braces_for_chaining
Style/ClassAndModuleChildren:
Description: Compact style reduces the required amount of indentation.
EnforcedStyle: compact
# this needs to be easily usable in the gemspec
Exclude:
- 'lib/puppet/resource_api/version.rb'
Style/EmptyElse:
Description: Enforce against empty else clauses, but allow `nil` for clarity.
EnforcedStyle: empty
Style/FormatString:
Description: Following the main puppet project's style, prefer the % format format.
EnforcedStyle: percent
Style/FormatStringToken:
Description: Following the main puppet project's style, prefer the simpler template
tokens over annotated ones.
EnforcedStyle: template
Style/Lambda:
Description: Prefer the keyword for easier discoverability.
EnforcedStyle: literal
Style/RegexpLiteral:
Description: Community preference. See https://github.com/voxpupuli/modulesync_config/issues/168
EnforcedStyle: percent_r
Style/TernaryParentheses:
Description: Checks for use of parentheses around ternary conditions. Enforce parentheses
on complex expressions for better readability, but seriously consider breaking
it up.
EnforcedStyle: require_parentheses_when_complex
Style/TrailingCommaInArguments:
Description: Prefer always trailing comma on multiline argument lists. This makes
diffs, and re-ordering nicer.
EnforcedStyleForMultiline: comma
Style/SymbolArray:
Description: Using percent style obscures symbolic intent of array's contents.
EnforcedStyle: brackets
Layout/EndOfLine:
Enabled: false
Style/CollectionMethods:
Enabled: true
Style/MethodCalledOnDoEndBlock:
Enabled: true
Style/StringMethods:
Enabled: true
Metrics/AbcSize:
Enabled: false
Metrics/BlockLength:
Enabled: false
Metrics/ClassLength:
Enabled: false
Metrics/CyclomaticComplexity:
Enabled: false
Metrics/MethodLength:
Enabled: false
Metrics/ModuleLength:
Enabled: false
Metrics/ParameterLists:
Enabled: false
Metrics/PerceivedComplexity:
Enabled: false
RSpec/DescribeClass:
Enabled: false
RSpec/ExampleLength:
Enabled: false
RSpec/MessageExpectation:
Enabled: false
RSpec/MultipleExpectations:
Enabled: false
RSpec/NestedGroups:
Enabled: false
Style/AsciiComments:
Enabled: false
Style/IfUnlessModifier:
Enabled: false
Style/SymbolProc:
Enabled: false

# local overrides

# overridden for local conventions
Naming/FileName:
Exclude:
- 'puppet-resource_api.gemspec'

# metaprogramming makes everything "fun"
Lint/NestedMethodDefinition:
Exclude:
- 'lib/puppet/resource_api.rb'

# Interacting with external API makes message spies pretty useless
RSpec/MessageSpies:
Enabled: false

# If neighbouring parameters are both hashes, it helps to have braces round both.
Style/BracesAroundHashParameters:
Exclude:
- 'spec/puppet/resource_api/base_context_spec.rb'

# requires 2.3's squiggly HEREDOC support, which we can't use, yet
# see http://www.virtuouscode.com/2016/01/06/about-the-ruby-squiggly-heredoc-syntax/
Layout/IndentHeredoc:
Enabled: false

# Updated in 0.53 (or thereabouts)
Style/TrailingCommaInArrayLiteral:
Description: Prefer always trailing comma on multiline literals. This makes diffs,
and re-ordering nicer.
EnforcedStyleForMultiline: comma
Style/TrailingCommaInHashLiteral:
Description: Prefer always trailing comma on multiline literals. This makes diffs,
and re-ordering nicer.
EnforcedStyleForMultiline: comma

# Add allowing "is", as it is a technical term in puppet
Naming/UncommunicativeMethodParamName:
Description: Checks for method parameter names that contain capital letters, end in
numbers, or do not meet a minimal length.
Enabled: true
MinNameLength: 3
AllowNamesEndingInNumbers: true
AllowedNames:
- io
- id
- is
ForbiddenNames: []

# This cop breaks syntax highlighting in VSCode
Layout/ClosingHeredocIndentation:
Enabled: false
Empty file added .rubocop_todo.yml
Empty file.
4 changes: 2 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ gemspec

group :test do
gem 'rake', '~> 10.0'
gem 'rspec-its', '~> 1.0'
gem 'rspec-collection_matchers', '~> 1.0'
gem 'rspec', '~> 3.0'
gem 'rspec-collection_matchers', '~> 1.0'
gem 'rspec-its', '~> 1.0'
gem 'rubocop'
gem 'rubocop-rspec'
end
Expand Down
19 changes: 17 additions & 2 deletions lib/solid_waffle.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
# frozen_string_literal: true

require 'pry'
require 'bolt_spec/run'

# Helper methods for testing puppet content
module SolidWaffle

This comment has been minimized.

Copy link
@zyzbc

zyzbc Jun 30, 2019

CreatObject
''0.......''

include BoltSpec::Run
def apply_manifest(manifest, _fuckit)
config_data = {
'ssh' => { 'host-key-check' => false },
'winrm' => { 'ssl' => false },
}
host = ENV['HOSTY']
result = run_command("/opt/puppetlabs/puppet/bin/puppet apply -e '#{manifest}'", host, config: config_data)
result
end

class SolidWaffle
def self.akimbo
def akimbo
puts 'akimbo'
end
end
28 changes: 16 additions & 12 deletions lib/solid_waffle/rake_tasks.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'solid_waffle'
require 'bolt_spec/run'

Expand All @@ -7,12 +9,12 @@
puts 'oi oi savaloy'
end
desc "provision machines - vmpooler eg `bundle exec rake 'provision[ubuntu-1604-x86_64]`"
task :provision, [:platform] do |task, args|
task :provision, [:platform] do |_task, args|
platform = if args[:platform].nil?
'ubuntu-1604-x86_64'
else
args[:platform]
end
end
puts "Using VMPooler for #{platform}"
vmpooler = Net::HTTP.start(ENV['VMPOOLER_HOST'] || 'vmpooler.delivery.puppetlabs.net')

Expand All @@ -30,31 +32,33 @@
puts 'pre_setup'
end
desc 'install puppet - PE / FOSS / Bolt'
task :install_puppet, [:hostname] do |task, args|
task :install_puppet, [:hostname] do |_task, args|
puts 'install_puppet'
config_data = {
"ssh" => { "host-key-check" => false },
"winrm" => { "ssl" => false } }
'ssh' => { 'host-key-check' => false },
'winrm' => { 'ssl' => false },
}
include BoltSpec::Run
result = run_command('wget https://apt.puppetlabs.com/puppet5-release-xenial.deb', args[:hostname], config: config_data)
puts result
puts result
result = run_command('dpkg -i puppet5-release-xenial.deb', args[:hostname], config: config_data)
puts result
puts result
result = run_command('apt update', args[:hostname], config: config_data)
puts result
puts result
result = run_command('apt-get install puppet-agent -y', args[:hostname], config: config_data)
puts result
puts result
end

desc 'pre-test - build and install module'
task :pre_test, [:hostname] do |task, args|
task :pre_test, [:hostname] do |_task, args|
puts 'pre_test'
include BoltSpec::Run
`pdk build --force`
puts 'built'
config_data = {
"ssh" => { "host-key-check" => false },
"winrm" => { "ssl" => false } }
'ssh' => { 'host-key-check' => false },
'winrm' => { 'ssl' => false },
}
`scp pkg/puppetlabs-motd-2.0.0.tar.gz root@#{args[:hostname]}:/tmp`
result = run_command('/opt/puppetlabs/puppet/bin/puppet module install /tmp/puppetlabs-motd-2.0.0.tar.gz', args[:hostname], config: config_data)
puts result
Expand Down
6 changes: 4 additions & 2 deletions lib/solid_waffle/version.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# frozen_string_literal: true

# version of this gem
class SolidWaffle
VERSION ||= '0.0.1'.freeze
module SolidWaffle
VERSION ||= '0.0.1'
end
8 changes: 3 additions & 5 deletions solid_waffle.gemspec
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
# coding: utf-8

lib = File.expand_path('../lib', __FILE__)
lib = File.expand_path('lib', __dir__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'solid_waffle/version'

Gem::Specification.new do |spec|
spec.name = 'solid_waffle'
spec.version = SolidWaffle::VERSION
spec.homepage = 'https://github.com/puppetlabs/solid-waffle'
spec.license = 'Apache 2.0'
spec.license = 'Apache-2.0'
spec.authors = ['Puppet, Inc.']
spec.email = ['info@puppet.com']
spec.files = Dir[
Expand All @@ -22,5 +20,5 @@ Gem::Specification.new do |spec|
Providing a simple command line tool for puppet content creators, to enable simple and complex test deployments.
EOF
spec.summary = 'Providing a simple command line tool for puppet content creators, to enable simple and complex test deployments.'
spec.add_runtime_dependency 'bolt'
spec.add_runtime_dependency 'bolt', ['>= 0.22.0', '< 1.0.0']
end

0 comments on commit ae8387e

Please sign in to comment.