Adapt selfLink calculation for Pod objects.
Implements: blueprint selflink Change-Id: Ie98aae21ef910f11eaff5a6f6814d16ee1542ff2
This commit is contained in:
parent
9bc33d9b78
commit
b521fee8cb
kuryr_kubernetes
@ -34,6 +34,7 @@ from kuryr_kubernetes import constants
|
|||||||
from kuryr_kubernetes import exceptions
|
from kuryr_kubernetes import exceptions
|
||||||
from kuryr_kubernetes import objects
|
from kuryr_kubernetes import objects
|
||||||
from kuryr_kubernetes.objects import vif
|
from kuryr_kubernetes.objects import vif
|
||||||
|
from kuryr_kubernetes import utils
|
||||||
from kuryr_kubernetes import version
|
from kuryr_kubernetes import version
|
||||||
|
|
||||||
CONF = config.CONF
|
CONF = config.CONF
|
||||||
@ -173,7 +174,7 @@ class UpgradeCommands(object):
|
|||||||
jsonutils.dumps(serialized)
|
jsonutils.dumps(serialized)
|
||||||
}
|
}
|
||||||
self.k8s.annotate(
|
self.k8s.annotate(
|
||||||
pod['metadata']['selfLink'], ann,
|
utils.get_res_link(pod), ann,
|
||||||
pod['metadata']['resourceVersion'])
|
pod['metadata']['resourceVersion'])
|
||||||
except exceptions.K8sClientException:
|
except exceptions.K8sClientException:
|
||||||
print('Error when updating annotation for pod %s/%s' %
|
print('Error when updating annotation for pod %s/%s' %
|
||||||
|
@ -22,6 +22,7 @@ from kuryr_kubernetes import constants
|
|||||||
from kuryr_kubernetes.controller.drivers import neutron_vif
|
from kuryr_kubernetes.controller.drivers import neutron_vif
|
||||||
from kuryr_kubernetes.controller.drivers import utils as c_utils
|
from kuryr_kubernetes.controller.drivers import utils as c_utils
|
||||||
from kuryr_kubernetes import os_vif_util as ovu
|
from kuryr_kubernetes import os_vif_util as ovu
|
||||||
|
from kuryr_kubernetes import utils
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
@ -64,7 +65,7 @@ class SriovVIFDriver(neutron_vif.NeutronPodVIFDriver):
|
|||||||
vif = ovu.neutron_to_osvif_vif(vif_plugin, port, subnets)
|
vif = ovu.neutron_to_osvif_vif(vif_plugin, port, subnets)
|
||||||
vif.physnet = physnet
|
vif.physnet = physnet
|
||||||
vif.pod_name = pod_name
|
vif.pod_name = pod_name
|
||||||
vif.pod_link = pod['metadata']['selfLink']
|
vif.pod_link = utils.get_res_link(pod)
|
||||||
|
|
||||||
LOG.debug("{} vifs are available for the pod {}".format(
|
LOG.debug("{} vifs are available for the pod {}".format(
|
||||||
amount, pod_name))
|
amount, pod_name))
|
||||||
|
@ -22,6 +22,7 @@ from kuryr_kubernetes.controller.drivers import base as drivers
|
|||||||
from kuryr_kubernetes.controller.drivers import utils as driver_utils
|
from kuryr_kubernetes.controller.drivers import utils as driver_utils
|
||||||
from kuryr_kubernetes import exceptions as k_exc
|
from kuryr_kubernetes import exceptions as k_exc
|
||||||
from kuryr_kubernetes.handlers import k8s_base
|
from kuryr_kubernetes.handlers import k8s_base
|
||||||
|
from kuryr_kubernetes import utils
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -97,7 +98,7 @@ class PodLabelHandler(k8s_base.ResourceEventHandler):
|
|||||||
LOG.debug("Setting info annotations: %r", annotation)
|
LOG.debug("Setting info annotations: %r", annotation)
|
||||||
|
|
||||||
k8s = clients.get_kubernetes_client()
|
k8s = clients.get_kubernetes_client()
|
||||||
k8s.annotate(pod['metadata']['selfLink'],
|
k8s.annotate(utils.get_res_link(pod),
|
||||||
{
|
{
|
||||||
constants.K8S_ANNOTATION_LABEL: annotation[0],
|
constants.K8S_ANNOTATION_LABEL: annotation[0],
|
||||||
constants.K8S_ANNOTATION_IP: annotation[1]
|
constants.K8S_ANNOTATION_IP: annotation[1]
|
||||||
|
@ -240,7 +240,7 @@ class VIFHandler(k8s_base.ResourceEventHandler):
|
|||||||
raise k_exc.ResourceNotReady(pod)
|
raise k_exc.ResourceNotReady(pod)
|
||||||
|
|
||||||
k8s = clients.get_kubernetes_client()
|
k8s = clients.get_kubernetes_client()
|
||||||
k8s.remove_annotations(pod['metadata']['selfLink'],
|
k8s.remove_annotations(utils.get_res_link(pod),
|
||||||
constants.K8S_ANNOTATION_VIF)
|
constants.K8S_ANNOTATION_VIF)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -33,6 +33,7 @@ from kuryr_kubernetes import config
|
|||||||
from kuryr_kubernetes import constants as const
|
from kuryr_kubernetes import constants as const
|
||||||
from kuryr_kubernetes import exceptions as k_exc
|
from kuryr_kubernetes import exceptions as k_exc
|
||||||
from kuryr_kubernetes.objects import vif as k_vif
|
from kuryr_kubernetes.objects import vif as k_vif
|
||||||
|
from kuryr_kubernetes import utils
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@ -400,7 +401,7 @@ def neutron_to_osvif_vif_dpdk(os_port, subnets, pod):
|
|||||||
details = os_port.get('binding:vif_details', {})
|
details = os_port.get('binding:vif_details', {})
|
||||||
profile = osv_vif.VIFPortProfileK8sDPDK(
|
profile = osv_vif.VIFPortProfileK8sDPDK(
|
||||||
l3_setup=False,
|
l3_setup=False,
|
||||||
selflink=pod['metadata']['selfLink'])
|
selflink=utils.get_res_link(pod))
|
||||||
|
|
||||||
return k_vif.VIFDPDKNested(
|
return k_vif.VIFDPDKNested(
|
||||||
id=os_port['id'],
|
id=os_port['id'],
|
||||||
|
@ -161,3 +161,23 @@ def get_sgr_obj(sgr_id='7621d1e0-a2d2-4496-94eb-ffd375d20877',
|
|||||||
'tenant_id': '5ea46368c7fe436bb8732738c149fbce'}
|
'tenant_id': '5ea46368c7fe436bb8732738c149fbce'}
|
||||||
|
|
||||||
return os_sgr.SecurityGroupRule(**sgr_data)
|
return os_sgr.SecurityGroupRule(**sgr_data)
|
||||||
|
|
||||||
|
|
||||||
|
def get_k8s_pod():
|
||||||
|
|
||||||
|
return {'apiVersion': 'v1',
|
||||||
|
'kind': 'Pod',
|
||||||
|
'metadata': {'creationTimestamp': '2020-12-22T09:04:29Z',
|
||||||
|
'finalizers': ['kuryr.openstack.org/pod-finalizer'],
|
||||||
|
'generateName': 'pod-5bb648d658-',
|
||||||
|
'labels': {'app': 'pod',
|
||||||
|
'pod-template-hash': '5bb648d658'},
|
||||||
|
'operation': 'Update',
|
||||||
|
'name': 'pod-5bb648d658-55n76',
|
||||||
|
'namespace': 'default',
|
||||||
|
'resourceVersion': '19416',
|
||||||
|
'selfLink': '/api/v1/namespaces/default/pods/'
|
||||||
|
'pod-5bb648d658-55n76',
|
||||||
|
'uid': '683da866-6bb1-4da2-bf6a-a5f4137c38e7'},
|
||||||
|
'spec': {},
|
||||||
|
'status': {}}
|
||||||
|
@ -161,11 +161,13 @@ class TestStatusCmd(test_base.TestCase):
|
|||||||
pods = {
|
pods = {
|
||||||
'items': [
|
'items': [
|
||||||
{
|
{
|
||||||
|
'apiVersion': 'v1',
|
||||||
|
'kind': 'Pod',
|
||||||
'metadata': {
|
'metadata': {
|
||||||
'annotations': {
|
'annotations': {
|
||||||
constants.K8S_ANNOTATION_VIF: ann
|
constants.K8S_ANNOTATION_VIF: ann
|
||||||
},
|
},
|
||||||
'selfLink': name,
|
'name': name,
|
||||||
'resourceVersion': 1,
|
'resourceVersion': 1,
|
||||||
}
|
}
|
||||||
} for name, ann in ann_objs
|
} for name, ann in ann_objs
|
||||||
@ -178,8 +180,8 @@ class TestStatusCmd(test_base.TestCase):
|
|||||||
|
|
||||||
def test_update_annotations(self):
|
def test_update_annotations(self):
|
||||||
self._test__convert_annotations(self.cmd.update_annotations,
|
self._test__convert_annotations(self.cmd.update_annotations,
|
||||||
[('bar', mock.ANY, 1)])
|
[('/api/v1/pods/bar', mock.ANY, 1)])
|
||||||
|
|
||||||
def test_downgrade_annotations(self):
|
def test_downgrade_annotations(self):
|
||||||
self._test__convert_annotations(self.cmd.downgrade_annotations,
|
self._test__convert_annotations(self.cmd.downgrade_annotations,
|
||||||
[('foo', mock.ANY, 1)])
|
[('/api/v1/pods/foo', mock.ANY, 1)])
|
||||||
|
@ -17,6 +17,7 @@ import uuid
|
|||||||
|
|
||||||
from kuryr_kubernetes.controller.drivers import sriov as drvs
|
from kuryr_kubernetes.controller.drivers import sriov as drvs
|
||||||
from kuryr_kubernetes.tests import base as test_base
|
from kuryr_kubernetes.tests import base as test_base
|
||||||
|
from kuryr_kubernetes.tests import fake
|
||||||
from kuryr_kubernetes.tests.unit import kuryr_fixtures as k_fix
|
from kuryr_kubernetes.tests.unit import kuryr_fixtures as k_fix
|
||||||
|
|
||||||
from kuryr_kubernetes import constants as k_const
|
from kuryr_kubernetes import constants as k_const
|
||||||
@ -49,22 +50,18 @@ class TestSriovVIFDriver(test_base.TestCase):
|
|||||||
drvs.sriov_make_resource(k_const.K8S_SRIOV_PREFIX,
|
drvs.sriov_make_resource(k_const.K8S_SRIOV_PREFIX,
|
||||||
SRIOV_RESOURCE_NAME_B): (
|
SRIOV_RESOURCE_NAME_B): (
|
||||||
str(AMOUNT_FOR_SUBNET_B))}
|
str(AMOUNT_FOR_SUBNET_B))}
|
||||||
|
self._pod = fake.get_k8s_pod()
|
||||||
self._pod = {
|
self._pod['status'] = {'phase': k_const.K8S_POD_STATUS_PENDING}
|
||||||
'metadata': {
|
self._pod['spec'] = {
|
||||||
'resourceVersion': mock.sentinel.pod_version,
|
|
||||||
'selfLink': mock.sentinel.pod_link,
|
|
||||||
'name': 'podname'},
|
|
||||||
'status': {'phase': k_const.K8S_POD_STATUS_PENDING},
|
|
||||||
'spec': {
|
|
||||||
'hostNetwork': False,
|
'hostNetwork': False,
|
||||||
'nodeName': 'hostname',
|
'nodeName': 'hostname',
|
||||||
'containers': [{
|
'containers': [
|
||||||
|
{
|
||||||
'resources': {
|
'resources': {
|
||||||
'requests': sriov_request
|
'requests': sriov_request
|
||||||
}
|
}
|
||||||
}]
|
|
||||||
}
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
def test_activate_vif(self):
|
def test_activate_vif(self):
|
||||||
|
@ -24,6 +24,7 @@ from kuryr_kubernetes.controller.handlers import vif as h_vif
|
|||||||
from kuryr_kubernetes import exceptions as k_exc
|
from kuryr_kubernetes import exceptions as k_exc
|
||||||
from kuryr_kubernetes.objects import vif
|
from kuryr_kubernetes.objects import vif
|
||||||
from kuryr_kubernetes.tests import base as test_base
|
from kuryr_kubernetes.tests import base as test_base
|
||||||
|
from kuryr_kubernetes.tests import fake
|
||||||
|
|
||||||
|
|
||||||
class TestVIFHandler(test_base.TestCase):
|
class TestVIFHandler(test_base.TestCase):
|
||||||
@ -46,15 +47,9 @@ class TestVIFHandler(test_base.TestCase):
|
|||||||
self._pod_namespace = mock.sentinel.namespace
|
self._pod_namespace = mock.sentinel.namespace
|
||||||
self._pod_uid = mock.sentinel.pod_uid
|
self._pod_uid = mock.sentinel.pod_uid
|
||||||
self._pod_name = 'pod1'
|
self._pod_name = 'pod1'
|
||||||
self._pod = {
|
self._pod = fake.get_k8s_pod()
|
||||||
'metadata': {'resourceVersion': self._pod_version,
|
self._pod['status'] = {'phase': k_const.K8S_POD_STATUS_PENDING}
|
||||||
'selfLink': self._pod_link,
|
self._pod['spec'] = {'hostNetwork': False, 'nodeName': 'hostname'}
|
||||||
'name': self._pod_name,
|
|
||||||
'namespace': self._pod_namespace},
|
|
||||||
'status': {'phase': k_const.K8S_POD_STATUS_PENDING},
|
|
||||||
'spec': {'hostNetwork': False,
|
|
||||||
'nodeName': 'hostname'}
|
|
||||||
}
|
|
||||||
|
|
||||||
self._kp_version = mock.sentinel.kp_version
|
self._kp_version = mock.sentinel.kp_version
|
||||||
self._kp_link = mock.sentinel.kp_link
|
self._kp_link = mock.sentinel.kp_link
|
||||||
|
@ -29,6 +29,7 @@ from kuryr_kubernetes import exceptions as k_exc
|
|||||||
from kuryr_kubernetes import os_vif_util as ovu
|
from kuryr_kubernetes import os_vif_util as ovu
|
||||||
from kuryr_kubernetes.tests import base as test_base
|
from kuryr_kubernetes.tests import base as test_base
|
||||||
from kuryr_kubernetes.tests import fake
|
from kuryr_kubernetes.tests import fake
|
||||||
|
from kuryr_kubernetes import utils
|
||||||
|
|
||||||
|
|
||||||
# REVISIT(ivc): move to kuryr-lib along with 'os_vif_util'
|
# REVISIT(ivc): move to kuryr-lib along with 'os_vif_util'
|
||||||
@ -455,7 +456,7 @@ class TestOSVIFUtils(test_base.TestCase):
|
|||||||
m_mk_vif.return_value = vif
|
m_mk_vif.return_value = vif
|
||||||
m_mk_port_profile.return_value = port_profile
|
m_mk_port_profile.return_value = port_profile
|
||||||
|
|
||||||
pod = mock.MagicMock()
|
pod = fake.get_k8s_pod()
|
||||||
|
|
||||||
port = {'id': port_id,
|
port = {'id': port_id,
|
||||||
'mac_address': mac_address,
|
'mac_address': mac_address,
|
||||||
@ -471,7 +472,7 @@ class TestOSVIFUtils(test_base.TestCase):
|
|||||||
m_get_vif_name.assert_called_once_with(port)
|
m_get_vif_name.assert_called_once_with(port)
|
||||||
m_mk_port_profile.assert_called_once_with(
|
m_mk_port_profile.assert_called_once_with(
|
||||||
l3_setup=False,
|
l3_setup=False,
|
||||||
selflink=pod['metadata']['selfLink'])
|
selflink=utils.get_res_link(pod))
|
||||||
|
|
||||||
m_mk_vif.assert_called_once_with(
|
m_mk_vif.assert_called_once_with(
|
||||||
id=port_id,
|
id=port_id,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user