puppetfactory 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
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;