puppetfactory 0.5.4 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f21eff79fdd9ffaded59f986834a49490379cf2
4
- data.tar.gz: d38bc62908bcbace5d0155f9a1c77adf8dac0965
3
+ metadata.gz: 3defebfd3eeeeb27423a7f864e73ffc131eb44ad
4
+ data.tar.gz: c33e1dcf1f4df1641b615b35bbba212cad039bbf
5
5
  SHA512:
6
- metadata.gz: 0a4543c5d601cc2478e21088024b991e2afcdd13fe3fc2db1c3b915f8794f54a03416e952554d70851ff86e23b31681bc48c00967f632accd256ece149be86d9
7
- data.tar.gz: e68ef55d635a24b24b97283cf8fe53b0a543a2d65d4ee2fb720eab471dbdaffef0b99a301d2f91294c6d12232bab9e2cd56cd6ac0aed9548d743301ee59406e9
6
+ metadata.gz: 7048bcca8e6508c619e97733b70b1f150799d1f47cb74ae8416bc7cc0a03202d7b0ea35f2c9a81050216ec8bfb6944d2a59798344e91f539204d80ec152da27a
7
+ data.tar.gz: 10a5e94ece8c2eae39d357d60e6ab0ac345b60b373458f9a4f0c57bd4845bf29f8eb4aa20e72de56f5fdc91db8f02023821e3fdb600d2de8a0c5fd00ebb99710
@@ -23,10 +23,10 @@ class Puppetfactory::Plugins::Classification < Puppetfactory::Plugins
23
23
 
24
24
  def create(username, password)
25
25
  environment = Puppetfactory::Helpers.environment_name(username)
26
- certname = "#{username}.#{@suffix}"
26
+ certname = "#{username}.#{@suffix}"
27
27
 
