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:
parent
7add07357c
commit
9bd4d6455e
|
@ -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}"
|
|
@ -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
|
87
.rubocop.yml
87
.rubocop.yml
|
@ -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
|
44
.travis.yml
44
.travis.yml
|
@ -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"
|
19
.zuul.yaml
19
.zuul.yaml
|
@ -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
|
|
@ -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
83
Gemfile
|
@ -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
201
LICENSE
|
@ -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
946
README.md
|
@ -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)
|
|
@ -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.
|
47
Rakefile
47
Rakefile
|
@ -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
12
TODO.md
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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>
|
|
@ -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="['\n>', '\napc>']" />
|
||||
<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>
|
|
@ -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>
|
|
@ -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="['system>']" />
|
||||
<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>
|
|
@ -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="['> ']" />
|
||||
<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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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="['\\$']" />
|
||||
<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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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="['c7000oa>']" />
|
||||
<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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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="['MP>', 'hpiLO->']" />
|
||||
<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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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="['to quit:']" />
|
||||
<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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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="['RSM>', 'MPC>', 'IPS>', 'TPS>', 'NBB>', 'NPS>', 'VMR>']" />
|
||||
<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>
|
|
@ -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>
|
|
@ -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
|
|
@ -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
|
||||
)
|
23
bindep.txt
23
bindep.txt
|
@ -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]
|
|
@ -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
|
|
@ -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
|
|
@ -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']
|
||||
|
||||
|
|
@ -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<||>
|
|
@ -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<||>
|
|
@ -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'
|
|
@ -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<||>
|
|
@ -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<||>
|
|
@ -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<||>
|
|
@ -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'
|
|
@ -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<||>
|
|
@ -1,4 +0,0 @@
|
|||
pacemaker_operation_default { 'interval' :
|
||||
ensure => 'present',
|
||||
value => '300',
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
pacemaker_operation_default { 'interval' :
|
||||
ensure => 'absent',
|
||||
}
|
|
@ -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'
|
|
@ -1,4 +0,0 @@
|
|||
pacemaker_operation_default { 'interval' :
|
||||
ensure => 'present',
|
||||
value => '301',
|
||||
}
|
|
@ -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<||>
|
|
@ -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<||>
|
|
@ -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'
|
|
@ -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<||>
|
|
@ -1,9 +0,0 @@
|
|||
pacemaker_property { 'cluster-delay' :
|
||||
ensure => 'present',
|
||||
value => '50',
|
||||
}
|
||||
|
||||
pacemaker_property { 'batch-limit' :
|
||||
ensure => 'present',
|
||||
value => '50',
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
pacemaker_property { 'cluster-delay' :
|
||||
ensure => 'absent',
|
||||
}
|
||||
|
||||
pacemaker_property { 'batch-limit' :
|
||||
ensure => 'absent',
|
||||
}
|
|
@ -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'
|
|
@ -1,9 +0,0 @@
|
|||
pacemaker_property { 'cluster-delay' :
|
||||
ensure => 'present',
|
||||
value => '51',
|
||||
}
|
||||
|
||||
pacemaker_property { 'batch-limit' :
|
||||
ensure => 'present',
|
||||
value => '51',
|
||||
}
|
|
@ -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',
|
||||
},
|
||||
}
|
|
@ -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' :}
|
|
@ -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'
|
|
@ -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',
|
||||
},
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
pacemaker_resource_default { 'resource-stickiness' :
|
||||
ensure => 'present',
|
||||
value => '100',
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
pacemaker_resource_default { 'resource-stickiness' :
|
||||
ensure => 'absent',
|
||||
}
|
|
@ -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'
|
|
@ -1,4 +0,0 @@
|
|||
pacemaker_resource_default { 'resource-stickiness' :
|
||||
ensure => 'present',
|
||||
value => '101',
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
pacemaker_resource { 'service-test1' :
|
||||
ensure => 'absent',
|
||||
}
|
||||
|
||||
pacemaker_resource { 'service-test2' :
|
||||
ensure => 'absent',
|
||||
}
|
|
@ -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']
|
|
@ -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']
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
Loading…
Reference in New Issue