dtk-node-agent 0.5.16 → 0.5.17

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZThkYzFjNTQ4ZDY3MTFiNTc1NjdlNzEyMGRiYzk3MzBkN2Y1ZmU0Yg==
4
+ YTNhMGI2MjY5NjExZmMyNmIwZjFiYWYwNzFjMWY5ZTgzOTJhNDY1Nw==
5
5
  data.tar.gz: !binary |-
6
- Zjk3MTc1NTAxZDAxMThmYzYzNjAwMzczYmI0ZWIwOWIxYjFmY2ZjYg==
6
+ M2E5ZTVhZjM2MjE1M2JhYTA1YjVjMzhjNjdiOTZjNzQzNjI2NDg4ZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YzU5NzAyNjc1ZDFkNmIzZWM4OTUxYWZkMjNjNDA0OGFjYzZhNDM5MzViODAz
10
- YWI0OGU3NDA2NTUxM2U0MmNmNTk4NGQ1ZDYyYjU5MWFhNDJkMDA0OTVmNGY5
11
- Mzk2YTIzYmVmOWYwMDgwZGM0ZDc2NWNmODY2MjU2NTE2NGEzM2M=
9
+ YmY2MWMyZTEyNmQ3ZmIxYzE5MzQyMTFhN2JhYmI4NWRlMmVjYjFjZWE3OTE5
10
+ ODg5NGZjYWQ3YjBjZTNkYjFhNmNlMWQ0YzAwZGRmMjRiMjU5YjZlYzliZGE5
11
+ YWE2M2U3OWJkOGEwYmJkZTJmOWVlNGIzOTIyZDRhM2E4ZDcwZjQ=
12
12
  data.tar.gz: !binary |-
13
- YzJhYTZiNjlmY2E5ODMwMjczNDU2NTM1N2MyYzRmYzAxM2I0MjRhYmU1Zjcw
14
- OGVhMWQyMmM5YmZjNTkyNTZiZTZkNmQwOTA4OWEyYWIwYjRhM2MwZTJmOTgw
15
- MGY3OTZmYjc2NGY1NDAxODg2MmM5NjY4ZDRlNjYxMGMyNDAxNGI=
13
+ ODI0ZGY0YjEwYWJlYjkxMGY3YjM5MmQ5MTU3YWYxOTNlMjIyZDFlMjQ4YTdh
14
+ NmEzYjVlNTczZmY2ZjdiNjZhYjEzMTg0NGRmMzFhN2EwOGJiYzYyMmQyNzZi
15
+ MzMzZjk4NDA3OTYxYTgzZGExOWExNTdlYzNiZmQ2ZTliNTllZWQ=
@@ -133,6 +133,9 @@ module DTK
133
133
 
134
134
  # copy mcollective config
135
135
  FileUtils.cp_r("#{base_dir}/mcollective_additions/server.cfg", "/etc/mcollective", :remove_destination => true)
136
+
137
+ # copy compatible mcollective init script
138
+ FileUtils.cp_r("#{base_dir}/mcollective_additions/#{Facter.osfamily.downcase}.mcollective.init", "/etc/init.d/mcollective", :remove_destination => true)
136
139
  end
137
140
 
138
141
  def self.base_dir
@@ -1,3 +1,3 @@
1
1
  module DtkNodeAgent
2
- VERSION="0.5.16"
2
+ VERSION="0.5.17"
3
3
  end
