17 from absl
import flags
19 from framework
import xds_flags
20 from framework
import xds_k8s_flags
25 logger = logging.getLogger(__name__)
27 _CMD = flags.DEFINE_enum(
'cmd',
29 enum_values=[
'run',
'cleanup'],
31 _SECURE = flags.DEFINE_bool(
"secure",
33 help=
"Run client in the secure mode")
34 _QPS = flags.DEFINE_integer(
'qps', default=25, help=
'Queries per second')
35 _PRINT_RESPONSE = flags.DEFINE_bool(
"print_response",
37 help=
"Client prints responses")
38 _CONFIG_MESH = flags.DEFINE_bool(
41 help=
"Optional. Supplied to bootstrap generator to indicate AppNet mesh.")
42 _REUSE_NAMESPACE = flags.DEFINE_bool(
"reuse_namespace",
44 help=
"Use existing namespace if exists")
45 _CLEANUP_NAMESPACE = flags.DEFINE_bool(
48 help=
"Delete namespace during resource cleanup")
49 flags.adopt_module_key_flags(xds_flags)
50 flags.adopt_module_key_flags(xds_k8s_flags)
52 flags.mark_flag_as_required(
"resource_suffix")
55 KubernetesClientRunner = client_app.KubernetesClientRunner
60 raise app.UsageError(
'Too many command-line arguments.')
62 project: str = xds_flags.PROJECT.value
64 gcp_service_account: str = xds_k8s_flags.GCP_SERVICE_ACCOUNT.value
68 deployment_name=xds_flags.CLIENT_NAME.value,
69 image_name=xds_k8s_flags.CLIENT_IMAGE.value,
70 td_bootstrap_image=xds_k8s_flags.TD_BOOTSTRAP_IMAGE.value,
72 gcp_api_manager=gcp.api.GcpApiManager(),
73 gcp_service_account=gcp_service_account,
74 xds_server_uri=xds_flags.XDS_SERVER_URI.value,
75 network=xds_flags.NETWORK.value,
76 stats_port=xds_flags.CLIENT_PORT.value,
77 reuse_namespace=_REUSE_NAMESPACE.value)
81 deployment_template=
'client-secure.deployment.yaml')
83 k8s_api_manager = k8s.KubernetesApiManager(xds_k8s_flags.KUBE_CONTEXT.value)
84 client_namespace = KubernetesClientRunner.make_namespace_name(
85 xds_flags.RESOURCE_PREFIX.value, xds_flags.RESOURCE_SUFFIX.value)
87 k8s.KubernetesNamespace(k8s_api_manager, client_namespace),
91 server_xds_host = xds_flags.SERVER_XDS_HOST.value
92 server_xds_port = xds_flags.SERVER_XDS_PORT.value
94 if _CMD.value ==
'run':
95 logger.info(
'Run client, secure_mode=%s', _SECURE.value)
97 server_target=f
'xds:///{server_xds_host}:{server_xds_port}',
99 print_response=_PRINT_RESPONSE.value,
100 secure_mode=_SECURE.value,
101 config_mesh=_CONFIG_MESH.value)
103 elif _CMD.value ==
'cleanup':
104 logger.info(
'Cleanup client')
105 client_runner.cleanup(force=
True,
106 force_namespace=_CLEANUP_NAMESPACE.value)
109 if __name__ ==
'__main__':