Retire Tripleo: remove repo content

TripleO project is retiring
- https://review.opendev.org/c/openstack/governance/+/905145

this commit remove the content of this project repo

Change-Id: I5b659ef9596c8b6b7edca9fbe0ef36021b9dfc33
This commit is contained in:
Ghanshyam Mann 2024-02-24 11:31:59 -08:00
parent 7add07357c
commit 9bd4d6455e
372 changed files with 10 additions and 40425 deletions

View File

@ -1,9 +0,0 @@
---
fixtures:
repositories:
stdlib:
repo: "https://github.com/puppetlabs/puppetlabs-stdlib"
ref: "4.16.0"
firewall: "https://github.com/puppetlabs/puppetlabs-firewall"
symlinks:
pacemaker: "#{source_dir}"

27
.gitignore vendored
View File

@ -1,27 +0,0 @@
# Add patterns in here to exclude files created by tools integrated with this
# repository, such as test frameworks from the project's recommended workflow,
# rendered documentation and package builds.
#
# Don't add patterns to exclude files created by preferred personal tools
# (editors, IDEs, your operating system itself even). These should instead be
# maintained outside the repository, for example in a ~/.gitignore file added
# with:
#
# git config --global core.excludesfile '~/.gitignore'
pkg/
Gemfile.lock
vendor/
spec/fixtures/
.vagrant/
.bundle/
coverage/
log/
.idea/
*.iml
.tox/
# documentation
.yardoc
.yardwarns
strings.json

2
.rspec
View File

@ -1,2 +0,0 @@
--format documentation
--color

View File

@ -1,87 +0,0 @@
AllCops:
Include:
- ./**/*.rb
Exclude:
- vendor/**/*
- pkg/**/*
- spec/fixtures/**/*
# Configuration parameters: AllowURI, URISchemes.
Metrics/LineLength:
Max: 328
# 'Complexity' is very relative
Metrics/PerceivedComplexity:
Enabled: false
# 'Complexity' is very relative
Metrics/CyclomaticComplexity:
Enabled: false
# 'Complexity' is very relative
Metrics/AbcSize:
Enabled: false
# Method length is not necessarily an indicator of code quality
Metrics/MethodLength:
Enabled: false
# Module length is not necessarily an indicator of code quality
Metrics/ModuleLength:
Enabled: false
# Class length is not necessarily an indicator of code quality
Metrics/ClassLength:
Enabled: false
# dealbreaker:
Style/TrailingCommaInArguments:
Enabled: false
Style/TrailingCommaInLiteral:
Enabled: false
Style/ClosingParenthesisIndentation:
Enabled: false
Lint/AmbiguousRegexpLiteral:
Enabled: true
Style/RegexpLiteral:
Enabled: true
Style/WordArray:
Enabled: true
# this catches the cases of using `module` for parser functions, types, or
# providers
Style/ClassAndModuleChildren:
Enabled: false
Style/Documentation:
Description: 'Document classes and non-namespace modules.'
Enabled: false
# More comfortable block layouts
Style/BlockDelimiters:
Enabled: false
Style/MultilineBlockLayout:
Enabled: false
Style/GuardClause:
Enabled: false
Style/NestedParenthesizedCalls:
Enabled: false
Style/ClassAndModuleCamelCase:
Enabled: false
Style/PredicateName:
Enabled: false
Style/VariableName:
Enabled: false
Style/MethodName:
Enabled: false
Style/FormatString:
Enabled: false

View File

@ -1,44 +0,0 @@
---
sudo: false
language: ruby
cache: bundler
bundler_args: --without system_tests
before_install: rm Gemfile.lock || true
script:
- 'bundle exec rake $CHECK'
matrix:
fast_finish: true
include:
- rvm: 1.9.3
env: PUPPET_VERSION="~> 3.0" STRICT_VARIABLES="yes" CHECK=test
- rvm: 2.1.8
env: PUPPET_VERSION="~> 3.0" STRICT_VARIABLES="yes" CHECK=test
- rvm: 1.9.3
env: PUPPET_VERSION="~> 3.0" STRICT_VARIABLES="yes" CHECK=test FUTURE_PARSER=yes
- rvm: 2.1.8
env: PUPPET_VERSION="~> 3.0" STRICT_VARIABLES="yes" CHECK=test FUTURE_PARSER=yes
- rvm: 2.1.8
env: PUPPET_VERSION="~> 4.0" STRICT_VARIABLES="yes" CHECK=test
- rvm: 2.2.4
env: PUPPET_VERSION="~> 4.0" STRICT_VARIABLES="yes" CHECK=test
- rvm: 2.2.4
env: PUPPET_VERSION="~> 4.0" STRICT_VARIABLES="yes" CHECK=rubocop
- rvm: 2.3.0
env: PUPPET_VERSION="~> 4.0" STRICT_VARIABLES="yes" CHECK=test
allow_failures:
- rvm: 2.3.0
env: PUPPET_VERSION="~> 4.0" STRICT_VARIABLES="yes" CHECK=test
notifications:
email: false
deploy:
provider: puppetforge
user: puppet
password:
secure: ""
on:
tags: true
# all_branches is required to use tags
all_branches: true
# Only publish if our main Ruby target builds
rvm: 1.9.3
condition: "$FUTURE_PARSER = yes"

View File

@ -1,19 +0,0 @@
- project:
queue: tripleo
templates:
- puppet-openstack-check-jobs
- puppet-openstack-module-unit-jobs
- release-notes-jobs-python3
check:
jobs:
- puppet-openstack-unit-7.16-centos-9-stream:
voting: false
- tripleo-ci-centos-9-scenario004-standalone: &scen4_vars
vars:
build_container_images: true
containers_base_image: registry.access.redhat.com/ubi9:latest
gate:
jobs:
- puppet-openstack-unit-7.16-centos-9-stream:
voting: false
- tripleo-ci-centos-9-scenario004-standalone: *scen4_vars

View File

