Exemplo n.º 1
0
 def setUp(self):
     super().setUp()
     self.settings = factories.RancherServiceSettingsFactory()
     self.cluster = factories.ClusterFactory(settings=self.settings)
     self.instance = openstack_tenant_factories.InstanceFactory()
     self.node = factories.NodeFactory(cluster=self.cluster,
                                       instance=self.instance)
     self.url = factories.NodeFactory.get_url(self.node, 'unlink_openstack')
Exemplo n.º 2
0
    def test_usage_does_not_decrease_if_active_nodes_count_decrease(
            self, mock_executors):
        self._create_usage(mock_executors)
        today = datetime.date.today()
        self.assertTrue(
            marketplace_models.ComponentUsage.objects.filter(
                resource=self.resource,
                component=self.offering_component,
                usage=1,
                date=today,
                billing_period=today,
                plan_period=self.plan_period,
            ).exists())
        rancher_factories.NodeFactory(cluster=self.cluster, name='second node')
        self.mocked_get_cluster_nodes.return_value = [
            {
                'backend_id': 'node_backend_id',
                'name': 'name-rancher-node'
            },
            {
                'backend_id': 'second_node_backend_id',
                'name': 'second node'
            },
        ]
        tasks.pull_cluster_nodes(self.cluster.id)
        utils.update_cluster_nodes_states(self.cluster.id)
        self.assertTrue(
            marketplace_models.ComponentUsage.objects.filter(
                resource=self.resource,
                component=self.offering_component,
                usage=2,
                date=today,
                billing_period=today,
                plan_period=self.plan_period,
            ).exists())
        return_value = copy.copy(self.mock_client.get_node.return_value)
        return_value['state'] = 'error'
        self.mock_client.get_node.return_value = return_value
        tasks.pull_cluster_nodes(self.cluster.id)
        self.assertTrue(
            marketplace_models.ComponentUsage.objects.filter(
                resource=self.resource,
                component=self.offering_component,
                usage=2,
                date=today,
                billing_period=today,
                plan_period=self.plan_period,
            ).exists())

        invoice = invoices_models.Invoice.objects.get(
            customer=self.cluster.customer)
        self.assertEqual(invoice.items.count(), 1)
        self.assertEqual(invoice.price, self.plan_component.price * 2)
Exemplo n.º 3
0
    def test_node_config_formatting(self):
        template = '''
                #cloud-config
                  packages:
                    - curl
                  runcmd:
                    - curl -fsSL https://get.docker.com -o get-docker.sh; sh get-docker.sh
                    - sudo systemctl start docker
                    - sudo systemctl enable docker
                    - [ sh, -c, "{command}" ]
                '''
        service_settings = factories.RancherServiceSettingsFactory(
            options={'cloud_init_template': template})
        cluster = factories.ClusterFactory(settings=self.fixture.settings,
                                           service_settings=service_settings)
        node = factories.NodeFactory(
            cluster=cluster,
            initial_data={'data_volumes': [{
                'mount_point': 'path'
            }]})
        result = rancher_utils.format_node_cloud_config(node)
        expected_config = """
            fs_setup:
                - device: /dev/vdb
                filesystem: ext4
                mounts:
                    - /dev/vdb
                    - path
                packages:
                    - curl
                runcmd:
                    - curl -fsSL https://get.docker.com -o get-docker.sh; sh get-docker.sh
                    - sudo systemctl start docker
                    - sudo systemctl enable docker
                    - - sh
                      - -c
                      - ' '
        """

        self.assertTrue(expected_config, result)
Exemplo n.º 4
0
 def test_link_is_disabled_when_instance_is_already_linked(self):
     factories.NodeFactory(cluster=self.cluster, instance=self.instance)
     self.client.force_authenticate(self.fixture.staff)
     response = self.client.post(self.url, {'instance': self.instance_url})
     self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)