From patchwork Fri Sep 16 11:15:07 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Babu Shanmugam X-Patchwork-Id: 670806 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (archives.nicira.com [96.126.127.54]) by ozlabs.org (Postfix) with ESMTP id 3sbCQ34hjCz9sC3 for ; Fri, 16 Sep 2016 21:15:55 +1000 (AEST) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id B22C010941; Fri, 16 Sep 2016 04:15:54 -0700 (PDT) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx3v3.cudamail.com (mx3.cudamail.com [64.34.241.5]) by archives.nicira.com (Postfix) with ESMTPS id 782CB1093D for ; Fri, 16 Sep 2016 04:15:53 -0700 (PDT) Received: from bar6.cudamail.com (localhost [127.0.0.1]) by mx3v3.cudamail.com (Postfix) with ESMTPS id 107341623D2 for ; Fri, 16 Sep 2016 05:15:53 -0600 (MDT) X-ASG-Debug-ID: 1474024552-0b323722602b0690001-byXFYA Received: from mx1-pf2.cudamail.com ([192.168.24.2]) by bar6.cudamail.com with ESMTP id WUJdjzVqH6dnDDxC (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 16 Sep 2016 05:15:52 -0600 (MDT) X-Barracuda-Envelope-From: bschanmu@redhat.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.2 Received: from unknown (HELO mx1.redhat.com) (209.132.183.28) by mx1-pf2.cudamail.com with ESMTPS (DHE-RSA-AES256-SHA encrypted); 16 Sep 2016 11:15:51 -0000 Received-SPF: pass (mx1-pf2.cudamail.com: SPF record at _spf1.redhat.com designates 209.132.183.28 as permitted sender) X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-Barracuda-RBL-IP: 209.132.183.28 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A48D19D0C1 for ; Fri, 16 Sep 2016 11:15:50 +0000 (UTC) Received: from localhost.localdomain (ovpn-116-34.phx2.redhat.com [10.3.116.34]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u8GBF9kC024351; Fri, 16 Sep 2016 07:15:48 -0400 X-CudaMail-Envelope-Sender: bschanmu@redhat.com From: bschanmu@redhat.com To: dev@openvswitch.org X-CudaMail-Whitelist-To: dev@openvswitch.org X-CudaMail-MID: CM-E2-915006929 X-CudaMail-DTE: 091616 X-CudaMail-Originating-IP: 209.132.183.28 Date: Fri, 16 Sep 2016 16:45:07 +0530 X-ASG-Orig-Subj: [##CM-E2-915006929##][PATCH v2 2/4] ovn: OCF script for OVN OVSDB servers Message-Id: <1474024509-15149-3-git-send-email-bschanmu@redhat.com> In-Reply-To: <1474024509-15149-1-git-send-email-bschanmu@redhat.com> References: <1474024509-15149-1-git-send-email-bschanmu@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.27 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Fri, 16 Sep 2016 11:15:50 +0000 (UTC) X-Barracuda-Connect: UNKNOWN[192.168.24.2] X-Barracuda-Start-Time: 1474024552 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-ASG-Whitelist: Header =?UTF-8?B?eFwtY3VkYW1haWxcLXdoaXRlbGlzdFwtdG8=?= X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 Subject: [ovs-dev] [PATCH v2 2/4] ovn: OCF script for OVN OVSDB servers X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" From: Babu Shanmugam Co-authored-by: Numan Siddique Signed-off-by: Numan Siddique Signed-off-by: Babu Shanmugam --- ovn/utilities/automake.mk | 6 +- ovn/utilities/ovndb-servers.ocf | 192 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+), 2 deletions(-) create mode 100755 ovn/utilities/ovndb-servers.ocf diff --git a/ovn/utilities/automake.mk b/ovn/utilities/automake.mk index b03d125..164cdda 100644 --- a/ovn/utilities/automake.mk +++ b/ovn/utilities/automake.mk @@ -1,5 +1,6 @@ scripts_SCRIPTS += \ - ovn/utilities/ovn-ctl + ovn/utilities/ovn-ctl \ + ovn/utilities/ovndb-servers.ocf man_MANS += \ ovn/utilities/ovn-ctl.8 \ @@ -20,7 +21,8 @@ EXTRA_DIST += \ ovn/utilities/ovn-docker-overlay-driver \ ovn/utilities/ovn-docker-underlay-driver \ ovn/utilities/ovn-nbctl.8.xml \ - ovn/utilities/ovn-trace.8.xml + ovn/utilities/ovn-trace.8.xml \ + ovn/utilities/ovndb-servers.ocf DISTCLEANFILES += \ ovn/utilities/ovn-ctl.8 \ diff --git a/ovn/utilities/ovndb-servers.ocf b/ovn/utilities/ovndb-servers.ocf new file mode 100755 index 0000000..3d395d7 --- /dev/null +++ b/ovn/utilities/ovndb-servers.ocf @@ -0,0 +1,192 @@ +#!/bin/bash + +: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} +. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs +: ${OVN_CTL_DEFAULT="/usr/share/openvswitch/scripts/ovn-ctl"} +CRM_MASTER="${HA_SBIN_DIR}/crm_master -l reboot" +CRM_ATTR_REPL_INFO="${HA_SBIN_DIR}/crm_attribute --type crm_config --name OVN_REPL_INFO -s ovn_ovsdb_master_server" +OVN_CTL=${OCF_RESKEY_ovn_ctl:-${OVN_CTL_DEFAULT}} +MASTER_IP=${OCF_RESKEY_master_ip} + +host_name=$(ocf_local_nodename) +: ${slave_score=5} +: ${master_score=10} + +ovsdb_server_metadata() { + cat < + + + 1.0 + + + This resource manages ovsdb-server. + + + + Manages ovsdb-server. + + + + + + + Location to the ovn-ctl script file + + ovn-ctl script + + + + + + The IP address resource which will be available on the master ovsdb server + + master ip address + + + + + + + + + + + + + + + +END + exit $OCF_SUCCESS +} + +ovsdb_server_notify() { + local type_op="${OCF_RESKEY_CRM_meta_notify_type}-${OCF_RESKEY_CRM_meta_notify_operation}" + + if [ "$type_op" == "post-promote" ]; then + ${OVN_CTL} demote_ovnnb --db-nb-sync-from-addr=${MASTER_IP} + ${OVN_CTL} demote_ovnsb --db-sb-sync-from-addr=${MASTER_IP} + fi +} + +ovsdb_server_usage() { + cat </dev/null` + + set ${OVN_CTL} + if [ "$present_master" == "$host_name" ]; then + ret=$OCF_RUNNING_MASTER + else + set $@ --db-nb-sync-from-addr=${MASTER_IP} --db-sb-sync-from-addr=${MASTER_IP} + fi + + $@ start_ovsdb + + if [ "$present_master" == "$host_name" ]; then + $CRM_MASTER -v ${master_score} + else + $CRM_MASTER -v ${slave_score} + fi + + return $ret +} + +ovsdb_server_stop() { + local present_master=`$CRM_ATTR_REPL_INFO --query -q 2>/dev/null` + if [ "$present_master" == "$host_name" ]; then + return $OCF_RUNNING_MASTER + fi + + ${OVN_CTL} stop_ovsdb + $CRM_MASTER -D + return $OCF_SUCCESS +} + +ovsdb_server_promote() { + ovsdb_server_check_status + if [ $? = $OCF_NOT_RUNNING ]; then + return $OCF_NOT_RUNNING + fi + + ${OVN_CTL} promote_ovnnb + ${OVN_CTL} promote_ovnsb + + ${CRM_ATTR_REPL_INFO} -v "$host_name" + return $OCF_SUCCESS +} + +ovsdb_server_demote() { + ovsdb_server_check_status + if [ $? = $OCF_NOT_RUNNING ]; then + return $OCF_NOT_RUNNING + fi + + ${OVN_CTL} demote_ovnnb --db-nb-sync-from-addr=${MASTER_IP} + ${OVN_CTL} demote_ovnsb --db-sb-sync-from-addr=${MASTER_IP} + + $CRM_MASTER -v ${slave_score} + + local present_master=`$CRM_ATTR_REPL_INFO --query -q 2>/dev/null` + [ "$present_master" == "$host_name" ] && $CRM_ATTR_REPL_INFO --delete + + return $OCF_SUCCESS +} + +ovsdb_server_validate() { + if [ ! -e ${OVN_CTL} ]; then + return $OCF_ERR_INSTALLED + fi + if [ -z ${MASTER_IP} ]; then + return $OCF_ERR_CONFIGURED + fi + return $OCF_SUCCESS +} + +case $__OCF_ACTION in +start) ovsdb_server_start;; +stop) ovsdb_server_stop;; +promote) ovsdb_server_promote;; +demote) ovsdb_server_demote;; +validate-all) ovsdb_server_validate;; +meta-data) ovsdb_server_metadata;; +status|monitor) ovsdb_server_check_status;; +usage|help) ovsdb_server_usage $OCF_SUCCESS;; +*) ovsdb_server_usage $OCF_ERR_UNIMPLEMENTED ;; +esac + +exit $?