def container_exec(cmd, resource_group_name, name, exec_command, container_name=None): """Start exec for a container. """ container_client = cf_container(cmd.cli_ctx) container_group_client = cf_container_groups(cmd.cli_ctx) container_group = container_group_client.get(resource_group_name, name) if container_name or container_name is None and len(container_group.containers) == 1: # If only one container in container group, use that container. if container_name is None: container_name = container_group.containers[0].name try: terminalsize = os.get_terminal_size() except OSError: terminalsize = os.terminal_size((80, 24)) terminal_size = ContainerExecRequestTerminalSize(rows=terminalsize.lines, cols=terminalsize.columns) exec_request = ContainerExecRequest(command=exec_command, terminal_size=terminal_size) execContainerResponse = container_client.execute_command(resource_group_name, name, container_name, exec_request) if platform.system() is WINDOWS_NAME: _start_exec_pipe_windows(execContainerResponse.web_socket_uri, execContainerResponse.password) else: _start_exec_pipe_linux(execContainerResponse.web_socket_uri, execContainerResponse.password) else: raise CLIError('--container-name required when container group has more than one container.')
def execute_command(self, command): ci_client = _get_ci_client(self.config) res: ContainerExecResponse = ci_client.container.execute_command( resource_group_name=self.config.resource_group_name, container_group_name=self.config.container_group_name, container_name=self.config.container_group_name, command=command, terminal_size=ContainerExecRequestTerminalSize(rows=600, cols=800)) _start_exec_pipe(res.web_socket_uri, res.password)
def container_exec(cmd, resource_group_name, name, exec_command, container_name=None, terminal_row_size=20, terminal_col_size=80): """Start exec for a container. """ container_client = cf_container(cmd.cli_ctx) container_group_client = cf_container_groups(cmd.cli_ctx) container_group = container_group_client.get(resource_group_name, name) if container_name or container_name is None and len(container_group.containers) == 1: # If only one container in container group, use that container. if container_name is None: container_name = container_group.containers[0].name terminal_size = ContainerExecRequestTerminalSize(rows=terminal_row_size, cols=terminal_col_size) execContainerResponse = container_client.execute_command(resource_group_name, name, container_name, exec_command, terminal_size) if platform.system() is WINDOWS_NAME: _start_exec_pipe_win(execContainerResponse.web_socket_uri, execContainerResponse.password) else: _start_exec_pipe(execContainerResponse.web_socket_uri, execContainerResponse.password) else: raise CLIError('--container-name required when container group has more than one container.')