diff --git a/vmware_nsxlib/tests/unit/v3/policy/test_lb_resources.py b/vmware_nsxlib/tests/unit/v3/policy/test_lb_resources.py index fbb68061..4c3a23ec 100644 --- a/vmware_nsxlib/tests/unit/v3/policy/test_lb_resources.py +++ b/vmware_nsxlib/tests/unit/v3/policy/test_lb_resources.py @@ -951,6 +951,21 @@ class TestPolicyLBService(test_resources.NsxPolicyLibTestCase): tenant=TEST_TENANT) self.assert_called_with_def(api_call, expected_def) + def test_get_status_with_ep(self): + obj_id = '111' + ep_path = '/infra/sites/default/enforcement-points/default' + with mock.patch.object(self.policy_api, "get") as api_call: + self.resourceApi.get_status( + obj_id, enforcement_point_path=ep_path, tenant=TEST_TENANT) + expected_def = lb_defs.LBServiceStatusDef( + lb_service_id=obj_id, + enforcement_point_path=ep_path, + tenant=TEST_TENANT) + self.assert_called_with_def(api_call, expected_def) + self.assertEqual( + '%s/lb-services/%s/detailed-status?enforcement_point_path=' + + ep_path, expected_def.path_pattern) + def test_get_statistics(self): obj_id = '111' with mock.patch.object(self.policy_api, "get") as api_call: @@ -976,6 +991,24 @@ class TestPolicyLBService(test_resources.NsxPolicyLibTestCase): self.assertEqual('%s/lb-services/%s/statistics?source=realtime', expected_def.path_pattern) + def test_get_statistics_realtime_with_ep(self): + obj_id = '111' + ep_path = '/infra/sites/default/enforcement-points/default' + with mock.patch.object(self.policy_api, "get") as api_call: + self.resourceApi.get_statistics( + obj_id, realtime=True, enforcement_point_path=ep_path, + tenant=TEST_TENANT) + expected_def = lb_defs.LBServiceStatisticsDef( + lb_service_id=obj_id, + realtime=True, + enforcement_point_path=ep_path, + tenant=TEST_TENANT) + self.assert_called_with_def(api_call, expected_def) + self.assertEqual( + '%s/lb-services/%s/statistics?source=realtime&' + + 'enforcement_point_path=' + ep_path, + expected_def.path_pattern) + def test_get_virtual_server_status(self): obj_id = '111' vs_id = '222' @@ -995,11 +1028,48 @@ class TestPolicyLBService(test_resources.NsxPolicyLibTestCase): expected_def = lb_defs.LBServiceUsageDef( lb_service_id=lbs_id, realtime=True, + enforcement_point_path=None, tenant=TEST_TENANT) expected_path = '%s/lb-services/%s/service-usage?source=realtime' self.assert_called_with_def(api_call, expected_def) self.assertEqual(expected_def.path_pattern, expected_path) + def test_get_usage_with_ep(self): + lbs_id = 'test_vs' + ep_path = '/infra/sites/default/enforcement-points/default' + with mock.patch.object(self.policy_api, "get") as api_call: + self.resourceApi.get_usage( + lbs_id, realtime=False, enforcement_point_path=ep_path, + tenant=TEST_TENANT) + expected_def = lb_defs.LBServiceUsageDef( + lb_service_id=lbs_id, + realtime=False, + enforcement_point_path=ep_path, + tenant=TEST_TENANT) + expected_path = ( + '%s/lb-services/%s/service-usage?' + + 'enforcement_point_path=' + ep_path) + self.assert_called_with_def(api_call, expected_def) + self.assertEqual(expected_def.path_pattern, expected_path) + + def test_get_usage_realtime_with_ep(self): + lbs_id = 'test_vs' + ep_path = '/infra/sites/default/enforcement-points/default' + with mock.patch.object(self.policy_api, "get") as api_call: + self.resourceApi.get_usage( + lbs_id, realtime=True, enforcement_point_path=ep_path, + tenant=TEST_TENANT) + expected_def = lb_defs.LBServiceUsageDef( + lb_service_id=lbs_id, + realtime=True, + enforcement_point_path=ep_path, + tenant=TEST_TENANT) + expected_path = ( + '%s/lb-services/%s/service-usage?source=realtime&' + + 'enforcement_point_path=' + ep_path) + self.assert_called_with_def(api_call, expected_def) + self.assertEqual(expected_def.path_pattern, expected_path) + def test_wait_until_realized_fail(self): lbs_id = 'test_lbs' info = {'state': constants.STATE_UNREALIZED, diff --git a/vmware_nsxlib/v3/policy/lb_defs.py b/vmware_nsxlib/v3/policy/lb_defs.py index 03aa2aa3..27d26387 100644 --- a/vmware_nsxlib/v3/policy/lb_defs.py +++ b/vmware_nsxlib/v3/policy/lb_defs.py @@ -451,13 +451,21 @@ class LBServiceStatisticsDef(ResourceDef): def __init__(self, **kwargs): self.realtime = kwargs.pop('realtime') + self.enforcement_point_path = kwargs.pop( + 'enforcement_point_path', None) super(LBServiceStatisticsDef, self).__init__(**kwargs) @property def path_pattern(self): + params = [] if self.realtime: + params.append('source=realtime') + if self.enforcement_point_path: + params.append('enforcement_point_path=%s' % + self.enforcement_point_path) + if params: return (LB_SERVICES_PATH_PATTERN + - '%s/statistics?source=realtime') + '%s/statistics?' + '&'.join(params)) return LB_SERVICES_PATH_PATTERN + '%s/statistics/' @property @@ -467,8 +475,20 @@ class LBServiceStatisticsDef(ResourceDef): class LBServiceStatusDef(ResourceDef): + def __init__(self, **kwargs): + self.enforcement_point_path = kwargs.pop( + 'enforcement_point_path', None) + super(LBServiceStatusDef, self).__init__(**kwargs) + @property def path_pattern(self): + params = [] + if self.enforcement_point_path: + params.append('enforcement_point_path=%s' % + self.enforcement_point_path) + if params: + return (LB_SERVICES_PATH_PATTERN + + '%s/detailed-status?' + '&'.join(params)) return LB_SERVICES_PATH_PATTERN + '%s/detailed-status/' @property @@ -480,13 +500,21 @@ class LBServiceUsageDef(ResourceDef): def __init__(self, **kwargs): self.realtime = kwargs.pop('realtime') + self.enforcement_point_path = kwargs.pop( + 'enforcement_point_path', None) super(LBServiceUsageDef, self).__init__(**kwargs) @property def path_pattern(self): + params = [] if self.realtime: + params.append('source=realtime') + if self.enforcement_point_path: + params.append('enforcement_point_path=%s' % + self.enforcement_point_path) + if params: return (LB_SERVICES_PATH_PATTERN + - '%s/service-usage?source=realtime') + '%s/service-usage?' + '&'.join(params)) return LB_SERVICES_PATH_PATTERN + '%s/service-usage/' @property diff --git a/vmware_nsxlib/v3/policy/lb_resources.py b/vmware_nsxlib/v3/policy/lb_resources.py index e6accd13..1809beb3 100644 --- a/vmware_nsxlib/v3/policy/lb_resources.py +++ b/vmware_nsxlib/v3/policy/lb_resources.py @@ -729,20 +729,24 @@ class NsxPolicyLoadBalancerServiceApi(NsxPolicyResourceBase): def get_statistics(self, lb_service_id, realtime=False, tenant=constants.POLICY_INFRA_TENANT, + enforcement_point_path=None, silent=False): lb_service_stats_def = ( lb_defs.LBServiceStatisticsDef( lb_service_id=lb_service_id, realtime=realtime, + enforcement_point_path=enforcement_point_path, tenant=tenant)) return self.policy_api.get(lb_service_stats_def, silent=silent) def get_status(self, lb_service_id, + enforcement_point_path=None, tenant=constants.POLICY_INFRA_TENANT, silent=False): lb_service_status_def = ( lb_defs.LBServiceStatusDef( lb_service_id=lb_service_id, + enforcement_point_path=enforcement_point_path, tenant=tenant)) return self.policy_api.get(lb_service_status_def, silent=silent) @@ -756,9 +760,11 @@ class NsxPolicyLoadBalancerServiceApi(NsxPolicyResourceBase): return self.policy_api.get(lb_vs_status_def) def get_usage(self, lb_service_id, realtime=False, + enforcement_point_path=None, tenant=constants.POLICY_INFRA_TENANT): lb_service_status_def = lb_defs.LBServiceUsageDef( - lb_service_id=lb_service_id, realtime=realtime, tenant=tenant) + lb_service_id=lb_service_id, realtime=realtime, + enforcement_point_path=enforcement_point_path, tenant=tenant) return self.policy_api.get(lb_service_status_def) def get_path(self, lb_service_id,