예제 #1
0
    def test_k8s_get_params(self, mock_get_output, mock_get_params,
                            mock_get_discovery_url):
        mock_context = mock.MagicMock()
        mock_baymodel = mock.MagicMock()
        mock_bay = mock.MagicMock()
        mock_scale_manager = mock.MagicMock()

        removal_nodes = ['node1', 'node2']
        mock_scale_manager.get_removal_nodes.return_value = removal_nodes
        mock_get_discovery_url.return_value = 'fake_discovery_url'
        k8s_def = tdef.AtomicK8sTemplateDefinition()

        k8s_def.get_params(mock_context,
                           mock_baymodel,
                           mock_bay,
                           scale_manager=mock_scale_manager)

        expected_kwargs = {
            'extra_params': {
                'minions_to_remove': removal_nodes,
                'discovery_url': 'fake_discovery_url'
            }
        }
        mock_get_params.assert_called_once_with(mock_context, mock_baymodel,
                                                mock_bay, **expected_kwargs)
예제 #2
0
    def test_swarm_get_discovery_url_not_found(self, mock_get):
        mock_resp = mock.MagicMock()
        mock_resp.text = ''
        mock_get.return_value = mock_resp

        fake_bay = mock.MagicMock()
        fake_bay.discovery_url = None

        self.assertRaises(exception.InvalidDiscoveryURL,
                          tdef.AtomicK8sTemplateDefinition().get_discovery_url,
                          fake_bay)
예제 #3
0
    def test_k8s_get_params_insecure(self, mock_get_output, mock_get_params,
                                     mock_get_discovery_url, mock_osc_class):
        mock_context = mock.MagicMock()
        mock_context.auth_token = 'AUTH_TOKEN'
        mock_baymodel = mock.MagicMock()
        mock_baymodel.tls_disabled = True
        mock_baymodel.registry_enabled = False
        mock_bay = mock.MagicMock()
        mock_bay.uuid = '5d12f6fd-a196-4bf0-ae4c-1f639a523a52'
        del mock_bay.stack_id
        mock_scale_manager = mock.MagicMock()
        mock_osc = mock.MagicMock()
        mock_osc.magnum_url.return_value = 'http://127.0.0.1:9511/v1'
        mock_osc.cinder_region_name.return_value
        mock_osc_class.return_value = mock_osc

        removal_nodes = ['node1', 'node2']
        mock_scale_manager.get_removal_nodes.return_value = removal_nodes
        mock_get_discovery_url.return_value = 'fake_discovery_url'

        mock_context.auth_url = 'http://192.168.10.10:5000/v3'
        mock_context.user_name = 'fake_user'
        mock_context.tenant = 'fake_tenant'

        flannel_cidr = mock_baymodel.labels.get('flannel_network_cidr')
        flannel_subnet = mock_baymodel.labels.get('flannel_network_subnetlen')
        flannel_backend = mock_baymodel.labels.get('flannel_backend')

        k8s_def = tdef.AtomicK8sTemplateDefinition()

        k8s_def.get_params(mock_context,
                           mock_baymodel,
                           mock_bay,
                           scale_manager=mock_scale_manager)

        expected_kwargs = {
            'extra_params': {
                'minions_to_remove': removal_nodes,
                'discovery_url': 'fake_discovery_url',
                'flannel_network_cidr': flannel_cidr,
                'flannel_network_subnetlen': flannel_subnet,
                'flannel_backend': flannel_backend,
                'username': '******',
                'tenant_name': 'fake_tenant',
                'magnum_url': mock_osc.magnum_url.return_value,
                'region_name': mock_osc.cinder_region_name.return_value,
                'loadbalancing_protocol': 'HTTP',
                'kubernetes_port': 8080
            }
        }
        mock_get_params.assert_called_once_with(mock_context, mock_baymodel,
                                                mock_bay, **expected_kwargs)