@@ -0,0 +1,85 @@
1
+ #!/bin/sh
2
+ #
3
+ # mcollective Application Server for STOMP based agents
4
+ #
5
+ #
6
+ # description: mcollective lets you build powerful Stomp compatible middleware clients in ruby without having to worry too
7
+ # much about all the setup and management of a Stomp connection, it also provides stats, logging and so forth
8
+ # as a bonus.
9
+ #
10
+ ### BEGIN INIT INFO
11
+ # Provides: mcollective
12
+ # Required-Start: $remote_fs
13
+ # Required-Stop: $remote_fs
14
+ # Default-Start: 2 3 4 5
15
+ # Default-Stop: 0 1 6
16
+ # Short-Description: Start daemon at boot time
17
+ # Description: Enable service provided by mcollective.
18
+ ### END INIT INFO
19
+
20
+ # check permissions
21
+
22
+ uid=`id -u`
23
+ [ $uid -gt 0 ] && { echo "You need to be root to run file" ; exit 4 ; }
24
+
25
+
26
+ # PID directory
27
+ pidfile="/var/run/mcollectived.pid"
28
+
29
+ name="mcollective"
30
+ mcollectived=/usr/sbin/mcollectived
31
+ daemonopts="--pid=${pidfile} --config=/etc/mcollective/server.cfg"
32
+
33
+
34
+ # Source function library.
35
+ . /lib/lsb/init-functions
36
+
37
+ # Check that binary exists
38
+ if ! [ -f $mcollectived ]
39
+ then
40
+ echo "mcollectived binary not found"
41
+ exit 5
42
+ fi
43
+
44
+ # create pid file if it does not exist
45
+ [ ! -f ${pidfile} ] && { touch ${pidfile} ; }
46
+
47
+ # See how we were called.
48
+ case "$1" in
49
+ start)
50
+ echo "Starting daemon: " $name
51
+ # start the program
52
+ start-stop-daemon -S -p ${pidfile} --oknodo -q -a ${mcollectived} -- ${daemonopts}
53
+ [ $? = 0 ] && { exit 0 ; } || { exit 1 ; }
54
+ log_success_msg "mcollective started"
55
+ touch $lock
56
+ ;;
57
+ stop)
58
+ echo "Stopping daemon: " $name
59
+ start-stop-daemon -K -R 5 -s "TERM" --oknodo -q -p ${pidfile}
60
+ [ $? = 0 ] && { exit 0 ; } || { exit 1 ; }
61
+ log_success_msg "mcollective stopped"
62
+ ;;
63
+ restart)
64
+ echo "Restarting daemon: " $name
65
+ $0 stop
66
+ sleep 2
67
+ $0 start
68
+ [ $? = 0 ] && { echo "mcollective restarted" ; exit 0 ; }
69
+ ;;
70
+ condrestart)
71
+ if [ -f $lock ]; then
72
+ $0 stop
73
+ # avoid race
74
+ sleep 2
75
+ $0 start
76
+ fi
77
+ ;;
78
+ status)
79
+ status_of_proc -p ${pidfile} ${mcollectived} ${name} && exit 0 || exit $?
80
+ ;;
81
+ *)
82
+ echo "Usage: mcollectived {start|stop|restart|condrestart|status}"
83
+ exit 2
84
+ ;;
85
+ esac
@@ -64,19 +64,26 @@ module MCollective
64
64
  remote_repo = "#{git_server}:#{vc[:repo]}"
65
65
  opts = Hash.new
66
66
  opts.merge!(:sha => vc[:sha]) if vc[:sha]
67
- begin
68
- if File.exists?(repo_dir)
69
- git_repo = ::DTK::NodeAgent::GitClient.new(repo_dir)
70
- git_repo.pull_and_checkout_branch?(vc[:branch],opts)
71
- else
72
- git_repo = ::DTK::NodeAgent::GitClient.new(repo_dir,:create=>true)
73
- git_repo.clone_branch(remote_repo,vc[:branch],opts)
67
+
68
+ clean_and_clone = true
69
+ if File.exists?("#{repo_dir}/.git")
70
+ pull_err = trap_and_return_error do
71
+ pull_module(repo_dir,vc[:branch],opts)
72
+ end
73
+ # clean_and_clone set so if pull error then try again, this time cleaning dir and freshly cleaning
74
+ clean_and_clone = pull_err.nil?
75
+ end
76
+
77
+ if clean_and_clone
78
+ begin
79
+ clean_and_clone_module(repo_dir,remote_repo,vc[:branch],opts)
80
+ rescue Exception => e
81
+ # TODO: not used now
82
+ error_backtrace = backtrace_subset(e)
83
+ # to achieve idempotent behavior; fully remove directory if any problems
84
+ FileUtils.rm_rf repo_dir
85
+ raise e
74
86
  end
