Author: aconway
Date: Fri Sep 26 15:38:02 2014
New Revision: 1627811

URL: http://svn.apache.org/r1627811
Log:
QPID-6118: Add qmf shutdown command to the broker

QMF shutdown command implemented on broker.
- ACL to control shutdown: acl deny all access method name=shutdown
- Added "qpid-config shutdown" command to shut down the broker.

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/management-schema.xml
    qpid/trunk/qpid/tools/src/py/qpid-config

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp?rev=1627811&r1=1627810&r2=1627811&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp Fri Sep 26 15:38:02 2014
@@ -689,6 +689,11 @@ Manageable::status_t Broker::ManagementM
         status =  queueRedirect(srcQueue, tgtQueue, getCurrentPublisher());
         break;
     }
+    case _qmf::Broker::METHOD_SHUTDOWN :
+    {
+        QPID_LOG (info, "Broker received shutdown command");
+        shutdown();
+    }
     default:
         QPID_LOG (debug, "Broker ManagementMethod not implemented: id=" << 
methodId << "]");
         status = Manageable::STATUS_NOT_IMPLEMENTED;
@@ -1289,7 +1294,6 @@ void Broker::queueRedirectDestroy(Queue:
     }
 }
 
-
 const Broker::TransportInfo& Broker::getTransportInfo(const std::string& name) 
const {
     static TransportInfo nullTransportInfo;
     TransportMap::const_iterator i

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/management-schema.xml
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/management-schema.xml?rev=1627811&r1=1627810&r2=1627811&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/management-schema.xml (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/management-schema.xml Fri Sep 26 
15:38:02 2014
@@ -194,6 +194,9 @@
         <arg name="targetQueue" dir="I" type="sstr"   desc="Redirect target 
queue. Blank disables redirect."/>
     </method>
 
+    <method name="shutdown" desc="Shutdown the broker">
+    </method>
+
   </class>
 
   <!--

Modified: qpid/trunk/qpid/tools/src/py/qpid-config
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/tools/src/py/qpid-config?rev=1627811&r1=1627810&r2=1627811&view=diff
==============================================================================
--- qpid/trunk/qpid/tools/src/py/qpid-config (original)
+++ qpid/trunk/qpid/tools/src/py/qpid-config Fri Sep 26 15:38:02 2014
@@ -28,7 +28,7 @@ import locale
 home = os.environ.get("QPID_TOOLS_HOME", 
os.path.normpath("/usr/share/qpid-tools"))
 sys.path.append(os.path.join(home, "python"))
 
-from qpid.messaging import Connection
+from qpid.messaging import Connection, ConnectionError
 from qpidtoollibs import BrokerAgent
 from qpidtoollibs import Display, Header
 
@@ -47,7 +47,8 @@ Usage:  qpid-config [OPTIONS]
         qpid-config [OPTIONS] reload-acl
         qpid-config [OPTIONS] add <type> <name> [--argument 
<property-name>=<property-value>]
         qpid-config [OPTIONS] del <type> <name>
-        qpid-config [OPTIONS] list <type> [--show-property <property-name>]"""
+        qpid-config [OPTIONS] list <type> [--show-property <property-name>]
+        qpid-config [OPTIONS] shutdown"""
 
 description = """
 Examples:
@@ -813,7 +814,12 @@ def main(argv=None):
                 headers = [Header(a) for a in desired]
                 rows = [tuple([_clean_ref(o.get(a, "n/a")) for a in desired]) 
for o in objects]
                 display.formattedTable("Objects of type '%s'" % modifier, 
headers, rows)
-
+            elif cmd == "shutdown":
+                try:
+                    bm.broker._method("shutdown", {})
+                except ConnectionError:
+                    pass        # Normal, the broker has been shut down!
+                bm.conn = None  # Don't try to close again
             else:
                 Usage()
     except KeyboardInterrupt:
@@ -846,5 +852,5 @@ def main(argv=None):
 
 
 if __name__ == "__main__":
-        sys.exit(main())
+    sys.exit(main())
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to