28
28
  group_hash = {
29
- 'name' => certname,
29
+ 'name' => "#{username}'s environment group",
30
30
  'environment' => environment,
31
31
  'environment_trumps' => true,
32
32
  'parent' => '00000000-0000-4000-8000-000000000000',
@@ -37,26 +37,25 @@ class Puppetfactory::Plugins::Classification < Puppetfactory::Plugins
37
37
  begin
38
38
  @puppetclassify.groups.create_group(group_hash)
39
39
  rescue => e
40
- $logger.error "Could not create node group #{certname}: #{e.message}"
40
+ $logger.error "Could not create node group for #{username}: #{e.message}"
41
41
  return false
42
42
  end
43
43
 
44
- $logger.info "Created node group #{certname} assigned to environment #{environment}"
44
+ $logger.info "Created node group for #{certname} assigned to environment #{environment}"
45
45
  true
46
46
  end
47
47
 
48
48
  def delete(username)
49
- certname = "#{username}.#{@suffix}"
50
49
 
51
50
  begin
52
- group_id = @puppetclassify.groups.get_group_id(certname)
51
+ group_id = @puppetclassify.groups.get_group_id("#{username}'s environment group")
53
52
  @puppetclassify.groups.delete_group(group_id)
54
53
  rescue => e
55
- $logger.warn "Error removing node group #{certname}: #{e.message}"
54
+ $logger.warn "Error removing node group for #{username}: #{e.message}"
56
55
  return false
57
56
  end
58
57
 
59
- $logger.info "Node group #{certname} removed"
58
+ $logger.info "Node group #{username} removed"
60
59
  true
61
60
  end
62
61
 
@@ -65,9 +64,9 @@ class Puppetfactory::Plugins::Classification < Puppetfactory::Plugins
65
64
  certname = "#{username}.#{@suffix}"
66
65
 
67
66
  begin
68
- ngid = @puppetclassify.groups.get_group_id(certname)
67
+ ngid = @puppetclassify.groups.get_group_id("#{username}'s environment group")
69
68
  rescue => e
70
- $logger.warn "Error retrieving node group #{certname}: #{e.message}"
69
+ $logger.warn "Error retrieving node group for #{certname}: #{e.message}"
71
70
  return nil
72
71
  end
73
72
 
@@ -0,0 +1,45 @@
1
+ require 'puppetfactory'
2
+
3
+ # inherit from Puppetfactory::Plugins
4
+ class Puppetfactory::Plugins::Tree < Puppetfactory::Plugins
5
+ attr_reader :weight
6
+
7
+ def initialize(options)
8
+ super(options) # call the superclass to initialize it
9
+
10
+ @weight = 1
11
+ @environments = options[:environments]
12
+ end
13
+
14
+ def userinfo(username, extended = false)
15
+ # we can bail if we don't want to add to the basic user object.
16
+ # for example, if these are heavy operations.
17
+ return unless extended
18
+ environment = Puppetfactory::Helpers.environment_name(username)
19
+
20
+ # return a hash with the :username key
21
+ {
22
+ :username => username,
23
+ :tree => pathwalker("#{@environments}/#{environment}", '#' ).to_json,
24
+ }
25
+ end
26
+
27
+ def pathwalker(path, parent)
28
+ accumulator = []
29
+ Dir.glob("#{path}/*").each do |file|
30
+ filename = File.basename file
31
+
32
+ # this way .fixtures.yml, etc will show up
33
+ next if ['.', '..'].include? filename
34
+
35
+ if File.directory?(file)
36
+ accumulator << { "id" => file, "parent" => parent, "text" => filename }
37
+ accumulator << pathwalker(file, file)
38
+ else
39
+ accumulator << { "id" => file, "parent" => parent, "icon" => "jstree-file", "text" => filename }
40
+ end
41
+ end
42
+ accumulator.flatten
43
+ end
44
+
45
+ end
@@ -1,4 +1,5 @@
1
1
  require 'json'
2
+ require 'restclient'
2
3
  require 'puppetfactory'
3
4
 
4
5
  class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
@@ -6,6 +7,8 @@ class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
6
7
  def initialize(options)
7
8
  super(options)
8
9
 
10
+ @master = options[:master]
11
+ @confdir = options[:confdir]
9
12
  @codedir = options[:codedir]
10
13
  @stagedir = options[:stagedir]
11
14
  @puppetcode = options[:puppetcode]
@@ -52,11 +55,8 @@ class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
52
55
  end
53
56
 
54
57
  def delete(username)
55
- environment = "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
56
- FileUtils.rm_rf environment
57
-
58
- # also delete any prefixed environments. Is this even a good idea?
59
- FileUtils.rm_rf "#{@environments}/#{username}_*" if @repomodel == :peruser
58
+ FileUtils.rm_rf "#{@codestage}/#{Puppetfactory::Helpers.environment_name(username)}"
59
+ FileUtils.rm_rf "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
60
60
  end
61
61
 
62
62
  def deploy(username)
@@ -64,7 +64,22 @@ class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
64
64
  return if @codestage == @environments
65
65
  environment = Puppetfactory::Helpers.environment_name(username)
66
66
 
67
- FileUtils.cp_r("#{@codestage}/#{environment}/.", "#{@environments}/#{environment}")
67
+ begin
68
+ FileUtils.cp_r("#{@codestage}/#{environment}/*", "#{@environments}/#{environment}/")
69
+ FileUtils.chown_R('pe-puppet', 'pe-puppet', "#{@environments}/#{environment}")
70
+
71
+ RestClient::Resource.new(
72
+ "https://#{@master}:8140/puppet-admin-api/v1/environment-cache?environment=#{environment}",
73
+ :ssl_client_cert => OpenSSL::X509::Certificate.new(File.read("#{@confdir}/ssl/certs/#{@master}.pem")),
74
+ :ssl_client_key => OpenSSL::PKey::RSA.new(File.read("#{@confdir}/ssl/private_keys/#{@master}.pem")),
75
+ :ssl_ca_file => "#{@confdir}/ssl/ca/ca_crt.pem",
76
+ :verify_ssl => OpenSSL::SSL::VERIFY_PEER
77
+ ).delete
78
+ rescue => e
79
+ $logger.error "Deploying environment #{environment} failed: #{e.message}"
80
+ $logger.debug e.backtrace
81
+ raise "Error deploying environment #{environment}."
82
+ end
68
83
  end
69
84
 
70
85
  def redeploy(username)
data/public/css/style.css CHANGED
@@ -76,6 +76,7 @@ table#currentuser th.header {
76
76
  white-space: nowrap;
77
77
  text-align: right;
78
78
  padding-right: 1em;
79
+ vertical-align: top;
79
80
  }
80
81
  table#currentuser tr.actions {
81
82
  text-align: right;