75
- rescue Exception => e
76
- error_backtrace = backtrace_subset(e)
77
- #to achieve idempotent behavior; fully remove directory if any problems
78
- FileUtils.rm_rf repo_dir
79
- raise e
80
87
  end
81
88
  end
82
89
  ret.set_status_succeeded!()
@@ -92,6 +99,28 @@ module MCollective
92
99
  ret
93
100
  end
94
101
 
102
+ # returns a trapped error
103
+ def trap_and_return_error(&body)
104
+ error = nil
105
+ begin
106
+ yield
107
+ rescue => e
108
+ error = e
109
+ end
110
+ error
111
+ end
112
+
113
+ def pull_module(repo_dir,branch,opts={})
114
+ git_repo = ::DTK::NodeAgent::GitClient.new(repo_dir)
115
+ git_repo.pull_and_checkout_branch?(branch,opts)
116
+ end
117
+
118
+ def clean_and_clone_module(repo_dir,remote_repo,branch,opts={})
119
+ FileUtils.rm_rf repo_dir if File.exists?(repo_dir)
120
+ git_repo = ::DTK::NodeAgent::GitClient.new(repo_dir,:create=>true)
121
+ git_repo.clone_branch(remote_repo,branch,opts)
122
+ end
123
+
95
124
  def run(request)
96
125
  cmps_with_attrs = request[:components_with_attributes]
97
126
  node_manifest = request[:node_manifest]
