diff --git a/collector/ha_check/ha_check.go b/collector/ha_check/ha_check.go deleted file mode 100644 index 810cebf..0000000 --- a/collector/ha_check/ha_check.go +++ /dev/null @@ -1,109 +0,0 @@ -package ha_check - -import ( - "github.com/pkg/errors" - log "github.com/sirupsen/logrus" - - "github.com/prometheus/client_golang/prometheus" - - "github.com/SUSE/sap_host_exporter/collector" - "github.com/SUSE/sap_host_exporter/internal/sapcontrol" -) - -func NewCollector(webService sapcontrol.WebService) (*checkCollector, error) { - - c := &checkCollector{ - collector.NewDefaultCollector("ha_check"), - webService, - } - - c.SetDescriptor("config", "High Availability system configuration and status checks", []string{"description", "category", "comment"}) - c.SetDescriptor("failover_active", "Whether or not High Availability Failover is active", nil) - - return c, nil -} - -type checkCollector struct { - collector.DefaultCollector - webService sapcontrol.WebService -} - -func (c *checkCollector) Collect(ch chan<- prometheus.Metric) { - log.Debugln("Collecting Check metrics") - - errs := collector.RecordConcurrently([]func(ch chan<- prometheus.Metric) error{ - c.recordHAConfigChecks, - c.recordHAFailoverConfigChecks, - c.recordHAFailoverActive, - }, ch) - - for _, err := range errs { - log.Warnf("Check Collector scrape failed: %s", err) - } -} - -func (c *checkCollector) recordHAConfigChecks(ch chan<- prometheus.Metric) error { - response, err := c.webService.HACheckConfig() - if err != nil { - return errors.Wrap(err, "SAPControl web service error") - } - - err = c.recordConfigChecks(response.Checks, ch) - if err != nil { - return err - } - - return nil -} - -func (c *checkCollector) recordHAFailoverConfigChecks(ch chan<- prometheus.Metric) error { - response, err := c.webService.HACheckFailoverConfig() - - if err != nil { - return errors.Wrap(err, "SAPControl web service error") - } - - err = c.recordConfigChecks(response.Checks, ch) - if err != nil { - return errors.Wrap(err, "could not record HACheck") - } - - return nil -} - -func (c *checkCollector) recordConfigChecks(checks []*sapcontrol.HACheck, ch chan<- prometheus.Metric) error { - for _, check := range checks { - err := c.recordConfigCheck(check, ch) - if err != nil { - return err - } - } - return nil -} - -func (c *checkCollector) recordConfigCheck(check *sapcontrol.HACheck, ch chan<- prometheus.Metric) error { - stateCode, err := sapcontrol.HaVerificationStateToFloat(check.State) - category, err := sapcontrol.HaCheckCategoryToString(check.Category) - if err != nil { - return errors.Wrapf(err, "unable to process SAPControl HACheck data: %v", *check) - } - ch <- c.MakeGaugeMetric("config", stateCode, check.Description, category, check.Comment) - - return nil -} - -func (c *checkCollector) recordHAFailoverActive(ch chan<- prometheus.Metric) error { - response, err := c.webService.HAGetFailoverConfig() - - if err != nil { - return errors.Wrap(err, "SAPControl web service error") - } - - var haActive float64 - if response.HAActive { - haActive = 1 - } - ch <- c.MakeGaugeMetric("failover_active", haActive) - - return nil -} diff --git a/collector/ha_check/ha_check_test.go b/collector/ha_check/ha_check_test.go deleted file mode 100644 index 4236a20..0000000 --- a/collector/ha_check/ha_check_test.go +++ /dev/null @@ -1,130 +0,0 @@ -package ha_check - -import ( - "strings" - "testing" - - "github.com/golang/mock/gomock" - "github.com/prometheus/client_golang/prometheus/testutil" - "github.com/stretchr/testify/assert" - - "github.com/SUSE/sap_host_exporter/internal/sapcontrol" - "github.com/SUSE/sap_host_exporter/test/mock_sapcontrol" -) - -func TestNewCollector(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - mockWebService := mock_sapcontrol.NewMockWebService(ctrl) - - _, err := NewCollector(mockWebService) - - assert.Nil(t, err) -} - -func TestHACheckMetrics(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockWebService := mock_sapcontrol.NewMockWebService(ctrl) - - mockHACheckConfigResponse := &sapcontrol.HACheckConfigResponse{ - Checks: []*sapcontrol.HACheck{ - {State: sapcontrol.HA_VERIFICATION_STATE_ERROR, Category: sapcontrol.HA_CHECK_CATEGORY_HA_STATE, Description: "foo", Comment: "bar"}, - {State: sapcontrol.HA_VERIFICATION_STATE_WARNING, Category: sapcontrol.HA_CHECK_CATEGORY_SAP_STATE, Description: "foo2", Comment: "bar2"}, - {State: sapcontrol.HA_VERIFICATION_STATE_SUCCESS, Category: sapcontrol.HA_CHECK_CATEGORY_SAP_CONFIGURATION, Description: "foo3", Comment: "bar3"}, - }, - } - mockHACheckFailoverConfigResponse := &sapcontrol.HACheckFailoverConfigResponse{ - Checks: []*sapcontrol.HACheck{ - {State: sapcontrol.HA_VERIFICATION_STATE_SUCCESS, Category: sapcontrol.HA_CHECK_CATEGORY_SAP_CONFIGURATION, Description: "foo4", Comment: "bar4"}, - }, - } - mockWebService.EXPECT().HACheckConfig().Return(mockHACheckConfigResponse, nil) - mockWebService.EXPECT().HACheckFailoverConfig().Return(mockHACheckFailoverConfigResponse, nil) - mockWebService.EXPECT().HAGetFailoverConfig().Return(&sapcontrol.HAGetFailoverConfigResponse{}, nil) - - var err error - collector, err := NewCollector(mockWebService) - assert.NoError(t, err) - - expectedMetrics := ` - # HELP sap_ha_check_config High Availability system configuration and status checks - # TYPE sap_ha_check_config gauge - sap_ha_check_config{category="HA-STATE",comment="bar",description="foo"} 2 - sap_ha_check_config{category="SAP-STATE",comment="bar2",description="foo2"} 1 - sap_ha_check_config{category="SAP-CONFIGURATION",comment="bar3",description="foo3"} 0 - sap_ha_check_config{category="SAP-CONFIGURATION",comment="bar4",description="foo4"} 0 -` - - err = testutil.CollectAndCompare(collector, strings.NewReader(expectedMetrics), "sap_ha_check_config") - assert.NoError(t, err) -} - -func TestHACheckMetricsWithEmptyData(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockWebService := mock_sapcontrol.NewMockWebService(ctrl) - - mockWebService.EXPECT().HACheckConfig().Return(&sapcontrol.HACheckConfigResponse{}, nil) - mockWebService.EXPECT().HACheckFailoverConfig().Return(&sapcontrol.HACheckFailoverConfigResponse{}, nil) - mockWebService.EXPECT().HAGetFailoverConfig().Return(&sapcontrol.HAGetFailoverConfigResponse{}, nil) - - var err error - collector, err := NewCollector(mockWebService) - assert.NoError(t, err) - - err = testutil.CollectAndCompare(collector, strings.NewReader(""), "sap_ha_check_config") - assert.NoError(t, err) -} - -func TestHAFailoverActiveMetric(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockWebService := mock_sapcontrol.NewMockWebService(ctrl) - - mockWebService.EXPECT().HACheckConfig().Return(&sapcontrol.HACheckConfigResponse{}, nil) - mockWebService.EXPECT().HACheckFailoverConfig().Return(&sapcontrol.HACheckFailoverConfigResponse{}, nil) - mockWebService.EXPECT().HAGetFailoverConfig().Return(&sapcontrol.HAGetFailoverConfigResponse{ - HAActive: true, - }, nil) - - var err error - collector, err := NewCollector(mockWebService) - assert.NoError(t, err) - - expectedMetrics := ` - # HELP sap_ha_check_failover_active Whether or not High Availability Failover is active - # TYPE sap_ha_check_failover_active gauge - sap_ha_check_failover_active 1 -` - err = testutil.CollectAndCompare(collector, strings.NewReader(expectedMetrics), "sap_ha_check_failover_active") - assert.NoError(t, err) -} - -func TestHAFailoverActiveMetricWithFalseValue(t *testing.T) { - ctrl := gomock.NewController(t) - defer ctrl.Finish() - - mockWebService := mock_sapcontrol.NewMockWebService(ctrl) - - mockWebService.EXPECT().HACheckConfig().Return(&sapcontrol.HACheckConfigResponse{}, nil) - mockWebService.EXPECT().HACheckFailoverConfig().Return(&sapcontrol.HACheckFailoverConfigResponse{}, nil) - mockWebService.EXPECT().HAGetFailoverConfig().Return(&sapcontrol.HAGetFailoverConfigResponse{ - HAActive: false, - }, nil) - - var err error - collector, err := NewCollector(mockWebService) - assert.NoError(t, err) - - expectedMetrics := ` - # HELP sap_ha_check_failover_active Whether or not High Availability Failover is active - # TYPE sap_ha_check_failover_active gauge - sap_ha_check_failover_active 0 -` - err = testutil.CollectAndCompare(collector, strings.NewReader(expectedMetrics), "sap_ha_check_failover_active") - assert.NoError(t, err) -} diff --git a/doc/metrics.md b/doc/metrics.md index 6b6b800..cd1703d 100644 --- a/doc/metrics.md +++ b/doc/metrics.md @@ -12,7 +12,6 @@ These are the currently implemented subsystems. 1. [SAP Start Service](#sap-start-service) 2. [SAP Enqueue Server](#sap-enqueue-server) -3. [HA Checks](#ha-checks) ### Appendix @@ -507,67 +506,6 @@ sap_dispatcher_queue_reads{type="ICM/Intern"} 37426 ``` -## HA Checks - -SAP systems have an internal monitoring mechanisms, one of which is dedicated to High Availability configuration and runtime status checks. - -1. [`sap_ha_check_config`](#sap_ha_check_config) -2. [`sap_ha_check_failover_active`](#sap_ha_check_failover_active) - -### `sap_ha_check_config` - -This metric represents various High Availability system configuration checks. - -Each check can be identified its labels, while the value is an integer status code, as follows. -- `0`: success. -- `1`: warning. -- `2`: error. - -#### Labels - -- `description`: a short textual description identifying the check -- `category`: a textual code representing check groups, e.g. `HA-STATE`, `HA-CONFIGURATION`, `SAP-STATE`, `SAP-CONFIGURATION` -- `comment`: a more in-dept textual description to help understand what's the check is about - -#### Example - -``` -# TYPE sap_ha_check_config gauge -sap_ha_check_config{category="SAP-CONFIGURATION",comment="0 Java instances detected",description="Redundant Java instance configuration"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="2 ABAP instances detected",description="Redundant ABAP instance configuration"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="2 ABAP instances with BATCH service detected",description="Redundant ABAP BATCH service configuration"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="2 ABAP instances with DIALOG service detected",description="Redundant ABAP DIALOG service configuration"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="2 ABAP instances with SPOOL service detected",description="Redundant ABAP SPOOL service configuration"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="2 ABAP instances with UPDATE service detected",description="Redundant ABAP UPDATE service configuration"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="ABAP instances on multiple hosts detected",description="ABAP instances on multiple hosts"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="All Enqueue server separated from application server",description="Enqueue separation"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="All MessageServer separated from application server",description="MessageServer separation"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="Enqueue replication enabled",description="Enqueue replication (sapha1as_HA1_00)"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="SAPInstance includes is-ers patch",description="SAPInstance RA sufficient version"} 0 -sap_ha_check_config{category="SAP-CONFIGURATION",comment="SAPInstance includes is-ers patch",description="SAPInstance RA sufficient version (sapha1as_HA1_00)"} 0 -sap_ha_check_config{category="SAP-STATE",comment="2 ABAP instances with active BATCH service detected",description="Redundant ABAP BATCH service state"} 0 -sap_ha_check_config{category="SAP-STATE",comment="2 ABAP instances with active DIALOG service detected",description="Redundant ABAP DIALOG service state"} 0 -sap_ha_check_config{category="SAP-STATE",comment="2 ABAP instances with active SPOOL service detected",description="Redundant ABAP SPOOL service state"} 0 -sap_ha_check_config{category="SAP-STATE",comment="2 ABAP instances with active UPDATE service detected",description="Redundant ABAP UPDATE service state"} 0 -sap_ha_check_config{category="SAP-STATE",comment="ABAP instances with active ABAP BATCH service on multiple hosts detected",description="ABAP instances with ABAP BATCH service on multiple hosts"} 0 -sap_ha_check_config{category="SAP-STATE",comment="ABAP instances with active ABAP DIALOG service on multiple hosts detected",description="ABAP instances with ABAP DIALOG service on multiple hosts"} 0 -sap_ha_check_config{category="SAP-STATE",comment="ABAP instances with active ABAP SPOOL service on multiple hosts detected",description="ABAP instances with ABAP SPOOL service on multiple hosts"} 0 -sap_ha_check_config{category="SAP-STATE",comment="ABAP instances with active ABAP UPDATE service on multiple hosts detected",description="ABAP instances with ABAP UPDATE service on multiple hosts"} 0 -sap_ha_check_config{category="SAP-STATE",comment="Enqueue replication not active",description="Enqueue replication state (sapha1as_HA1_00)"} 2 -sap_ha_check_config{category="SAP-STATE",comment="SCS instance status ok",description="SCS instance running"} 0 -``` - -### `sap_ha_check_failover_active` - -Whether or not High Availability Failover is active, 0 being false and 1 being true. - -#### Example - -``` -# TYPE sap_ha_check_failover_active gauge -sap_ha_check_failover_active 1 -``` - ## Appendix ### SAP State colors diff --git a/internal/sapcontrol/webservice.go b/internal/sapcontrol/webservice.go index a1aa74b..4bbe104 100644 --- a/internal/sapcontrol/webservice.go +++ b/internal/sapcontrol/webservice.go @@ -21,15 +21,6 @@ type WebService interface { /* Returns a list of queue information of work processes and icm (similar to dpmon). */ GetQueueStatistic() (*GetQueueStatisticResponse, error) - /* Checks high availability configuration and status of the system. */ - HACheckConfig() (*HACheckConfigResponse, error) - - /* Checks HA failover third party configuration and status of an instnace. */ - HACheckFailoverConfig() (*HACheckFailoverConfigResponse, error) - - /* Returns HA failover third party information. */ - HAGetFailoverConfig() (*HAGetFailoverConfigResponse, error) - /* Returns a list of SAP instances of the SAP system. */ GetSystemInstanceList() (*GetSystemInstanceListResponse, error) @@ -40,28 +31,9 @@ type WebService interface { GetCurrentInstance() (*CurrentSapInstance, error) } -type HACheckCategory string -type HAVerificationState string -type HAVerificationStateCode int type STATECOLOR string type STATECOLOR_CODE int -const ( - HA_CHECK_CATEGORY_SAP_CONFIGURATION HACheckCategory = "SAPControl-SAP-CONFIGURATION" - HA_CHECK_CATEGORY_SAP_STATE HACheckCategory = "SAPControl-SAP-STATE" - HA_CHECK_CATEGORY_HA_CONFIGURATION HACheckCategory = "SAPControl-HA-CONFIGURATION" - HA_CHECK_CATEGORY_HA_STATE HACheckCategory = "SAPControl-HA-STATE" -) - -const ( - HA_VERIFICATION_STATE_SUCCESS HAVerificationState = "SAPControl-HA-SUCCESS" - HA_VERIFICATION_STATE_WARNING HAVerificationState = "SAPControl-HA-WARNING" - HA_VERIFICATION_STATE_ERROR HAVerificationState = "SAPControl-HA-ERROR" - HA_VERIFICATION_STATE_CODE_SUCCESS HAVerificationStateCode = 0 - HA_VERIFICATION_STATE_CODE_WARNING HAVerificationStateCode = 1 - HA_VERIFICATION_STATE_CODE_ERROR HAVerificationStateCode = 2 -) - const ( STATECOLOR_GRAY STATECOLOR = "SAPControl-GRAY" STATECOLOR_GREEN STATECOLOR = "SAPControl-GREEN" @@ -145,45 +117,6 @@ type GetSystemInstanceListResponse struct { Instances []*SAPInstance `xml:"instance>item,omitempty" json:"instance>item,omitempty"` } -type HACheck struct { - State HAVerificationState `xml:"state,omitempty" json:"state,omitempty"` - Category HACheckCategory `xml:"category,omitempty" json:"category,omitempty"` - Description string `xml:"description,omitempty" json:"description,omitempty"` - Comment string `xml:"comment,omitempty" json:"comment,omitempty"` -} - -type HACheckConfig struct { - XMLName xml.Name `xml:"urn:SAPControl HACheckConfig"` -} - -type HACheckConfigResponse struct { - XMLName xml.Name `xml:"urn:SAPControl HACheckConfigResponse"` - Checks []*HACheck `xml:"check>item,omitempty" json:"check>item,omitempty"` -} - -type HACheckFailoverConfig struct { - XMLName xml.Name `xml:"urn:SAPControl HACheckFailoverConfig"` -} - -type HACheckFailoverConfigResponse struct { - XMLName xml.Name `xml:"urn:SAPControl HACheckFailoverConfigResponse"` - Checks []*HACheck `xml:"check>item,omitempty" json:"check>item,omitempty"` -} - -type HAGetFailoverConfigResponse struct { - XMLName xml.Name `xml:"urn:SAPControl HAGetFailoverConfigResponse"` - HAActive bool `xml:"HAActive,omitempty" json:"HAActive,omitempty"` - HAProductVersion string `xml:"HAProductVersion,omitempty" json:"HAProductVersion,omitempty"` - HASAPInterfaceVersion string `xml:"HASAPInterfaceVersion,omitempty" json:"HASAPInterfaceVersion,omitempty"` - HADocumentation string `xml:"HADocumentation,omitempty" json:"HADocumentation,omitempty"` - HAActiveNode string `xml:"HAActiveNode,omitempty" json:"HAActiveNode,omitempty"` - HANodes []string `xml:"HANodes>item,omitempty" json:"HANodes,omitempty"` -} - -type HAGetFailoverConfig struct { - XMLName xml.Name `xml:"urn:SAPControl HAGetFailoverConfig"` -} - type OSProcess struct { Name string `xml:"name,omitempty" json:"name,omitempty"` Description string `xml:"description,omitempty" json:"description,omitempty"` @@ -293,42 +226,6 @@ func (s *webService) GetQueueStatistic() (*GetQueueStatisticResponse, error) { return response, nil } -// implements WebService.HACheckConfig() -func (s *webService) HACheckConfig() (*HACheckConfigResponse, error) { - request := &HACheckConfig{} - response := &HACheckConfigResponse{} - err := s.client.Call("''", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -// implements WebService.HACheckFailoverConfig() -func (s *webService) HACheckFailoverConfig() (*HACheckFailoverConfigResponse, error) { - request := &HACheckFailoverConfig{} - response := &HACheckFailoverConfigResponse{} - err := s.client.Call("''", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - -// implements WebService.HAGetFailoverConfig() -func (s *webService) HAGetFailoverConfig() (*HAGetFailoverConfigResponse, error) { - request := &HAGetFailoverConfig{} - response := &HAGetFailoverConfigResponse{} - err := s.client.Call("''", request, response) - if err != nil { - return nil, err - } - - return response, nil -} - // makes the STATECOLOR values more metric friendly func StateColorToFloat(statecolor STATECOLOR) (float64, error) { switch statecolor { @@ -344,33 +241,3 @@ func StateColorToFloat(statecolor STATECOLOR) (float64, error) { return -1, errors.New("Invalid STATECOLOR value") } } - -// makes HACheckCategory values more human-readable -func HaCheckCategoryToString(category HACheckCategory) (string, error) { - switch category { - case HA_CHECK_CATEGORY_HA_CONFIGURATION: - return "HA-CONFIGURATION", nil - case HA_CHECK_CATEGORY_HA_STATE: - return "HA-STATE", nil - case HA_CHECK_CATEGORY_SAP_CONFIGURATION: - return "SAP-CONFIGURATION", nil - case HA_CHECK_CATEGORY_SAP_STATE: - return "SAP-STATE", nil - default: - return "", errors.New("Invalid HACheckCategory value") - } -} - -// makes HAVerificationState values more metric friendly -func HaVerificationStateToFloat(state HAVerificationState) (float64, error) { - switch state { - case HA_VERIFICATION_STATE_SUCCESS: - return float64(HA_VERIFICATION_STATE_CODE_SUCCESS), nil - case HA_VERIFICATION_STATE_WARNING: - return float64(HA_VERIFICATION_STATE_CODE_WARNING), nil - case HA_VERIFICATION_STATE_ERROR: - return float64(HA_VERIFICATION_STATE_CODE_ERROR), nil - default: - return -1, errors.New("Invalid HAVerificationState value") - } -} diff --git a/main.go b/main.go index 0cdc367..a94f96d 100644 --- a/main.go +++ b/main.go @@ -56,15 +56,6 @@ func main() { if err != nil { log.Fatal(err) } - /* disabled due to sapstartsvc upstream issues - HACheckCollector, err := ha_check.NewCollector(webService) - if err != nil { - log.Warn(err) - } else { - prometheus.MustRegister(HACheckCollector) - log.Info("Check collector registered") - } - */ // if we're not in debug log level, we unregister the Go runtime metrics collector that gets registered by default if !log.IsLevelEnabled(log.DebugLevel) { diff --git a/test/mock_sapcontrol/webservice.go b/test/mock_sapcontrol/webservice.go index 8d77189..9e99da3 100644 --- a/test/mock_sapcontrol/webservice.go +++ b/test/mock_sapcontrol/webservice.go @@ -122,48 +122,3 @@ func (mr *MockWebServiceMockRecorder) GetSystemInstanceList() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSystemInstanceList", reflect.TypeOf((*MockWebService)(nil).GetSystemInstanceList)) } - -// HACheckConfig mocks base method -func (m *MockWebService) HACheckConfig() (*sapcontrol.HACheckConfigResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "HACheckConfig") - ret0, _ := ret[0].(*sapcontrol.HACheckConfigResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// HACheckConfig indicates an expected call of HACheckConfig -func (mr *MockWebServiceMockRecorder) HACheckConfig() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HACheckConfig", reflect.TypeOf((*MockWebService)(nil).HACheckConfig)) -} - -// HACheckFailoverConfig mocks base method -func (m *MockWebService) HACheckFailoverConfig() (*sapcontrol.HACheckFailoverConfigResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "HACheckFailoverConfig") - ret0, _ := ret[0].(*sapcontrol.HACheckFailoverConfigResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// HACheckFailoverConfig indicates an expected call of HACheckFailoverConfig -func (mr *MockWebServiceMockRecorder) HACheckFailoverConfig() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HACheckFailoverConfig", reflect.TypeOf((*MockWebService)(nil).HACheckFailoverConfig)) -} - -// HAGetFailoverConfig mocks base method -func (m *MockWebService) HAGetFailoverConfig() (*sapcontrol.HAGetFailoverConfigResponse, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "HAGetFailoverConfig") - ret0, _ := ret[0].(*sapcontrol.HAGetFailoverConfigResponse) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// HAGetFailoverConfig indicates an expected call of HAGetFailoverConfig -func (mr *MockWebServiceMockRecorder) HAGetFailoverConfig() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HAGetFailoverConfig", reflect.TypeOf((*MockWebService)(nil).HAGetFailoverConfig)) -}