Skip to content

Commit

Permalink
Merge pull request #8 from choria-plugins/modulize
Browse files Browse the repository at this point in the history
Transform into a regular puppet module
  • Loading branch information
smortex authored Aug 26, 2024
2 parents e281d9d + 7f0d329 commit c53e589
Show file tree
Hide file tree
Showing 27 changed files with 304 additions and 27 deletions.
5 changes: 2 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,13 @@ on:
jobs:
unit:
runs-on: ubuntu-latest
needs: rubocop
strategy:
matrix:
ruby:
- "2.6"
- "2.7"
- "3.0"
- "3.1"
- "3.2"
- "3.3"
name: Ruby ${{ matrix.ruby }}
steps:
- uses: actions/checkout@v3
Expand Down
6 changes: 0 additions & 6 deletions .plugin.yaml

This file was deleted.

16 changes: 11 additions & 5 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
#!ruby
# Managed by modulesync - DO NOT EDIT
# https://voxpupuli.org/docs/updating-files-managed-with-modulesync/

source "https://rubygems.org"

group :test do
gem "rake"
gem "rspec"
gem "mocha"
gem "mcollective-test"
gem "mcollective-test", :require => false
gem "mocha", :require => false
gem "rake", :require => false
gem "rspec", :require => false
end

group :release do
gem "voxpupuli-release", "~> 3.0", :require => false
end

mcollective_version = ENV["MCOLLECTIVE_GEM_VERSION"]
Expand Down
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,14 @@ The service agent that lets you stop, start, restart and query the statuses of s
This agent can be extended to support different Service managers, by default it
uses Puppet. See the section later in this document about extendibility.

<!--- actions -->
## Actions

This agent provides the following actions, for details about each please run `mco plugin doc agent/service`

* **restart** - Restart a service
* **start** - Start a service
* **status** - Gets the status of a service
* **stop** - Stop a service

## Installation

Expand Down
8 changes: 8 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,11 @@ desc "Builds the module found in the current directory, run build_prep first"
task :build do
sh "/opt/puppetlabs/puppet/bin/mco plugin package --format aiomodulepackage --vendor choria"
end

# load optional tasks for releases
# only available if gem group releases is installed
begin
require "voxpupuli/release/rake_tasks"
rescue LoadError
# voxpupuli-release not present
end
16 changes: 16 additions & 0 deletions data/defaults.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
lookup_options:
mcollective_agent_service::gem_dependencies:
merge:
strategy: deep
mcollective_agent_service::package_dependencies:
merge:
strategy: deep
mcollective_agent_service::config:
merge:
strategy: deep
mcollective_agent_service::client_config:
merge:
strategy: deep
mcollective_agent_service::server_config:
merge:
strategy: deep
27 changes: 27 additions & 0 deletions data/plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
mcollective_agent_service::config_name: service
mcollective_agent_service::common_files:
- data/service_data.rb
- data/service_data.ddl
- util/service/base.rb
- util/service/puppetservice.rb
- util/service/serviceservice.rb
- validator/service_name.rb
- validator/service_name.ddl
- agent/service.ddl
- agent/service.json
mcollective_agent_service::executable_files: []
mcollective_agent_service::common_directories:
- util/service
mcollective_agent_service::server_files:
- agent/service.rb
mcollective_agent_service::server_directories: []
mcollective_agent_service::client_files:
- application/service.rb
mcollective_agent_service::client_directories: []
mcollective_agent_service::policies:
- action: allow
callers: "*"
actions: status
facts: "*"
classes: "*"
File renamed without changes.
138 changes: 138 additions & 0 deletions files/mcollective/agent/service.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
{
"$schema": "https://choria.io/schemas/mcorpc/ddl/v1/agent.json",
"metadata": {
"name": "service",
"description": "Manages Operating System Services",
"author": "R.I.Pienaar <[email protected]>",
"license": "Apache-2.0",
"version": "4.0.1",
"url": "https://github.com/choria-plugins/service-agent",
"timeout": 60
},
"actions": [
{
"action": "restart",
"input": {
"service": {
"prompt": "Service Name",
"description": "The service to restart",
"type": "string",
"default": null,
"optional": false,
"validation": "service_name",
"maxlength": 90
}
},
"output": {
"status": {
"description": "The status of the service after restarting",
"display_as": "Service Status",
"default": "unknown"
}
},
"display": "failed",
"description": "Restart a service",
"aggregate": [
{
"function": "summary",
"args": [
"status"
]
}
]
},
{
"action": "start",
"input": {
"service": {
"prompt": "Service Name",
"description": "The service to start",
"type": "string",
"default": null,
"optional": false,
"validation": "service_name",
"maxlength": 90
}
},
"output": {
"status": {
"description": "The status of the service after starting",
"display_as": "Service Status",
"default": "unknown"
}
},
"display": "failed",
"description": "Start a service",
"aggregate": [
{
"function": "summary",
"args": [
"status"
]
}
]
},
{
"action": "status",
"input": {
"service": {
"prompt": "Service Name",
"description": "The service to get the status for",
"type": "string",
"default": null,
"optional": false,
"validation": "service_name",
"maxlength": 90
}
},
"output": {
"status": {
"description": "The status of the service",
"display_as": "Service Status",
"default": "unknown"
}
},
"display": "always",
"description": "Gets the status of a service",
"aggregate": [
{
"function": "summary",
"args": [
"status"
]
}
]
},
{
"action": "stop",
"input": {
"service": {
"prompt": "Service Name",
"description": "The service to stop",
"type": "string",
"default": null,
"optional": false,
"validation": "service_name",
"maxlength": 90
}
},
"output": {
"status": {
"description": "The status of the service after stopping",
"display_as": "Service Status",
"default": "unknown"
}
},
"display": "failed",
"description": "Stop a service",
"aggregate": [
{
"function": "summary",
"args": [
"status"
]
}
]
}
]
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
12 changes: 12 additions & 0 deletions hiera.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
version: 5

defaults:
datadir: "data"
data_hash: yaml_data

hierarchy:
- name: "plugin"
path: "plugin.yaml"
- name: "defaults"
path: "defaults.yaml"
48 changes: 48 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
class mcollective_agent_service (
String $config_name,
Array[String] $client_files = [],
Array[String] $client_directories = [],
Array[String] $server_files = [],
Array[String] $server_directories = [],
Array[String] $common_files = [],
Array[String] $common_directories = [],
Array[String] $executable_files = [],
Boolean $manage_gem_dependencies = true,
Hash $gem_dependencies = {},
Boolean $manage_package_dependencies = true,
Hash $package_dependencies = {},
Boolean $manage_class_dependencies = true,
Array[String] $class_dependencies = [],
Mcollective::Policy_action $policy_default = $mcollective::policy_default,
Array[Mcollective::Policy] $policies = [],
Hash $config = {},
Hash $client_config = {},
Hash $server_config = {},
Boolean $client = $mcollective::client,
Boolean $server = $mcollective::server,
Enum["present", "absent"] $ensure = "present"
) {
mcollective::module_plugin{$name:
config_name => $config_name,
client_files => $client_files,
server_files => $server_files,
common_files => $common_files,
executable_files => $executable_files,
client_directories => $client_directories,
server_directories => $server_directories,
common_directories => $common_directories,
gem_dependencies => $gem_dependencies,
manage_gem_dependencies => $manage_gem_dependencies,
package_dependencies => $package_dependencies,
manage_package_dependencies => $manage_package_dependencies,
class_dependencies => $class_dependencies,
policy_default => $policy_default,
policies => $policies,
config => $config,
client_config => $client_config,
server_config => $server_config,
client => $client,
server => $server,
ensure => $ensure
}
}
22 changes: 22 additions & 0 deletions metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "choria-mcollective_agent_service",
"version": "4.0.1",
"author": "R.I.Pienaar <[email protected]>",
"license": "Apache-2.0",
"summary": "Manages Operating System Services",
"source": "https://github.com/choria-plugins/service-agent",
"project_page": "https://github.com/choria-plugins/service-agent",
"issues_url": "https://github.com/choria-plugins/service-agent/issues",
"dependencies": [
{
"name": "choria/mcollective",
"version_requirement": ">= 0.14.5 < 2.0.0"
}
],
"requirements": [
{
"name": "puppet",
"version_requirement": ">= 8.0.0 < 9.0.0"
}
]
}
6 changes: 3 additions & 3 deletions spec/agent/service_agent_spec.rb
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
#!/usr/bin/env rspec

