You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by ne...@apache.org on 2017/04/12 21:44:02 UTC

[12/13] incubator-trafficcontrol git commit: Add TM2 nagios peerpoller checking all TMs in TO

Add TM2 nagios peerpoller checking all TMs in TO


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/2fdd9317
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/2fdd9317
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/2fdd9317

Branch: refs/heads/master
Commit: 2fdd9317a407fb6dfe924714630483c8b760c1a3
Parents: 5a6cf95
Author: Robert Butts <ro...@gmail.com>
Authored: Wed Mar 15 11:15:46 2017 -0600
Committer: Dave Neuman <ne...@apache.org>
Committed: Wed Apr 12 15:43:31 2017 -0600

----------------------------------------------------------------------
 .../tools/nagios-validate-offline.go            | 19 +++++++
 .../tools/nagios-validate-peerpoller.go         | 57 +++++++++++++++-----
 2 files changed, 64 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/2fdd9317/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-offline.go
----------------------------------------------------------------------
diff --git a/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-offline.go b/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-offline.go
index a54b8c5..ec2b9bd 100644
--- a/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-offline.go
+++ b/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-offline.go
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
 package main
 
 import (

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/2fdd9317/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-peerpoller.go
----------------------------------------------------------------------
diff --git a/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-peerpoller.go b/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-peerpoller.go
index 5e9c9fd..6af1a51 100644
--- a/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-peerpoller.go
+++ b/traffic_monitor_golang/traffic_monitor/tools/nagios-validate-peerpoller.go
@@ -1,3 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
 package main
 
 import (
@@ -5,32 +24,46 @@ import (
 	"fmt"
 	"github.com/apache/incubator-trafficcontrol/traffic_monitor_golang/common/nagios"
 	"github.com/apache/incubator-trafficcontrol/traffic_monitor_golang/traffic_monitor/tmcheck"
+	to "github.com/apache/incubator-trafficcontrol/traffic_ops/client"
 )
 
 const UserAgent = "tm-peerpoller-validator/0.1"
 
 func main() {
-	tmURI := flag.String("tm", "", "The Traffic Monitor URI, whose Peer Poller to validate")
-	// toUser := flag.String("touser", "", "The Traffic Ops user")
-	// toPass := flag.String("topass", "", "The Traffic Ops password")
-	// includeOffline := flag.Bool("includeOffline", false, "Whether to include Offline Monitors")
+	toURI := flag.String("to", "", "The Traffic Ops URI, whose CRConfig to validate")
+	toUser := flag.String("touser", "", "The Traffic Ops user")
+	toPass := flag.String("topass", "", "The Traffic Ops password")
+	includeOffline := flag.Bool("includeOffline", false, "Whether to include Offline Monitors")
 	help := flag.Bool("help", false, "Usage info")
 	helpBrief := flag.Bool("h", false, "Usage info")
 	flag.Parse()
-	if *help || *helpBrief {
+	if *help || *helpBrief || *toURI == "" {
 		fmt.Printf("Usage: ./nagios-validate-peerpoller -to https://traffic-ops.example.net -touser bill -topass thelizard -includeOffline true\n")
 		return
 	}
 
-	// toClient, err := to.LoginWithAgent(*toURI, *toUser, *toPass, true, UserAgent, false, tmcheck.RequestTimeout)
-	// if err != nil {
-	// 	fmt.Printf("Error logging in to Traffic Ops: %v\n", err)
-	// 	return
-	// }
+	toClient, err := to.LoginWithAgent(*toURI, *toUser, *toPass, true, UserAgent, false, tmcheck.RequestTimeout)
+	if err != nil {
+		fmt.Printf("Error logging in to Traffic Ops: %v\n", err)
+		return
+	}
+
+	monitorErrs, err := tmcheck.ValidateAllPeerPollers(toClient, *includeOffline)
 
-	err := tmcheck.ValidatePeerPoller(*tmURI)
 	if err != nil {
-		nagios.Exit(nagios.Critical, fmt.Sprintf("Error validating monitor peer poller: %v", err))
+		nagios.Exit(nagios.Critical, fmt.Sprintf("Error validating monitor peer pollers: %v", err))
 	}
+
+	errStr := ""
+	for monitor, err := range monitorErrs {
+		if err != nil {
+			errStr += fmt.Sprintf("error validating offline status for monitor %v : %v\n", monitor, err.Error())
+		}
+	}
+
+	if errStr != "" {
+		nagios.Exit(nagios.Critical, errStr)
+	}
+
 	nagios.Exit(nagios.Ok, "")
 }