def test_resources_exists(self):
        api = VncApiMock(
            self.args.auth_user,
            self.args.auth_password,
            self.args.auth_tenant,
            self.args.vnc_endpoint_ip,
            self.args.vnc_endpoint_port,
            self.args.auth_token_url
        )
        domain_fq_name = ['default-domain']
        domain = api.domain_read(fq_name=domain_fq_name)

        proj_uuid = api.project_create(Project("default", parent_obj=domain))
        proj = api.project_read(id=proj_uuid)

        # Create cluster-default-pod-network
        ipam_uuid = api.network_ipam_create(NetworkIpam("pod-ipam", proj))
        ipam = api.network_ipam_read(id=ipam_uuid)
        net = VirtualNetwork("cluster-default-pod-network", proj)
        # No subnets are associated with IPAM at this point.
        # Subnets will be updated in the IPAM, when cluster is created.
        net.add_network_ipam(ipam, VnSubnetsType([]))
        api.virtual_network_create(net)

        # Create cluster-default-service-network
        ipam_uuid = api.network_ipam_create(NetworkIpam("service-ipam", proj))
        ipam = api.network_ipam_read(id=ipam_uuid)
        net = VirtualNetwork("cluster-default-service-network", proj)
        # No subnets are associated with IPAM at this point.
        # Subnets will be updated in the IPAM, when cluster is created.
        net.add_network_ipam(ipam, VnSubnetsType([]))
        api.virtual_network_create(net)

        vnc_kubernetes.VncKubernetes(self.args, Mock())
예제 #2
0
    def test_create_resources(self):
        vnc_kubernetes.VncKubernetes(self.args, Mock())

        default_proj_name = vnc_kubernetes_config.cluster_project_name(
            'default')
        kube_system_proj_name = vnc_kubernetes_config.cluster_project_name(
            'kube-system')

        # Verify projects
        system_proj = self.verify_if_created('project', kube_system_proj_name,
                                             ['default-domain'])
        default_proj = self.verify_if_created('project', default_proj_name,
                                              ['default-domain'])
        self.verify_if_synchronized(vnc_kubernetes.ProjectKM, system_proj)
        self.verify_if_synchronized(vnc_kubernetes.ProjectKM, default_proj)

        # Verify cluster pod network
        net = self.verify_if_created('virtual-network',
                                     'cluster-default-pod-network',
                                     ['default-domain', default_proj_name])
        self.verify_if_synchronized(vnc_kubernetes.VirtualNetworkKM, net)
        ipam_refs = net.get_network_ipam_refs()
        self.assertEquals(1, len(ipam_refs))
        self.assertEquals([], ipam_refs[0]['attr'].ipam_subnets)

        # Verify pod ipam
        pod_ipam = self.verify_if_created(
            'network-ipam', self.args.cluster_name + '-pod-ipam',
            ['default-domain', default_proj_name])
        self.verify_if_synchronized(vnc_kubernetes.NetworkIpamKM, pod_ipam)
        self.assertEquals('flat-subnet', pod_ipam.get_ipam_subnet_method())
        self.assertEquals(
            16,
            pod_ipam.get_ipam_subnets().subnets[0].subnet.get_ip_prefix_len())
        self.assertEquals(
            '10.10.0.0',
            pod_ipam.get_ipam_subnets().subnets[0].subnet.get_ip_prefix())

        # Verify cluster service network
        net = self.verify_if_created('virtual-network',
                                     'cluster-default-service-network',
                                     ['default-domain', default_proj_name])
        self.verify_if_synchronized(vnc_kubernetes.VirtualNetworkKM, net)
        ipam_refs = net.get_network_ipam_refs()
        self.assertEquals(1, len(ipam_refs))
        self.assertEquals([], ipam_refs[0]['attr'].ipam_subnets)

        # Verify service ipam
        service_ipam = self.verify_if_created(
            'network-ipam', self.args.cluster_name + '-service-ipam',
            ['default-domain', default_proj_name])
        self.verify_if_synchronized(vnc_kubernetes.NetworkIpamKM, service_ipam)
        self.assertEquals('flat-subnet', pod_ipam.get_ipam_subnet_method())
        self.assertEquals(
            24,
            service_ipam.get_ipam_subnets().subnets[0].subnet.
            get_ip_prefix_len())
        self.assertEquals(
            '192.168.0.0',
            service_ipam.get_ipam_subnets().subnets[0].subnet.get_ip_prefix())
    def test_create_resources(self):
        vnc_kubernetes.VncKubernetes(self.args, Mock())

        # Verify projects
        system_proj = self.verify_if_created('project', 'kube-system',
                                             ['default-domain'])
        default_proj = self.verify_if_created('project', 'default',
                                              ['default-domain'])
        self.verify_if_synchronized(vnc_kubernetes.ProjectKM, system_proj)
        self.verify_if_synchronized(vnc_kubernetes.ProjectKM, default_proj)

        # Verify cluster network
        net = self.verify_if_created('virtual-network', 'cluster-network',
                                     ['default-domain', 'default'])
        self.verify_if_synchronized(vnc_kubernetes.VirtualNetworkKM, net)
        ipam_refs = net.get_network_ipam_refs()
        self.assertEquals(2, len(ipam_refs))
        if ipam_refs[0]['to'][2] == 'pod-ipam':
            pod_ipam_ref = ipam_refs[0]
            svc_ipam_ref = ipam_refs[1]
        else:
            pod_ipam_ref = ipam_refs[1]
            svc_ipam_ref = ipam_refs[0]
        self.assertEquals([], pod_ipam_ref['attr'].ipam_subnets)
        self.assertEquals(1, len(svc_ipam_ref['attr'].ipam_subnets))
        self.assertEquals(
            24, svc_ipam_ref['attr'].ipam_subnets[0].get_subnet().
            get_ip_prefix_len())
        self.assertEquals(
            '192.168.0.0',
            svc_ipam_ref['attr'].ipam_subnets[0].get_subnet().get_ip_prefix())

        # Verify service ipam
        svc_ipam = self.verify_if_created('network-ipam', 'service-ipam',
                                          ['default-domain', 'default'])
        self.verify_if_synchronized(vnc_kubernetes.NetworkIpamKM, svc_ipam)
        self.assertNotEquals('flat-subnet', svc_ipam.get_ipam_subnet_method())
        self.assertIsNone(svc_ipam.get_ipam_subnets())

        # Verify pod ipam
        pod_ipam = self.verify_if_created('network-ipam', 'pod-ipam',
                                          ['default-domain', 'default'])
        self.verify_if_synchronized(vnc_kubernetes.NetworkIpamKM, pod_ipam)
        self.assertEquals('flat-subnet', pod_ipam.get_ipam_subnet_method())
        self.assertEquals(
            16,
            pod_ipam.get_ipam_subnets().subnets[0].subnet.get_ip_prefix_len())
        self.assertEquals(
            '10.10.0.0',
            pod_ipam.get_ipam_subnets().subnets[0].subnet.get_ip_prefix())

        # Verify fip pool
        fip_pool = self.verify_if_created(
            'floating-ip-pool', 'svc-fip-pool-cluster-network',
            ['default-domain', 'default', 'cluster-network'])
        self.verify_if_synchronized(vnc_kubernetes.FloatingIpPoolKM, fip_pool)