require 'spec_helper'
require File.join(File.dirname(__FILE__), '../../', 'agent', 'service.rb')
require File.join(File.dirname(__FILE__), '../../', 'util', 'service', 'base.rb')
require File.join(File.dirname(__FILE__), '../../', 'files', 'mcollective', 'agent', 'service.rb')
require File.join(File.dirname(__FILE__), '../../', 'files', 'mcollective', 'util', 'service', 'base.rb')

module MCollective
module Agent
describe Service do

before do
agent_file = File.join(File.dirname(__FILE__), '../../', 'agent', 'service.rb')
agent_file = File.join(File.dirname(__FILE__), '../../', 'files', 'mcollective', 'agent', 'service.rb')
@agent = MCollective::Test::LocalAgentTest.new('service', :agent_file => agent_file).plugin
end

Expand Down
4 changes: 2 additions & 2 deletions spec/application/service_spec.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
#!/usr/bin/env rspec

require 'spec_helper'
require File.join(File.dirname(__FILE__), '../../', 'application', 'service.rb')
require File.join(File.dirname(__FILE__), '../../', 'files', 'mcollective', 'application', 'service.rb')

module MCollective
class Application
describe Service do
before do
application_file = File.join(File.dirname(__FILE__), '../../', 'application', 'service.rb')
application_file = File.join(File.dirname(__FILE__), '../../', 'files', 'mcollective', 'application', 'service.rb')
@app = MCollective::Test::ApplicationTest.new('service', :application_file => application_file).plugin
end

Expand Down
4 changes: 2 additions & 2 deletions spec/data/service_data_spec.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#!/usr/bin/env rspec

require 'spec_helper'
require File.join(File.dirname(__FILE__), '../../', 'data', 'service_data.rb')
require File.join(File.dirname(__FILE__), '../../', 'agent', 'service.rb')
require File.join(File.dirname(__FILE__), '../../', 'files', 'mcollective', 'data', 'service_data.rb')
require File.join(File.dirname(__FILE__), '../../', 'files', 'mcollective', 'agent', 'service.rb')

module MCollective
module Data
Expand Down
2 changes: 1 addition & 1 deletion spec/util/service/base_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/evn rspec

require 'spec_helper'
require File.join(File.dirname(__FILE__), '../../../', 'util', 'service', 'base.rb')
require File.join(File.dirname(__FILE__), '../../../', 'files', 'mcollective', 'util', 'service', 'base.rb')

module MCollective
module Util
Expand Down
Loading

0 comments on commit c53e589

Please sign in to comment.