def test_failed(self, project_id, cluster_id): cluster = CtxCluster.create(cluster_id, project_id, token='token') querier = BcsAPIEnvironmentQuerier(cluster) with StubPaaSCCClient.get_cluster.mock( return_value=fake_cc_get_cluster_result_failed): with pytest.raises(ComponentError): assert querier.do()
def common_patch(self): ctx_cluster = CtxCluster.create(TEST_CLUSTER_ID, TEST_PROJECT_ID, token='token') Pod(ctx_cluster).update_or_create( namespace=TEST_NAMESPACE, name=self.pod_name, body=gen_pod_body(self.pod_name) ) yield Pod(ctx_cluster).delete(namespace=TEST_NAMESPACE, name=self.pod_name)
def test_create_nonexistent(self, common_patch): """ 测试获取不存在的命名空间(触发创建逻辑) """ client = Namespace( CtxCluster.create(TEST_CLUSTER_ID, TEST_PROJECT_ID, token='token')) ret = client.get_or_create_cc_namespace(self.namespace_for_test, 'admin') assert ret == {'name': self.namespace_for_test, 'namespace_id': 2} client.delete(name=self.namespace_for_test)
def test_normal(self, project_id, cluster_id): cluster = CtxCluster.create(cluster_id, project_id, token='token') querier = BcsAPIEnvironmentQuerier(cluster) with StubPaaSCCClient.get_cluster.mock( return_value=fake_cc_get_cluster_result_ok): api_env_name = querier.do() assert api_env_name == 'my_stag'
def make_cluster_configuration(access_token: str, project_id: str, cluster_id: str) -> Dict: ctx_cluster = CtxCluster.create( id=cluster_id, project_id=project_id, token=access_token, ) return BcsKubeConfigurationService(ctx_cluster).make_configuration()
def generate_api_client(access_token: str, project_id: str, cluster_id: str) -> ApiClient: """ 根据指定参数,生成 api_client """ ctx_cluster = CtxCluster.create(id=cluster_id, project_id=project_id, token=access_token) config = BcsKubeConfigurationService(ctx_cluster).make_configuration() return ApiClient(config, header_name='X-BKAPI-AUTHORIZATION', header_value=json.dumps({"access_token": access_token}))
def common_patch(self, patch_get_dynamic_client): ctx_cluster = CtxCluster.create(TEST_CLUSTER_ID, TEST_PROJECT_ID, token='token') Deployment(ctx_cluster).update_or_create(namespace=TEST_NAMESPACE, name=self.deployment_name, body=gen_deployment_body( self.deployment_name)) yield Deployment(ctx_cluster).delete(namespace=TEST_NAMESPACE, name=self.deployment_name)
def test_make_configuration(self, project_id, cluster_id): cluster = CtxCluster.create(cluster_id, project_id, token='token') config_service = BcsKubeConfigurationService(cluster) faked_credentials = { 'server_address_path': '/example-foo-cluster', 'user_token': 'faked-foo-token' } with StubBcsApiClient.get_cluster_credentials.mock( return_value=faked_credentials): config = config_service.make_configuration() assert config.host == 'https://my-stag-bcs-server.example.com/example-foo-cluster' assert config.api_key[ 'authorization'] == f'Bearer {faked_credentials["user_token"]}'
def get_dynamic_client(access_token: str, project_id: str, cluster_id: str) -> CoreDynamicClient: """根据 token、cluster_id 等参数,构建访问 Kubernetes 集群的 Client 对象""" cluster = CtxCluster.create(id=cluster_id, project_id=project_id, token=access_token) config = BcsKubeConfigurationService(cluster).make_configuration() # TODO 考虑集群可能升级k8s版本的情况, 缓存文件会失效 discoverer_cache = DiscovererCache(cache_key=f"osrcp-{cluster_id}.json") api_client = client.ApiClient(config, header_name='X-BKAPI-AUTHORIZATION', header_value=json.dumps( {"access_token": access_token})) return CoreDynamicClient(api_client, cache_file=discoverer_cache, discoverer=BcsLazyDiscoverer)
def test_get_existed(self, common_patch): """ 测试获取已经存在的命名空间 """ client = Namespace( CtxCluster.create(TEST_CLUSTER_ID, TEST_PROJECT_ID, token='token')) ret = client.get_or_create_cc_namespace('default', 'admin') assert ret == {'name': 'default', 'namespace_id': 1}
def ctx_cluster(project_id, cluster_id): return CtxCluster.create(cluster_id, project_id, token='token')