예제 #4
0
 def test_resources_exists(self):
     api = VncApiMock(self.args.admin_user, self.args.admin_password,
                      self.args.admin_tenant, self.args.vnc_endpoint_ip,
                      self.args.vnc_endpoint_port, self.args.auth_token_url)
     domain_uuid = api.domain_create(Domain("default-domain"))
     domain = api.domain_read(id=domain_uuid)
     proj_uuid = api.project_create(Project("default", parent_obj=domain))
     proj = api.project_read(id=proj_uuid)
     ipam_uuid = api.network_ipam_create(NetworkIpam("pod-ipam", proj))
     ipam = api.network_ipam_read(id=ipam_uuid)
     net = VirtualNetwork("cluster-network", proj)
     net.add_network_ipam(ipam, VnSubnetsType([]))
     api.virtual_network_create(net)
     vnc = vnc_kubernetes.VncKubernetes(self.args, Mock())
예제 #5
0
    def test_sync_km(self, mock_vnc_amqp_handle_init):
        # Put some objects to database
        DBMock.create('domain', '123', {
            'uuid': '123',
            'fq_name': ['test-domain']
        })
        DBMock.create(
            'project', '234', {
                'uuid': '234',
                'fq_name': ['test-domain', 'test-proj-1'],
                'parent_uuid': '123'
            })
        DBMock.create(
            'project', '345', {
                'uuid': '345',
                'fq_name': ['test-domain', 'test-proj-2'],
                'parent_uuid': '123'
            })

        mock_vnc_amqp_handle = Mock()
        mock_vnc_amqp_handle_init.return_value = mock_vnc_amqp_handle
        vnc = vnc_kubernetes.VncKubernetes(self.args, Mock())
        mock_vnc_amqp_handle.establish.assert_called_once_with()

        # check if KM dictionaries are synchronized with database
        self.assertEquals(1, len(vnc_kubernetes.DomainKM.list_obj()))
        self.assertEquals(4, len(vnc_kubernetes.ProjectKM.list_obj()))
        obj = vnc_kubernetes.DomainKM.get('123')
        self.assertIsNotNone(obj)
        self.assertEquals(['test-domain'], obj.fq_name)
        self.assertEquals('123', obj.uuid)
        obj = vnc_kubernetes.ProjectKM.get('234')
        self.assertIsNotNone(obj)
        self.assertEquals('test-proj-1', obj.name)
        self.assertEquals(['test-domain', 'test-proj-1'], obj.fq_name)
        self.assertEquals('234', obj.uuid)
        obj = vnc_kubernetes.ProjectKM.get('345')
        self.assertIsNotNone(obj)
        self.assertEquals('test-proj-2', obj.name)
        self.assertEquals(['test-domain', 'test-proj-2'], obj.fq_name)
        self.assertEquals('345', obj.uuid)
예제 #6
0
 def test_nested_mode(self):
     self.args.nested_mode = "1"
     vnc_kubernetes.VncKubernetes(self.args, Mock())
     self.assertTrue(DBBaseKM.is_nested())