Adapt selfLink calculation for Service objects.
Implements: blueprint selflink Change-Id: Id0933b837f4dc856c800bfb003f4aa8096a3176c
This commit is contained in:
parent
b38f0584a0
commit
94e5f92791
|
@ -133,7 +133,7 @@ class ServiceHandler(k8s_base.ResourceEventHandler):
|
||||||
if len(subnet_ids) != 1:
|
if len(subnet_ids) != 1:
|
||||||
raise k_exc.IntegrityError(_(
|
raise k_exc.IntegrityError(_(
|
||||||
"Found %(num)s subnets for service %(link)s IP %(ip)s") % {
|
"Found %(num)s subnets for service %(link)s IP %(ip)s") % {
|
||||||
'link': service['metadata']['selfLink'],
|
'link': utils.get_res_link(service),
|
||||||
'ip': ip,
|
'ip': ip,
|
||||||
'num': len(subnet_ids)})
|
'num': len(subnet_ids)})
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ class ServiceHandler(k8s_base.ResourceEventHandler):
|
||||||
utils.has_port_changes(service, loadbalancer_crd))
|
utils.has_port_changes(service, loadbalancer_crd))
|
||||||
|
|
||||||
def _has_ip_changes(self, service, loadbalancer_crd):
|
def _has_ip_changes(self, service, loadbalancer_crd):
|
||||||
link = service['metadata']['selfLink']
|
link = utils.get_res_link(service)
|
||||||
svc_ip = self._get_service_ip(service)
|
svc_ip = self._get_service_ip(service)
|
||||||
|
|
||||||
if loadbalancer_crd['spec'].get('ip') is None:
|
if loadbalancer_crd['spec'].get('ip') is None:
|
||||||
|
|
|
@ -45,6 +45,8 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
@mock.patch('kuryr_kubernetes.clients.get_kubernetes_client')
|
@mock.patch('kuryr_kubernetes.clients.get_kubernetes_client')
|
||||||
def test_on_present(self, get_k8s_client):
|
def test_on_present(self, get_k8s_client):
|
||||||
svc_event = {
|
svc_event = {
|
||||||
|
'apiVersion': 'v1',
|
||||||
|
'kind': 'Service',
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"creationTimestamp": "2020-07-25T18:15:12Z",
|
"creationTimestamp": "2020-07-25T18:15:12Z",
|
||||||
"finalizers": [
|
"finalizers": [
|
||||||
|
@ -56,7 +58,6 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
"name": "test",
|
"name": "test",
|
||||||
"namespace": "test",
|
"namespace": "test",
|
||||||
"resourceVersion": "413753",
|
"resourceVersion": "413753",
|
||||||
"selfLink": "",
|
|
||||||
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
|
@ -120,6 +121,8 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
@mock.patch('kuryr_kubernetes.clients.get_kubernetes_client')
|
@mock.patch('kuryr_kubernetes.clients.get_kubernetes_client')
|
||||||
def test_on_present_no_changes(self, get_k8s_client):
|
def test_on_present_no_changes(self, get_k8s_client):
|
||||||
svc_event = {
|
svc_event = {
|
||||||
|
'apiVersion': 'v1',
|
||||||
|
'kind': 'Service',
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"creationTimestamp": "2020-07-25T18:15:12Z",
|
"creationTimestamp": "2020-07-25T18:15:12Z",
|
||||||
"finalizers": [
|
"finalizers": [
|
||||||
|
@ -131,7 +134,6 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
"name": "test",
|
"name": "test",
|
||||||
"namespace": "test",
|
"namespace": "test",
|
||||||
"resourceVersion": "413753",
|
"resourceVersion": "413753",
|
||||||
"selfLink": "",
|
|
||||||
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
|
@ -232,7 +234,10 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
|
|
||||||
def test_has_ip_changes(self):
|
def test_has_ip_changes(self):
|
||||||
m_handler = mock.Mock(spec=h_lbaas.ServiceHandler)
|
m_handler = mock.Mock(spec=h_lbaas.ServiceHandler)
|
||||||
m_service = mock.MagicMock()
|
m_service = {'apiVersion': 'v1',
|
||||||
|
'kind': 'Service',
|
||||||
|
"metadata": {"name": "test",
|
||||||
|
"namespace": "test"}}
|
||||||
m_handler._get_service_ip.return_value = '1.1.1.1'
|
m_handler._get_service_ip.return_value = '1.1.1.1'
|
||||||
m_lbaas_spec = mock.MagicMock()
|
m_lbaas_spec = mock.MagicMock()
|
||||||
m_lbaas_spec.ip.__str__.return_value = '2.2.2.2'
|
m_lbaas_spec.ip.__str__.return_value = '2.2.2.2'
|
||||||
|
@ -243,6 +248,8 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
|
|
||||||
def test_has_ip_changes__no_changes(self):
|
def test_has_ip_changes__no_changes(self):
|
||||||
service = {
|
service = {
|
||||||
|
'apiVersion': 'v1',
|
||||||
|
'kind': 'Service',
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"creationTimestamp": "2020-07-25T18:15:12Z",
|
"creationTimestamp": "2020-07-25T18:15:12Z",
|
||||||
"finalizers": [
|
"finalizers": [
|
||||||
|
@ -254,7 +261,6 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
"name": "test",
|
"name": "test",
|
||||||
"namespace": "test",
|
"namespace": "test",
|
||||||
"resourceVersion": "413753",
|
"resourceVersion": "413753",
|
||||||
"selfLink": "",
|
|
||||||
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
|
@ -283,6 +289,8 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
m_handler = mock.Mock(spec=h_lbaas.ServiceHandler)
|
m_handler = mock.Mock(spec=h_lbaas.ServiceHandler)
|
||||||
m_handler._get_service_ip.return_value = '1.1.1.1'
|
m_handler._get_service_ip.return_value = '1.1.1.1'
|
||||||
service = {
|
service = {
|
||||||
|
'apiVersion': 'v1',
|
||||||
|
'kind': 'Service',
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"creationTimestamp": "2020-07-25T18:15:12Z",
|
"creationTimestamp": "2020-07-25T18:15:12Z",
|
||||||
"finalizers": [
|
"finalizers": [
|
||||||
|
@ -294,7 +302,6 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
"name": "test",
|
"name": "test",
|
||||||
"namespace": "test",
|
"namespace": "test",
|
||||||
"resourceVersion": "413753",
|
"resourceVersion": "413753",
|
||||||
"selfLink": "",
|
|
||||||
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
|
@ -314,6 +321,8 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
def test_has_ip_changes__no_nothing(self):
|
def test_has_ip_changes__no_nothing(self):
|
||||||
m_handler = mock.Mock(spec=h_lbaas.ServiceHandler)
|
m_handler = mock.Mock(spec=h_lbaas.ServiceHandler)
|
||||||
service = {
|
service = {
|
||||||
|
'apiVersion': 'v1',
|
||||||
|
'kind': 'Service',
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"creationTimestamp": "2020-07-25T18:15:12Z",
|
"creationTimestamp": "2020-07-25T18:15:12Z",
|
||||||
"finalizers": [
|
"finalizers": [
|
||||||
|
@ -325,7 +334,6 @@ class TestServiceHandler(test_base.TestCase):
|
||||||
"name": "test",
|
"name": "test",
|
||||||
"namespace": "test",
|
"namespace": "test",
|
||||||
"resourceVersion": "413753",
|
"resourceVersion": "413753",
|
||||||
"selfLink": "",
|
|
||||||
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
"uid": "a026ae48-6141-4029-b743-bac48dae7f06"
|
||||||
},
|
},
|
||||||
"spec": {
|
"spec": {
|
||||||
|
|
|
@ -164,8 +164,10 @@ class TestUtils(test_base.TestCase):
|
||||||
kubernetes.get.assert_called_once()
|
kubernetes.get.assert_called_once()
|
||||||
|
|
||||||
def test_get_endpoints_link(self):
|
def test_get_endpoints_link(self):
|
||||||
service = {'metadata': {
|
service = {'apiVersion': 'v1',
|
||||||
'selfLink': "/api/v1/namespaces/default/services/test"}}
|
'kind': 'Service',
|
||||||
|
'metadata': {'namespace': 'default',
|
||||||
|
'name': 'test'}}
|
||||||
ret = utils.get_endpoints_link(service)
|
ret = utils.get_endpoints_link(service)
|
||||||
expected_link = "/api/v1/namespaces/default/endpoints/test"
|
expected_link = "/api/v1/namespaces/default/endpoints/test"
|
||||||
self.assertEqual(expected_link, ret)
|
self.assertEqual(expected_link, ret)
|
||||||
|
@ -187,8 +189,11 @@ class TestUtils(test_base.TestCase):
|
||||||
@mock.patch('kuryr_kubernetes.utils.get_service_ports')
|
@mock.patch('kuryr_kubernetes.utils.get_service_ports')
|
||||||
def test_has_port_changes(self, m_get_service_ports):
|
def test_has_port_changes(self, m_get_service_ports):
|
||||||
service = {
|
service = {
|
||||||
|
'apiVersion': 'v1',
|
||||||
|
'kind': 'Service',
|
||||||
'metadata': {
|
'metadata': {
|
||||||
'selfLink': ""
|
'name': 'serv-1',
|
||||||
|
'namespace': 'ns1'
|
||||||
},
|
},
|
||||||
'spec': {
|
'spec': {
|
||||||
'ports': [
|
'ports': [
|
||||||
|
@ -219,8 +224,11 @@ class TestUtils(test_base.TestCase):
|
||||||
@mock.patch('kuryr_kubernetes.utils.get_service_ports')
|
@mock.patch('kuryr_kubernetes.utils.get_service_ports')
|
||||||
def test_has_port_changes_more_ports(self, m_get_service_ports):
|
def test_has_port_changes_more_ports(self, m_get_service_ports):
|
||||||
service = {
|
service = {
|
||||||
|
'apiVersion': 'v1',
|
||||||
|
'kind': 'Service',
|
||||||
'metadata': {
|
'metadata': {
|
||||||
'selfLink': ""
|
'name': 'serv-1',
|
||||||
|
'namespace': 'ns1'
|
||||||
},
|
},
|
||||||
'spec': {
|
'spec': {
|
||||||
'ports': [
|
'ports': [
|
||||||
|
@ -259,8 +267,11 @@ class TestUtils(test_base.TestCase):
|
||||||
def test_has_port_changes_no_changes(self, m_get_service_ports):
|
def test_has_port_changes_no_changes(self, m_get_service_ports):
|
||||||
|
|
||||||
service = {
|
service = {
|
||||||
|
'apiVersion': 'v1',
|
||||||
|
'kind': 'Service',
|
||||||
'metadata': {
|
'metadata': {
|
||||||
'selfLink': ""
|
'name': 'serv-1',
|
||||||
|
'namespace': 'ns1'
|
||||||
},
|
},
|
||||||
'spec': {
|
'spec': {
|
||||||
'ports': [
|
'ports': [
|
||||||
|
|
|
@ -376,7 +376,7 @@ def set_lbaas_spec(service, lbaas_spec):
|
||||||
LOG.debug("Setting LBaaSServiceSpec annotation: %r", lbaas_spec)
|
LOG.debug("Setting LBaaSServiceSpec annotation: %r", lbaas_spec)
|
||||||
annotation = jsonutils.dumps(lbaas_spec.obj_to_primitive(),
|
annotation = jsonutils.dumps(lbaas_spec.obj_to_primitive(),
|
||||||
sort_keys=True)
|
sort_keys=True)
|
||||||
svc_link = service['metadata']['selfLink']
|
svc_link = get_res_link(service)
|
||||||
ep_link = get_endpoints_link(service)
|
ep_link = get_endpoints_link(service)
|
||||||
k8s = clients.get_kubernetes_client()
|
k8s = clients.get_kubernetes_client()
|
||||||
|
|
||||||
|
@ -430,7 +430,7 @@ def set_lbaas_state(endpoints, lbaas_state):
|
||||||
|
|
||||||
|
|
||||||
def get_endpoints_link(service):
|
def get_endpoints_link(service):
|
||||||
svc_link = service['metadata']['selfLink']
|
svc_link = get_res_link(service)
|
||||||
link_parts = svc_link.split('/')
|
link_parts = svc_link.split('/')
|
||||||
|
|
||||||
if link_parts[-2] != 'services':
|
if link_parts[-2] != 'services':
|
||||||
|
@ -456,7 +456,7 @@ def get_service_link(endpoints):
|
||||||
def has_port_changes(service, loadbalancer_crd):
|
def has_port_changes(service, loadbalancer_crd):
|
||||||
if not loadbalancer_crd:
|
if not loadbalancer_crd:
|
||||||
return False
|
return False
|
||||||
link = service['metadata']['selfLink']
|
link = get_res_link(service)
|
||||||
svc_port_set = service['spec'].get('ports')
|
svc_port_set = service['spec'].get('ports')
|
||||||
|
|
||||||
for port in svc_port_set:
|
for port in svc_port_set:
|
||||||
|
|
Loading…
Reference in New Issue