@ -1,96 +0,0 @@
This module has grown over time based on a range of contributions from
people using it. If you follow these contributing guidelines your patch
will likely make it into a release a little quicker.
## Contributing
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. [Contributor Code of Conduct](https://voxpupuli.org/coc/).
1. Fork the repo.
1. Create a separate branch for your change.
1. Run the tests. We only take pull requests with passing tests, and
documentation.
1. Add a test for your change. Only refactoring and documentation
changes require no new tests. If you are adding functionality
or fixing a bug, please add a test.
1. Squash your commits down into logical components. Make sure to rebase
against the current master.
1. Push the branch to your fork and submit a pull request.
Please be prepared to repeat some of these steps as our contributors review
your code.
## Dependencies
The testing and development tools have a bunch of dependencies,
all managed by [bundler](http://bundler.io/) according to the
[Puppet support matrix](http://docs.puppetlabs.com/guides/platforms.html#ruby-versions).
By default the tests use a baseline version of Puppet.
If you have Ruby 2.x or want a specific version of Puppet,
you must set an environment variable such as:
export PUPPET_VERSION="~> 4.2.0"
Install the dependencies like so...
bundle install
## Syntax and style
The test suite will run [Puppet Lint](http://puppet-lint.com/) and
[Puppet Syntax](https://github.com/gds-operations/puppet-syntax) to
check various syntax and style things. You can run these locally with:
bundle exec rake lint
bundle exec rake validate
## Running the unit tests
The unit test suite covers most of the code, as mentioned above please
add tests if you're adding new functionality. If you've not used
[rspec-puppet](http://rspec-puppet.com/) before then feel free to ask
about how best to test your new feature.
To run your all the unit tests
bundle exec rake spec SPEC_OPTS='--format documentation'
To run a specific spec test set the `SPEC` variable:
bundle exec rake spec SPEC=spec/foo_spec.rb
To run the linter, the syntax checker and the unit tests:
bundle exec rake test
## Integration tests
The unit tests just check the code runs, not that it does exactly what
we want on a real machine. For that we're using
[beaker](https://github.com/puppetlabs/beaker).
This fires up a new virtual machine (using vagrant) and runs a series of
simple tests against it after applying the module. You can run this
with:
bundle exec rake acceptance
This will run the tests on an Ubuntu 12.04 virtual machine. You can also
run the integration tests against Centos 6.5 with.
BEAKER_set=centos-64-x64 bundle exec rake acceptances
If you don't want to have to recreate the virtual machine every time you
can use `BEAKER_DESTROY=no` and `BEAKER_PROVISION=no`. On the first run you will
at least need `BEAKER_PROVISION` set to yes (the default). The Vagrantfile
for the created virtual machines will be in `.vagrant/beaker_vagrant_fies`.

83
Gemfile
View File

@ -1,83 +0,0 @@
source ENV['GEM_SOURCE'] || "https://rubygems.org"
def location_for(place, fake_version = nil)
if place =~ /^(git[:@][^#]*)#(.*)/
[fake_version, { :git => $1, :branch => $2, :require => false }].compact
elsif place =~ /^file:\/\/(.*)/
['>= 0', { :path => File.expand_path($1), :require => false }]
else
[place, { :require => false }]
end
end
group :test do
gem 'net-telnet', '~> 0.1.1', :require => false
gem 'jwt', '~> 1.5.6', :require => false
gem 'nokogiri', '~> 1.6.0', :require => false
gem 'rake', '< 13.0.0', :require => false
gem 'dry-inflector', '~> 0.1.2', :require => false
gem 'signet', '~> 0.11.0', :require => false
gem 'minitest', '~> 5.11.3', :require => false
gem 'mocha', '< 2.0.0', :require => false
gem 'rspec-puppet', :require => false
gem 'puppet-lint', '~> 1.1.0', :require => false
gem 'metadata-json-lint', :require => false
# rspec-puppet-facts >= 1.9.5 requires ruby 2.1.0+
if RUBY_VERSION.to_f >= 2.1
gem 'rspec-puppet-facts', :require => false
else
gem 'rspec-puppet-facts', '< 1.9.5', :require => false
end
gem 'rspec', :require => false
gem 'rspec-puppet-utils', :require => false
gem 'puppet-lint-absolute_classname-check', '~> 2.0.0', :require => false
gem 'puppet-lint-leading_zero-check', :require => false
gem 'puppet-lint-trailing_comma-check', :require => false
gem 'puppet-lint-version_comparison-check', :require => false
gem 'puppet-lint-classes_and_types_beginning_with_digits-check', :require => false
gem 'puppet-lint-unquoted_string-check', :require => false
gem 'puppet-lint-variable_contains_upcase', :require => false
gem 'unicode-display_width', :require => false
gem 'puppetlabs_spec_helper', :require => false
gem 'serverspec', :require => false
end
group :development do
gem 'pry'
end
group :system_tests do
#TODO: to be removed when
#https://tickets.puppetlabs.com/browse/BKR-851 is resolved.
gem 'specinfra', '= 2.59.0'
if beaker_version = ENV['BEAKER_VERSION']
gem 'beaker', *location_for(beaker_version)
else
#NOTE(aschultz): beaker > 3.1.0 requires ruby 2.2.x and 3.0.0 had a bad
# serverspec reference. So pin to less than 3.0.0
gem 'beaker', '< 3.0.0', :require => false
end
if beaker_rspec_version = ENV['BEAKER_RSPEC_VERSION']
gem 'beaker-rspec', *location_for(beaker_rspec_version)
else
gem 'beaker-rspec', :require => false
end
gem 'beaker-puppet_install_helper', :require => false
end
if facterversion = ENV['FACTER_GEM_VERSION']
gem 'facter', facterversion.to_s, :require => false, :groups => [:test]
else
gem 'facter', :require => false, :groups => [:test]
end
if puppetversion = ENV['PUPPET_GEM_VERSION']
gem 'puppet', puppetversion, :require => false, :groups => [:test]
else
gem 'puppet', :require => false, :groups => [:test]
end
# vim:ft=ruby

201
LICENSE
View File

@ -1,201 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

946
README.md
View File

@ -1,946 +0,0 @@
# Puppet Pacemaker module
This Puppet module is intended to work with the running Pacemaker
cluster to manage its configuration. It can create, update and remove
most of the configuration objects and query their status.
The interface of the Puppet types in the module is loosely based on
**puppetlabs/corosync** types with *cs_* prefix changed to the *pacemaker_*
prefix but it have been significantly reworked and is not compatible.
**puppet-pacemaker** is much more sophisticated then the
**puppetlabs/corosync** module and provides a lot of debugging
features, checks, configuration options and it can work even when
the Puppet is being run on many cluster nodes at the same time and
without neither **crm** nor **pcs** being installed.
## License
Apache 2.0
# Pacemaker types
These types are used to configure Pacemaker object and are the core of
this module. You can find some "interactive examples" of their usage in
the *examples* folder.
## pacemaker_resource
This is the most important resource type. It creates, updates and
removes Pacemaker primitives.
### Parameters
#### primitive_class
The basic class of this primitive. It could be *ocf*, *lsb*, *systemd*
and some others.
Default: ocf
#### primitive_provider
The provider or vendor of the primitive. For OCF class can be
*pacemaker*, *heartbeat* or vendor-specific values.
Default: pacemaker
#### primitive_type
The actual provider script or service to use. Should be equal to the
OCF file name, or to the service name if other classes are used.
Default: Stateful
#### parameters
The Hash of resource instance attribute names and their values.
These attributes are used to configure the running service and,
usually, only OCF class supports them.
Example:
```puppet
{
'a' => '1',
'b' => '2',
},
```
#### operation
This data structure describes this primitive's operations and timeouts.
Example:
```puppet
{
'monitor' => {
'interval' => '20',
'timeout' => '10'
},
'start' => {
'timeout' => '30'
},
'stop' => {
'timeout' => '30'
},
}
```
Using array and multiple monitors:
```puppet
[
{
'name' => 'monitor',
'interval' => '10',
'timeout' => '10',
},
{
'name' => 'monitor',
'interval' => '60',
'timeout' => '10',
},
{
'name' => 'start',
'timeout' => '30',
},
{
'name' => 'stop',
'timeout' => '30',
},
]
```
#### metadata
This hash can contain names and values of primitive's meta attributes.
Example:
```puppet
{
'migration-threshold' => '100',
'failure-timeout' => '120',
}
```
#### complex_type
A primitive can be either a *simple* one, and run only as a single
instance. Or it can be *clone* and have many instances, or it can be
*master* and be able to have master and slave states.
Default: simple
#### complex_metadata
A hash of complex type related metadata names and values.
Example:
```puppet
{
'interleave' => true,
'master-max' => '1',
}
```
#### debug
This option makes supported provides to omit any changes to the system.
Providers will still retrieve the system state, compare it to the desired
state from the catalog and will try to sync state if there are differences.
But it will only show destructive commands that it would be executing in
the normal mode. It's better then Puppet's *noop* mode because it shows
sync actions and is useful for debugging.
Default: false
## pacemaker_location
This type can manage location constraints. Either the node and score
based ones or the rule based ones. This constraints can control the
primitive placement to nodes through priorities or rules.
### Parameters
#### primitive
The name of the Pacemaker primitive of this location.
#### score
The score values for a node/score location.
#### node
The node name of the node/score location.
#### rules
The rules data structure.
Example:
```puppet
[
{
'score' => '100',
'expressions' => [
{
'attribute' => 'test1',
'operation' => 'defined',
}
]
},
{
'score' => '200',
'expressions' => [
{
'attribute' => 'test2',
'operation' => 'defined',
}
]
}
]
```
#### debug
Don't actually do changes
Default: false
## pacemaker_colocation
This type manages colocation constraints. If two resources are in a
colocation they will always be on the same node. Note that colocation
implies the start order because the second resource will always start
after the first.
### Parameters
#### first
The name of the first primitive
#### second
The name of the second primitive
#### score
The priority score of this constraint
#### debug
Don't actually do changes
Default: false
## pacemaker_order
This type can manage the order constraints. These constraints controls
the start and stop ordering of resources. Order doesn't imply colocation
and resources can run on different nodes.
### Parameters
#### first
(Mandatory)
The name of the first primitive.
#### second
(Mandatory)
The name of the second primitive.
#### score
The priority score of this constraint.
If greater than zero, the constraint is mandatory.
Otherwise it is only a suggestion.
Used for Pacemaker version 1.0 and below.
Default: undef
#### first_action
The action that the first resource must complete before second action
can be initiated for the then resource.
Allowed values: start, stop, promote, demote.
Default: undef (means start)
#### second_action
The action that the then resource can execute only after the
first action on the first resource has completed.
Allowed values: start, stop, promote, demote.
Default: undef (means the value of the first action)
#### kind
How to enforce the constraint. Allowed values:
* **optional**: Just a suggestion. Only applies if both resources are
executing the specified actions.
Any change in state by the first resource will have no effect on
the then resource.
* **mandatory**: Always. If first does not perform first-action,
then will not be allowed to performed then-action.
If first is restarted, then (if running) will be stopped beforehand
and started afterward.
* **serialize**: Ensure that no two stop/start actions occur
concurrently for the resources.
First and then can start in either order, but one must complete
starting before the other can be started.
A typical use case is when resource start-up puts a high load on
the host.
Used only with Pacemaker version 1.1 and above.
Default: undef
#### symmetrical
If true, the reverse of the constraint applies for the opposite action
(for example, if B starts after A starts, then B stops before A stops).
Default: undef (means true)
#### require_all
Whether all members of the set must be active before continuing.
Default: undef (means true)
#### debug
Don't actually do changes
Default: false
## pacemaker_operation_default
This little type controls the default operation properties of the
cluster resources. For example, you can set the default *timeout*
for every operation without it's own configured *timeout* value.
### parameters
#### name
The default property name
#### value
The default property value
#### debug
Don't actually do changes
Default: false
Example:
```puppet
pacemaker_operation_default { 'timeout' : value => '30' }
```
## pacemaker_resource_default
This little type controls the default meta-attributes of all resources
without their own defined values.
### parameters
#### name
The default property name
#### value
The default property value
#### debug
Don't actually do changes
Default: false
Example:
```puppet
pacemaker_resource_default { 'resource-stickiness' : value => '100' }
```
## pacemaker_property
This tiny type can the cluster-wide properties.
### parameters
#### name
The property name
#### value
The property value
#### debug
Don't actually do changes
Default: false
Example:
```puppet
pacemaker_property { 'stonith-enabled' :
value => false,
}
pacemaker_property { 'no-quorum-policy' :
value => 'ignore',
}
```
## pacemaker_online
This little resource can wait until the cluster have settled and ready
to be configured. It can be useful in some cases, perhaps as an anchor,
but most other type's *xml* providers can wait for cluster on their own.
Example:
```puppet
pacemaker_online { 'setup-finished' :}
```
## service (pacemaker provider)
This type uses the standard *service* type from the Puppet distribution
but implements the custom *pacemaker* provider. It can be used to start
and stop Pacemaker services the same way the Puppet starts and stops
system services.
It can query the service status, either on the entire cluster or on the
local node, start and stop single, cloned and master services.
There are also two special features:
- Adding location constraints. This provider can add the location
constraint to enable the run of the primitive on the current node.
It's needed in the asymmetric cluster configuration where services
are not allowed to start anywhere unless explicitly allowed to.
- Disabling the basic service. For example, you have the *apache*
primitive service in your cluster and are using an OCF script
to manage it. In this can you will not want another instance of
*apache* to start by the system init scripts or startup service.
The provider will detect the running basic service and will stop
and disable it's auto-run before trying to start the cluster service.
## pacemaker_nodes
This type is very special and designed to add and remove corosync 2 nodes
without restarting the service by providing the data structure like
this:
```puppet
{
'node-1' => { 'id' => '1', 'ip' => '192.168.0.1'},
'node-2' => { 'id' => '2', 'ip' => '192.168.0.2'},
}
```
Most likely you should never use this type.
## Pacemaker providers
Each *pacemaker_* type may have up to three different providers:
- *xml* provider. This provider is based on the *pacemaker* library
XML parsing and generating capabilities and in most canes require
only *cibadmin* to download XML CIB and apply patches, but can
use *crm_attribute* too. These tools are written in C and are the
core parts of the Pacemaker project and most likely will be present
on every system.
- *pcs* provider. These provides are designed around the *pcs* cluster
management tool usually found on Red Hat family systems. They should
not be as complex as *xml* providers, but *pcs* may not be available
on you distribution. Currently it's implemented only for few types
and they disabled because there is no reason to actually use them.
- *noop* provider. These providers do absolutely nothing completely
disabling the resource if the provider is manually set to *noop*.
This resource will not fail even if there is no Pacemaker installed.
It can be useful if you want to turn off several resources.
Puppet's *noop* meta-attribute will not do the same this because it
still does the retrieve phase and will fail if the state cannot be
obtained.
## pacemaker::wrapper
This definition can be applied to any Puppet managed service, even from
a third party module, and make this service a Pacemaker managed service
without modifying the Puppet code.
Wrapper can also create the OCF script from a Puppet file or template,
or the script can be obtained elsewhere. Actually, wrappers are only
practical for OCF managed services, because lsb, systemd or upstart
services can be managed directly by the cluster.
It can also create *ocf_handlers*. The OCF handler is a special shell
script that can call the OCF script with all environment variables
and parameters set. The handler can be used to take manual control
over the pacemaker managed service and start and stop them without
the cluster. It can be useful for debugging or during the
disaster recovery.
### Parameters
#### ensure
(optional) Create or remove the files
Default: present
#### ocf_root_path
(optional) Path to the ocf folder
Default: /usr/lib/ocf
#### primitive_class
(optional) Class of the created primitive
Default: ocf
#### primitive_provider
(optional) Provider of the created primitive
Default: pacemaker
#### primitive_type
(optional) Type of the created primitive. Set this to your OCF script.
Default: Stateful
#### prefix
(optional) Use p_ prefix for the Pacemaker primitive. There is no
need to use it since the service provider can disable the basic
service on its own.
Default: false
#### parameters
(optional) Instance attributes hash of the primitive
Default: undef
#### operations
(optional) Operations hash of the primitive
Default: undef
#### metadata
(optional) Primitive meta-attributes hash
Default: undef
#### complex_metadata
(optional) Meta-attributes of the complex primitive
Default: undef
#### complex_type
(optional) Set this to 'clone' or 'master' to create a
complex primitive
Default: undef
#### use_handler
(optional) Should the handler script be created
Default: true
#### handler_root_path
(optional) Where the handler should be placed
Default: /usr/local/bin
#### ocf_script_template
(optional) Generate the OCF script from this template
Default: undef
#### ocf_script_file
(optional) Download the OCF script from this file
Defaults: undef
#### create_primitive
(optional) Should the Pacemaker primitive be created
Defaults: true
#### service_provider
(optional) The name of Pacemaker service provider
to be set to this service.
Default: pacemaker
For example, if you have a simple service:
```puppet
service { 'apache' :
ensure => 'running',
enable => true,
}
```
You can convert it to the Pacemaker service just by adding this
definition:
```puppet
pacemaker:wrapper { 'apache' :
primitive_type => 'apache',
parameters => {
'port' => '80',
},
operations => {
'monitor' => {
'interval' => '10',
},
},
}
```
Provided there is the ocf:pacemaker:apache script with the port
parameter, the *apache* Pacemaker primitive will be created and
started and the basic *apache* service will be disabled and stopped.
## STONITH
STONITH manifests are auto generated from the XML source
files by the generator script.
```bash
rake generate_stonith
```
The generated defined types can be found in *manifests/stonith*.
Every STONITH implementation has different parameters.
Example:
```puppet
class { "pacemaker::stonith::ipmilan" :
address => "10.10.10.100",
username => "admin",
password => "admin",
}
```
# Development
## Library structure
You can find these folders inside the **lib**:
- *facter* contains the fact **pacemaker_node_name**. It is equal to the
node name from the Pacemaker point of view. May be equal to either
$::hostname of $::fqdn.
- *pacemaker* contains the Pacemaker library files. The Pacemaker
module functions are split to submodules according to their role.
There are also *xml* and *pcs* groups of files related to either
*pcs* or *xml* provider and several common files.
- *puppet* contains Puppet types and provider. They are using the
functions from the Pacemaker library.
- *serverspec* contains the custom ServerSpec types to work with
Pacemaker. They are using the same library Puppet types and providers
do. These types are used in the Acceptance tests to validate that
Pacemaker have really be configured and its configuration contains
the desired elements and parameters.
- *tools* contains two interactive tools: console and status. Console
can be used to manually run the library functions either to debug them
or to configure the cluster by hand. Status uses the library functions
to implement something like pcs or crm status command to see the
current cluster status.
## Data flow
When the catalog is being compiled the instance of each type will
be created and properties and parameters values will be assigned.
At this stage the values can be validated. If the property has
the *validate* function it will be called to check if the value is
correct or the exception can be raised. After tha validation the
*munge* function will be called if the values need to be changed or
converted somehow. If the property accepts the array value every
elements will be validated and then munged separately.
When the catalog is compiled and delivered to the node Puppet will
start to apply it.
### Data retrieval
Puppet type will try to retrieve the current state first. It will
either use *prefetch* mechanics if it's enabled or will simply walk
through every resource in the catalog calling *exists?* functions
and then other getter functions to determine the current system state.
If prefetch is used, it will assign every provider, generated by the
*instances* function to the corresponding resource in the catalog.
During the transaction the resource will be able to use already
acquired data speeding the Puppet run up a little. Without prefetch
each provider will receive the system state when its resource is
processed separately.
#### Complex providers
Providers: pacemaker_resource, pacemaker_location, pacemaker_colocation, pacemaker_order.
This providers use *retrieve_data* function to get the configuration
and status data from the library and convert it to the form used
in the Puppet type by filling the *property_hash*. This happens
either during prefetch or when the *exists?* function is called.
Other getter function will just take their values from the
*property_hash* after it was filled with data.
#### Simple providers
Providers: pacemaker_property, pacemaker_resource_default,
pacemaker_operation_default, pacemaker_online.
These providers are much more simple. There is no *retrieve_data*
function and the values are just passed as the property_hash to
the provider from *instances* if the prefetch is used and then
are taken from this hash by the getter functions. If there is no
prefetch and *property_hash* is empty the values are retrieved
from the library directly by the getters. Actually there is only one
getter for *value* and an implicit getter for *ensure* or no getter
at all for the not ensurable *pacemaker_online*.
#### Library
Both complex and simple providers are using the library functions to
get the current state of the system. There is the *main data structure*
for each entity the library can work with. For example, the resources
use the *primitives* structure.
Every provider can either take the values directly from this structure
or it can use one of the many values helpers and predicate functions
such as *primitive_type* or *primitive_is_complex?*. Most of these
helper functions are taking the resource name as an argument and try to
find the asked values in the data structure and return it.
The main data structures are formed by functions and their values are
memorised and returned from the cache every time they are called again.
Sometimes, when the new values should be acquired from the system this
memoization can be dropped by calling the *cib_reset* function.
Every data structure get its values by parsing the CIB XML. This xml
is got by calling the *cibaqmin -Q* command. Then the *REXML* document
is created with this data and saved too. It can be accessed by the
*cib* function, or, you can even set the new XML text to using
the *cib=* function if you want the library to use the prepared XML
data instead of receiving the new one.
Data structures are formed by using CIB section filter functions like
*cib_section_primitives* which return the requested part of the CIB.
Then these objects are parsed into the data structures.
For a library user is most cases there is no need to work with
anything but main data structures and helper getters and predicates.
These are the main data structures:
- **primitives** The list of primitives and their configurations.
- **node_status** The current primitive status by node.
- **constraints** All types of constraints and their parameters.
- **constraint_colocations** Filtered colocation constraints.
- **constraint_locations** Filtered location constraints.
- **constraint_orders** Filtered order constraints.
- **nodes** Cluster nodes ands their ids.
- **operation_defaults** Defined operation defaults and their values.
- **resource_defaults** Defined resource defaults and their values.
- **cluster_properties** Defined cluster properties and their values.
PCS based versions of the data structures:
- **pcs_operation_defaults** Defined operation defaults and their values.
- **pcs_resource_defaults** Defined resource defaults and their values.
- **pcs_cluster_properties** Defined cluster properties and their values.
### Data matching
After the provider have retrieved the current system state one way or
another and it's getters are able to return the values the types
starts to check is these values are equal to the desired ones.
For every property the value will be retrieved by it's getter function
in the provider and the value will be compared to the value the type
got from the catalog using the *insync?* function. Usually there is
not need to change it's behaviour and this function can be left
unimplemented and taken from the parent implementation, but in some
cases this comparison should use a special function to check
if the data structures are equal if the conversion or filtering
is required and a the custom *insync?* should somehow determine is
*is* is equal to *should* or not. Function *is_to_s* and *should_to_s*
will be used to format the property change message in the puppet log.
### Data syncing
If the retrieved data for the property was different from the desired
one or if the resource doesn't exist at all the type will try to sync
the values.
If the resource was found not to exist the *create* method will be
called. It should create the new resource with all parameters or fill
the property hash with them. If the resource should be removed the
*destroy* function will be called. If should either actually destroy
the resource or clear the property hash and set ensure to absent.
If the resource exists and should not be removed but has incorrect
parameter values the setters will be used to set properties to the
desired values. Each setter can either set the value directly or
modify the property hash.
Finally, the *flush* function will be called if it's defined. This
function should use the values from the property hash to actually
change the system state by creating, removing or updating the resource.
If getters and setters are not using the property hash and are making
changes directly there is not need for the *flush* function.
#### Complex providers
Complex providers are using the property hash to set the values and
the flush function to modify the pacemaker configuration.
When the *property_hash* is formed by using the *create* function or
setter function the *flush* method should convert the values from the
property hash to the library friendly data structure. Then the XML
generator function can be called to convert this structure to the
XML patch that can be applied to the CIB, and the *cibadmin --patch*
command will be called to apply it. If the resource should be removed
the small XML patch can be applied by the remove function directly.
All command calls that are changing the system should be run as their
safe versions. They will not be executed if the debug parameter is
enabled and will be just shown in the log.
#### Simple providers
Simple providers are not using the *flush* function and setters are
modifying the system directly. XML generator are not used too and
the values are set using the *crm_attribute* command calls.
Service provider can also use *crm_attribute* to change the service
status.
PCS versions of these providers are using the *pcs* command calls for
the same purpose. PCS providers should be using their own main
data structures and are designed to be as simple as possible.
### Special providers
The providers of *service* and *pacemaker_nodes* types are working very
differently from other.
Service provider is not ensurable and cannot create services but can
control their status. It will use the library to get the status of the
service's primitive, try to start or stop it, and then will wait
for this action to succeed. It is also capable of adding the service
location constraints using the special library function and stopping
and disabling the basic service using another provider instance.
Pcmk_nodes provider uses the *nodes* structure but work mostly
with corosync nodes using the *corosync-cmapctl* of the Corosync2
installation. It will match the exiting nodes to the desired node list
and will remove all extra corosync nodes and add the missing ones.
It can also remove the extra Pacemaker nodes but adding new nodes is
not required because Pacemaker will handle it on its own and therefore
should be disabled.
## Custom configuration
Some aspects of the providers behaviour can be controlled by the
*options.yaml*. This file can be found at *lib/pacemaker/options.yaml*
and contains all set options and their descriptions.
## Testing and debugging
### Specs
Most of the code base in the library has Ruby specs as well as Puppet
types and providers.
- *unit/puppet* Contains the specs for Puppet types and providers
as well as the spec for the whole Pacemaker library and the fixture
XML file. Most of the library, type and provider function are
tested here.
- *unit/serverspec* Contains the specs for the ServerSpec types. They
are used to check that these types are working correctly as well
as indirectly checking the library too.
- *classes* and *defined* have rspec-puppet tests for
the classes and definitions.
- *acceptance* These tests are using the ServerSpec types to check
that the module is actually configuring the cluster correctly on the
virtual system. First, the corosync and pacemaker is being installed
on the newly created system, then the test manifests in the *examples*
folder are applied to check if the resources can be successfully
created, updated and removed. Every time the specs look into the
pacemaker configuration to ensure that the resources are present
and have the correct properties.
### ServerSpec types
- Pcmk_resource
- Pcmk_location
- Pcmk_colocation
- Pcmk_order
- Pcmk_property
- Pcmk_resource_default
- Pcmk_operation_default
You can find the description of the properties in the actual type files
and examples in the *spec/serverspec* and *spec/acceptance*.
### Manual testing
The library provides debug checkpoints for a lot of function calls and
their output can be seen in the Puppet debug log.
Service provider uses the *cluster_debug_report* function to output
the formatted report of the current cluster state.
Pacemaker debug block start at 'test'
-> Clone primitive: 'p_neutron-plugin-openvswitch-agent-clone'
node-1: START (L) | node-2: STOP | node-3: STOP
-> Simple primitive: 'p_ceilometer-alarm-evaluator'
node-1: STOP | node-2: STOP (F) | node-3: STOP (F)
-> Simple primitive: 'p_heat-engine'
node-1: START (L) | node-2: STOP | node-3: STOP
-> Simple primitive: 'p_ceilometer-agent-central'
node-1: STOP | node-2: STOP (F) | node-3: STOP (F)
-> Simple primitive: 'vip__management'
node-1: START (L) | node-2: STOP (L) | node-3: STOP (L)
-> Clone primitive: 'ping_vip__public-clone'
node-1: START (L) | node-2: START (L) | node-3: START (L)
-> Clone primitive: 'p_neutron-l3-agent-clone'
node-1: START (L) | node-2: STOP | node-3: STOP
-> Clone primitive: 'p_neutron-metadata-agent-clone'
node-1: START (L) | node-2: STOP | node-3: STOP
-> Clone primitive: 'p_mysql-clone'
node-1: START (L) | node-2: START (L) | node-3: STOP
-> Simple primitive: 'p_neutron-dhcp-agent'
node-1: START (L) | node-2: STOP | node-3: STOP
-> Simple primitive: 'vip__public'
node-1: START (L) | node-2: STOP (L) | node-3: STOP (L)
-> Clone primitive: 'p_haproxy-clone'
node-1: START (L) | node-2: START (L) | node-3: STOP
-> Master primitive: 'p_rabbitmq-server-master'
node-1: MASTER (L) | node-2: START (L) | node-3: STOP
* symmetric-cluster: false
* no-quorum-policy: ignore
Pacemaker debug block end at 'test'
- (L) The location constraint for this resource is created in this node
- (F) This resource have failed on this node
- (M) This resource is not managed
Inserting this function into other providers can be helpful if you need
to se the status of all surrounding resources.
Using the **debug** property of most resources can help you to debug
the providers without damaging the system configuration.
## Links
- [Pacemaker Explained](http://clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Pacemaker_Explained/)
- [Pacemaker Cluster from Scratch](http://clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Clusters_from_Scratch/)
- [Puppet Types and Providers](https://puppet.com/docs/puppet/5.5/complete_resource_example.html)
- [RSpec Puppet Test](http://rspec-puppet.com/)
- [ServerSpec Tests](http://serverspec.org/)
- [RSpec-Beaker Acceptance Tests](https://github.com/puppetlabs/beaker-rspec)
- [source code repository](https://git.openstack.org/cgit/openstack/puppet-pacemaker)
- [Development](https://docs.openstack.org/puppet-openstack-guide/latest/)
- [Release Notes](https://docs.openstack.org/releasenotes/puppet-pacemaker)

10
README.rst Normal file
View File

@ -0,0 +1,10 @@
This project is no longer maintained.
The contents of this repository are still available in the Git
source code management system. To see the contents of this
repository before it reached its end of life, please check out the
previous commit with "git checkout HEAD^1".
For any further questions, please email
openstack-discuss@lists.openstack.org or join #openstack-dev on
OFTC.

View File

@ -1,47 +0,0 @@
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-lint/tasks/puppet-lint'
require 'puppet-syntax/tasks/puppet-syntax'
require 'metadata-json-lint/rake_task'
# require 'puppet-strings/rake_tasks'
# require 'rubocop/rake_task'
# RuboCop::RakeTask.new
PuppetLint.configuration.log_format = '%{path}:%{linenumber}:%{check}:%{KIND}:%{message}'
PuppetLint.configuration.fail_on_warnings = true
PuppetLint.configuration.send('disable_140chars')
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
PuppetLint.configuration.send('disable_documentation')
PuppetLint.configuration.send('disable_single_quote_string_with_variables')
PuppetSyntax.fail_on_deprecation_notices = false
exclude_paths = %w(
pkg/**/*
vendor/**/*
spec/**/*
)
PuppetLint.configuration.ignore_paths = exclude_paths
PuppetSyntax.exclude_paths = exclude_paths
desc 'Run acceptance tests'
RSpec::Core::RakeTask.new(:acceptance) do |t|
t.pattern = 'spec/acceptance'
end
desc 'Run metadata_lint, lint, syntax, and spec tests.'
task test: [
:metadata_lint,
:lint,
:syntax,
:spec,
]
desc 'Generate the Stonith modules'
task :generate_stonith do
sh './agent_generator/generate_manifests.sh'
end
ENV['BEAKER_debug'] = 'yes'
ENV['BEAKER_set'] = 'vagrant-ubuntu-14.04-64' unless ENV['BEAKER_set']
ENV['BEAKER_destroy'] = 'onpass' unless ENV['BEAKER_destroy']
ENV['BEAKER_provision'] = 'yes' unless ENV['BEAKER_provision']

12
TODO.md
View File

@ -1,12 +0,0 @@
* add pacemaker_group type
* pacemaker_location add date_expressions support
* pacemaker_location rules format/validation
* pacemaker_resource convert complex to simple and back
* pacemaker_resource add utilization support
* cleanup unused methods from pacemaker_nodes provider
* unit tests for location, colocation, order autorequire functions
* change tests behaviour according to the options and test several possible options
* noop provider is not working for non-ensurable types
* colocation/location/order will prevent its primitives from being removed. remove constraints first?
* primitive should use similar functions to constraint_location_add/remove to reduce code duplication
* primitive_is_started? and primitive_is_managed don't support resource defaults and management-mode

View File

@ -1,250 +0,0 @@
#!/usr/bin/ruby
# Usage:
#
# * install a fence agent package e.g. fence-agents-ilo2
# * fence_ilo2 -o metadata > ilo.xml
# * fence-generator.rb ilo.xml fence_ilo2 fence-agents-ilo2
# [ XML metadata, name of the class, name of the package for dependency check ]
require 'rexml/document'
class FencingMetadataParser
def initialize(filename, agentName, packageName)
@agentName = agentName
@packageName = packageName
file = File.new(filename)
@doc = REXML::Document.new file
@params = []
@params_max_len = 14 # pcmk_host_list
end
def getPackageName
@packageName
end
def getAgentName
@agentName
end
def getParameters
## result have to be array as order should be preserved
return @params unless @params.empty?
@doc.elements.each('resource-agent/parameters/parameter') { |p|
param = {}
param['name'] = REXML::XPath.match(p, 'string(./@name)')[0]
@params_max_len = param['name'].length if param['name'].length > @params_max_len
param['type'] = REXML::XPath.match(p, 'string(./content/@type)')[0]
## if 'default' is list then we can not enter it as parameter !!
## this is problem only for 'cmd_prompt'
param['default'] = REXML::XPath.match(p, 'string(./content/@default)')[0]
param['description'] = REXML::XPath.match(p, 'string(./shortdesc)')[0]
## remove parameters that are not usable during automatic execution
@params.push(param) unless %w(help version).include?(param['name'])
}
@params
end
def getMaxLen
@params_max_len
end
end
class ManifestGenerator
def initialize(parser)
@parser = parser
end
def generate
puts <<-eos
# == Define: pacemaker::stonith::#{@parser.getAgentName}
#
# Module for managing Stonith for #{@parser.getAgentName}.
#
# WARNING: Generated by "rake generate_stonith", manual changes will
# be lost.
#
# === Parameters
#
#{getManifestDocumentation}# [*interval*]
# Interval between tries.
#
# [*ensure*]
# The desired state of the resource.
#
# [*tries*]
# The number of tries.
#
# [*try_sleep*]
# Time to sleep between tries.
#
# [*pcmk_host_list*]
# List of Pacemaker hosts.
#
# [*meta_attr*]
# (optional) String of meta attributes
# Defaults to undef
#
# [*deep_compare*]
# Enable deep comparing of resources and bundles
# When set to true a resource will be compared in full (options, meta parameters,..)
# to the existing one and in case of difference it will be repushed to the CIB
# Defaults to false
#
# [*update_settle_secs*]
# When deep_compare is enabled and puppet updates a resource, this
# parameter represents the number (in seconds) to wait for the cluster to settle
# after the resource update.
# Defaults to 600 (seconds)
#
# === Dependencies
# None
#
# === Authors
#
# Generated by rake generate_stonith task.
#
# === Copyright
#
# Copyright (C) 2016 Red Hat Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
define pacemaker::stonith::#{@parser.getAgentName} (
#{getManifestParameters}
$deep_compare = false,
$update_settle_secs = 600,
) {
#{getVariableValues}
#{getPcmkHostList}
$meta_attr_value_chunk = $meta_attr ? {
undef => '',
default => "meta ${meta_attr}",
}
# $title can be a mac address, remove the colons for pcmk resource name
$safe_title = regsubst($title, ':', '', 'G')
Exec<| title == 'wait-for-settle' |> -> Pcmk_stonith<||>
$param_string = "#{getChunks} op monitor interval=${interval} ${meta_attr_value_chunk}"
#{getPackageSnippet}
#{getManifestCreate}}
eos
end
def getManifestCreate
agent_name = @parser.getAgentName == 'fence_watchdog' ? '\'watchdog\'' : "\"stonith-#{@parser.getAgentName}-${safe_title}\""
text = ''
text += " pcmk_stonith { #{agent_name}:\n"
text += " ensure => $ensure,\n"
text += " stonith_type => '#{@parser.getAgentName}',\n"
text += " pcmk_host_list => $pcmk_host_value_chunk,\n"
text += " pcs_param_string => $param_string,\n"
text += " tries => $tries,\n"
text += " try_sleep => $try_sleep,\n"
text += " deep_compare => $deep_compare,\n"
text += " update_settle_secs => $update_settle_secs,\n"
text += " }\n"
text
end
def getPcmkHostList
text = ''
if @parser.getAgentName == 'fence_watchdog'
text += " $pcmk_host_value_chunk = '$(crm_node -l |awk \\'{print $2}\\' |paste -sd, -)'\n"
else
text += " $pcmk_host_value_chunk = $pcmk_host_list ? {\n"
text += " undef => '$(/usr/sbin/crm_node -n)',\n"
text += " default => $pcmk_host_list,\n"
text += " }\n"
end
text
end
def getPackageSnippet
agent_name = @parser.getAgentName == 'fence_watchdog' ? '\'watchdog\'' : "\"stonith-#{@parser.getAgentName}-${safe_title}\""
text = ''
if @parser.getPackageName != 'None'
text += " if $ensure != 'absent' {\n"
text += " ensure_packages('#{@parser.getPackageName}', { ensure => 'installed' })\n"
text += " Package['#{@parser.getPackageName}'] -> Pcmk_stonith[#{agent_name}]\n"
text += " }"
end
text
end
def getManifestDocumentation
text = ''
@parser.getParameters.each { |p|
text += "# [*#{p['name']}*]\n"
text += "# #{p['description']}\n#\n"
}
text
end
def getManifestParameters
text = ''
@parser.getParameters.each { |p|
text += format_param(p['name'])
}
text += "\n"
text += format_param('meta_attr', 'undef')
text += format_param('interval', "'60s'")
text += format_param('ensure', 'present')
text += format_param('pcmk_host_list')
text += "\n"
text += format_param('tries')
text += format_param('try_sleep')
text
end
def getVariableValues
text = ''
@parser.getParameters.each { |p|
text += " $#{p['name']}_chunk = $#{p['name']} ? {\n"
text += " undef => '',\n"
text += " default => \"#{p['name']}=\\\"${#{p['name']}}\\\"\",\n"
text += " }\n"
}
text
end
def getChunks
text = ''
@parser.getParameters.each { |p|
text += "${#{p['name']}_chunk} "
}
text
end
private
def format_param(param, value = 'undef')
" $%-#{@parser.getMaxLen}s = %s,\n" % [param, value]
end
end
if ARGV.length != 3
puts 'You have to enter three arguments: path to metadata, name of fence agent and fence agent package'
exit 1
end
metadata, agentName, packageName = ARGV
# e.g. parser = FencingMetadataParser.new("ilo.xml", "fence_ilo", "fence-agents-ilo2")
parser = FencingMetadataParser.new(metadata, agentName, packageName)
ManifestGenerator.new(parser).generate

View File

@ -1,17 +0,0 @@
#!/bin/bash
# This scripts generates fence agent manifests from their XML
# descriptions
set -exuo pipefail
generator_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "$generator_dir/variables.sh"
for cmd_pkg in "${cmd_pkg_map[@]}"; do
cmd=${cmd_pkg%%:*}
pkg=${cmd_pkg#*:}
"$generator_dir/agent_generator.rb" "$generator_dir/src_xml/$cmd.xml" $cmd $pkg > "$generator_dir/../manifests/stonith/$cmd.pp"
done

View File

@ -1,172 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_amt" shortdesc="Fence agent for AMT" >
<longdesc>fence_amt is an I/O Fencing agent which can be used with Intel AMT. This agent calls support software amttool(http://www.kraxel.org/cgit/amtterm/).</longdesc>
<vendor-url>http://www.intel.com/</vendor-url>
<parameters>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="integer" default="16994" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="port" unique="0" required="0" deprecated="1">
<getopt mixed="-n, --plug=[ip]" />
<content type="string" />
<shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="ipaddr" unique="0" required="0" deprecated="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="method" unique="0" required="0">
<getopt mixed="-m, --method=[method]" />
<content type="select" default="onoff" >
<option value="onoff" />
<option value="cycle" />
</content>
<shortdesc lang="en">Method to fence (onoff|cycle)</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0" deprecated="1">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0" deprecated="1">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="boot_option" unique="0" required="0">
<getopt mixed="-b, --boot-option=[option]" />
<content type="select" >
<option value="pxe" />
<option value="hd" />
<option value="hdsafe" />
<option value="cd" />
<option value="diag" />
</content>
<shortdesc lang="en">Change the default boot behavior of the machine.</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="plug" unique="0" required="0" obsoletes="port">
<getopt mixed="-n, --plug=[ip]" />
<content type="string" />
<shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc>
</parameter>
<parameter name="ip" unique="0" required="0" obsoletes="ipaddr">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="password" unique="0" required="0" obsoletes="passwd">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="password_script" unique="0" required="0" obsoletes="passwd_script">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0" deprecated="1">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="debug_file" unique="0" required="0" obsoletes="debug">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="second" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="second" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="second" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="amttool_path" unique="0" required="0">
<getopt mixed="--amttool-path=[path]" />
<content type="string" default="/usr/bin/amttool" />
<shortdesc lang="en">Path to amttool binary</shortdesc>
</parameter>
<parameter name="port_as_ip" unique="0" required="0">
<getopt mixed="--port-as-ip" />
<content type="boolean" />
<shortdesc lang="en">Make "port/plug" to be an alias to IP address</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="integer" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
<parameter name="sudo" unique="0" required="0" deprecated="1">
<getopt mixed="--use-sudo" />
<content type="boolean" />
<shortdesc lang="en">Use sudo (without password) when calling 3rd party sotfware.</shortdesc>
</parameter>
<parameter name="use_sudo" unique="0" required="0" obsoletes="sudo">
<getopt mixed="--use-sudo" />
<content type="boolean" />
<shortdesc lang="en">Use sudo (without password) when calling 3rd party sotfware.</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="list-status" />
<action name="monitor" />
<action name="metadata" />
<action name="validate-all" />
</actions>
</resource-agent>

View File

@ -1,142 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_apc" shortdesc="Fence agent for APC over telnet/ssh" >
<longdesc>fence_apc is an I/O Fencing agent which can be used with the APC network power switch. It logs into device via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.</longdesc>
<vendor-url>http://www.apc.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="cmd_prompt" unique="0" required="0">
<getopt mixed="-c, --command-prompt=[prompt]" />
<content type="string" default="[&apos;\n&gt;&apos;, &apos;\napc&gt;&apos;]" />
<shortdesc lang="en">Force Python regex for command prompt</shortdesc>
</parameter>
<parameter name="secure" unique="0" required="0">
<getopt mixed="-x, --ssh" />
<content type="boolean" />
<shortdesc lang="en">SSH connection</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="switch" unique="0" required="0">
<getopt mixed="-s, --switch=[id]" />
<content type="string" />
<shortdesc lang="en">Physical switch number on device</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 23, 22 if --ssh" />
<content type="string" default="23" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="identity_file" unique="0" required="0">
<getopt mixed="-k, --identity-file=[filename]" />
<content type="string" />
<shortdesc lang="en">Identity file for ssh</shortdesc>
</parameter>
<parameter name="ssh_options" unique="0" required="0">
<getopt mixed="--ssh-options=[options]" />
<content type="string" default="-1 -c blowfish" />
<shortdesc lang="en">SSH options to use</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,151 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_apc_snmp" shortdesc="Fence agent for APC over SNMP" >
<longdesc>fence_apc_snmp is an I/O Fencing agent which can be used with the APC network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1 and v3 with all combinations of authenticity/privacy settings.</longdesc>
<vendor-url>http://www.apc.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="snmp_version" unique="0" required="0">
<getopt mixed="-d, --snmp-version=[version]" />
<content type="string" default="1" />
<shortdesc lang="en">Specifies SNMP version to use (1,2c,3)</shortdesc>
</parameter>
<parameter name="community" unique="0" required="0">
<getopt mixed="-c, --community=[community]" />
<content type="string" default="private" />
<shortdesc lang="en">Set the community string</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="161" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="snmp_auth_prot" unique="0" required="0">
<getopt mixed="-b, --snmp-auth-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set authentication protocol (MD5|SHA)</shortdesc>
</parameter>
<parameter name="snmp_sec_level" unique="0" required="0">
<getopt mixed="-E, --snmp-sec-level=[level]" />
<content type="string" />
<shortdesc lang="en">Set security level (noAuthNoPriv|authNoPriv|authPriv)</shortdesc>
</parameter>
<parameter name="snmp_priv_prot" unique="0" required="0">
<getopt mixed="-B, --snmp-priv-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol (DES|AES)</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd" unique="0" required="0">
<getopt mixed="-P, --snmp-priv-passwd=[pass]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol password</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd_script" unique="0" required="0">
<getopt mixed="-R, --snmp-priv-passwd-script" />
<content type="string" />
<shortdesc lang="en">Script to run to retrieve privacy password</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,142 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_bladecenter" shortdesc="Fence agent for IBM BladeCenter" >
<longdesc>fence_bladecenter is an I/O Fencing agent which can be used with IBM Bladecenters with recent enough firmware that includes telnet support. It logs into a Brocade chasis via telnet or ssh and uses the command line interface to power on and off blades.</longdesc>
<vendor-url>http://www.ibm.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="cmd_prompt" unique="0" required="0">
<getopt mixed="-c, --command-prompt=[prompt]" />
<content type="string" default="[&apos;system&gt;&apos;]" />
<shortdesc lang="en">Force Python regex for command prompt</shortdesc>
</parameter>
<parameter name="secure" unique="0" required="0">
<getopt mixed="-x, --ssh" />
<content type="boolean" />
<shortdesc lang="en">SSH connection</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 23, 22 if --ssh" />
<content type="string" default="23" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="identity_file" unique="0" required="0">
<getopt mixed="-k, --identity-file=[filename]" />
<content type="string" />
<shortdesc lang="en">Identity file for ssh</shortdesc>
</parameter>
<parameter name="ssh_options" unique="0" required="0">
<getopt mixed="--ssh-options=[options]" />
<content type="string" />
<shortdesc lang="en">SSH options to use</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="missing_as_off" unique="0" required="0">
<getopt mixed="--missing-as-off" />
<content type="boolean" />
<shortdesc lang="en">Missing port returns OFF instead of failure</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="10" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,136 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_brocade" shortdesc="Fence agent for HP Brocade over telnet/ssh" >
<longdesc>fence_brocade is an I/O Fencing agent which can be used with Brocade FC switches. It logs into a Brocade switch via telnet and disables a specified port. Disabling the port which a machine is connected to effectively fences that machine. Lengthy telnet connections to the switch should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. After a fence operation has taken place the fenced machine can no longer connect to the Brocade FC switch. When the fenced machine is ready to be brought back into the GFS cluster (after reboot) the port on the Brocade FC switch needs to be enabled. This can be done by running fence_brocade and specifying the enable action</longdesc>
<vendor-url>http://www.brocade.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="cmd_prompt" unique="0" required="0">
<getopt mixed="-c, --command-prompt=[prompt]" />
<content type="string" default="[&apos;&gt; &apos;]" />
<shortdesc lang="en">Force Python regex for command prompt</shortdesc>
</parameter>
<parameter name="secure" unique="0" required="0">
<getopt mixed="-x, --ssh" />
<content type="boolean" />
<shortdesc lang="en">SSH connection</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 23, 22 if --ssh" />
<content type="string" default="23" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="identity_file" unique="0" required="0">
<getopt mixed="-k, --identity-file=[filename]" />
<content type="string" />
<shortdesc lang="en">Identity file for ssh</shortdesc>
</parameter>
<parameter name="ssh_options" unique="0" required="0">
<getopt mixed="--ssh-options=[options]" />
<content type="string" />
<shortdesc lang="en">SSH options to use</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="off" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="1"/>
<action name="off" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,150 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_cisco_mds" shortdesc="Fence agent for Cisco MDS" >
<longdesc>fence_cisco_mds is an I/O Fencing agent which can be used with any Cisco MDS 9000 series with SNMP enabled device.</longdesc>
<vendor-url>http://www.cisco.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="snmp_version" unique="0" required="0">
<getopt mixed="-d, --snmp-version=[version]" />
<content type="string" />
<shortdesc lang="en">Specifies SNMP version to use (1,2c,3)</shortdesc>
</parameter>
<parameter name="community" unique="0" required="0">
<getopt mixed="-c, --community=[community]" />
<content type="string" />
<shortdesc lang="en">Set the community string</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="161" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="snmp_auth_prot" unique="0" required="0">
<getopt mixed="-b, --snmp-auth-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set authentication protocol (MD5|SHA)</shortdesc>
</parameter>
<parameter name="snmp_sec_level" unique="0" required="0">
<getopt mixed="-E, --snmp-sec-level=[level]" />
<content type="string" />
<shortdesc lang="en">Set security level (noAuthNoPriv|authNoPriv|authPriv)</shortdesc>
</parameter>
<parameter name="snmp_priv_prot" unique="0" required="0">
<getopt mixed="-B, --snmp-priv-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol (DES|AES)</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd" unique="0" required="0">
<getopt mixed="-P, --snmp-priv-passwd=[pass]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol password</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd_script" unique="0" required="0">
<getopt mixed="-R, --snmp-priv-passwd-script" />
<content type="string" />
<shortdesc lang="en">Script to run to retrieve privacy password</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="off" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="1"/>
<action name="off" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,142 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_cisco_ucs" shortdesc="Fence agent for Cisco UCS" >
<longdesc>fence_cisco_ucs is an I/O Fencing agent which can be used with Cisco UCS to fence machines.</longdesc>
<vendor-url>http://www.cisco.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="ssl" unique="0" required="0">
<getopt mixed="-z, --ssl" />
<content type="boolean" />
<shortdesc lang="en">SSL connection</shortdesc>
</parameter>
<parameter name="notls" unique="0" required="0">
<getopt mixed="-t, --notls" />
<content type="boolean" />
<shortdesc lang="en">Disable TLS negotiation</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="suborg" unique="0" required="0">
<getopt mixed="--suborg=[path]" />
<content type="string" />
<shortdesc lang="en">Additional path needed to access suborganization</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 80, 443 if --ssl" />
<content type="string" default="80" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="ssl_secure" unique="0" required="0">
<getopt mixed="--ssl-secure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection with verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="ssl_insecure" unique="0" required="0">
<getopt mixed="--ssl-insecure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection without verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,177 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_compute" shortdesc="Fence agent for the automatic resurrection of OpenStack compute instances" >
<longdesc>Used to tell Nova that compute nodes are down and to reschedule flagged instances</longdesc>
<vendor-url></vendor-url>
<parameters>
<parameter name="tenant_name" unique="0" required="0">
<getopt mixed="-t, --tenant-name=[name]" />
<content type="string" />
<shortdesc lang="en">Keystone Admin Tenant or v3 Project</shortdesc>
</parameter>
<parameter name="auth_url" unique="0" required="0">
<getopt mixed="-k, --auth-url=[url]" />
<content type="string" />
<shortdesc lang="en">Keystone Admin Auth URL</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1" deprecated="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0" deprecated="1">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="region_name" unique="0" required="0">
<getopt mixed="--region-name=[region]" />
<content type="boolean" />
<shortdesc lang="en">Region Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0" deprecated="1">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="endpoint_type" unique="0" required="0">
<getopt mixed="-e, --endpoint-type=[endpoint]" />
<content type="string" default="internalURL" />
<shortdesc lang="en">Nova Endpoint type</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="off" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0" deprecated="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="plug" unique="0" required="1" obsoletes="port">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="username" unique="0" required="0" obsoletes="login">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="password" unique="0" required="0" obsoletes="passwd">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="password_script" unique="0" required="0" obsoletes="passwd_script">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="insecure" unique="0" required="0">
<getopt mixed="--insecure" />
<content type="boolean" default="False" />
<shortdesc lang="en">Allow Insecure TLS Requests</shortdesc>
</parameter>
<parameter name="domain" unique="0" required="0">
<getopt mixed="-d, --domain=[string]" />
<content type="string" />
<shortdesc lang="en">DNS domain in which hosts live</shortdesc>
</parameter>
<parameter name="project_domain" unique="0" required="0">
<getopt mixed="-d, --project-domain=[name]" />
<content type="string" default="Default" />
<shortdesc lang="en">Keystone v3 Project Domain</shortdesc>
</parameter>
<parameter name="user_domain" unique="0" required="0">
<getopt mixed="-u, --user-domain=[name]" />
<content type="string" default="Default" />
<shortdesc lang="en">Keystone v3 User Domain</shortdesc>
</parameter>
<parameter name="instance_filtering" unique="0" required="0">
<getopt mixed="--instance-filtering" />
<content type="boolean" default="True" />
<shortdesc lang="en">Allow instances to be evacuated</shortdesc>
</parameter>
<parameter name="no_shared_storage" unique="0" required="0">
<getopt mixed="--no-shared-storage" />
<content type="boolean" default="False" />
<shortdesc lang="en">Disable functionality for dealing with shared storage</shortdesc>
</parameter>
<parameter name="record_only" unique="0" required="0">
<getopt mixed="--record-only" />
<content type="string" default="False" />
<shortdesc lang="en">Only record the target as needing evacuation</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0" deprecated="1">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="debug_file" unique="0" required="0" obsoletes="debug">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="second" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="second" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="second" default="180" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="integer" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="1"/>
<action name="off" />
<action name="status" />
<action name="list" />
<action name="list-status" />
<action name="monitor" />
<action name="metadata" />
<action name="validate-all" />
</actions>
</resource-agent>

View File

@ -1,109 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_crosslink" shortdesc="Fence agent for cross-link two-node clusters" >
<longdesc>This agent helps two-node clusters to tackle the situation where one node lost power, cannot be fenced by telling pacemaker that if the node is not reachable over the crosslink cable, we can assume it is dead</longdesc>
<vendor-url></vendor-url>
<parameters>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing action</shortdesc>
</parameter>
<parameter name="crosscableip" unique="0" required="1">
<getopt mixed="-a, --crosscableip=[IP]" />
<content type="string" />
<shortdesc lang="en">Cross-cable IP</shortdesc>
</parameter>
<parameter name="plug" unique="0" required="1" obsoletes="port">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number on device, UUID or identification of machine</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1" deprecated="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number on device, UUID or identification of machine</shortdesc>
</parameter>
<parameter name="timeout" unique="0" required="0">
<getopt mixed="-T, --timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">No ICMP reply in 5 seconds -> Node is considered dead</shortdesc>
</parameter>
<parameter name="quiet" unique="0" required="0">
<getopt mixed="-q, --quiet" />
<content type="boolean" />
<shortdesc lang="en">Disable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0" deprecated="1">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="debug_file" unique="0" required="0" obsoletes="debug">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by 'list' operation</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="second" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="second" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="second" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="integer" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="list-status" />
<action name="monitor" />
<action name="metadata" />
<action name="manpage" />
<action name="validate-all" />
</actions>
</resource-agent>

View File

@ -1,142 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_drac5" shortdesc="Fence agent for Dell DRAC CMC/5" >
<longdesc>fence_drac5 is an I/O Fencing agent which can be used with the Dell Remote Access Card v5 or CMC (DRAC). This device provides remote access to controlling power to a server. It logs into the DRAC through the telnet/ssh interface of the card. By default, the telnet interface is not enabled.</longdesc>
<vendor-url>http://www.dell.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="cmd_prompt" unique="0" required="0">
<getopt mixed="-c, --command-prompt=[prompt]" />
<content type="string" default="[&apos;\\$&apos;]" />
<shortdesc lang="en">Force Python regex for command prompt</shortdesc>
</parameter>
<parameter name="secure" unique="0" required="0">
<getopt mixed="-x, --ssh" />
<content type="boolean" />
<shortdesc lang="en">SSH connection</shortdesc>
</parameter>
<parameter name="drac_version" unique="0" required="0">
<getopt mixed="-d, --drac-version=[version]" />
<content type="string" />
<shortdesc lang="en">Force DRAC version to use</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 23, 22 if --ssh" />
<content type="string" default="23" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="identity_file" unique="0" required="0">
<getopt mixed="-k, --identity-file=[filename]" />
<content type="string" />
<shortdesc lang="en">Identity file for ssh</shortdesc>
</parameter>
<parameter name="ssh_options" unique="0" required="0">
<getopt mixed="--ssh-options=[options]" />
<content type="string" />
<shortdesc lang="en">SSH options to use</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,151 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_eaton_snmp" shortdesc="Fence agent for Eaton over SNMP" >
<longdesc>fence_eaton_snmp is an I/O Fencing agent which can be used with the Eaton network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1 and v3 with all combinations of authenticity/privacy settings.</longdesc>
<vendor-url>http://powerquality.eaton.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="snmp_version" unique="0" required="0">
<getopt mixed="-d, --snmp-version=[version]" />
<content type="string" default="1" />
<shortdesc lang="en">Specifies SNMP version to use (1,2c,3)</shortdesc>
</parameter>
<parameter name="community" unique="0" required="0">
<getopt mixed="-c, --community=[community]" />
<content type="string" default="private" />
<shortdesc lang="en">Set the community string</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="161" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="snmp_auth_prot" unique="0" required="0">
<getopt mixed="-b, --snmp-auth-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set authentication protocol (MD5|SHA)</shortdesc>
</parameter>
<parameter name="snmp_sec_level" unique="0" required="0">
<getopt mixed="-E, --snmp-sec-level=[level]" />
<content type="string" />
<shortdesc lang="en">Set security level (noAuthNoPriv|authNoPriv|authPriv)</shortdesc>
</parameter>
<parameter name="snmp_priv_prot" unique="0" required="0">
<getopt mixed="-B, --snmp-priv-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol (DES|AES)</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd" unique="0" required="0">
<getopt mixed="-P, --snmp-priv-passwd=[pass]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol password</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd_script" unique="0" required="0">
<getopt mixed="-R, --snmp-priv-passwd-script" />
<content type="string" />
<shortdesc lang="en">Script to run to retrieve privacy password</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="2" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,123 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_eps" shortdesc="Fence agent for ePowerSwitch" >
<longdesc>fence_eps is an I/O Fencing agent which can be used with the ePowerSwitch 8M+ power switch to fence connected machines. Fence agent works ONLY on 8M+ device, because this is only one, which has support for hidden page feature.
.TP
Agent basically works by connecting to hidden page and pass appropriate arguments to GET request. This means, that hidden page feature must be enabled and properly configured.</longdesc>
<vendor-url>http://www.epowerswitch.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="hidden_page" unique="0" required="0">
<getopt mixed="-c, --page=[page]" />
<content type="string" default="hidden.htm" />
<shortdesc lang="en">Name of hidden page</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="23" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,142 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_hpblade" shortdesc="Fence agent for HP BladeSystem" >
<longdesc>fence_hpblade is an I/O Fencing agent which can be used with HP BladeSystem. It logs into an enclosure via telnet or ssh and uses the command line interface to power on and off blades.</longdesc>
<vendor-url>http://www.hp.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="cmd_prompt" unique="0" required="0">
<getopt mixed="-c, --command-prompt=[prompt]" />
<content type="string" default="[&apos;c7000oa&gt;&apos;]" />
<shortdesc lang="en">Force Python regex for command prompt</shortdesc>
</parameter>
<parameter name="secure" unique="0" required="0">
<getopt mixed="-x, --ssh" />
<content type="boolean" />
<shortdesc lang="en">SSH connection</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 23, 22 if --ssh" />
<content type="string" default="23" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="identity_file" unique="0" required="0">
<getopt mixed="-k, --identity-file=[filename]" />
<content type="string" />
<shortdesc lang="en">Identity file for ssh</shortdesc>
</parameter>
<parameter name="ssh_options" unique="0" required="0">
<getopt mixed="--ssh-options=[options]" />
<content type="string" />
<shortdesc lang="en">SSH options to use</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="missing_as_off" unique="0" required="0">
<getopt mixed="--missing-as-off" />
<content type="boolean" />
<shortdesc lang="en">Missing port returns OFF instead of failure</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,151 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ibmblade" shortdesc="Fence agent for IBM BladeCenter over SNMP" >
<longdesc>fence_ibmblade is an I/O Fencing agent which can be used with IBM BladeCenter chassis. It issues SNMP Set request to BladeCenter chassis, rebooting, powering up or down the specified Blade Server.</longdesc>
<vendor-url>http://www.ibm.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="snmp_version" unique="0" required="0">
<getopt mixed="-d, --snmp-version=[version]" />
<content type="string" default="1" />
<shortdesc lang="en">Specifies SNMP version to use (1,2c,3)</shortdesc>
</parameter>
<parameter name="community" unique="0" required="0">
<getopt mixed="-c, --community=[community]" />
<content type="string" />
<shortdesc lang="en">Set the community string</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="161" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="snmp_auth_prot" unique="0" required="0">
<getopt mixed="-b, --snmp-auth-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set authentication protocol (MD5|SHA)</shortdesc>
</parameter>
<parameter name="snmp_sec_level" unique="0" required="0">
<getopt mixed="-E, --snmp-sec-level=[level]" />
<content type="string" />
<shortdesc lang="en">Set security level (noAuthNoPriv|authNoPriv|authPriv)</shortdesc>
</parameter>
<parameter name="snmp_priv_prot" unique="0" required="0">
<getopt mixed="-B, --snmp-priv-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol (DES|AES)</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd" unique="0" required="0">
<getopt mixed="-P, --snmp-priv-passwd=[pass]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol password</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd_script" unique="0" required="0">
<getopt mixed="-R, --snmp-priv-passwd-script" />
<content type="string" />
<shortdesc lang="en">Script to run to retrieve privacy password</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,94 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_idrac" shortdesc="Fence agent for IPMI over LAN">
<symlink name="fence_ilo3" shortdesc="Fence agent for HP iLO3"/>
<symlink name="fence_ilo4" shortdesc="Fence agent for HP iLO4"/>
<symlink name="fence_idrac" shortdesc="Fence agent for Dell iDRAC"/>
<symlink name="fence_imm" shortdesc="Fence agent for IBM Integrated Management Module"/>
<longdesc>
fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software using ipmitool (http://ipmitool.sf.net/).
To use fence_ipmilan with HP iLO 3 or HP iLO 4 you have to enable lanplus option (lanplus / -P) and increase wait after operation to 4 seconds (power_wait=4 / -T 4)</longdesc>
<vendor-url>http://www.intel.com</vendor-url>
<parameters>
<parameter name="auth" unique="0" required="0">
<getopt mixed="-A" />
<content type="string" />
<shortdesc lang="en">IPMI Lan Auth type (md5, password, or none)</shortdesc>
</parameter>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a" />
<content type="string" />
<shortdesc lang="en">IPMI Lan IP to talk to</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p" />
<content type="string" />
<shortdesc lang="en">Password (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password (if required)</shortdesc>
</parameter>
<parameter name="lanplus" unique="0" required="0">
<getopt mixed="-P" />
<content type="boolean" />
<shortdesc lang="en">Use Lanplus to improve security of connection</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l" />
<content type="string" />
<shortdesc lang="en">Username/Login (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="action" unique="0" required="0">
<getopt mixed="-o" />
<content type="string" default="reboot"/>
<shortdesc lang="en">Operation to perform. Valid operations: on, off, reboot, status, list, diag, monitor or metadata</shortdesc>
</parameter>
<parameter name="timeout" unique="0" required="0">
<getopt mixed="-t" />
<content type="string" />
<shortdesc lang="en">Timeout (sec) for IPMI operation</shortdesc>
</parameter>
<parameter name="cipher" unique="0" required="0">
<getopt mixed="-C" />
<content type="string" />
<shortdesc lang="en">Ciphersuite to use (same as ipmitool -C parameter)</shortdesc>
</parameter>
<parameter name="method" unique="0" required="0">
<getopt mixed="-M" />
<content type="string" default="onoff"/>
<shortdesc lang="en">Method to fence (onoff or cycle)</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="-T" />
<content type="string" default="2"/>
<shortdesc lang="en">Wait X seconds after on/off operation</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="-f" />
<content type="string" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="privlvl" unique="0" required="0">
<getopt mixed="-L" />
<content type="string" />
<shortdesc lang="en">Privilege level on IPMI device</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" />
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="diag" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,152 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ifmib" shortdesc="Fence agent for IF MIB" >
<longdesc>fence_ifmib is an I/O Fencing agent which can be used with any SNMP IF-MIB capable device.
.P
It was written with managed ethernet switches in mind, in order to fence iSCSI SAN connections. However, there are many devices that support the IF-MIB interface. The agent uses IF-MIB::ifAdminStatus to control the state of an interface.</longdesc>
<vendor-url>http://www.ietf.org/wg/concluded/ifmib.html</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="snmp_version" unique="0" required="0">
<getopt mixed="-d, --snmp-version=[version]" />
<content type="string" default="2c" />
<shortdesc lang="en">Specifies SNMP version to use (1,2c,3)</shortdesc>
</parameter>
<parameter name="community" unique="0" required="0">
<getopt mixed="-c, --community=[community]" />
<content type="string" />
<shortdesc lang="en">Set the community string</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="161" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="snmp_auth_prot" unique="0" required="0">
<getopt mixed="-b, --snmp-auth-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set authentication protocol (MD5|SHA)</shortdesc>
</parameter>
<parameter name="snmp_sec_level" unique="0" required="0">
<getopt mixed="-E, --snmp-sec-level=[level]" />
<content type="string" />
<shortdesc lang="en">Set security level (noAuthNoPriv|authNoPriv|authPriv)</shortdesc>
</parameter>
<parameter name="snmp_priv_prot" unique="0" required="0">
<getopt mixed="-B, --snmp-priv-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol (DES|AES)</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd" unique="0" required="0">
<getopt mixed="-P, --snmp-priv-passwd=[pass]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol password</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd_script" unique="0" required="0">
<getopt mixed="-R, --snmp-priv-passwd-script" />
<content type="string" />
<shortdesc lang="en">Script to run to retrieve privacy password</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="off" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="1"/>
<action name="off" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,132 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ilo" shortdesc="Fence agent for HP iLO" >
<symlink name="fence_ilo2" shortdesc="Fence agent for HP iLO2"/>
<longdesc>fence_ilo is an I/O Fencing agent used for HP servers with the Integrated Light Out (iLO) PCI card.The agent opens an SSL connection to the iLO card. Once the SSL connection is established, the agent is able to communicate with the iLO card through an XML stream.</longdesc>
<vendor-url>http://www.hp.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="ssl" unique="0" required="0">
<getopt mixed="-z, --ssl" />
<content type="boolean" default="1" />
<shortdesc lang="en">SSL connection</shortdesc>
</parameter>
<parameter name="notls" unique="0" required="0">
<getopt mixed="-t, --notls" />
<content type="boolean" />
<shortdesc lang="en">Disable TLS negotiation</shortdesc>
</parameter>
<parameter name="ribcl" unique="0" required="0">
<getopt mixed="-r, --ribcl-version=[version]" />
<content type="string" />
<shortdesc lang="en">Force ribcl version to use</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="443" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="ssl_secure" unique="0" required="0">
<getopt mixed="--ssl-secure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection with verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="ssl_insecure" unique="0" required="0">
<getopt mixed="--ssl-insecure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection without verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="10" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="3" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,132 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ilo2" shortdesc="Fence agent for HP iLO" >
<symlink name="fence_ilo2" shortdesc="Fence agent for HP iLO2"/>
<longdesc>fence_ilo is an I/O Fencing agent used for HP servers with the Integrated Light Out (iLO) PCI card.The agent opens an SSL connection to the iLO card. Once the SSL connection is established, the agent is able to communicate with the iLO card through an XML stream.</longdesc>
<vendor-url>http://www.hp.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="ssl" unique="0" required="0">
<getopt mixed="-z, --ssl" />
<content type="boolean" default="1" />
<shortdesc lang="en">SSL connection</shortdesc>
</parameter>
<parameter name="notls" unique="0" required="0">
<getopt mixed="-t, --notls" />
<content type="boolean" />
<shortdesc lang="en">Disable TLS negotiation</shortdesc>
</parameter>
<parameter name="ribcl" unique="0" required="0">
<getopt mixed="-r, --ribcl-version=[version]" />
<content type="string" />
<shortdesc lang="en">Force ribcl version to use</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="443" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="ssl_secure" unique="0" required="0">
<getopt mixed="--ssl-secure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection with verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="ssl_insecure" unique="0" required="0">
<getopt mixed="--ssl-insecure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection without verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="10" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="3" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,94 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ilo3" shortdesc="Fence agent for IPMI over LAN">
<symlink name="fence_ilo3" shortdesc="Fence agent for HP iLO3"/>
<symlink name="fence_ilo4" shortdesc="Fence agent for HP iLO4"/>
<symlink name="fence_idrac" shortdesc="Fence agent for Dell iDRAC"/>
<symlink name="fence_imm" shortdesc="Fence agent for IBM Integrated Management Module"/>
<longdesc>
fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software using ipmitool (http://ipmitool.sf.net/).
To use fence_ipmilan with HP iLO 3 or HP iLO 4 you have to enable lanplus option (lanplus / -P) and increase wait after operation to 4 seconds (power_wait=4 / -T 4)</longdesc>
<vendor-url>http://www.intel.com</vendor-url>
<parameters>
<parameter name="auth" unique="0" required="0">
<getopt mixed="-A" />
<content type="string" />
<shortdesc lang="en">IPMI Lan Auth type (md5, password, or none)</shortdesc>
</parameter>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a" />
<content type="string" />
<shortdesc lang="en">IPMI Lan IP to talk to</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p" />
<content type="string" />
<shortdesc lang="en">Password (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password (if required)</shortdesc>
</parameter>
<parameter name="lanplus" unique="0" required="0">
<getopt mixed="-P" />
<content type="boolean" />
<shortdesc lang="en">Use Lanplus to improve security of connection</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l" />
<content type="string" />
<shortdesc lang="en">Username/Login (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="action" unique="0" required="0">
<getopt mixed="-o" />
<content type="string" default="reboot"/>
<shortdesc lang="en">Operation to perform. Valid operations: on, off, reboot, status, list, diag, monitor or metadata</shortdesc>
</parameter>
<parameter name="timeout" unique="0" required="0">
<getopt mixed="-t" />
<content type="string" />
<shortdesc lang="en">Timeout (sec) for IPMI operation</shortdesc>
</parameter>
<parameter name="cipher" unique="0" required="0">
<getopt mixed="-C" />
<content type="string" />
<shortdesc lang="en">Ciphersuite to use (same as ipmitool -C parameter)</shortdesc>
</parameter>
<parameter name="method" unique="0" required="0">
<getopt mixed="-M" />
<content type="string" default="onoff"/>
<shortdesc lang="en">Method to fence (onoff or cycle)</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="-T" />
<content type="string" default="2"/>
<shortdesc lang="en">Wait X seconds after on/off operation</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="-f" />
<content type="string" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="privlvl" unique="0" required="0">
<getopt mixed="-L" />
<content type="string" />
<shortdesc lang="en">Privilege level on IPMI device</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" />
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="diag" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,94 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ilo4" shortdesc="Fence agent for IPMI over LAN">
<symlink name="fence_ilo3" shortdesc="Fence agent for HP iLO3"/>
<symlink name="fence_ilo4" shortdesc="Fence agent for HP iLO4"/>
<symlink name="fence_idrac" shortdesc="Fence agent for Dell iDRAC"/>
<symlink name="fence_imm" shortdesc="Fence agent for IBM Integrated Management Module"/>
<longdesc>
fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software using ipmitool (http://ipmitool.sf.net/).
To use fence_ipmilan with HP iLO 3 or HP iLO 4 you have to enable lanplus option (lanplus / -P) and increase wait after operation to 4 seconds (power_wait=4 / -T 4)</longdesc>
<vendor-url>http://www.intel.com</vendor-url>
<parameters>
<parameter name="auth" unique="0" required="0">
<getopt mixed="-A" />
<content type="string" />
<shortdesc lang="en">IPMI Lan Auth type (md5, password, or none)</shortdesc>
</parameter>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a" />
<content type="string" />
<shortdesc lang="en">IPMI Lan IP to talk to</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p" />
<content type="string" />
<shortdesc lang="en">Password (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password (if required)</shortdesc>
</parameter>
<parameter name="lanplus" unique="0" required="0">
<getopt mixed="-P" />
<content type="boolean" />
<shortdesc lang="en">Use Lanplus to improve security of connection</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l" />
<content type="string" />
<shortdesc lang="en">Username/Login (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="action" unique="0" required="0">
<getopt mixed="-o" />
<content type="string" default="reboot"/>
<shortdesc lang="en">Operation to perform. Valid operations: on, off, reboot, status, list, diag, monitor or metadata</shortdesc>
</parameter>
<parameter name="timeout" unique="0" required="0">
<getopt mixed="-t" />
<content type="string" />
<shortdesc lang="en">Timeout (sec) for IPMI operation</shortdesc>
</parameter>
<parameter name="cipher" unique="0" required="0">
<getopt mixed="-C" />
<content type="string" />
<shortdesc lang="en">Ciphersuite to use (same as ipmitool -C parameter)</shortdesc>
</parameter>
<parameter name="method" unique="0" required="0">
<getopt mixed="-M" />
<content type="string" default="onoff"/>
<shortdesc lang="en">Method to fence (onoff or cycle)</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="-T" />
<content type="string" default="2"/>
<shortdesc lang="en">Wait X seconds after on/off operation</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="-f" />
<content type="string" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="privlvl" unique="0" required="0">
<getopt mixed="-L" />
<content type="string" />
<shortdesc lang="en">Privilege level on IPMI device</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" />
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="diag" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,127 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ilo_mp" shortdesc="Fence agent for HP iLO MP" >
<longdesc></longdesc>
<vendor-url>http://www.hp.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="secure" unique="0" required="0">
<getopt mixed="-x, --ssh" />
<content type="boolean" />
<shortdesc lang="en">SSH connection</shortdesc>
</parameter>
<parameter name="cmd_prompt" unique="0" required="0">
<getopt mixed="-c, --command-prompt=[prompt]" />
<content type="string" default="[&apos;MP&gt;&apos;, &apos;hpiLO-&gt;&apos;]" />
<shortdesc lang="en">Force Python regex for command prompt</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 23, 22 if --ssh" />
<content type="string" default="23" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="identity_file" unique="0" required="0">
<getopt mixed="-k, --identity-file=[filename]" />
<content type="string" />
<shortdesc lang="en">Identity file for ssh</shortdesc>
</parameter>
<parameter name="ssh_options" unique="0" required="0">
<getopt mixed="--ssh-options=[options]" />
<content type="string" />
<shortdesc lang="en">SSH options to use</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,94 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_imm" shortdesc="Fence agent for IPMI over LAN">
<symlink name="fence_ilo3" shortdesc="Fence agent for HP iLO3"/>
<symlink name="fence_ilo4" shortdesc="Fence agent for HP iLO4"/>
<symlink name="fence_idrac" shortdesc="Fence agent for Dell iDRAC"/>
<symlink name="fence_imm" shortdesc="Fence agent for IBM Integrated Management Module"/>
<longdesc>
fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software using ipmitool (http://ipmitool.sf.net/).
To use fence_ipmilan with HP iLO 3 or HP iLO 4 you have to enable lanplus option (lanplus / -P) and increase wait after operation to 4 seconds (power_wait=4 / -T 4)</longdesc>
<vendor-url>http://www.intel.com</vendor-url>
<parameters>
<parameter name="auth" unique="0" required="0">
<getopt mixed="-A" />
<content type="string" />
<shortdesc lang="en">IPMI Lan Auth type (md5, password, or none)</shortdesc>
</parameter>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a" />
<content type="string" />
<shortdesc lang="en">IPMI Lan IP to talk to</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p" />
<content type="string" />
<shortdesc lang="en">Password (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password (if required)</shortdesc>
</parameter>
<parameter name="lanplus" unique="0" required="0">
<getopt mixed="-P" />
<content type="boolean" />
<shortdesc lang="en">Use Lanplus to improve security of connection</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l" />
<content type="string" />
<shortdesc lang="en">Username/Login (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="action" unique="0" required="0">
<getopt mixed="-o" />
<content type="string" default="reboot"/>
<shortdesc lang="en">Operation to perform. Valid operations: on, off, reboot, status, list, diag, monitor or metadata</shortdesc>
</parameter>
<parameter name="timeout" unique="0" required="0">
<getopt mixed="-t" />
<content type="string" />
<shortdesc lang="en">Timeout (sec) for IPMI operation</shortdesc>
</parameter>
<parameter name="cipher" unique="0" required="0">
<getopt mixed="-C" />
<content type="string" />
<shortdesc lang="en">Ciphersuite to use (same as ipmitool -C parameter)</shortdesc>
</parameter>
<parameter name="method" unique="0" required="0">
<getopt mixed="-M" />
<content type="string" default="onoff"/>
<shortdesc lang="en">Method to fence (onoff or cycle)</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="-T" />
<content type="string" default="2"/>
<shortdesc lang="en">Wait X seconds after on/off operation</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="-f" />
<content type="string" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="privlvl" unique="0" required="0">
<getopt mixed="-L" />
<content type="string" />
<shortdesc lang="en">Privilege level on IPMI device</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" />
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="diag" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,153 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_intelmodular" shortdesc="Fence agent for Intel Modular" >
<longdesc>fence_intelmodular is an I/O Fencing agent which can be used with Intel Modular device (tested on Intel MFSYS25, should work with MFSYS35 as well).
.P
Note: Since firmware update version 2.7, SNMP v2 write support is removed, and replaced by SNMP v3 support. So agent now has default SNMP version 3. If you are using older firmware, please supply -d for command line and snmp_version option for your cluster.conf.</longdesc>
<vendor-url>http://www.intel.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="snmp_version" unique="0" required="0">
<getopt mixed="-d, --snmp-version=[version]" />
<content type="string" />
<shortdesc lang="en">Specifies SNMP version to use (1,2c,3)</shortdesc>
</parameter>
<parameter name="community" unique="0" required="0">
<getopt mixed="-c, --community=[community]" />
<content type="string" />
<shortdesc lang="en">Set the community string</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="161" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="snmp_auth_prot" unique="0" required="0">
<getopt mixed="-b, --snmp-auth-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set authentication protocol (MD5|SHA)</shortdesc>
</parameter>
<parameter name="snmp_sec_level" unique="0" required="0">
<getopt mixed="-E, --snmp-sec-level=[level]" />
<content type="string" />
<shortdesc lang="en">Set security level (noAuthNoPriv|authNoPriv|authPriv)</shortdesc>
</parameter>
<parameter name="snmp_priv_prot" unique="0" required="0">
<getopt mixed="-B, --snmp-priv-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol (DES|AES)</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd" unique="0" required="0">
<getopt mixed="-P, --snmp-priv-passwd=[pass]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol password</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd_script" unique="0" required="0">
<getopt mixed="-R, --snmp-priv-passwd-script" />
<content type="string" />
<shortdesc lang="en">Script to run to retrieve privacy password</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,151 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ipdu" shortdesc="Fence agent for iPDU over SNMP" >
<longdesc>fence_ipdu is an I/O Fencing agent which can be used with the IBM iPDU network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v3 with all combinations of authenticity/privacy settings.</longdesc>
<vendor-url>http://www.ibm.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="snmp_version" unique="0" required="0">
<getopt mixed="-d, --snmp-version=[version]" />
<content type="string" default="3" />
<shortdesc lang="en">Specifies SNMP version to use (1,2c,3)</shortdesc>
</parameter>
<parameter name="community" unique="0" required="0">
<getopt mixed="-c, --community=[community]" />
<content type="string" default="private" />
<shortdesc lang="en">Set the community string</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="161" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="snmp_auth_prot" unique="0" required="0">
<getopt mixed="-b, --snmp-auth-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set authentication protocol (MD5|SHA)</shortdesc>
</parameter>
<parameter name="snmp_sec_level" unique="0" required="0">
<getopt mixed="-E, --snmp-sec-level=[level]" />
<content type="string" />
<shortdesc lang="en">Set security level (noAuthNoPriv|authNoPriv|authPriv)</shortdesc>
</parameter>
<parameter name="snmp_priv_prot" unique="0" required="0">
<getopt mixed="-B, --snmp-priv-prot=[prot]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol (DES|AES)</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd" unique="0" required="0">
<getopt mixed="-P, --snmp-priv-passwd=[pass]" />
<content type="string" />
<shortdesc lang="en">Set privacy protocol password</shortdesc>
</parameter>
<parameter name="snmp_priv_passwd_script" unique="0" required="0">
<getopt mixed="-R, --snmp-priv-passwd-script" />
<content type="string" />
<shortdesc lang="en">Script to run to retrieve privacy password</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,99 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ipmilan" shortdesc="Fence agent for IPMI over LAN">
<symlink name="fence_ilo3" shortdesc="Fence agent for HP iLO3"/>
<symlink name="fence_ilo4" shortdesc="Fence agent for HP iLO4"/>
<symlink name="fence_idrac" shortdesc="Fence agent for Dell iDRAC"/>
<symlink name="fence_imm" shortdesc="Fence agent for IBM Integrated Management Module"/>
<longdesc>
fence_ipmilan is an I/O Fencing agent which can be used with machines controlled by IPMI. This agent calls support software using ipmitool (http://ipmitool.sf.net/).
To use fence_ipmilan with HP iLO 3 or HP iLO 4 you have to enable lanplus option (lanplus / -P) and increase wait after operation to 4 seconds (power_wait=4 / -T 4)</longdesc>
<vendor-url>http://www.intel.com</vendor-url>
<parameters>
<parameter name="auth" unique="0" required="0">
<getopt mixed="-A" />
<content type="string" />
<shortdesc lang="en">IPMI Lan Auth type (md5, password, or none)</shortdesc>
</parameter>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a" />
<content type="string" />
<shortdesc lang="en">IPMI Lan IP to talk to</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u" />
<content type="string" />
<shortdesc lang="en">IPMI Lan port to talk to</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p" />
<content type="string" />
<shortdesc lang="en">Password (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password (if required)</shortdesc>
</parameter>
<parameter name="lanplus" unique="0" required="0">
<getopt mixed="-P" />
<content type="boolean" />
<shortdesc lang="en">Use Lanplus to improve security of connection</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l" />
<content type="string" />
<shortdesc lang="en">Username/Login (if required) to control power on IPMI device</shortdesc>
</parameter>
<parameter name="action" unique="0" required="0">
<getopt mixed="-o" />
<content type="string" default="reboot"/>
<shortdesc lang="en">Operation to perform. Valid operations: on, off, reboot, status, list, diag, monitor or metadata</shortdesc>
</parameter>
<parameter name="timeout" unique="0" required="0">
<getopt mixed="-t" />
<content type="string" />
<shortdesc lang="en">Timeout (sec) for IPMI operation</shortdesc>
</parameter>
<parameter name="cipher" unique="0" required="0">
<getopt mixed="-C" />
<content type="string" />
<shortdesc lang="en">Ciphersuite to use (same as ipmitool -C parameter)</shortdesc>
</parameter>
<parameter name="method" unique="0" required="0">
<getopt mixed="-M" />
<content type="string" default="onoff"/>
<shortdesc lang="en">Method to fence (onoff or cycle)</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="-T" />
<content type="string" default="2"/>
<shortdesc lang="en">Wait X seconds after on/off operation</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="-f" />
<content type="string" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="privlvl" unique="0" required="0">
<getopt mixed="-L" />
<content type="string" />
<shortdesc lang="en">Privilege level on IPMI device</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" />
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="diag" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,61 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_ironic" shortdesc="Fence agent for Ironic nodes">
<longdesc>fence_ironic is an I/O Fencing agent which can be used with Ironic-managed nodes.</longdesc>
<parameters>
<parameter name="debug">
<getopt mixed="-d" />
<content type="boolean" />
<shortdesc lang="en">Specify (stdin) or increment (command line) debug level</shortdesc>
</parameter>
<parameter name="auth_url">
<content type="string" />
<shortdesc lang="en">Keystone URL to authenticate against</shortdesc>
</parameter>
<parameter name="login">
<content type="string" />
<shortdesc lang="en">Keystone username to use for authentication</shortdesc>
</parameter>
<parameter name="password">
<content type="string" />
<shortdesc lang="en">Keystone password to use for authentication</shortdesc>
</parameter>
<parameter name="tenant_name">
<content type="string" />
<shortdesc lang="en">Keystone tenant name to use for authentication</shortdesc>
</parameter>
<parameter name="pcmk_host_map">
<content type="string" />
<shortdesc lang="en">A mapping of UUIDs to node names</shortdesc>
</parameter>
<parameter name="action">
<getopt mixed="-o" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing action (null, off, on, [reboot], status, list, monitor, metadata)</shortdesc>
</parameter>
<parameter name="timeout">
<getopt mixed="-t" />
<content type="string" default="30" />
<shortdesc lang="en">Fencing timeout (in seconds; default=30)</shortdesc>
</parameter>
<parameter name="delay">
<getopt mixed="-w" />
<content type="string" default="0" />
<shortdesc lang="en">Fencing delay (in seconds; default=0)</shortdesc>
</parameter>
<parameter name="domain">
<!-- DEPRECATED; FOR COMPATIBILITY ONLY -->
<content type="string" />
<shortdesc lang="en">Virtual Machine (domain name) to fence (deprecated; use port)</shortdesc>
</parameter>
</parameters>
<actions>
<action name="null" />
<action name="on" />
<action name="off" />
<action name="reboot" />
<action name="metadata" />
<action name="status" />
<action name="monitor" />
<action name="list" />
</actions>
</resource-agent>

View File

@ -1,51 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_kdump" shortdesc="Fence agent for use with kdump">
<longdesc>The fence_kdump agent is intended to be used with with kdump service.</longdesc>
<vendor-url>http://www.kernel.org/pub/linux/utils/kernel/kexec/</vendor-url>
<parameters>
<parameter name="nodename" unique="0" required="0">
<getopt mixed="-n, --nodename" />
<content type="string" />
<shortdesc lang="en">Name or IP address of node to be fenced</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-p, --ipport" />
<content type="string" default="7410" />
<shortdesc lang="en">Port number</shortdesc>
</parameter>
<parameter name="family" unique="0" required="0">
<getopt mixed="-f, --family" />
<content type="string" default="auto" />
<shortdesc lang="en">Network family</shortdesc>
</parameter>
<parameter name="action" unique="0" required="0">
<getopt mixed="-o, --action" />
<content type="string" default="off" />
<shortdesc lang="en">Fencing action</shortdesc>
</parameter>
<parameter name="timeout" unique="0" required="0">
<getopt mixed="-t, --timeout" />
<content type="string" default="60" />
<shortdesc lang="en">Timeout in seconds</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Print verbose output</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Print version</shortdesc>
</parameter>
<parameter name="usage" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Print usage</shortdesc>
</parameter>
</parameters>
<actions>
<action name="off" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,134 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_kubevirt" shortdesc="Fence agent for KubeVirt" >
<longdesc>fence_kubevirt is an I/O Fencing agent for KubeVirt.</longdesc>
<vendor-url>https://kubevirt.io/</vendor-url>
<parameters>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing action</shortdesc>
</parameter>
<parameter name="plug" unique="0" required="1" obsoletes="port">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number on device, UUID or identification of machine</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1" deprecated="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number on device, UUID or identification of machine</shortdesc>
</parameter>
<parameter name="ssl_insecure" unique="0" required="0">
<getopt mixed="--ssl-insecure" />
<content type="boolean" />
<shortdesc lang="en">Use SSL connection without verifying certificate</shortdesc>
</parameter>
<parameter name="namespace" unique="0" required="1">
<getopt mixed="--namespace=[namespace]" />
<content type="string" />
<shortdesc lang="en">Namespace of the KubeVirt machine.</shortdesc>
</parameter>
<parameter name="kubeconfig" unique="0" required="0">
<getopt mixed="--kubeconfig=[kubeconfig]" />
<content type="string" />
<shortdesc lang="en">Kubeconfig file path</shortdesc>
</parameter>
<parameter name="apiversion" unique="0" required="0">
<getopt mixed="--apiversion=[apiversion]" />
<content type="string" default="kubevirt.io/v1" />
<shortdesc lang="en">Version of the KubeVirt API.</shortdesc>
</parameter>
<parameter name="quiet" unique="0" required="0">
<getopt mixed="-q, --quiet" />
<content type="boolean" />
<shortdesc lang="en">Disable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode. Multiple -v flags can be stacked on the command line (e.g., -vvv) to increase verbosity.</shortdesc>
</parameter>
<parameter name="verbose_level" unique="0" required="0">
<getopt mixed="--verbose-level" />
<content type="integer" />
<shortdesc lang="en">Level of debugging detail in output. Defaults to the number of --verbose flags specified on the command line, or to 1 if verbose=1 in a stonith device configuration (i.e., on stdin).</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0" deprecated="1">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="debug_file" unique="0" required="0" obsoletes="debug">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by 'list' operation</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="disable_timeout" unique="0" required="0">
<getopt mixed="--disable-timeout=[true/false]" />
<content type="string" />
<shortdesc lang="en">Disable timeout (true/false) (default: true when run from Pacemaker 2.0+)</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="second" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="second" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="second" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="stonith_status_sleep" unique="0" required="0">
<getopt mixed="--stonith-status-sleep=[seconds]" />
<content type="second" default="1" />
<shortdesc lang="en">Sleep X seconds between status calls during a STONITH action</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="integer" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="list-status" />
<action name="monitor" />
<action name="metadata" />
<action name="manpage" />
<action name="validate-all" />
</actions>
</resource-agent>

View File

@ -1,182 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_redfish" shortdesc="I/O Fencing agent for Redfish" >
<longdesc>fence_redfish is an I/O Fencing agent which can be used with Out-of-Band controllers that support Redfish APIs. These controllers provide remote access to control power on a server.</longdesc>
<vendor-url>http://www.dmtf.org</vendor-url>
<parameters>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing action</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="ip" unique="0" required="0" obsoletes="ipaddr">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP address or hostname of fencing device</shortdesc>
</parameter>
<parameter name="ipaddr" unique="0" required="0" deprecated="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP address or hostname of fencing device</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="integer" default="443" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1" deprecated="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0" deprecated="1">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0" deprecated="1">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to run to retrieve password</shortdesc>
</parameter>
<parameter name="password" unique="0" required="0" obsoletes="passwd">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="password_script" unique="0" required="0" obsoletes="passwd_script">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to run to retrieve password</shortdesc>
</parameter>
<parameter name="plug" unique="0" required="0" obsoletes="port">
<getopt mixed="-n, --plug=[ip]" />
<content type="string" />
<shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc>
</parameter>
<parameter name="port" unique="0" required="0" deprecated="1">
<getopt mixed="-n, --plug=[ip]" />
<content type="string" />
<shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc>
</parameter>
<parameter name="redfish_uri" unique="0" required="0" obsoletes="redfish-uri">
<getopt mixed="--redfish-uri=[uri]" />
<content type="string" default="/redfish/v1" />
<shortdesc lang="en">Base or starting Redfish URI</shortdesc>
</parameter>
<parameter name="ssl" unique="0" required="0">
<getopt mixed="-z, --ssl" />
<content type="boolean" default="1" />
<shortdesc lang="en">Use SSL connection with verifying certificate</shortdesc>
</parameter>
<parameter name="ssl_insecure" unique="0" required="0">
<getopt mixed="--ssl-insecure" />
<content type="boolean" />
<shortdesc lang="en">Use SSL connection without verifying certificate</shortdesc>
</parameter>
<parameter name="ssl_secure" unique="0" required="0">
<getopt mixed="--ssl-secure" />
<content type="boolean" />
<shortdesc lang="en">Use SSL connection with verifying certificate</shortdesc>
</parameter>
<parameter name="systems_uri" unique="0" required="0" obsoletes="systems-uri">
<getopt mixed="--systems-uri=[uri]" />
<content type="string" />
<shortdesc lang="en">Redfish Systems resource URI, i.e. /redfish/v1/Systems/System.Embedded.1</shortdesc>
</parameter>
<parameter name="username" unique="0" required="1" obsoletes="login">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login name</shortdesc>
</parameter>
<parameter name="quiet" unique="0" required="0">
<getopt mixed="-q, --quiet" />
<content type="boolean" />
<shortdesc lang="en">Disable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0" deprecated="1">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="debug_file" unique="0" required="0" obsoletes="debug">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="second" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="port_as_ip" unique="0" required="0">
<getopt mixed="--port-as-ip" />
<content type="boolean" />
<shortdesc lang="en">Make "port/plug" to be an alias to IP address</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="second" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="second" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="second" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="integer" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
<parameter name="gnutlscli_path" unique="0" required="0">
<getopt mixed="--gnutlscli-path=[path]" />
<content type="string" default="/usr/bin/gnutls-cli" />
<shortdesc lang="en">Path to gnutls-cli binary</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="monitor" />
<action name="metadata" />
<action name="manpage" />
<action name="validate-all" />
</actions>
</resource-agent>

View File

@ -1,142 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_rhevm" shortdesc="Fence agent for RHEV-M REST API" >
<longdesc>fence_rhevm is an I/O Fencing agent which can be used with RHEV-M REST API to fence virtual machines.</longdesc>
<vendor-url>http://www.redhat.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="ssl" unique="0" required="0">
<getopt mixed="-z, --ssl" />
<content type="boolean" />
<shortdesc lang="en">SSL connection</shortdesc>
</parameter>
<parameter name="notls" unique="0" required="0">
<getopt mixed="-t, --notls" />
<content type="boolean" />
<shortdesc lang="en">Disable TLS negotiation</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 80, 443 if --ssl" />
<content type="string" default="80" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="ssl_secure" unique="0" required="0">
<getopt mixed="--ssl-secure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection with verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="ssl_insecure" unique="0" required="0">
<getopt mixed="--ssl-insecure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection without verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="disable_http_filter" unique="0" required="0">
<getopt mixed="--disable-http-filter" />
<content type="boolean" />
<shortdesc lang="en">Set HTTP Filter header to false</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="1" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,126 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_rsb" shortdesc="I/O Fencing agent for Fujitsu-Siemens RSB" >
<longdesc>fence_rsb is an I/O Fencing agent which can be used with the Fujitsu-Siemens RSB management interface. It logs into device via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.</longdesc>
<vendor-url>http://www.fujitsu.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="secure" unique="0" required="0">
<getopt mixed="-x, --ssh" />
<content type="boolean" />
<shortdesc lang="en">SSH connection</shortdesc>
</parameter>
<parameter name="cmd_prompt" unique="0" required="0">
<getopt mixed="-c, --command-prompt=[prompt]" />
<content type="string" default="[&apos;to quit:&apos;]" />
<shortdesc lang="en">Force Python regex for command prompt</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port]" />
<content type="string" default="3172" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="identity_file" unique="0" required="0">
<getopt mixed="-k, --identity-file=[filename]" />
<content type="string" />
<shortdesc lang="en">Identity file for ssh</shortdesc>
</parameter>
<parameter name="ssh_options" unique="0" required="0">
<getopt mixed="--ssh-options=[options]" />
<content type="string" />
<shortdesc lang="en">SSH options to use</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,48 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_scsi" shortdesc="fence agent for SCSI-3 persistent reservations">
<longdesc>fence_scsi</longdesc>
<vendor-url>http://www.t10.org</vendor-url>
<parameters>
<parameter name="aptpl" unique="0" required="0">
<getopt mixed="-a"/>
<content type="boolean"/>
<shortdesc lang="en">Use APTPL flag for registrations</shortdesc>
</parameter>
<parameter name="devices" unique="0" required="0">
<getopt mixed="-d"/>
<content type="string"/>
<shortdesc lang="en">List of devices to be used for fencing action</shortdesc>
</parameter>
<parameter name="logfile" unique="0" required="0">
<getopt mixed="-f"/>
<content type="string"/>
<shortdesc lang="en">File to write error/debug messages</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="-H"/>
<content type="string"/>
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="key" unique="0" required="0">
<getopt mixed="-k"/>
<content type="string"/>
<shortdesc lang="en">Key value to be used for fencing action</shortdesc>
</parameter>
<parameter name="action" unique="0" required="0">
<getopt mixed="-o"/>
<content type="string" default="off"/>
<shortdesc lang="en">Fencing action</shortdesc>
</parameter>
<parameter name="nodename" unique="0" required="0">
<getopt mixed="-n"/>
<content type="string"/>
<shortdesc lang="en">Name of node</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" on_target="1" automatic="1"/>
<action name="off"/>
<action name="status"/>
<action name="metadata"/>
</actions>
</resource-agent>

View File

@ -1,66 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_virt" shortdesc="Fence agent for virtual machines">
<longdesc>fence_virt is an I/O Fencing agent which can be used withvirtual machines.</longdesc>
<parameters>
<parameter name="debug">
<getopt mixed="-d" />
<content type="boolean" />
<shortdesc lang="en">Specify (stdin) or increment (command line) debug level</shortdesc>
</parameter>
<parameter name="serial_device">
<getopt mixed="-D" />
<content type="string" />
<shortdesc lang="en">Serial device (default=/dev/ttyS1)</shortdesc>
</parameter>
<parameter name="serial_params">
<getopt mixed="-P" />
<content type="string" default="115200,8N1" />
<shortdesc lang="en">Serial Parameters (default=115200,8N1)</shortdesc>
</parameter>
<parameter name="channel_address">
<getopt mixed="-A" />
<content type="string" default="10.0.2.179" />
<shortdesc lang="en">VM Channel IP address (default=10.0.2.179)</shortdesc>
</parameter>
<parameter name="ipport">
<getopt mixed="-p" />
<content type="string" default="1229" />
<shortdesc lang="en">Multicast or VMChannel IP port (default=1229)</shortdesc>
</parameter>
<parameter name="port">
<getopt mixed="-H" />
<content type="string" />
<shortdesc lang="en">Virtual Machine (domain name) to fence</shortdesc>
</parameter>
<parameter name="action">
<getopt mixed="-o" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing action (null, off, on, [reboot], status, list, monitor, metadata)</shortdesc>
</parameter>
<parameter name="timeout">
<getopt mixed="-t" />
<content type="string" default="30" />
<shortdesc lang="en">Fencing timeout (in seconds; default=30)</shortdesc>
</parameter>
<parameter name="delay">
<getopt mixed="-w" />
<content type="string" default="0" />
<shortdesc lang="en">Fencing delay (in seconds; default=0)</shortdesc>
</parameter>
<parameter name="domain">
<!-- DEPRECATED; FOR COMPATIBILITY ONLY -->
<content type="string" />
<shortdesc lang="en">Virtual Machine (domain name) to fence (deprecated; use port)</shortdesc>
</parameter>
</parameters>
<actions>
<action name="null" />
<action name="on" />
<action name="off" />
<action name="reboot" />
<action name="metadata" />
<action name="status" />
<action name="monitor" />
<action name="list" />
</actions>
</resource-agent>

View File

@ -1,139 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_vmware_soap" shortdesc="Fence agent for VMWare over SOAP API" >
<longdesc>fence_vmware_soap is an I/O Fencing agent which can be used with the virtual machines managed by VMWare products that have SOAP API v4.1+.
.P
Name of virtual machine (-n / port) has to be used in inventory path format (e.g. /datacenter/vm/Discovered virtual machine/myMachine). In the cases when name of yours VM is unique you can use it instead. Alternatively you can always use UUID to access virtual machine.</longdesc>
<vendor-url>http://www.vmware.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="1">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="ssl" unique="0" required="0">
<getopt mixed="-z, --ssl" />
<content type="boolean" />
<shortdesc lang="en">SSL connection</shortdesc>
</parameter>
<parameter name="notls" unique="0" required="0">
<getopt mixed="-t, --notls" />
<content type="boolean" />
<shortdesc lang="en">Disable TLS negotiation</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 80, 443 if --ssl" />
<content type="string" default="80" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="ssl_secure" unique="0" required="0">
<getopt mixed="--ssl-secure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection with verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="ssl_insecure" unique="0" required="0">
<getopt mixed="--ssl-insecure" />
<content type="boolean" />
<shortdesc lang="en">SSL connection without verifying fence device's certificate</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,40 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_watchdog" shortdesc="Dummy watchdog fence agent">
<longdesc>fence_watchdog just provides
meta-data - actual fencing is done by the pacemaker internal watchdog agent.</longdesc>
<parameters>
<parameter name="action" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="metadata" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="nodename" required="0">
<getopt mixed="-N, --nodename" />
<content type="string" />
<shortdesc lang="en">Ignored</shortdesc>
</parameter>
<parameter name="plug" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Ignored</shortdesc>
</parameter>
<parameter name="version" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" />
<action name="off" />
<action name="reboot" />
<action name="monitor" />
<action name="list" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,137 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_wti" shortdesc="Fence agent for WTI" >
<longdesc>fence_wti is an I/O Fencing agent which can be used with the WTI Network Power Switch (NPS). It logs into an NPS via telnet or ssh and boots a specified plug. Lengthy telnet connections to the NPS should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.</longdesc>
<vendor-url>http://www.wti.com</vendor-url>
<parameters>
<parameter name="ipaddr" unique="0" required="1">
<getopt mixed="-a, --ip=[ip]" />
<content type="string" />
<shortdesc lang="en">IP Address or Hostname</shortdesc>
</parameter>
<parameter name="login" unique="0" required="0">
<getopt mixed="-l, --username=[name]" />
<content type="string" />
<shortdesc lang="en">Login Name</shortdesc>
</parameter>
<parameter name="passwd" unique="0" required="0">
<getopt mixed="-p, --password=[password]" />
<content type="string" />
<shortdesc lang="en">Login password or passphrase</shortdesc>
</parameter>
<parameter name="cmd_prompt" unique="0" required="0">
<getopt mixed="-c, --command-prompt=[prompt]" />
<content type="string" default="[&apos;RSM&gt;&apos;, &apos;MPC&gt;&apos;, &apos;IPS&gt;&apos;, &apos;TPS&gt;&apos;, &apos;NBB&gt;&apos;, &apos;NPS&gt;&apos;, &apos;VMR&gt;&apos;]" />
<shortdesc lang="en">Force Python regex for command prompt</shortdesc>
</parameter>
<parameter name="secure" unique="0" required="0">
<getopt mixed="-x, --ssh" />
<content type="boolean" />
<shortdesc lang="en">SSH connection</shortdesc>
</parameter>
<parameter name="port" unique="0" required="1">
<getopt mixed="-n, --plug=[id]" />
<content type="string" />
<shortdesc lang="en">Physical plug number, name of virtual machine or UUID</shortdesc>
</parameter>
<parameter name="ipport" unique="0" required="0">
<getopt mixed="-u, --ipport=[port] TCP/UDP port to use
(default 23, 22 if --ssh" />
<content type="string" default="23" />
<shortdesc lang="en">TCP/UDP port to use for connection with device</shortdesc>
</parameter>
<parameter name="inet4_only" unique="0" required="0">
<getopt mixed="-4, --inet4-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv4 addresses only</shortdesc>
</parameter>
<parameter name="inet6_only" unique="0" required="0">
<getopt mixed="-6, --inet6-only" />
<content type="boolean" />
<shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc>
</parameter>
<parameter name="passwd_script" unique="0" required="0">
<getopt mixed="-S, --password-script=[script]" />
<content type="string" />
<shortdesc lang="en">Script to retrieve password</shortdesc>
</parameter>
<parameter name="identity_file" unique="0" required="0">
<getopt mixed="-k, --identity-file=[filename]" />
<content type="string" />
<shortdesc lang="en">Identity file for ssh</shortdesc>
</parameter>
<parameter name="ssh_options" unique="0" required="0">
<getopt mixed="--ssh-options=[options]" />
<content type="string" />
<shortdesc lang="en">SSH options to use</shortdesc>
</parameter>
<parameter name="action" unique="0" required="1">
<getopt mixed="-o, --action=[action]" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing Action</shortdesc>
</parameter>
<parameter name="verbose" unique="0" required="0">
<getopt mixed="-v, --verbose" />
<content type="boolean" />
<shortdesc lang="en">Verbose mode</shortdesc>
</parameter>
<parameter name="debug" unique="0" required="0">
<getopt mixed="-D, --debug-file=[debugfile]" />
<content type="string" />
<shortdesc lang="en">Write debug information to given file</shortdesc>
</parameter>
<parameter name="version" unique="0" required="0">
<getopt mixed="-V, --version" />
<content type="boolean" />
<shortdesc lang="en">Display version information and exit</shortdesc>
</parameter>
<parameter name="help" unique="0" required="0">
<getopt mixed="-h, --help" />
<content type="boolean" />
<shortdesc lang="en">Display help and exit</shortdesc>
</parameter>
<parameter name="separator" unique="0" required="0">
<getopt mixed="-C, --separator=[char]" />
<content type="string" default="," />
<shortdesc lang="en">Separator for CSV created by operation list</shortdesc>
</parameter>
<parameter name="power_timeout" unique="0" required="0">
<getopt mixed="--power-timeout=[seconds]" />
<content type="string" default="20" />
<shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc>
</parameter>
<parameter name="shell_timeout" unique="0" required="0">
<getopt mixed="--shell-timeout=[seconds]" />
<content type="string" default="3" />
<shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc>
</parameter>
<parameter name="login_timeout" unique="0" required="0">
<getopt mixed="--login-timeout=[seconds]" />
<content type="string" default="5" />
<shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc>
</parameter>
<parameter name="power_wait" unique="0" required="0">
<getopt mixed="--power-wait=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc>
</parameter>
<parameter name="delay" unique="0" required="0">
<getopt mixed="--delay=[seconds]" />
<content type="string" default="0" />
<shortdesc lang="en">Wait X seconds before fencing is started</shortdesc>
</parameter>
<parameter name="retry_on" unique="0" required="0">
<getopt mixed="--retry-on=[attempts]" />
<content type="string" default="1" />
<shortdesc lang="en">Count of attempts to retry power on</shortdesc>
</parameter>
</parameters>
<actions>
<action name="on" automatic="0"/>
<action name="off" />
<action name="reboot" />
<action name="status" />
<action name="list" />
<action name="monitor" />
<action name="metadata" />
</actions>
</resource-agent>

View File

@ -1,86 +0,0 @@
<?xml version="1.0" ?>
<resource-agent name="fence_xvm" shortdesc="Fence agent for virtual machines">
<longdesc>fence_xvm is an I/O Fencing agent which can be used withvirtual machines.</longdesc>
<parameters>
<parameter name="debug">
<getopt mixed="-d" />
<content type="boolean" />
<shortdesc lang="en">Specify (stdin) or increment (command line) debug level</shortdesc>
</parameter>
<parameter name="ip_family">
<getopt mixed="-i" />
<content type="string" default="auto" />
<shortdesc lang="en">IP Family ([auto], ipv4, ipv6)</shortdesc>
</parameter>
<parameter name="multicast_address">
<getopt mixed="-a" />
<content type="string" />
<shortdesc lang="en">Multicast address (default=225.0.0.12 / ff05::3:1)</shortdesc>
</parameter>
<parameter name="ipport">
<getopt mixed="-p" />
<content type="string" default="1229" />
<shortdesc lang="en">TCP, Multicast, or VMChannel IP port (default=1229)</shortdesc>
</parameter>
<parameter name="retrans">
<getopt mixed="-r" />
<content type="string" default="20" />
<shortdesc lang="en">Multicast retransmit time (in 1/10sec; default=20)</shortdesc>
</parameter>
<parameter name="auth">
<getopt mixed="-C" />
<content type="string" default="sha256" />
<shortdesc lang="en">Authentication (none, sha1, [sha256], sha512)</shortdesc>
</parameter>
<parameter name="hash">
<getopt mixed="-c" />
<content type="string" default="sha256" />
<shortdesc lang="en">Packet hash strength (none, sha1, [sha256], sha512)</shortdesc>
</parameter>
<parameter name="key_file">
<getopt mixed="-k" />
<content type="string" default="/etc/cluster/fence_xvm.key" />
<shortdesc lang="en">Shared key file (default=/etc/cluster/fence_xvm.key)</shortdesc>
</parameter>
<parameter name="port">
<getopt mixed="-H" />
<content type="string" />
<shortdesc lang="en">Virtual Machine (domain name) to fence</shortdesc>
</parameter>
<parameter name="use_uuid">
<getopt mixed="-u" />
<content type="string" default="0" />
<shortdesc lang="en">Treat [domain] as UUID instead of domain name. This is provided for compatibility with older fence_xvmd installations.</shortdesc>
</parameter>
<parameter name="action">
<getopt mixed="-o" />
<content type="string" default="reboot" />
<shortdesc lang="en">Fencing action (null, off, on, [reboot], status, list, monitor, metadata)</shortdesc>
</parameter>
<parameter name="timeout">
<getopt mixed="-t" />
<content type="string" default="30" />
<shortdesc lang="en">Fencing timeout (in seconds; default=30)</shortdesc>
</parameter>
<parameter name="delay">
<getopt mixed="-w" />
<content type="string" default="0" />
<shortdesc lang="en">Fencing delay (in seconds; default=0)</shortdesc>
</parameter>
<parameter name="domain">
<!-- DEPRECATED; FOR COMPATIBILITY ONLY -->
<content type="string" />
<shortdesc lang="en">Virtual Machine (domain name) to fence (deprecated; use port)</shortdesc>
</parameter>
</parameters>
<actions>
<action name="null" />
<action name="on" />
<action name="off" />
<action name="reboot" />
<action name="metadata" />
<action name="status" />
<action name="monitor" />
<action name="list" />
</actions>
</resource-agent>

View File

@ -1,26 +0,0 @@
#!/bin/bash
# This script updates fence agent descriptions (XML files in src_xml
# directory). Running this will install and update fence agent
# packages to the latest version.
set -exuo pipefail
generator_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "$generator_dir/variables.sh"
all_pkgs=''
for cmd_pkg in "${cmd_pkg_map[@]}"; do
pkg=${cmd_pkg#*:}
all_pkgs+="$pkg "
done
sudo yum -y install $all_pkgs
sudo yum -y update $all_pkgs
for cmd_pkg in "${cmd_pkg_map[@]}"; do
cmd=${cmd_pkg%%:*}
$cmd -o metadata > "$generator_dir/src_xml/$cmd.xml"
done

View File

@ -1,47 +0,0 @@
#!/bin/bash
cmd_pkg_map=(
"fence_apc:fence-agents-apc"
"fence_apc_snmp:fence-agents-apc-snmp"
"fence_amt:None"
"fence_bladecenter:fence-agents-bladecenter"
"fence_brocade:fence-agents-brocade"
"fence_cisco_mds:fence-agents-cisco-mds"
"fence_cisco_ucs:fence-agents-cisco-ucs"
"fence_compute:fence-agents-compute"
"fence_crosslink:None"
"fence_drac5:fence-agents-drac5"
"fence_eaton_snmp:fence-agents-eaton-snmp"
"fence_eps:fence-agents-eps"
"fence_hpblade:fence-agents-hpblade"
"fence_ibmblade:fence-agents-ibmblade"
"fence_idrac:fence-agents-ipmilan"
"fence_ifmib:fence-agents-ifmib"
"fence_ilo:fence-agents-ilo2"
"fence_ilo2:fence-agents-ilo2"
"fence_ilo3:fence-agents-ipmilan"
"fence_ilo4:fence-agents-ipmilan"
"fence_ilo_mp:fence-agents-ilo-mp"
"fence_imm:fence-agents-ipmilan"
"fence_intelmodular:fence-agents-intelmodular"
"fence_ipdu:fence-agents-ipdu"
"fence_ipmilan:fence-agents-ipmilan"
"fence_ironic:None"
"fence_kdump:fence-agents-kdump"
"fence_kubevirt:None"
"fence_redfish:fence-agents-redfish"
"fence_rhevm:fence-agents-rhevm"
"fence_rsb:fence-agents-rsb"
"fence_scsi:fence-agents-scsi"
"fence_virt:fence-virt"
"fence_vmware_soap:fence-agents-vmware-soap"
"fence_watchdog:fence-agents-sbd"
"fence_wti:fence-agents-wti"
# These have manual changes and need to be updated manually:
# "fence_xvm:fence-virt"
# re fence_kubevirt:
# change to fence-agents-kubevirt when we have it with
# https://bugzilla.redhat.com/show_bug.cgi?id=1984803
)

View File

@ -1,23 +0,0 @@
# This is a cross-platform list tracking distribution packages needed by tests;
# see http://docs.openstack.org/infra/bindep/ for additional information.
libxml2-devel [test platform:rpm]
libxml2-dev [test platform:dpkg]
libxslt-devel [test platform:rpm]
libxslt1-dev [test platform:dpkg]
ruby-devel [test platform:rpm]
ruby-dev [test platform:dpkg]
zlib1g-dev [test platform:dpkg]
zlib-devel [test platform:rpm]
pacemaker-cli-utils [test platform:dpkg]
pacemaker-cli [test platform:rpm]
pcs [test platform:rpm]
pcs [test platform:dpkg]
fence-agents-redfish [test platform:rpm]
fence-agents-ipmilan [test platform:rpm]
fence-agents-kdump [test platform:rpm]
fence-agents-rhevm [test platform:rpm]
fence-agents [test platform:dpkg]
pacemaker [test platform:rpm]
pacemaker [test platform:dpkg]
puppet [build]

View File

@ -1,6 +0,0 @@
# This is required for the docs build jobs
sphinx>=2.0.0,!=2.1.0 # BSD
openstackdocstheme>=2.2.1 # Apache-2.0
# This is required for the releasenotes build jobs
reno>=3.1.0 # Apache-2.0

View File

@ -1,35 +0,0 @@
class hosts (
$hostname = 'node',
) {
resources { 'host':
purge => true,
}
host { 'localhost' :
ip => '127.0.0.1',
host_aliases => [$hostname],
}
}
class hostname (
$hostname = 'node',
) {
if $::osfamily == 'Debian' {
file { 'hostname' :
ensure => 'present',
path => '/etc/hostname',
content => "${hostname}\n",
}
}
exec { 'set-hostname' :
command => "hostname ${hostname}",
unless => "test `uname -n` = '${hostname}'",
provider => 'shell',
}
}
include hosts
include hostname

View File

@ -1,29 +0,0 @@
class properties {
pacemaker_property { 'stonith-enabled' :
ensure => 'present',
value => false,
}
pacemaker_property { 'no-quorum-policy' :
ensure => 'present',
value => 'ignore',
}
}
include properties
class { 'pacemaker::new' :
cluster_nodes => ['node'],
cluster_password => 'hacluster',
# firewall is not needed on a signle node
firewall_corosync_manage => false,
firewall_pcsd_manage => false,
}
Class['pacemaker::new'] ->
Class['properties']

View File

@ -1,43 +0,0 @@
Pacemaker_resource {
ensure => 'present',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
}
Pacemaker_colocation {
ensure => 'present',
}
pacemaker_resource { 'colocation-test1' :
parameters => {
'fake' => '1',
},
}
pacemaker_resource { 'colocation-test2' :
parameters => {
'fake' => '2',
},
}
pacemaker_colocation { 'colocation-test2_with_and_after_colocation-test1' :
first => 'colocation-test1',
second => 'colocation-test2',
score => '200',
}
pacemaker_resource { 'colocation-test3' :
parameters => {
'fake' => '3',
},
}
pacemaker_colocation { 'colocation-test3_with_and_after_colocation-test1' :
first => 'colocation-test1',
second => 'colocation-test3',
score => '400',
}
Pacemaker_resource<||> ->
Pacemaker_colocation<||>

View File

@ -1,23 +0,0 @@
Pacemaker_resource {
ensure => 'absent',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
}
Pacemaker_colocation {
ensure => 'absent',
}
pacemaker_resource { 'colocation-test1' :}
pacemaker_resource { 'colocation-test2' :}
pacemaker_colocation { 'colocation-test2_with_and_after_colocation-test1' :}
pacemaker_resource { 'colocation-test3' :}
pacemaker_colocation { 'colocation-test3_with_and_after_colocation-test1' :}
Pacemaker_colocation<||> ->
Pacemaker_resource<||>

View File

@ -1,10 +0,0 @@
#!/bin/sh
show() {
puppet resource pacemaker_colocation "${1}"
cibadmin --query --xpath "/cib/configuration/constraints/rsc_colocation[@id='${1}']"
echo '--------------------'
}
show 'colocation-test2_with_and_after_colocation-test1'
show 'colocation-test3_with_and_after_colocation-test1'

View File

@ -1,43 +0,0 @@
Pacemaker_resource {
ensure => 'present',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
}
Pacemaker_colocation {
ensure => 'present',
}
pacemaker_resource { 'colocation-test1' :
parameters => {
'fake' => '1',
},
}
pacemaker_resource { 'colocation-test2' :
parameters => {
'fake' => '2',
},
}
pacemaker_colocation { 'colocation-test2_with_and_after_colocation-test1' :
first => 'colocation-test1',
second => 'colocation-test2',
score => '201',
}
pacemaker_resource { 'colocation-test3' :
parameters => {
'fake' => '3',
},
}
pacemaker_colocation { 'colocation-test3_with_and_after_colocation-test1' :
first => 'colocation-test1',
second => 'colocation-test3',
score => '401',
}
Pacemaker_resource<||> ->
Pacemaker_colocation<||>

View File

@ -1,51 +0,0 @@
Pacemaker_resource {
ensure => 'present',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
}
Pacemaker_location {
ensure => 'present',
}
pacemaker_resource { 'location-test1' :
parameters => {
'fake' => '1',
},
}
$rules = [
{
'score' => '100',
'expressions' => [
{
'attribute' => 'a',
'operation' => 'defined',
},
]
},
{
'score' => '200',
'expressions' => [
{
'attribute' => 'b',
'operation' => 'defined',
},
]
}
]
pacemaker_location { 'location-test1_location_with_rule' :
primitive => 'location-test1',
rules => $rules,
}
pacemaker_location { 'location-test1_location_with_score' :
primitive => 'location-test1',
node => $pacemaker_node_name,
score => '200',
}
Pacemaker_resource<||> ->
Pacemaker_location<||>

View File

@ -1,19 +0,0 @@
Pacemaker_resource {
ensure => 'absent',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
}
Pacemaker_location {
ensure => 'absent',
}
pacemaker_resource { 'location-test1' :}
pacemaker_location { 'location-test1_location_with_rule' :}
pacemaker_location { 'location-test1_location_with_score' :}
Pacemaker_location<||> ->
Pacemaker_resource<||>

View File

@ -1,10 +0,0 @@
#!/bin/sh
show() {
puppet resource pacemaker_location "${1}"
cibadmin --query --xpath "/cib/configuration/constraints/rsc_location[@id='${1}']"
echo '--------------------'
}
show 'location-test1_location_with_rule'
show 'location-test1_location_with_score'

View File

@ -1,51 +0,0 @@
Pacemaker_resource {
ensure => 'present',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
}
Pacemaker_location {
ensure => 'present',
}
pacemaker_resource { 'location-test1' :
parameters => {
'fake' => '1',
},
}
$rules = [
{
'score' => '101',
'expressions' => [
{
'attribute' => 'a',
'operation' => 'defined',
},
]
},
{
'score' => '201',
'expressions' => [
{
'attribute' => 'b',
'operation' => 'defined',
},
]
}
]
pacemaker_location { 'location-test1_location_with_rule' :
primitive => 'location-test1',
rules => $rules,
}
pacemaker_location { 'location-test1_location_with_score' :
primitive => 'location-test1',
node => $pacemaker_node_name,
score => '201',
}
Pacemaker_resource<||> ->
Pacemaker_location<||>

View File

@ -1,4 +0,0 @@
pacemaker_operation_default { 'interval' :
ensure => 'present',
value => '300',
}

View File

@ -1,3 +0,0 @@
pacemaker_operation_default { 'interval' :
ensure => 'absent',
}

View File

@ -1,9 +0,0 @@
#!/bin/sh
show() {
puppet resource pacemaker_operation_default "${1}"
cibadmin --query --xpath "/cib/configuration/op_defaults/meta_attributes/nvpair[@name='${1}']"
echo '--------------------'
}
show 'interval'

View File

@ -1,4 +0,0 @@
pacemaker_operation_default { 'interval' :
ensure => 'present',
value => '301',
}

View File

@ -1,41 +0,0 @@
Pacemaker_resource {
ensure => 'present',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
}
Pacemaker_order {
ensure => 'present',
}
pacemaker_resource { 'order-test1' :
parameters => {
'fake' => '1',
},
}
pacemaker_resource { 'order-test2' :
parameters => {
'fake' => '2',
},
}
pacemaker_order { 'order-test2_after_order-test1_score' :
first => 'order-test1',
second => 'order-test2',
score => '200',
}
# Pacemaker 1.1+
pacemaker_order { 'order-test2_after_order-test1_kind' :
first => 'order-test1',
first_action => 'promote',
second => 'order-test2',
second_action => 'demote',
kind => 'mandatory',
symmetrical => true,
}
Pacemaker_resource<||> ->
Pacemaker_order<||>

View File

@ -1,21 +0,0 @@
Pacemaker_resource {
ensure => 'absent',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
}
Pacemaker_order {
ensure => 'absent',
}
pacemaker_resource { 'order-test1' :}
pacemaker_resource { 'order-test2' :}
pacemaker_order { 'order-test2_after_order-test1_score' :}
pacemaker_order { 'order-test2_after_order-test1_kind' :}
Pacemaker_order<||> ->
Pacemaker_resource<||>

View File

@ -1,10 +0,0 @@
#!/bin/sh
show() {
puppet resource pacemaker_order "${1}"
cibadmin --query --xpath "/cib/configuration/constraints/rsc_order[@id='${1}']"
echo '--------------------'
}
show 'order-test2_after_order-test1_score'
show 'order-test2_after_order-test1_kind'

View File

@ -1,41 +0,0 @@
Pacemaker_resource {
ensure => 'present',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
}
Pacemaker_order {
ensure => 'present',
}
pacemaker_resource { 'order-test1' :
parameters => {
'fake' => '1',
},
}
pacemaker_resource { 'order-test2' :
parameters => {
'fake' => '2',
},
}
pacemaker_order { 'order-test2_after_order-test1_score' :
first => 'order-test1',
second => 'order-test2',
score => '201',
}
# Pacemaker 1.1+
pacemaker_order { 'order-test2_after_order-test1_kind' :
first => 'order-test1',
first_action => 'promote',
second => 'order-test2',
second_action => 'start',
kind => 'serialize',
symmetrical => true,
}
Pacemaker_resource<||> ->
Pacemaker_order<||>

View File

@ -1,9 +0,0 @@
pacemaker_property { 'cluster-delay' :
ensure => 'present',
value => '50',
}
pacemaker_property { 'batch-limit' :
ensure => 'present',
value => '50',
}

View File

@ -1,7 +0,0 @@
pacemaker_property { 'cluster-delay' :
ensure => 'absent',
}
pacemaker_property { 'batch-limit' :
ensure => 'absent',
}

View File

@ -1,10 +0,0 @@
#!/bin/sh
show() {
puppet resource pacemaker_property "${1}"
cibadmin --query --xpath "/cib/configuration/crm_config/cluster_property_set/nvpair[@name='${1}']"
echo '--------------------'
}
show 'cluster-delay'
show 'batch-limit'

View File

@ -1,9 +0,0 @@
pacemaker_property { 'cluster-delay' :
ensure => 'present',
value => '51',
}
pacemaker_property { 'batch-limit' :
ensure => 'present',
value => '51',
}

View File

@ -1,108 +0,0 @@
Pacemaker_resource {
ensure => 'present',
primitive_class => 'ocf',
primitive_provider => 'pacemaker',
primitive_type => 'Dummy',
}
pacemaker_resource { 'test-simple1' :
parameters => {
'fake' => '1',
},
}
pacemaker_resource { 'test-simple2' :
parameters => {
'fake' => '2',
},
}
pacemaker_resource { 'test-simple-params1' :
parameters => {
'fake' => '3',
},
metadata => {
'migration-threshold' => '3',
'failure-timeout' => '120',
},
operations => {
'monitor' => {
'interval' => '20',
'timeout' => '10',
},
'start' => {
'timeout' => '30',
},
'stop' => {
'timeout' => '30',
},
},
}
pacemaker_resource { 'test-simple-params2' :
parameters => {
'fake' => '4',
},
metadata => {
'migration-threshold' => '3',
'failure-timeout' => '120',
},
operations => [
{
'name' => 'monitor',
'interval' => '10',
'timeout' => '10',
},
{
'name' => 'monitor',
'interval' => '60',
'timeout' => '10',
},
{
'name' => 'start',
'timeout' => '30',
},
{
'name' => 'stop',
'timeout' => '30',
},
],
}
pacemaker_resource { 'test-clone' :
complex_type => 'clone',
complex_metadata => {
'interleave' => true,
},
parameters => {
'fake' => '5',
},
}
pacemaker_resource { 'test-master' :
primitive_type => 'Stateful',
complex_type => 'master',
complex_metadata => {
'interleave' => true,
'master-max' => '1',
},
parameters => {
'fake' => '6',
},
}
pacemaker_resource { 'test-clone-change' :
primitive_type => 'Stateful',
complex_type => 'simple',
parameters => {
'fake' => '7',
},
}
pacemaker_resource { 'test-master-change' :
primitive_type => 'Stateful',
complex_type => 'master',
parameters => {
'fake' => '8',
},
}

View File

@ -1,22 +0,0 @@
Pacemaker_resource {
ensure => 'absent',
primitive_class => 'ocf',
primitive_provider => 'pacemaker',
primitive_type => 'Dummy',
}
pacemaker_resource { 'test-simple1' :}
pacemaker_resource { 'test-simple2' :}
pacemaker_resource { 'test-simple-params1' :}
pacemaker_resource { 'test-simple-params2' :}
pacemaker_resource { 'test-clone' :}
pacemaker_resource { 'test-master' :}
pacemaker_resource { 'test-clone-change' :}
pacemaker_resource { 'test-master-change' :}

View File

@ -1,26 +0,0 @@
#!/bin/sh
show() {
puppet resource pacemaker_resource "${1}"
cibadmin --query --xpath "/cib/configuration/resources/primitive[@id='${1}']"
echo '--------------------'
}
show_clone() {
puppet resource pacemaker_resource "${1}"
cibadmin --query --xpath "/cib/configuration/resources/clone[@id='${1}-clone']"
echo '--------------------'
}
show_master() {
puppet resource pacemaker_resource "${1}"
cibadmin --query --xpath "/cib/configuration/resources/master[@id='${1}-master']"
echo '--------------------'
}
show 'test-simple1'
show 'test-simple2'
show 'test-simple-params1'
show 'test-simple-params2'
show_clone 'test-clone'
show_master 'test-master'

View File

@ -1,108 +0,0 @@
Pacemaker_resource {
ensure => 'present',
primitive_class => 'ocf',
primitive_provider => 'pacemaker',
primitive_type => 'Dummy',
}
pacemaker_resource { 'test-simple1' :
parameters => {
'fake' => '2',
},
}
pacemaker_resource { 'test-simple2' :
parameters => {
'fake' => '3',
},
}
pacemaker_resource { 'test-simple-params1' :
parameters => {
'fake' => '4',
},
metadata => {
'migration-threshold' => '4',
'failure-timeout' => '121',
},
operations => {
'monitor' => {
'interval' => '21',
'timeout' => '11',
},
'start' => {
'timeout' => '31',
},
'stop' => {
'timeout' => '31',
},
},
}
pacemaker_resource { 'test-simple-params2' :
parameters => {
'fake' => '5',
},
metadata => {
'migration-threshold' => '4',
'failure-timeout' => '121',
},
operations => [
{
'name' => 'monitor',
'interval' => '11',
'timeout' => '11',
},
{
'name' => 'monitor',
'interval' => '61',
'timeout' => '11',
},
{
'name' => 'start',
'timeout' => '31',
},
{
'name' => 'stop',
'timeout' => '31',
},
],
}
pacemaker_resource { 'test-clone' :
complex_type => 'clone',
complex_metadata => {
'interleave' => true,
},
parameters => {
'fake' => '6',
},
}
pacemaker_resource { 'test-master' :
primitive_type => 'Stateful',
complex_type => 'master',
complex_metadata => {
'interleave' => true,
'master-max' => '1',
},
parameters => {
'fake' => '7',
},
}
pacemaker_resource { 'test-clone-change' :
primitive_type => 'Stateful',
complex_type => 'clone',
parameters => {
'fake' => '8',
},
}
pacemaker_resource { 'test-master-change' :
primitive_type => 'Stateful',
complex_type => 'simple',
parameters => {
'fake' => '9',
},
}

View File

@ -1,4 +0,0 @@
pacemaker_resource_default { 'resource-stickiness' :
ensure => 'present',
value => '100',
}

View File

@ -1,3 +0,0 @@
pacemaker_resource_default { 'resource-stickiness' :
ensure => 'absent',
}

View File

@ -1,9 +0,0 @@
#!/bin/sh
show() {
puppet resource pacemaker_resource_default "${1}"
cibadmin --query --xpath "/cib/configuration/rsc_defaults/meta_attributes/nvpair[@name='${1}']"
echo '--------------------'
}
show 'resource-stickiness'

View File

@ -1,4 +0,0 @@
pacemaker_resource_default { 'resource-stickiness' :
ensure => 'present',
value => '101',
}

View File

@ -1,7 +0,0 @@
pacemaker_resource { 'service-test1' :
ensure => 'absent',
}
pacemaker_resource { 'service-test2' :
ensure => 'absent',
}

View File

@ -1,52 +0,0 @@
# Using the wrapper
# a simple service
service { 'service-test1' :
ensure => 'running',
enable => true,
}
# apply a wrapper
pacemaker::new::wrapper { 'service-test1' :
primitive_class => 'ocf',
primitive_provider => 'pacemaker',
primitive_type => 'Dummy',
parameters => {
'fake' => '1',
},
operations => {
'monitor' => {
'interval' => '10',
'timeout' => '10',
},
},
}
# Without the wrapper
pacemaker_resource { 'service-test2' :
ensure => 'present',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
parameters => {
'fake' => '2',
},
operations => {
'monitor' => {
'interval' => '10',
'timeout' => '10',
},
},
}
service { 'service-test2' :
ensure => 'running',
enable => true,
provider => 'pacemaker_xml',
}
Pacemaker_resource['service-test2'] ->
Service['service-test2']

View File

@ -1,52 +0,0 @@
# Using the wrapper
# a simple service
service { 'service-test1' :
ensure => 'stopped',
enable => true,
}
# apply a wrapper
pacemaker::new::wrapper { 'service-test1' :
primitive_class => 'ocf',
primitive_provider => 'pacemaker',
primitive_type => 'Dummy',
parameters => {
'fake' => '1',
},
operations => {
'monitor' => {
'interval' => '10',
'timeout' => '10',
},
},
}
# Without the wrapper
pacemaker_resource { 'service-test2' :
ensure => 'present',
primitive_class => 'ocf',
primitive_type => 'Dummy',
primitive_provider => 'pacemaker',
parameters => {
'fake' => '2',
},
operations => {
'monitor' => {
'interval' => '10',
'timeout' => '10',
},
},
}
service { 'service-test2' :
ensure => 'stopped',
enable => true,
provider => 'pacemaker_xml',
}
Pacemaker_resource['service-test2'] ->
Service['service-test2']

View File

@ -1,10 +0,0 @@
require 'facter'
# Do not call crm_node -n when running inside a container
if not File.exists?('/.dockerenv') and not File.exists?('/run/.containerenv')
Facter.add('pacemaker_node_name') do
setcode do
Facter::Core::Execution.exec 'crm_node -n 2>/dev/null'
end
end
end

View File

@ -1,31 +0,0 @@
module Pacemaker
# pacemaker options submodule
# takes the options structure from the YAML file
# other options sources can be implemented here
module Options
# the YAML file with pacemaker options
# @return [String]
def self.pacemaker_options_file
File.join File.dirname(__FILE__), 'options.yaml'
end
# pacemaker options structure (class level)
# @return [Hash]
def self.pacemaker_options
return @pacemaker_options if @pacemaker_options
@pacemaker_options = YAML.load_file pacemaker_options_file
end
# pacemaker options structure (instance level)
# @return [Hash]
def pacemaker_options
Pacemaker::Options.pacemaker_options
end
# maximum possible waiting time of retry functions
# @return [Integer]
def max_wait_time
pacemaker_options[:retry_count] * pacemaker_options[:retry_step]
end
end
end

View File

@ -1,106 +0,0 @@
---
# how many times a command should retry if it's failing
:retry_count: 360
# how long to wait between retries (seconds)
:retry_step: 5
# how long to wait for a single command to finish running (seconds)
:retry_timeout: 60
# count false or nil block return values as failures or only exceptions?
:retry_false_is_failure: true
# raise error if no more retries left and command is still failing?
:retry_fail_on_timeout: true
# what cluster properties should be shown on the debug status output
:debug_show_properties:
- symmetric-cluster
- no-quorum-policy
# Show the debug messages for the resource operations status calculation
:debug_show_operations: false
# don't actually do any changes to the system
# only show what command would have been run
:debug_enabled: false
# how do we determine that the service have been started?
# :global - The service is running on any node
# :master - The service is running in the master mode on any node
# :local - The service is running on the local node
:start_mode_master: :master
:start_mode_clone: :global
:start_mode_simple: :global
# what method should be used to stop the service?
# :global - Stop the running service by disabling it
# :local - Stop the locally running service by banning it on this node
# Note: by default restart does not stop services
# if they are not running locally on the node
:stop_mode_master: :local
:stop_mode_clone: :local
:stop_mode_simple: :global
# what service is considered running?
# :global - The service is running on any node
# :local - The service is running on the local node
:status_mode_master: :local
:status_mode_clone: :local
:status_mode_simple: :global
# cleanup the primitive during these actions?
:cleanup_on_start: true
:cleanup_on_stop: true
# set the primitive status to stopped if there are failures
# forcing the primitive to be started again and cleaned up
# on this node
:cleanup_on_status: true
# try to stop and disable the basic service on these provider actions
# the basic service is the service managed by the system
# init scripts or the upstart/systemd units
# in order to run the Pacemaker service the basic service
# should be stopped and disabled first so it will not mess
# with the OCF script
:disable_basic_service_on_status: false
:disable_basic_service_on_start: true
:disable_basic_service_on_stop: false
# don't try to stop basic service for these primitive classes
# because they are based on the native service manager
# and the basic service and the Pacemaker service is the same thing
:native_based_primitive_classes:
- lsb
- systemd
- upstart
# add location constraint to allow the service to run on the current node
# useful for asymmetric cluster mode
:add_location_constraint: true
# restart the service only if it's running on this node
# and skip restart if it's running elsewhere
:restart_only_if_local: true
# cleanup primitive only if it has failures
:cleanup_only_if_failures: true
# use prefetch in the providers
:prefetch: false
# Use additional idempotency checks before cibadmin create and delete actions
# It may be needed if many nodes are running at the same time
:cibadmin_idempotency_checks: true
# Should the constraints auto require their primitives?
# It can cause unwanted dependency cycles.
:autorequire_primitives: false
# meta attributes that are related to the primitive's service status
# and should be excluded from the configuration
:status_meta_attributes:
- target-role
- is-managed

View File

@ -1,40 +0,0 @@
module Pacemaker
# this submodule contains "pcs" based function for cluster property provider
module PcsClusterProperty
# @return [String]
def pcs_cluster_properties_list
pcs 'property', 'list'
rescue Puppet::ExecutionFailure
''
end
# @return [Hash]
def pcs_cluster_properties
pcs_list_to_hash pcs_cluster_properties_list
end
# @return [String,true,false,nil]
def pcs_cluster_property_value(name)
pcs_cluster_properties.fetch name.to_s, nil
end
# @param name [String]
# @param value [String,true,false]
def pcs_cluster_property_set(name, value)
cmd = ['property', 'set', "#{name}=#{value}"]
retry_block { pcs_safe cmd }
end
# @param name [String]
def pcs_cluster_property_delete(name)
cmd = ['property', 'unset', name]
retry_block { pcs_safe cmd }
end
# @param name [String]
# @return [true,false]
def pcs_cluster_property_defined?(name)
pcs_cluster_properties.key? name.to_s
end
end
end

View File

@ -1,48 +0,0 @@
module Pacemaker
# this submodule contains "pcs" based common functions
module PcsCommon
# check if debug is enabled either in the pacemaker options
# or the resource has the 'debug' parameter and it's enabled
# @return [TrueClass,FalseClass]
def debug_mode_enabled?
return true if pacemaker_options[:debug_enabled]
return true if @resource && @resource.parameters.keys.include?(:debug) && @resource[:debug]
false
end
# safe pcs command
# @param args [Array] command arguments
# @return [String,NilClass]
def pcs_safe(*args)
command_line = (['pcs'] + args).join ' '
if debug_mode_enabled?
debug "Exec: #{command_line}"
return
end
begin
pcs *args
rescue StandardError => exception
debug "Command execution have failed: #{command_line}"
raise exception
end
end
# parse a list of "key: value" data to a hash
# @param list [String]
# @return [Hash]
def pcs_list_to_hash(list)
hash = {}
list.split("\n").each do |line|
line_arr = line.split ':'
next unless line_arr.length == 2
name = line_arr[0].chomp.strip
value = line_arr[1].chomp.strip
next if name.empty? || value.empty?
value = false if value == 'false'
value = true if value == 'true'
hash.store name, value
end
hash
end
end
end

View File

@ -1,40 +0,0 @@
module Pacemaker
# this submodule contains "pcs" based function for operation default provider
module PcsOperationDefault
# @return [String]
def pcs_operation_default_list
pcs 'resource', 'op', 'defaults'
rescue Puppet::ExecutionFailure
''
end
# @return [Hash]
def pcs_operation_defaults
pcs_list_to_hash pcs_operation_default_list
end
# @return [String,true,false,nil]
def pcs_operation_default_value(name)
pcs_operation_defaults.fetch name.to_s, nil
end
# @param name [String]
# @param value [String,true,false]
def pcs_operation_default_set(name, value)
cmd = ['resource', 'op', 'defaults', "#{name}=#{value}"]
retry_block { pcs_safe cmd }
end
# @param name [String]
def pcs_operation_default_delete(name)
cmd = ['resource', 'op', 'defaults', "#{name}="]
retry_block { pcs_safe cmd }
end
# @param name [String]
# @return [true,false]
def pcs_operation_default_defined?(name)
pcs_operation_defaults.key? name.to_s
end
end
end

View File

@ -1,64 +0,0 @@
module Pacemaker
# this submodule contains "pcs" based function for cluster property provider
module PcsPcsdAuth
# run the 'pcs cluster auth' command and capture
# the debug output, returned by the pcsd.cli ruby tool
# returns nil if could not get the data
# @param nodes [Array<String>] the list of cluster nodes top auth
# @param username [String]
# @param password [String]
# @param force [String] auth even if already have been auth'ed
# @param local [String] auth only the local node
# @return [String,nil]
def pcs_auth_command(nodes, username, password, force=false, local=false)
command = %w(cluster auth --debug)
command << '--force' if force
command << '--local' if local
command += [ '-u', username ]
command += [ '-p', password ]
command += [nodes]
command.flatten!
begin
output = pcs *command
rescue Puppet::ExecutionFailure => e
output = e.to_s
end
return unless output
inside_debug_block = false
result = []
output.split("\n").each do |line|
inside_debug_block = false if line =~ /--Debug (Output|Stdout) End--/
result << line if inside_debug_block
inside_debug_block = true if line =~ /--Debug (Output|Stdout) Start--/
end
return unless result.any?
result.join("\n")
end
# parse the debug output of the pcs auth command
# to a hash of nodes and their statuses
# returns nil on error
# @param result [String]
# @return [Hash<String => String>,nil]
def pcs_auth_parse(result)
result_structure = begin
JSON.load result
rescue StandardError
nil
end
return unless result_structure.is_a? Hash
responses = result_structure.fetch('data', {}).fetch('auth_responses', {})
status_hash = {}
responses.each do |node, response|
next unless response.is_a? Hash
node_status = response['status']
next unless node_status
status_hash.store node, node_status
end
status_hash
end
end
end

View File

@ -1,40 +0,0 @@
module Pacemaker
# this submodule contains "pcs" based function for resource default provider
module PcsResourceDefault
# @return [String]
def pcs_resource_default_list
pcs 'resource', 'defaults'
rescue Puppet::ExecutionFailure
''
end
# @return [Hash]
def pcs_resource_defaults
pcs_list_to_hash pcs_resource_default_list
end
# @return [String,true,false,nil]
def pcs_resource_default_value(name)
pcs_resource_defaults.fetch name.to_s, nil
end
# @param name [String]
# @param value [String,true,false]
def pcs_resource_default_set(name, value)
cmd = ['resource', 'defaults', "#{name}=#{value}"]
retry_block { pcs_safe cmd }
end
# @param name [String]
def pcs_resource_default_delete(name)
cmd = ['resource', 'defaults', "#{name}="]
retry_block { pcs_safe cmd }
end
# @param name [String]
# @return [true,false]
def pcs_resource_default_defined?(name)
pcs_resource_defaults.key? name.to_s
end
end
end

View File

@ -1,184 +0,0 @@
module Pacemaker
# contains functions that can be included to the pacemaker types
module Type
# output IS and SHOULD values for debugging
# @param is [Object] the current value of the parameter
# @param should [Object] the catalog value of the parameter
# @param tag [String] log tag comment to trace calls
def insync_debug(is, should, tag = nil)
debug "insync?: #{tag}" if tag
debug "IS: #{is.inspect} #{is.class}"
debug "SH: #{should.inspect} #{should.class}"
end
# return inspected data structure, used in should_to_s and is_to_s functions
# @param data [Object]
# @return [String]
def inspect_to_s(data)
data.inspect
end
# convert data structure's keys and values to strings
# @param data [Object]
# @return [Object]
def stringify_data(data)
if data.is_a? Hash
new_data = {}
data.each do |key, value|
new_data.store stringify_data(key), stringify_data(value)
end
data.clear
data.merge! new_data
elsif data.is_a? Array
data.map! do |element|
stringify_data element
end
elsif data.is_a? Set
raise "unexpected Set data: #{data}"
else
data.to_s
end
end
# Maintains an array of operation hashes as if it was a sorted set. These
# are in Array-of-Hash format ({ 'name' => 'monitor', 'interval' => ...}),
# not { 'monitor' => {...} } ones. The unicity is done on the name and
# interval operation keys. The input is expected to have been stringified
# and munged.
#
# Modifies the operations argument and returns it.
#
# We can't use a real Set as it doesn't serialize correctly in Puppet's
# transaction store. This datastructure is always small, so performance
# is irrelevant.
def add_to_operations_array(operations, new_op)
operations.delete_if { |op| op['name'] == new_op['name'] && op['interval'] == new_op['interval'] }
operations << new_op
operations.sort_by! { |op| "#{op['name']} #{op['interval']}" }
end
# Munges the input into an Array of munged operations.
# @param [Hash,Array] operations_input parameter value from catalog
def munge_operations_array(operations_input)
operations_input = stringify_data(operations_input)
operations_input = [operations_input] unless operations_input.is_a? Array
operations = []
operations_input.each do |operation|
# operations were provided as an array of hashes
if operation.is_a? Hash and operation['name']
munge_operation operation
add_to_operations_array(operations, operation)
elsif operation.is_a? Hash
# operations were provided as a hash of hashes
operation.each do |operation_name, operation_data|
raise "invalid operation in a hash of hashes: #{operation_data}" unless operation_data.is_a? Hash
operation = {}
if operation_name.include? ':'
operation_name_array = operation_name.split(':')
operation_name = operation_name_array[0]
if not operation_data['role'] and operation_name_array[1]
operation_data['role'] = operation_name_array[1]
end
end
operation['name'] = operation_name
operation.merge! operation_data
munge_operation operation
add_to_operations_array(operations, operation) if operation.any?
end
else
raise "invalid pacemaker_resource.operations input: #{operations_input}"
end
end
operations
end
# munge a single operations hash
# @param [Hash] operation
def munge_operation(operation)
raise "invalid pacemaker_resource.operations element: #{operation}" unless operation.is_a? Hash
operation['name'] = 'monitor' unless operation['name']
operation['interval'] = '0' unless operation['name'] == 'monitor'
operation['interval'] = '0' unless operation['interval']
operation['role'].capitalize! if operation['role']
operation
end
# compare meta_attribute hashes excluding status meta attributes
# @param is [Hash]
# @param should [Hash]
# @return [TrueClass,FalseClass]
def compare_meta_attributes(is, should)
return unless is.is_a?(Hash) && should.is_a?(Hash)
is_without_state = is.reject do |k, _v|
pacemaker_options[:status_meta_attributes].include? k.to_s
end
should_without_state = should.reject do |k, _v|
pacemaker_options[:status_meta_attributes].include? k.to_s
end
result = is_without_state == should_without_state
debug "compare_meta_attributes: #{result}"
result
end
# sort operations array before insync?
# to make different order and same data arrays equal
# @param is [Array]
# @param should [Array]
# @return [TrueClass,FalseClass]
def compare_operations(is, should)
is = is.first if is.is_a? Array
should = should.first if should.is_a? Array
result = (is == should)
debug "compare_operations: #{result}"
result
end
# remove status related meta attributes
# from the meta attributes hash
# @param attributes_from [Hash]
# @return [Hash]
def munge_meta_attributes(attributes_from)
attributes_to = {}
attributes_from.each do |name, parameters|
next if pacemaker_options[:status_meta_attributes].include? name
attributes_to.store name, parameters
end
attributes_to
end
# normalize a single location rule
# @param rule [Hash] rule structure
# @param rule_number [Integer] rule index number
# @param title [String] constraint name
# @return [Hash] normalized rule structure
def munge_rule(rule, rule_number, title)
rule['id'] = "#{title}-rule-#{rule_number}" unless rule['id']
rule['boolean-op'] = 'or' unless rule['boolean-op']
rule['score'].gsub! 'inf', 'INFINITY' if rule['score']
if rule['expressions']
unless rule['expressions'].is_a? Array
expressions_array = []
expressions_array << rule['expressions']
rule['expressions'] = expressions_array
end
expression_number = 0
rule['expressions'].each do |expression|
unless expression['id']
expression['id'] = "#{title}-rule-#{rule_number}-expression-#{expression_number}"
end
expression_number += 1
end
end
rule
end
# remove "-clone" or "-master" suffix
# and "role" suffix (:Master, :Slave) from a primitive's name
# @param primitive [String]
# @return [String]
def primitive_base_name(primitive)
primitive = primitive.split(':').first
primitive.gsub(/-clone$|-master$/, '')
end
end
end

View File

@ -1,238 +0,0 @@
module Pacemaker
# functions that can wait for something repeatedly
# polling the system status until the condition is met
module Wait
# retry the given command until it runs without errors
# or for RETRY_COUNT times with RETRY_STEP sec step
# print cluster status report on fail
# @param options [Hash]
def retry_block(options = {})
options = pacemaker_options.merge options
options[:retry_count].times do
begin
out = Timeout.timeout(options[:retry_timeout]) { yield }
if options[:retry_false_is_failure]
return out if out
else
return out
end
rescue => e
debug "Execution failure: #{e.message}"
end
sleep options[:retry_step]
end
raise "Execution timeout after #{options[:retry_count] * options[:retry_step]} seconds!" if options[:retry_fail_on_timeout]
end
# wait for pacemaker to become online
# @param comment [String] log tag comment to trace calls
def wait_for_online(comment = nil)
message = "Waiting #{max_wait_time} seconds for Pacemaker to become online"
message += " (#{comment})" if comment
debug message
retry_block do
cib_reset 'wait_for_online'
online?
end
debug 'Pacemaker is online'
end
# wait until a primitive has known status
# @param primitive [String] primitive name
# @param node [String] on this node if given
def wait_for_status(primitive, node = nil)
message = "Waiting #{max_wait_time} seconds for a known status of '#{primitive}'"
message += " on node '#{node}'" if node
debug message
retry_block do
cib_reset 'wait_for_status'
!primitive_status(primitive).nil?
end
message = "Primitive '#{primitive}' has status '#{primitive_status primitive}'"
message += " on node '#{node}'" if node
debug message
end
# wait for primitive to start
# if node is given then start on this node
# @param primitive [String] primitive id
# @param node [String] on this node if given
def wait_for_start(primitive, node = nil)
message = "Waiting #{max_wait_time} seconds for the service '#{primitive}' to start"
message += " on node '#{node}'" if node
debug message
retry_block do
cib_reset 'wait_for_start'
primitive_is_running? primitive, node
end
message = "Service '#{primitive}' have started"
message += " on node '#{node}'" if node
debug message
end
# wait for primitive to start as a master
# if node is given then start as a master on this node
# @param primitive [String] primitive id
# @param node [String] on this node if given
def wait_for_master(primitive, node = nil)
message = "Waiting #{max_wait_time} seconds for the service '#{primitive}' to start master"
message += " on node '#{node}'" if node
debug message
retry_block do
cib_reset 'wait_for_master'
primitive_has_master_running? primitive, node
end
message = "Service '#{primitive}' have started master"
message += " on node '#{node}'" if node
debug message
end
# wait for primitive to stop
# if node is given then start on this node
# @param primitive [String] primitive id
# @param node [String] on this node if given
def wait_for_stop(primitive, node = nil)
message = "Waiting #{max_wait_time} seconds for the service '#{primitive}' to stop"
message += " on node '#{node}'" if node
debug message
retry_block do
cib_reset 'wait_for_stop'
result = primitive_is_running? primitive, node
result.is_a? FalseClass
end
message = "Service '#{primitive}' was stopped"
message += " on node '#{node}'" if node
debug message
end
# add a new primitive to CIB
# and wait for it to be actually created
# @param xml [String, REXML::Element] XML block to add
# @param primitive [String] the id of the new primitive
# @param scope [String] XML root scope
def wait_for_primitive_create(xml, primitive, scope = 'resources')
message = "Waiting #{max_wait_time} seconds for the primitive '#{primitive}' to be created"
debug message
retry_block do
if pacemaker_options[:cibadmin_idempotency_checks]
cib_reset 'wait_for_primitive_create'
break true if primitive_exists? primitive
end
cibadmin_create xml, scope
end
message = "Primitive '#{primitive}' was created"
debug message
end
# remove a primitive from CIB
# and wait for it to be actually removed
# @param xml [String, REXML::Element] XML block to remove
# @param primitive [String] the id of the removed primitive
# @param scope [String] XML root scope
def wait_for_primitive_remove(xml, primitive, scope = 'resources')
message = "Waiting #{max_wait_time} seconds for the primitive '#{primitive}' to be removed"
debug message
retry_block do
if pacemaker_options[:cibadmin_idempotency_checks]
cib_reset 'wait_for_primitive_remove'
break true unless primitive_exists? primitive
end
cibadmin_delete xml, scope
end
message = "Primitive '#{primitive}' was removed"
debug message
end
# update a primitive in CIB
# and wait for it to be actually updated
# @param xml [String, REXML::Element] XML block to update
# @param primitive [String] the id of the updated primitive
# @param scope [String] XML root scope
def wait_for_primitive_update(xml, primitive, scope = 'resources')
message = "Waiting #{max_wait_time} seconds for the primitive '#{primitive}' to be updated"
debug message
retry_block do
# replace action is already idempotent
cibadmin_replace xml, scope
end
message = "Primitive '#{primitive}' was updated"
debug message
end
# add a new constraint to CIB
# and wait for it to be actually created
# @param xml [String, REXML::Element] XML block to add
# @param constraint [String] the id of the new constraint
# @param scope [String] XML root scope
def wait_for_constraint_create(xml, constraint, scope = 'constraints')
message = "Waiting #{max_wait_time} seconds for the constraint '#{constraint}' to be created"
debug message
retry_block do
if pacemaker_options[:cibadmin_idempotency_checks]
cib_reset 'wait_for_constraint_create'
break true if constraint_exists? constraint
end
cibadmin_create xml, scope
end
message = "Constraint '#{constraint}' was created"
debug message
end
# remove a constraint from CIB
# and wait for it to be actually removed
# @param xml [String, REXML::Element] XML block to remove
# @param constraint [String] the id of the removed constraint
# @param scope [String] XML root scope
def wait_for_constraint_remove(xml, constraint, scope = 'constraints')
message = "Waiting #{max_wait_time} seconds for the constraint '#{constraint}' to be removed"
debug message
retry_block do
if pacemaker_options[:cibadmin_idempotency_checks]
cib_reset 'wait_for_constraint_remove'
break true unless constraint_exists? constraint
end
cibadmin_delete xml, scope
end
message = "Constraint '#{constraint}' was removed"
debug message
end
# update a constraint in CIB
# and wait for it to be actually updated
# @param xml [String, REXML::Element] XML block to update
# @param constraint [String] the id of the updated constraint
# @param scope [String] XML root scope
def wait_for_constraint_update(xml, constraint, scope = 'constraints')
message = "Waiting #{max_wait_time} seconds for the constraint '#{constraint}' to be updated"
debug message
retry_block do
# replace action is already idempotent
cibadmin_replace xml, scope
end
message = "Constraint '#{constraint}' was updated"
debug message
end
# check if pacemaker is online and we can work with it
# * pacemaker is online if cib can be downloaded
# * dc_version attribute can be obtained
# * DC have been designated
# Times out a stuck command calls and catches failed command calls
# @return [TrueClass,FalseClass]
def online?
Timeout.timeout(pacemaker_options[:retry_timeout]) do
return false unless dc_version
return false unless dc
return false unless cib_section_node_state
true
end
rescue Puppet::ExecutionFailure => e
debug "Cluster is offline: #{e.message}"
false
rescue Timeout::Error
debug 'Online check timeout!'
false
end
end
end

View File

@ -1,123 +0,0 @@
# the Pacemaker module contains many submodules separated
# by the preformed functions. They are later merged
# together in the 'provided' file
module Pacemaker
# this submodule contains the basic functions
# for low-level actions with CIB data
module Cib
# get the raw CIB from Pacemaker
# @return [String] cib xml data
def raw_cib
raw_cib = cibadmin '-Q'
raise 'Could not dump CIB XML!' if !raw_cib || raw_cib == ''
raw_cib
end
# REXML::Document of the CIB data
# @return [REXML::Document] at '/'
def cib
return @cib if @cib
@cib = REXML::Document.new(raw_cib)
end
# insert a new cib xml data instead of retrieving it
# can be used either for prefetching or for debugging
# @param cib [String,REXML::Document] CIB XML text or element
def cib=(cib)
@cib = if cib.is_a? REXML::Document
cib
else
REXML::Document.new(cib)
end
end
# check id the CIB is retrieved and memorized
# @return [TrueClass,FalseClass]
def cib?
!@cib.nil?
end
# add a new XML element to CIB
# @param xml [String, REXML::Element] XML block to add
# @param scope [String] XML root scope
def cibadmin_create(xml, scope = nil)
xml = xml_pretty_format xml if xml.is_a? REXML::Element
options = %w(--force --sync-call --create)
options += ['--scope', scope.to_s] if scope
cibadmin_safe options, '--xml-text', xml.to_s
end
# delete the XML element to CIB
# @param xml [String, REXML::Element] XML block to delete
# @param scope [String] XML root scope
def cibadmin_delete(xml, scope = nil)
xml = xml_pretty_format xml if xml.is_a? REXML::Element
options = %w(--force --sync-call --delete)
options += ['--scope', scope.to_s] if scope
cibadmin_safe options, '--xml-text', xml.to_s
end
# modify the XML element
# @param xml [String, REXML::Element] XML element to modify
# @param scope [String] XML root scope
def cibadmin_modify(xml, scope = nil)
xml = xml_pretty_format xml if xml.is_a? REXML::Element
options = %w(--force --sync-call --modify)
options += ['--scope', scope.to_s] if scope
cibadmin_safe options, '--xml-text', xml.to_s
end
# replace the XML element
# @param xml [String, REXML::Element] XML element to replace
# @param scope [String] XML root scope
def cibadmin_replace(xml, scope = nil)
xml = xml_pretty_format xml if xml.is_a? REXML::Element
options = %w(--force --sync-call --replace)
options += ['--scope', scope.to_s] if scope
cibadmin_safe options, '--xml-text', xml.to_s
end
# get the name of the DC (Designated Controller) node
# used to determine if the cluster have elected one and is ready
# @return [String, nil]
def dc
cib_element = cib.elements['/cib']
return unless cib_element
dc_node_id = cib_element.attribute('dc-uuid')
return unless dc_node_id
return if dc_node_id == 'NONE'
dc_node_id.to_s
end
# get the dc_version string from the CIB configuration
# used to determine that the cluster have finished forming a correct cib structure
# uses an independent command call because CIB may not be ready yet
# @return [String, nil]
def dc_version
dc_version = crm_attribute '-q', '--type', 'crm_config', '--query', '--name', 'dc-version'
return if dc_version.empty?
dc_version
end
# reset all mnemoization variables
# to force pacemaker to reload all the data structures
# @param comment [String] log file comment tag to trace calls
def cib_reset(comment = nil)
message = 'Call: cib_reset'
message += " (#{comment})" if comment
debug message
@cib = nil
@primitives_structure = nil
@locations_structure = nil
@colocations_structure = nil
@orders_structure = nil
@node_status_structure = nil
@cluster_properties_structure = nil
@nodes_structure = nil
@resource_defaults_structure = nil
@operation_defaults_structure = nil
end
end
end

Some files were not shown because too many files have changed in this diff Show More