diff --git a/SOURCES/NovaCompute.patch b/SOURCES/NovaCompute.patch new file mode 100644 index 0000000..8db2532 --- /dev/null +++ b/SOURCES/NovaCompute.patch @@ -0,0 +1,418 @@ +From bd60deaa906cc5fe1cd46549b1318d2b940395ef Mon Sep 17 00:00:00 2001 +From: David Vossel +Date: Thu, 11 Jun 2015 08:41:50 -0500 +Subject: [PATCH] NovaCompute agent + +--- + doc/man/Makefile.am | 1 + + heartbeat/Makefile.am | 4 + + heartbeat/NovaCompute | 363 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 368 insertions(+) + create mode 100644 heartbeat/NovaCompute + +diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am +index 653e818..69acf3a 100644 +--- a/doc/man/Makefile.am ++++ b/doc/man/Makefile.am +@@ -73,6 +73,7 @@ man_MANS = ocf_heartbeat_AoEtarget.7 \ + ocf_heartbeat_MailTo.7 \ + ocf_heartbeat_ManageRAID.7 \ + ocf_heartbeat_ManageVE.7 \ ++ ocf_heartbeat_NovaCompute.7 \ + ocf_heartbeat_Pure-FTPd.7 \ + ocf_heartbeat_Raid1.7 \ + ocf_heartbeat_Route.7 \ +diff --git a/heartbeat/Makefile.am b/heartbeat/Makefile.am +index e4ed4fd..b77c589 100644 +--- a/heartbeat/Makefile.am ++++ b/heartbeat/Makefile.am +@@ -29,6 +29,8 @@ halibdir = $(libexecdir)/heartbeat + + ocfdir = $(OCF_RA_DIR_PREFIX)/heartbeat + ++ospdir = $(OCF_RA_DIR_PREFIX)/openstack ++ + dtddir = $(datadir)/$(PACKAGE_NAME) + dtd_DATA = ra-api-1.dtd + +@@ -50,6 +52,8 @@ send_ua_SOURCES = send_ua.c IPv6addr_utils.c + IPv6addr_LDADD = -lplumb $(LIBNETLIBS) + send_ua_LDADD = $(LIBNETLIBS) + ++osp_SCRIPTS = NovaCompute ++ + ocf_SCRIPTS = ClusterMon \ + CTDB \ + Dummy \ +diff --git a/heartbeat/NovaCompute b/heartbeat/NovaCompute +new file mode 100644 +index 0000000..f71abeb +--- /dev/null ++++ b/heartbeat/NovaCompute +@@ -0,0 +1,363 @@ ++#!/bin/sh ++# ++# ++# NovaCompute agent manages compute daemons. ++# ++# Copyright (c) 2015 ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of version 2 of the GNU General Public License as ++# published by the Free Software Foundation. ++# ++# This program is distributed in the hope that it would be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++# ++# Further, this software is distributed without any warranty that it is ++# free of the rightful claim of any third person regarding infringement ++# or the like. Any license provided herein, whether implied or ++# otherwise, applies only to this software file. Patent licenses, if ++# any, provided herein do not apply to combinations of this program with ++# other software, or any other product whatsoever. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write the Free Software Foundation, ++# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. ++# ++ ++####################################################################### ++# Initialization: ++ ++### ++: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} ++. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs ++### ++ ++: ${__OCF_ACTION=$1} ++ ++####################################################################### ++ ++meta_data() { ++ cat < ++ ++ ++1.0 ++ ++ ++OpenStack Nova Compute Server. ++ ++OpenStack Nova Compute Server ++ ++ ++ ++ ++ ++Authorization URL for connecting to keystone in admin context ++ ++Authorization URL ++ ++ ++ ++ ++ ++Username for connecting to keystone in admin context ++ ++Username ++ ++ ++ ++ ++Password for connecting to keystone in admin context ++ ++Password ++ ++ ++ ++ ++ ++Tenant name for connecting to keystone in admin context. ++Note that with Keystone V3 tenant names are only unique within a domain. ++ ++Tenant name ++ ++ ++ ++ ++ ++DNS domain in which hosts live, useful when the cluster uses short names and nova uses FQDN ++ ++DNS domain ++ ++ ++ ++ ++ ++Nova API location (internal, public or admin URL) ++ ++Nova API location (internal, public or admin URL) ++ ++ ++ ++ ++ ++Disable shared storage recovery for instances. Use at your own risk! ++ ++Disable shared storage recovery for instances ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++END ++} ++ ++####################################################################### ++ ++# don't exit on TERM, to test that lrmd makes sure that we do exit ++trap sigterm_handler TERM ++sigterm_handler() { ++ ocf_log info "They use TERM to bring us down. No such luck." ++ return ++} ++ ++nova_usage() { ++ cat </dev/null) ++ if [ $? = 1 ]; then ++ if [ "x${OCF_RESKEY_domain}" != x ]; then ++ NOVA_HOST=$(uname -n | awk -F. '{print $1}') ++ else ++ NOVA_HOST=$(uname -n) ++ fi ++ fi ++ ++ # We only need to check a configured value, calculated ones are fine ++ openstack-config --get /etc/nova/nova.conf DEFAULT host 2>/dev/null ++ if [ $? = 0 ]; then ++ if [ "x${OCF_RESKEY_domain}" != x ]; then ++ short_host=$(uname -n | awk -F. '{print $1}') ++ if [ "x$NOVA_HOST" != "x${short_host}" ]; then ++ ocf_exit_reason "Invalid Nova host name, must be ${short_host} in order for instance recovery to function" ++ rc=$OCF_ERR_CONFIGURED ++ fi ++ ++ elif [ "x$NOVA_HOST" != "x$(uname -n)" ]; then ++ ocf_exit_reason "Invalid Nova host name, must be $(uname -n) in order for instance recovery to function" ++ rc=$OCF_ERR_CONFIGURED ++ fi ++ fi ++ ++ if [ $rc != $OCF_SUCCESS ]; then ++ exit $rc ++ fi ++ return $rc ++} ++ ++case $__OCF_ACTION in ++meta-data) meta_data ++ exit $OCF_SUCCESS ++ ;; ++usage|help) nova_usage ++ exit $OCF_SUCCESS ++ ;; ++esac ++ ++nova_validate ++ ++case $__OCF_ACTION in ++start) nova_start;; ++stop) nova_stop;; ++monitor) nova_monitor;; ++notify) nova_notify;; ++validate-all) exit $OCF_SUCCESS;; ++*) nova_usage ++ exit $OCF_ERR_UNIMPLEMENTED ++ ;; ++esac ++rc=$? ++ocf_log debug "${OCF_RESOURCE_INSTANCE} $__OCF_ACTION : $rc" ++exit $rc +-- +1.8.4.2 + diff --git a/SPECS/resource-agents.spec b/SPECS/resource-agents.spec index 2416df5..bb77695 100644 --- a/SPECS/resource-agents.spec +++ b/SPECS/resource-agents.spec @@ -32,7 +32,7 @@ Name: resource-agents Summary: Open Source HA Reusable Cluster Resource Scripts Version: 3.9.5 -Release: 40%{?dist}.3 +Release: 40%{?dist}.4 License: GPLv2+ and LGPLv2+ URL: https://github.com/ClusterLabs/resource-agents %if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel} @@ -101,6 +101,7 @@ Patch56: bz1135026-docker-handle-invalid-monitor-cmd.patch Patch57: bz1118029-iscsi-remove-write-back.patch Patch58: rabbitmq-cluster.patch Patch59: bz1189187-redis-agent.patch +Patch60: NovaCompute.patch Obsoletes: heartbeat-resources <= %{version} Provides: heartbeat-resources = %{version} @@ -248,6 +249,7 @@ exit 1 %patch57 -p1 %patch58 -p1 %patch59 -p1 +%patch60 -p1 %build if [ ! -f configure ]; then @@ -260,6 +262,7 @@ chmod 755 heartbeat/nfsnotify chmod 755 heartbeat/docker chmod 755 heartbeat/rabbitmq-cluster chmod 755 heartbeat/redis +chmod 755 heartbeat/NovaCompute %if 0%{?fedora} >= 11 || 0%{?centos_version} > 5 || 0%{?rhel} > 5 CFLAGS="$(echo '%{optflags}')" @@ -338,6 +341,7 @@ rm -rf %{buildroot} /usr/lib/ocf/lib/heartbeat /usr/lib/ocf/resource.d/heartbeat +/usr/lib/ocf/resource.d/openstack %if %{with rgmanager} /usr/lib/ocf/resource.d/redhat %endif @@ -493,6 +497,11 @@ ccs_update_schema > /dev/null 2>&1 ||: %changelog +* Thu Jun 11 2015 David Vossel - 3.9.5-40.4 +- Support for NovaCompute resource-agent + + Resolves: rhbz#1229383 + * Thu Feb 5 2015 David Vossel - 3.9.5-40.3 - Support for redis resource-agent