@@ -0,0 +1,139 @@
1
+ #!/bin/sh
2
+ #
3
+ # mcollective Application Server for STOMP based agents
4
+ #
5
+ # chkconfig: - 24 76
6
+ #
7
+ # description: mcollective lets you build powerful Stomp compatible middleware clients in ruby without having to worry too
8
+ # much about all the setup and management of a Stomp connection, it also provides stats, logging and so forth
9
+ # as a bonus.
10
+ #
11
+ ### BEGIN INIT INFO
12
+ # Provides: mcollective
13
+ # Required-Start: $remote_fs
14
+ # Required-Stop: $remote_fs
15
+ # Short-Description: Start daemon at boot time
16
+ # Description: Enable service provided by daemon.
17
+ ### END INIT INFO
18
+
19
+ mcollectived="/usr/sbin/mcollectived"
20
+ pidfile="/var/run/mcollectived.pid"
21
+ if [ -d /var/lock/subsys ]; then
22
+ # RedHat/CentOS/etc who use subsys
23
+ lockfile="/var/lock/subsys/mcollective"
24
+ else
25
+ # The rest of them
26
+ lockfile="/var/lock/mcollective"
27
+ fi
28
+
29
+ # Check that binary exists
30
+ if ! [ -f $mcollectived ]; then
31
+ echo "mcollectived binary not found"
32
+ exit 5
33
+ fi
34
+
35
+ # Source function library.
36
+ . /etc/init.d/functions
37
+
38
+ if [ -f /etc/sysconfig/mcollective ]; then
39
+ . /etc/sysconfig/mcollective
40
+ fi
41
+
42
+ # Determine if we can use the -p option to daemon, killproc, and status.
43
+ # RHEL < 5 can't.
44
+ if status | grep -q -- '-p' 2>/dev/null; then
45
+ daemonopts="--pidfile $pidfile"
46
+ pidopts="-p $pidfile"
47
+ fi
48
+
49
+ start() {
50
+ echo -n "Starting mcollective: "
51
+ # Only try to start if not already started
52
+ if ! rh_status_q; then
53
+ daemon ${daemonopts} ${mcollectived} --pid=${pidfile} --config="/etc/mcollective/server.cfg"
54
+ fi
55
+ # This will be 0 if mcollective is already running
56
+ RETVAL=$?
57
+ echo
58
+ [ $RETVAL -eq 0 ] && touch ${lockfile}
59
+ return $RETVAL
60
+ }
61
+
62
+ stop() {
63
+ echo -n "Shutting down mcollective: "
64
+ # If running, try to stop it
65
+ if rh_status_q; then
66
+ killproc ${pidopts} -d 10 ${mcollectived}
67
+ else
68
+ # Non-zero status either means lockfile and pidfile need cleanup (1 and 2)
69
+ # or the process is already stopped (3), so we can just call true to
70
+ # trigger the cleanup that happens below.
71
+ true
72
+ fi
73
+ RETVAL=$?
74
+ echo
75
+ [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
76
+ return $RETVAL
77
+ }
78
+
79
+ restart() {
80
+ stop
81
+ start
82
+ }
83
+
84
+ reload_agents() {
85
+ echo -n "Reloading mcollective agents: "
86
+ killproc ${pidopts} ${mcollectived} -USR1
87
+ RETVAL=$?
88
+ echo
89
+ return $RETVAL
90
+ }
91
+
92
+ reload_loglevel() {
93
+ echo -n "Cycling mcollective logging level: "
94
+ killproc ${pidopts} ${mcollectived} -USR2
95
+ RETVAL=$?
96
+ echo
97
+ return $RETVAL
98
+ }
99
+
100
+ rh_status() {
101
+ status ${pidopts} ${mcollectived}
102
+ RETVAL=$?
103
+ return $RETVAL
104
+ }
105
+
106
+ rh_status_q() {
107
+ rh_status >/dev/null 2>&1
108
+ }
109
+
110
+ # See how we were called.
111
+ case "$1" in
112
+ start)
113
+ start
114
+ ;;
115
+ stop)
116
+ stop
117
+ ;;
118
+ restart)
119
+ restart
120
+ ;;
121
+ condrestart)
122
+ rh_status_q || exit 0
123
+ restart
124
+ ;;
125
+ reload-agents)
126
+ reload_agents
127
+ ;;
128
+ reload-loglevel)
129
+ reload_loglevel
130
+ ;;
131
+ status)
132
+ rh_status
133
+ ;;
134
+ *)
135
+ echo "Usage: mcollectived {start|stop|restart|condrestart|reload-agents|reload-loglevel|status}"
136
+ RETVAL=2
137
+ ;;
138
+ esac
139
+ exit $RETVAL
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dtk-node-agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.16
4
+ version: 0.5.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rich PELAVIN
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-30 00:00:00.000000000 Z
11
+ date: 2014-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet
@@ -126,6 +126,7 @@ files:
126
126
  - lib/config/install.config
127
127
  - lib/dtk-node-agent/installer.rb
128
128
  - lib/dtk-node-agent/version.rb
129
+ - mcollective_additions/debian.mcollective.init
129
130
  - mcollective_additions/plugins/README.md
130
131
  - mcollective_additions/plugins/v1.2/agent/discovery.rb
131
132
  - mcollective_additions/plugins/v1.2/agent/get_log_fragment.ddl
@@ -174,6 +175,7 @@ files:
174
175
  - mcollective_additions/plugins/v2.2/security/sshkey.ddl
175
176
  - mcollective_additions/plugins/v2.2/security/sshkey.rb
176
177
  - mcollective_additions/plugins/v2.2/util/puppetrunner.rb
178
+ - mcollective_additions/redhat.mcollective.init
177
179
  - mcollective_additions/server.cfg
178
180
  - puppet_additions/modules/r8/lib/puppet/type/r8_export_file.rb
179
181
  - puppet_additions/modules/r8/manifests/export_variable.rb