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')
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)
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)
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)