예제 #4
0
    def test_k8s_get_discovery_url_fail(self, mock_get):
        cfg.CONF.set_override('etcd_discovery_service_endpoint_format',
                              'http://etcd/test?size=%(size)d',
                              group='bay')
        mock_get.side_effect = Exception()
        mock_bay = mock.MagicMock()
        mock_bay.master_count = 10
        mock_bay.discovery_url = None

        k8s_def = tdef.AtomicK8sTemplateDefinition()

        self.assertRaises(exception.GetDiscoveryUrlFailed,
                          k8s_def.get_discovery_url, mock_bay)
예제 #5
0
    def test_k8s_get_params(self, mock_get_output, mock_get_params,
                            mock_get_discovery_url, mock_osc_class):
        mock_context = mock.MagicMock()
        mock_context.auth_token = 'AUTH_TOKEN'
        mock_baymodel = mock.MagicMock()
        mock_baymodel.tls_disabled = False
        mock_bay = mock.MagicMock()
        mock_bay.uuid = 'bay-xx-xx-xx-xx'
        del mock_bay.stack_id
        mock_scale_manager = mock.MagicMock()
        mock_osc = mock.MagicMock()
        mock_osc.magnum_url.return_value = 'http://127.0.0.1:9511/v1'
        mock_osc_class.return_value = mock_osc

        removal_nodes = ['node1', 'node2']
        mock_scale_manager.get_removal_nodes.return_value = removal_nodes
        mock_get_discovery_url.return_value = 'fake_discovery_url'

        mock_context.auth_url = 'http://192.168.10.10:5000/v3'
        mock_context.user_name = 'fake_user'
        mock_context.tenant = 'fake_tenant'

        flannel_cidr = mock_baymodel.labels.get('flannel_network_cidr')
        flannel_subnet = mock_baymodel.labels.get('flannel_network_subnetlen')
        flannel_vxlan = mock_baymodel.labels.get('flannel_use_vxlan')

        k8s_def = tdef.AtomicK8sTemplateDefinition()

        k8s_def.get_params(mock_context,
                           mock_baymodel,
                           mock_bay,
                           scale_manager=mock_scale_manager)

        expected_kwargs = {
            'extra_params': {
                'minions_to_remove': removal_nodes,
                'discovery_url': 'fake_discovery_url',
                'flannel_network_cidr': flannel_cidr,
                'flannel_use_vxlan': flannel_subnet,
                'flannel_network_subnetlen': flannel_vxlan,
                'auth_url': 'http://192.168.10.10:5000/v2',
                'username': '******',
                'tenant_name': 'fake_tenant',
                'magnum_url': mock_osc.magnum_url.return_value,
                'user_token': mock_context.auth_token
            }
        }
        mock_get_params.assert_called_once_with(mock_context, mock_baymodel,
                                                mock_bay, **expected_kwargs)
예제 #6
0
    def test_k8s_get_discovery_url(self, mock_get):
        cfg.CONF.set_override('etcd_discovery_service_endpoint_format',
                              'http://etcd/test?size=%(size)d',
                              group='bay')
        expected_discovery_url = 'http://etcd/token'
        mock_resp = mock.MagicMock()
        mock_resp.text = expected_discovery_url
        mock_get.return_value = mock_resp
        mock_bay = mock.MagicMock()
        mock_bay.master_count = 10
        mock_bay.discovery_url = None

        k8s_def = tdef.AtomicK8sTemplateDefinition()
        discovery_url = k8s_def.get_discovery_url(mock_bay)

        mock_get.assert_called_once_with('http://etcd/test?size=10')
        self.assertEqual(expected_discovery_url, mock_bay.discovery_url)
        self.assertEqual(expected_discovery_url, discovery_url)
예제 #7
0
    def test_k8s_get_heat_param(self):
        k8s_def = tdef.AtomicK8sTemplateDefinition()

        heat_param = k8s_def.get_heat_param(bay_attr='node_count')
        self.assertEqual('number_of_minions', heat_param)